forked from mirrors/nixpkgs
5a963f1d97
The "minimal" argument just removed some files to reduce package size. Now that we have multiple output derivations in Nixpkgs (we didn't when "minimal" was added), we can just throw more outputs at this problem and get the same effect, with the advantage that those files are actually there, available for download without a rebuild, if they're ever needed. I've tested that with this change, there's no difference in the closure size of util-linuxMinimal.bin. We have to set SYSCONFSTATICDIR to stop $bin/bin/agetty looking in $out for issue or issue.d. SYSCONFSTATICDIR is supposed to be for configuration that comes with a package, but it's currently only used for finding an issue, and util-linux doesn't come with any issue files, so I'm not really sure what the point is...
78 lines
2.7 KiB
Nix
78 lines
2.7 KiB
Nix
{ lib, stdenv, fetchurl, pkg-config, zlib, shadow, libcap_ng
|
|
, ncurses ? null, pam, systemd ? null
|
|
, nlsSupport ? true
|
|
}:
|
|
|
|
stdenv.mkDerivation rec {
|
|
pname = "util-linux";
|
|
version = "2.36.2";
|
|
|
|
src = fetchurl {
|
|
url = "mirror://kernel/linux/utils/util-linux/v${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
|
|
sha256 = "0psc0asjp1rmfx1j7468zfnk9nphlphybw2n8dcl74v8v2lnnlgp";
|
|
};
|
|
|
|
patches = [
|
|
./rtcwake-search-PATH-for-shutdown.patch
|
|
];
|
|
|
|
outputs = [ "bin" "dev" "out" "lib" "man" ];
|
|
|
|
postPatch = ''
|
|
patchShebangs tests/run.sh
|
|
|
|
substituteInPlace include/pathnames.h \
|
|
--replace "/bin/login" "${shadow}/bin/login"
|
|
substituteInPlace sys-utils/eject.c \
|
|
--replace "/bin/umount" "$bin/bin/umount"
|
|
'';
|
|
|
|
# !!! It would be better to obtain the path to the mount helpers
|
|
# (/sbin/mount.*) through an environment variable, but that's
|
|
# somewhat risky because we have to consider that mount can setuid
|
|
# root...
|
|
configureFlags = [
|
|
"--localstatedir=/var"
|
|
"--enable-write"
|
|
"--enable-last"
|
|
"--enable-mesg"
|
|
"--disable-use-tty-group"
|
|
"--enable-fs-paths-default=/run/wrappers/bin:/run/current-system/sw/bin:/sbin"
|
|
"--disable-makeinstall-setuid" "--disable-makeinstall-chown"
|
|
"--disable-su" # provided by shadow
|
|
(lib.enableFeature nlsSupport "nls")
|
|
(lib.withFeature (ncurses != null) "ncursesw")
|
|
(lib.withFeature (systemd != null) "systemd")
|
|
(lib.withFeatureAs (systemd != null)
|
|
"systemdsystemunitdir" "${placeholder "bin"}/lib/systemd/system/")
|
|
"SYSCONFSTATICDIR=${placeholder "lib"}/lib"
|
|
] ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform)
|
|
"scanf_cv_type_modifier=ms"
|
|
;
|
|
|
|
makeFlags = [
|
|
"usrbin_execdir=${placeholder "bin"}/bin"
|
|
"usrlib_execdir=${placeholder "lib"}/lib"
|
|
"usrsbin_execdir=${placeholder "bin"}/sbin"
|
|
];
|
|
|
|
nativeBuildInputs = [ pkg-config ];
|
|
buildInputs =
|
|
[ zlib pam libcap_ng ]
|
|
++ lib.filter (p: p != null) [ ncurses systemd ];
|
|
|
|
doCheck = false; # "For development purpose only. Don't execute on production system!"
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
meta = with lib; {
|
|
homepage = "https://www.kernel.org/pub/linux/utils/util-linux/";
|
|
description = "A set of system utilities for Linux";
|
|
changelog = "https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v${lib.versions.majorMinor version}/v${version}-ReleaseNotes";
|
|
# https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/tree/README.licensing
|
|
license = with licenses; [ gpl2Only gpl2Plus gpl3Plus lgpl21Plus bsd3 bsdOriginalUC publicDomain ];
|
|
platforms = platforms.linux;
|
|
priority = 6; # lower priority than coreutils ("kill") and shadow ("login" etc.) packages
|
|
};
|
|
}
|