From f1a217ea907391c59389c0391a69c9f2c65c0f71 Mon Sep 17 00:00:00 2001 From: 7c6f434c <7c6f434c@mail.ru> Date: Sun, 12 Jan 2025 20:51:32 +0100 Subject: [PATCH] lvm2: call the profile directory etc/profile.d --- pkgs/os-specific/linux/lvm2/common.nix | 215 +++++++++++++++---------- 1 file changed, 129 insertions(+), 86 deletions(-) diff --git a/pkgs/os-specific/linux/lvm2/common.nix b/pkgs/os-specific/linux/lvm2/common.nix index f24612acbca60..379d1614878e0 100644 --- a/pkgs/os-specific/linux/lvm2/common.nix +++ b/pkgs/os-specific/linux/lvm2/common.nix @@ -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 { @@ -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 @@ -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"} @@ -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 @@ -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 + ]; }; }