diff options
author | Florian Klink <flokli@flokli.de> | 2023-10-24 18:51:28 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-24 18:51:28 +0300 |
commit | 87896bfdd101c8e9d2a0231b7d240aea6a735606 (patch) | |
tree | 9c2016e1c33d683b68eb4ce545c6a8e71c2737fb | |
parent | 493c73c8352d4568ccf6273fc8dcc344dfbffc72 (diff) | |
parent | dd97082f16096cc46e3c42247a193a31dc0a333a (diff) | |
download | nixlib-87896bfdd101c8e9d2a0231b7d240aea6a735606.tar nixlib-87896bfdd101c8e9d2a0231b7d240aea6a735606.tar.gz nixlib-87896bfdd101c8e9d2a0231b7d240aea6a735606.tar.bz2 nixlib-87896bfdd101c8e9d2a0231b7d240aea6a735606.tar.lz nixlib-87896bfdd101c8e9d2a0231b7d240aea6a735606.tar.xz nixlib-87896bfdd101c8e9d2a0231b7d240aea6a735606.tar.zst nixlib-87896bfdd101c8e9d2a0231b7d240aea6a735606.zip |
Merge pull request #261798 from blitz/systemd-minimization
Avoid Two Sets of systemd Binaries in System Closure
-rw-r--r-- | doc/hooks/meson.section.md | 9 | ||||
-rw-r--r-- | pkgs/development/tools/build-managers/meson/setup-hook.sh | 4 | ||||
-rw-r--r-- | pkgs/os-specific/linux/systemd/default.nix | 12 | ||||
-rw-r--r-- | pkgs/tools/security/pcsclite/default.nix | 4 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 19 |
5 files changed, 29 insertions, 19 deletions
diff --git a/doc/hooks/meson.section.md b/doc/hooks/meson.section.md index 93e7019c311b..dc261271326a 100644 --- a/doc/hooks/meson.section.md +++ b/doc/hooks/meson.section.md @@ -43,3 +43,12 @@ Disables using Meson’s `checkPhase`. ### `dontUseMesonInstall` {#dontusemesoninstall} Disables using Meson’s `installPhase`. + +### `mesonInstallFlags` {#mesoninstallflags} + +Controls the flags passed to meson install. + +### `mesonInstallTags` (#mesoninstalltags) + +Tags specified here will be passed to Meson as via `--tags` during +installation and controls which components will be installed. diff --git a/pkgs/development/tools/build-managers/meson/setup-hook.sh b/pkgs/development/tools/build-managers/meson/setup-hook.sh index 21faac529c6d..dc7780b2fd3d 100644 --- a/pkgs/development/tools/build-managers/meson/setup-hook.sh +++ b/pkgs/development/tools/build-managers/meson/setup-hook.sh @@ -55,6 +55,10 @@ mesonInstallPhase() { # shellcheck disable=SC2086 local flagsArray=($mesonInstallFlags "${mesonInstallFlagsArray[@]}") + if [[ -n "$mesonInstallTags" ]]; then + flagsArray+=("--tags" "${mesonInstallTags// /,}") + fi + echoCmd 'install flags' "${flagsArray[@]}" meson install --no-rebuild "${flagsArray[@]}" diff --git a/pkgs/os-specific/linux/systemd/default.nix b/pkgs/os-specific/linux/systemd/default.nix index b13db4a3427c..3d28eae70255 100644 --- a/pkgs/os-specific/linux/systemd/default.nix +++ b/pkgs/os-specific/linux/systemd/default.nix @@ -134,6 +134,8 @@ , withUtmp ? !stdenv.hostPlatform.isMusl # tests assume too much system access for them to be feasible for us right now , withTests ? false + # build only libudev and libsystemd +, buildLibsOnly ? false # name argument , pname ? "systemd" @@ -380,7 +382,7 @@ stdenv.mkDerivation (finalAttrs: { patchShebangs tools test src/!(rpm|kernel-install|ukify) src/kernel-install/test-kernel-install.sh ''; - outputs = [ "out" "man" "dev" ]; + outputs = [ "out" "dev" ] ++ (lib.optional (!buildLibsOnly) "man"); nativeBuildInputs = [ @@ -444,7 +446,7 @@ stdenv.mkDerivation (finalAttrs: { ++ lib.optional withUkify (python3Packages.python.withPackages (ps: with ps; [ pefile ])) ; - #dontAddPrefix = true; + mesonBuildType = "release"; mesonFlags = [ "-Dversion-tag=${version}" @@ -705,7 +707,9 @@ stdenv.mkDerivation (finalAttrs: { export DESTDIR=/ ''; - postInstall = '' + mesonInstallTags = lib.optionals buildLibsOnly [ "devel" "libudev" "libsystemd" ]; + + postInstall = lib.optionalString (!buildLibsOnly) '' mkdir -p $out/example/systemd mv $out/lib/{binfmt.d,sysctl.d,tmpfiles.d} $out/example mv $out/lib/systemd/{system,user} $out/example/systemd @@ -723,7 +727,7 @@ stdenv.mkDerivation (finalAttrs: { find $out -name "*kernel-install*" -exec rm {} \; '' + lib.optionalString (!withDocumentation) '' rm -rf $out/share/doc - '' + lib.optionalString withKmod '' + '' + lib.optionalString (withKmod && !buildLibsOnly) '' mv $out/lib/modules-load.d $out/example ''; diff --git a/pkgs/tools/security/pcsclite/default.nix b/pkgs/tools/security/pcsclite/default.nix index 478cca8be0e2..a4ae25715c3f 100644 --- a/pkgs/tools/security/pcsclite/default.nix +++ b/pkgs/tools/security/pcsclite/default.nix @@ -8,7 +8,7 @@ , python3 , dbus , polkit -, systemdMinimal +, systemdLibs , IOKit , pname ? "pcsclite" , polkitSupport ? false @@ -59,7 +59,7 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ autoreconfHook autoconf-archive pkg-config perl ]; buildInputs = [ python3 ] - ++ lib.optionals stdenv.isLinux [ systemdMinimal ] + ++ lib.optionals stdenv.isLinux [ systemdLibs ] ++ lib.optionals stdenv.isDarwin [ IOKit ] ++ lib.optionals polkitSupport [ dbus polkit ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 00d36466617a..e2dab4e83429 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -22036,8 +22036,6 @@ with pkgs; hidapi = callPackage ../development/libraries/hidapi { inherit (darwin.apple_sdk.frameworks) Cocoa IOKit; - # TODO: remove once `udev` is `systemdMinimal` everywhere. - udev = systemdMinimal; }; highfive = callPackage ../development/libraries/highfive { }; @@ -22741,9 +22739,7 @@ with pkgs; libfakekey = callPackage ../development/libraries/libfakekey { }; - libfido2 = callPackage ../development/libraries/libfido2 { - udev = systemdMinimal; - }; + libfido2 = callPackage ../development/libraries/libfido2 {}; libfilezilla = darwin.apple_sdk_11_0.callPackage ../development/libraries/libfilezilla { inherit (darwin.apple_sdk_11_0.frameworks) ApplicationServices; @@ -23619,8 +23615,6 @@ with pkgs; libusb1 = callPackage ../development/libraries/libusb1 { inherit (darwin) libobjc; inherit (darwin.apple_sdk.frameworks) IOKit Security; - # TODO: remove once `udev` is `systemdMinimal` everywhere. - udev = systemdMinimal; }; libusbgx = callPackage ../development/libraries/libusbgx { }; @@ -28265,10 +28259,6 @@ with pkgs; lsscsi = callPackage ../os-specific/linux/lsscsi { }; lvm2 = callPackage ../os-specific/linux/lvm2/2_03.nix { - # udev is the same package as systemd which depends on cryptsetup - # which depends on lvm2 again. But we only need the libudev part - # which does not depend on cryptsetup. - udev = systemdMinimal; # break the cyclic dependency: # util-linux (non-minimal) depends (optionally, but on by default) on systemd, # systemd (optionally, but on by default) on cryptsetup and cryptsetup depends on lvm2 @@ -28805,11 +28795,14 @@ with pkgs; withUkify = false; withBootloader = false; }; - + systemdLibs = systemdMinimal.override { + pname = "systemd-minimal-libs"; + buildLibsOnly = true; + }; udev = if (with stdenv.hostPlatform; isLinux && isStatic) then libudev-zero - else systemd; # TODO: change to systemdMinimal + else systemdLibs; systemd-wait = callPackage ../os-specific/linux/systemd-wait { }; |