mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-24 07:53:19 +00:00
coreutils: split a coreutils-full version
- default coreutils is stripped of /share/ (11 -> 2 MiB) - coreutils-full retains /share/ and adds openssl for faster *sum tools - NixOS systemPackages contains coreutils-full - *Support parameter defaults are moved inside (it seemed confusing to have `? false` and "at once" with `? isLinux`) Closure considerations: + typical build-time closure will get lighter by ~9 MiB - typical closure of NixOS installation will grow by ~2 MiB, due to referring to both versions. I think it would be possible to re-use most of the utils between the two versions, but the expression would get much more complex. I considered having stdenv with minimal coreutils and the default `coreutils` attribute being full, but it turned out there were too many trivial references in nixpkgs, so it didn't seem easy to keep rebuild impact of openssl from growing significantly.
This commit is contained in:
parent
85facc4a70
commit
fd3927ac29
@ -13,7 +13,7 @@ let
|
||||
pkgs.attr
|
||||
pkgs.bashInteractive # bash with ncurses support
|
||||
pkgs.bzip2
|
||||
pkgs.coreutils
|
||||
pkgs.coreutils-full
|
||||
pkgs.cpio
|
||||
pkgs.curl
|
||||
pkgs.diffutils
|
||||
|
@ -1,9 +1,12 @@
|
||||
{ stdenv, lib, buildPackages
|
||||
, autoreconfHook, texinfo, fetchurl, perl, xz, libiconv, gmp ? null
|
||||
, hostPlatform, buildPlatform
|
||||
, aclSupport ? false, acl ? null
|
||||
, attrSupport ? false, attr ? null
|
||||
, aclSupport ? stdenv.isLinux, acl ? null
|
||||
, attrSupport ? stdenv.isLinux, attr ? null
|
||||
, selinuxSupport? false, libselinux ? null, libsepol ? null
|
||||
# No openssl in default version, so openssl-induced rebuilds aren't too big.
|
||||
# It makes *sum functions significantly faster.
|
||||
, minimal ? true, withOpenssl ? !minimal, openssl ? null
|
||||
, withPrefix ? false
|
||||
, singleBinary ? "symlinks" # you can also pass "shebangs" or false
|
||||
}:
|
||||
@ -40,6 +43,7 @@ stdenv.mkDerivation rec {
|
||||
configureFlags = [ "--with-packager=https://NixOS.org" ]
|
||||
++ optional (singleBinary != false)
|
||||
("--enable-single-binary" + optionalString (isString singleBinary) "=${singleBinary}")
|
||||
++ optional withOpenssl "--with-openssl"
|
||||
++ optional hostPlatform.isSunOS "ac_cv_func_inotify_init=no"
|
||||
++ optional withPrefix "--program-prefix=g"
|
||||
++ optionals (hostPlatform != buildPlatform && hostPlatform.libc == "glibc") [
|
||||
@ -52,6 +56,7 @@ stdenv.mkDerivation rec {
|
||||
buildInputs = [ gmp ]
|
||||
++ optional aclSupport acl
|
||||
++ optional attrSupport attr
|
||||
++ optional withOpenssl openssl
|
||||
++ optionals hostPlatform.isCygwin [ autoreconfHook texinfo ] # due to patch
|
||||
++ optionals selinuxSupport [ libselinux libsepol ]
|
||||
# TODO(@Ericson2314): Investigate whether Darwin could benefit too
|
||||
@ -82,9 +87,13 @@ stdenv.mkDerivation rec {
|
||||
sed -i Makefile -e 's|^INSTALL =.*|INSTALL = ${buildPackages.coreutils}/bin/install -c|'
|
||||
'';
|
||||
|
||||
postInstall = optionalString (hostPlatform != buildPlatform) ''
|
||||
postInstall = optionalString (hostPlatform != buildPlatform && !minimal) ''
|
||||
rm $out/share/man/man1/*
|
||||
cp ${buildPackages.coreutils}/share/man/man1/* $out/share/man/man1
|
||||
''
|
||||
# du: 8.7 M locale + 0.4 M man pages
|
||||
+ optionalString minimal ''
|
||||
rm -r "$out/share"
|
||||
'';
|
||||
|
||||
meta = {
|
||||
|
@ -1945,11 +1945,8 @@ with pkgs;
|
||||
|
||||
cool-retro-term = libsForQt5.callPackage ../applications/misc/cool-retro-term { };
|
||||
|
||||
coreutils = callPackage ../tools/misc/coreutils {
|
||||
aclSupport = stdenv.isLinux;
|
||||
attrSupport = stdenv.isLinux;
|
||||
};
|
||||
|
||||
coreutils = callPackage ../tools/misc/coreutils { };
|
||||
coreutils-full = coreutils.override { minimal = false; };
|
||||
coreutils-prefixed = coreutils.override { withPrefix = true; singleBinary = false; };
|
||||
|
||||
corkscrew = callPackage ../tools/networking/corkscrew { };
|
||||
|
Loading…
Reference in New Issue
Block a user