Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lvm2: put the profile scripts into etc/profile.d #373288

Open
wants to merge 1 commit into
base: staging
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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"
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(this line is the added one)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If there's only a single line change, then I think you still need another rebase, so that the diff is correct.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Or did you run nixfmt on this file?

Then it would be good to split this into a separate commit.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The latter, because otherwise CI complained, while the real change is hopefully pretty trivial.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You should really split the nixfmt change and the actual change into separate commits. That would make it much easier to review. Even with whitespace changes invisible, it's a few changes...

]
++ 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
];
};
}