Skip to content

Commit

Permalink
lvm2: call the profile directory etc/profile.d
Browse files Browse the repository at this point in the history
  • Loading branch information
7c6f434c committed Jan 12, 2025
1 parent 7648916 commit df10ddd
Showing 1 changed file with 129 additions and 86 deletions.
215 changes: 129 additions & 86 deletions pkgs/os-specific/linux/lvm2/common.nix
Original file line number Diff line number Diff line change
@@ -1,29 +1,39 @@
{ version, hash }:

{ lib, stdenv
, fetchurl
, pkg-config
, coreutils
, libuuid
, libaio
, replaceVars
, enableCmdlib ? false
, enableDmeventd ? false
, udevSupport ? !stdenv.hostPlatform.isStatic, udev
, onlyLib ? stdenv.hostPlatform.isStatic
{
lib,
stdenv,
fetchurl,
pkg-config,
coreutils,
libuuid,
libaio,
replaceVars,
enableCmdlib ? false,
enableDmeventd ? false,
udevSupport ? !stdenv.hostPlatform.isStatic,
udev,
onlyLib ? stdenv.hostPlatform.isStatic,
# Otherwise we have a infinity recursion during static compilation
, enableUtilLinux ? !stdenv.hostPlatform.isStatic, util-linux
, enableVDO ? false, vdo
, enableMdadm ? false, mdadm
, enableMultipath ? false, multipath-tools
, nixosTests
enableUtilLinux ? !stdenv.hostPlatform.isStatic,
util-linux,
enableVDO ? false,
vdo,
enableMdadm ? false,
mdadm,
enableMultipath ? false,
multipath-tools,
nixosTests,
}:

# configure: error: --enable-dmeventd requires --enable-cmdlib to be used as well
assert enableDmeventd -> enableCmdlib;

stdenv.mkDerivation rec {
pname = "lvm2" + lib.optionalString enableDmeventd "-with-dmeventd" + lib.optionalString enableVDO "-with-vdo";
pname =
"lvm2"
+ lib.optionalString enableDmeventd "-with-dmeventd"
+ lib.optionalString enableVDO "-with-vdo";
inherit version;

src = fetchurl {
Expand All @@ -35,44 +45,56 @@ stdenv.mkDerivation rec {
};

nativeBuildInputs = [ pkg-config ];
buildInputs = [
libaio
] ++ lib.optionals udevSupport [
udev
] ++ lib.optionals (!onlyLib) [
libuuid
] ++ lib.optionals enableVDO [
vdo
];
buildInputs =
[
libaio
]
++ lib.optionals udevSupport [
udev
]
++ lib.optionals (!onlyLib) [
libuuid
]
++ lib.optionals enableVDO [
vdo
];

configureFlags = [
"--disable-readline"
"--enable-pkgconfig"
"--with-default-locking-dir=/run/lock/lvm"
"--with-default-run-dir=/run/lvm"
"--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
"--with-systemd-run=/run/current-system/systemd/bin/systemd-run"
] ++ lib.optionals (!enableCmdlib && !onlyLib) [
"--bindir=${placeholder "bin"}/bin"
"--sbindir=${placeholder "bin"}/bin"
"--libdir=${placeholder "lib"}/lib"
"--with-libexecdir=${placeholder "lib"}/libexec"
] ++ lib.optional enableCmdlib "--enable-cmdlib"
++ lib.optionals enableDmeventd [
"--enable-dmeventd"
"--with-dmeventd-pidfile=/run/dmeventd/pid"
"--with-default-dm-run-dir=/run/dmeventd"
] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
"ac_cv_func_malloc_0_nonnull=yes"
"ac_cv_func_realloc_0_nonnull=yes"
] ++ lib.optionals udevSupport [
"--enable-udev_rules"
"--enable-udev_sync"
] ++ lib.optionals enableVDO [
"--enable-vdo"
] ++ lib.optionals stdenv.hostPlatform.isStatic [
"--enable-static_link"
];
configureFlags =
[
"--disable-readline"
"--enable-pkgconfig"
"--with-default-locking-dir=/run/lock/lvm"
"--with-default-run-dir=/run/lvm"
"--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
"--with-systemd-run=/run/current-system/systemd/bin/systemd-run"
"--with-default-profile-subdir=profile.d"
]
++ lib.optionals (!enableCmdlib && !onlyLib) [
"--bindir=${placeholder "bin"}/bin"
"--sbindir=${placeholder "bin"}/bin"
"--libdir=${placeholder "lib"}/lib"
"--with-libexecdir=${placeholder "lib"}/libexec"
]
++ lib.optional enableCmdlib "--enable-cmdlib"
++ lib.optionals enableDmeventd [
"--enable-dmeventd"
"--with-dmeventd-pidfile=/run/dmeventd/pid"
"--with-default-dm-run-dir=/run/dmeventd"
]
++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
"ac_cv_func_malloc_0_nonnull=yes"
"ac_cv_func_realloc_0_nonnull=yes"
]
++ lib.optionals udevSupport [
"--enable-udev_rules"
"--enable-udev_sync"
]
++ lib.optionals enableVDO [
"--enable-vdo"
]
++ lib.optionals stdenv.hostPlatform.isStatic [
"--enable-static_link"
];

preConfigure = ''
sed -i /DEFAULT_SYS_DIR/d Makefile.in
Expand All @@ -91,36 +113,47 @@ stdenv.mkDerivation rec {

patches = [
# fixes paths to and checks for tools
(replaceVars ./fix-blkdeactivate.patch (let
optionalTool = cond: pkg: if cond then pkg else "/run/current-system/sw";
in {
inherit coreutils;
util_linux = optionalTool enableUtilLinux util-linux;
mdadm = optionalTool enableMdadm mdadm;
multipath_tools = optionalTool enableMultipath multipath-tools;
vdo = optionalTool enableVDO vdo;
SBINDIR = null; # part of original source code in the patch's context
}))
(replaceVars ./fix-blkdeactivate.patch (
let
optionalTool = cond: pkg: if cond then pkg else "/run/current-system/sw";
in
{
inherit coreutils;
util_linux = optionalTool enableUtilLinux util-linux;
mdadm = optionalTool enableMdadm mdadm;
multipath_tools = optionalTool enableMultipath multipath-tools;
vdo = optionalTool enableVDO vdo;
SBINDIR = null; # part of original source code in the patch's context
}
))
./fix-stdio-usage.patch
];

doCheck = false; # requires root

makeFlags = lib.optionals udevSupport [
"SYSTEMD_GENERATOR_DIR=${placeholder "out"}/lib/systemd/system-generators"
] ++ lib.optionals onlyLib [
"libdm.device-mapper"
];
makeFlags =
lib.optionals udevSupport [
"SYSTEMD_GENERATOR_DIR=${placeholder "out"}/lib/systemd/system-generators"
]
++ lib.optionals onlyLib [
"libdm.device-mapper"
];

# To prevent make install from failing.
installFlags = [ "OWNER=" "GROUP=" "confdir=$(out)/etc" ];
installFlags = [
"OWNER="
"GROUP="
"confdir=$(out)/etc"
];

# Install systemd stuff.
installTargets = [ "install" ] ++ lib.optionals udevSupport [
"install_systemd_generators"
"install_systemd_units"
"install_tmpfiles_configuration"
];
installTargets =
[ "install" ]
++ lib.optionals udevSupport [
"install_systemd_generators"
"install_systemd_units"
"install_tmpfiles_configuration"
];

installPhase = lib.optionalString onlyLib ''
make -C libdm install_${if stdenv.hostPlatform.isStatic then "static" else "dynamic"}
Expand All @@ -129,15 +162,18 @@ stdenv.mkDerivation rec {
'';

# only split bin and lib out from out if cmdlib isn't enabled
outputs = [
"out"
] ++ lib.optionals (!onlyLib) [
"dev"
"man"
] ++ lib.optionals (!onlyLib && !enableCmdlib) [
"bin"
"lib"
];
outputs =
[
"out"
]
++ lib.optionals (!onlyLib) [
"dev"
"man"
]
++ lib.optionals (!onlyLib && !enableCmdlib) [
"bin"
"lib"
];

postInstall = lib.optionalString (enableCmdlib != true) ''
moveToOutput lib/libdevmapper.so $lib
Expand All @@ -152,7 +188,14 @@ stdenv.mkDerivation rec {
homepage = "http://sourceware.org/lvm2/";
description = "Tools to support Logical Volume Management (LVM) on Linux";
platforms = platforms.linux;
license = with licenses; [ gpl2Only bsd2 lgpl21 ];
maintainers = with maintainers; [ raskin ajs124 ];
license = with licenses; [
gpl2Only
bsd2
lgpl21
];
maintainers = with maintainers; [
raskin
ajs124
];
};
}

0 comments on commit df10ddd

Please sign in to comment.