Merge pull request #84129 from Infinisil/removing-python-from-grub

Support removing python from zfs/grub closure
This commit is contained in:
Silvan Mosberger 2020-04-08 12:53:28 +02:00 committed by GitHub
commit b293421a69
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 7 deletions

View File

@ -1,6 +1,7 @@
{ stdenv, fetchurl, fetchpatch, lib, pkgconfig, utillinux, libcap, libtirpc, libevent
, sqlite, kerberos, kmod, libuuid, keyutils, lvm2, systemd, coreutils, tcp_wrappers
, python3, buildPackages, nixosTests
, enablePython ? true
}:
let
@ -25,8 +26,7 @@ stdenv.mkDerivation rec {
buildInputs = [
libtirpc libcap libevent sqlite lvm2
libuuid keyutils kerberos tcp_wrappers
python3
];
] ++ lib.optional enablePython python3;
enableParallelBuilding = true;
@ -96,6 +96,9 @@ stdenv.mkDerivation rec {
-e "s,/sbin/modprobe,${kmod}/bin/modprobe,g" \
-e "s,/usr/sbin,$out/bin,g" \
$out/etc/systemd/system/*
'' + lib.optionalString (!enablePython) ''
# Remove all scripts that require python (currently mountstats and nfsiostat)
grep -l /usr/bin/python $out/bin/* | xargs -I {} rm -v {}
'';
# One test fails on mips.

View File

@ -12,6 +12,7 @@
# Kernel dependencies
, kernel ? null
, enablePython ? true
}:
with stdenv.lib;
@ -57,7 +58,12 @@ let
'' + optionalString buildUser ''
substituteInPlace ./lib/libzfs/libzfs_mount.c --replace "/bin/umount" "${utillinux}/bin/umount" \
--replace "/bin/mount" "${utillinux}/bin/mount"
substituteInPlace ./lib/libshare/nfs.c --replace "/usr/sbin/exportfs" "${nfs-utils}/bin/exportfs"
substituteInPlace ./lib/libshare/nfs.c --replace "/usr/sbin/exportfs" "${
# We don't *need* python support, but we set it like this to minimize closure size:
# If it's disabled by default, no need to enable it, even if we have python enabled
# And if it's enabled by default, only change that if we explicitly disable python to remove python from the closure
nfs-utils.override (old: { enablePython = old.enablePython or true && enablePython; })
}/bin/exportfs"
substituteInPlace ./config/user-systemd.m4 --replace "/usr/lib/modules-load.d" "$out/etc/modules-load.d"
substituteInPlace ./config/zfs-build.m4 --replace "\$sysconfdir/init.d" "$out/etc/init.d"
substituteInPlace ./etc/zfs/Makefile.am --replace "\$(sysconfdir)" "$out/etc"
@ -92,7 +98,8 @@ let
nativeBuildInputs = [ autoreconfHook nukeReferences ]
++ optionals buildKernel (kernel.moduleBuildDependencies ++ [ perl ]);
buildInputs = optionals buildUser [ zlib libuuid attr ]
++ optionals (buildUser) [ openssl python3 ]
++ optional buildUser openssl
++ optional (buildUser && enablePython) python3
++ optional stdenv.hostPlatform.isMusl libtirpc;
# for zdb to get the rpath to libgcc_s, needed for pthread_cancel to work
@ -102,7 +109,7 @@ let
configureFlags = [
"--with-config=${configFile}"
(withFeatureAs buildUser "python" python3.interpreter)
(withFeatureAs (buildUser && enablePython) "python" python3.interpreter)
] ++ optionals buildUser [
"--with-dracutdir=$(out)/lib/dracut"
"--with-udevdir=$(out)/lib/udev"

View File

@ -16864,7 +16864,7 @@ in
zenpower = callPackage ../os-specific/linux/zenpower { };
inherit (callPackage ../os-specific/linux/zfs {
inherit (callPackages ../os-specific/linux/zfs {
configFile = "kernel";
inherit kernel;
}) zfsStable zfsUnstable;
@ -17503,7 +17503,7 @@ in
zenmonitor = callPackage ../os-specific/linux/zenmonitor { };
inherit (callPackage ../os-specific/linux/zfs {
inherit (callPackages ../os-specific/linux/zfs {
configFile = "user";
}) zfsStable zfsUnstable;