diff options
Diffstat (limited to 'pkgs/tools')
-rw-r--r-- | pkgs/tools/archivers/unzip/cross-cc.patch | 12 | ||||
-rw-r--r-- | pkgs/tools/archivers/unzip/default.nix | 12 | ||||
-rw-r--r-- | pkgs/tools/misc/coreutils/default.nix | 76 | ||||
-rw-r--r-- | pkgs/tools/misc/findutils/default.nix | 19 | ||||
-rw-r--r-- | pkgs/tools/misc/xburst-tools/default.nix | 5 | ||||
-rw-r--r-- | pkgs/tools/networking/dropbear/default.nix | 7 | ||||
-rw-r--r-- | pkgs/tools/system/ddrescue/default.nix | 14 | ||||
-rw-r--r-- | pkgs/tools/text/gnupatch/default.nix | 13 |
8 files changed, 91 insertions, 67 deletions
diff --git a/pkgs/tools/archivers/unzip/cross-cc.patch b/pkgs/tools/archivers/unzip/cross-cc.patch new file mode 100644 index 000000000000..3d38ffdef6e3 --- /dev/null +++ b/pkgs/tools/archivers/unzip/cross-cc.patch @@ -0,0 +1,12 @@ +--- a/unix/Makefile ++++ b/unix/Makefile +@@ -42,9 +42,7 @@ + # such as -DDOSWILD). + + # UnZip flags +-CC = cc# try using "gcc" target rather than changing this (CC and LD + LD = $(CC)# must match, else "unresolved symbol: ___main" is possible) +-AS = as + LOC = $(D_USE_BZ2) $(LOCAL_UNZIP) + AF = $(LOC) + CFLAGS = -O diff --git a/pkgs/tools/archivers/unzip/default.nix b/pkgs/tools/archivers/unzip/default.nix index b9fa760c019b..ad484b3d4d97 100644 --- a/pkgs/tools/archivers/unzip/default.nix +++ b/pkgs/tools/archivers/unzip/default.nix @@ -1,5 +1,8 @@ -{ stdenv, fetchurl, bzip2 -, enableNLS ? false, libnatspec }: +{ stdenv, fetchurl +, bzip2 +, enableNLS ? false, libnatspec +, buildPlatform, hostPlatform +}: stdenv.mkDerivation { name = "unzip-6.0"; @@ -25,14 +28,15 @@ stdenv.mkDerivation { url = "http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/app-arch/unzip/files/unzip-6.0-natspec.patch?revision=1.1"; name = "unzip-6.0-natspec.patch"; sha256 = "67ab260ae6adf8e7c5eda2d1d7846929b43562943ec4aff629bd7018954058b1"; - }); + }) + ++ stdenv.lib.optional (hostPlatform != buildPlatform) ./cross-cc.patch; nativeBuildInputs = [ bzip2 ]; buildInputs = [ bzip2 ] ++ stdenv.lib.optional enableNLS libnatspec; makefile = "unix/Makefile"; - NIX_LDFLAGS = [ "-lbz2" ] ++ stdenv.lib.optional enableNLS "-lnatspec"; + ${"NIX_${stdenv.cc.infixSalt_}LDFLAGS"} = [ "-lbz2" ] ++ stdenv.lib.optional enableNLS "-lnatspec"; buildFlags = "generic D_USE_BZ2=-DUSE_BZIP2 L_BZ2=-lbz2"; diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix index fdd184180833..42f8e74df313 100644 --- a/pkgs/tools/misc/coreutils/default.nix +++ b/pkgs/tools/misc/coreutils/default.nix @@ -1,8 +1,9 @@ -{ lib, stdenv, buildPackages, fetchurl, perl, xz, gmp ? null +{ stdenv, lib, buildPackages +, autoconf, automake114x, texinfo, fetchurl, perl, xz, libiconv, gmp ? null +, hostPlatform, buildPlatform , aclSupport ? false, acl ? null , attrSupport ? false, attr ? null , selinuxSupport? false, libselinux ? null, libsepol ? null -, autoconf, automake114x, texinfo , withPrefix ? false , singleBinary ? "symlinks" # you can also pass "shebangs" or false }: @@ -23,10 +24,10 @@ stdenv.mkDerivation rec { # FIXME needs gcc 4.9 in bootstrap tools hardeningDisable = [ "stackprotector" ]; - patches = optional stdenv.isCygwin ./coreutils-8.23-4.cygwin.patch; + patches = optional hostPlatform.isCygwin ./coreutils-8.23-4.cygwin.patch; # The test tends to fail on btrfs and maybe other unusual filesystems. - postPatch = optionalString (!stdenv.isDarwin) '' + postPatch = optionalString (!hostPlatform.isDarwin) '' sed '2i echo Skipping dd sparse test && exit 0' -i ./tests/dd/sparse.sh sed '2i echo Skipping cp sparse test && exit 0' -i ./tests/cp/sparse.sh sed '2i echo Skipping rm deep-2 test && exit 0' -i ./tests/rm/deep-2.sh @@ -42,58 +43,54 @@ stdenv.mkDerivation rec { configureFlags = optional (singleBinary != false) ("--enable-single-binary" + optionalString (isString singleBinary) "=${singleBinary}") - ++ optional stdenv.isSunOS "ac_cv_func_inotify_init=no" - ++ optional withPrefix "--program-prefix=g"; + ++ optional hostPlatform.isSunOS "ac_cv_func_inotify_init=no" + ++ optional withPrefix "--program-prefix=g" + ++ optionals (hostPlatform != buildPlatform && hostPlatform.libc == "glibc") [ + # TODO(19b98110126fde7cbb1127af7e3fe1568eacad3d): Needed for fstatfs() I + # don't know why it is not properly detected cross building with glibc. + "fu_cv_sys_stat_statfs2_bsize=yes" + ]; + buildInputs = [ gmp ] ++ optional aclSupport acl ++ optional attrSupport attr - ++ optionals stdenv.isCygwin [ autoconf automake114x texinfo ] # due to patch - ++ optionals selinuxSupport [ libselinux libsepol ]; - - crossAttrs = { - buildInputs = [ gmp.crossDrv ] - ++ optional aclSupport acl.crossDrv - ++ optional attrSupport attr.crossDrv - ++ optionals selinuxSupport [ libselinux.crossDrv libsepol.crossDrv ] - ++ optional (stdenv ? ccCross.libc.libiconv) - stdenv.ccCross.libc.libiconv.crossDrv; - - # Prevents attempts of running 'help2man' on cross-built binaries. - PERL = "missing"; - - # Works around a bug with 8.26: - # Makefile:3440: *** Recursive variable 'INSTALL' references itself (eventually). Stop. - preInstall = '' - sed -i Makefile -e 's|^INSTALL =.*|INSTALL = ${buildPackages.coreutils}/bin/install -c|' - ''; - - postInstall = '' - rm $out/share/man/man1/* - cp ${buildPackages.coreutils}/share/man/man1/* $out/share/man/man1 - ''; - - # Needed for fstatfs() - # I don't know why it is not properly detected cross building with glibc. - configureFlags = [ "fu_cv_sys_stat_statfs2_bsize=yes" ]; - doCheck = false; - }; + ++ optionals hostPlatform.isCygwin [ autoconf automake114x texinfo ] # due to patch + ++ optionals selinuxSupport [ libselinux libsepol ] + # TODO(@Ericson2314): Investigate whether Darwin could benefit too + ++ optional (hostPlatform != buildPlatform && hostPlatform.libc != "glibc") libiconv; # The tests are known broken on Cygwin # (http://thread.gmane.org/gmane.comp.gnu.core-utils.bugs/19025), # Darwin (http://thread.gmane.org/gmane.comp.gnu.core-utils.bugs/19351), # and {Open,Free}BSD. # With non-standard storeDir: https://github.com/NixOS/nix/issues/512 - doCheck = stdenv ? glibc && builtins.storeDir == "/nix/store"; + doCheck = hostPlatform == buildPlatform + && hostPlatform.libc == "glibc" + && builtins.storeDir == "/nix/store"; + + # Prevents attempts of running 'help2man' on cross-built binaries. + ${if hostPlatform == buildPlatform then null else "PERL"} = "missing"; # Saw random failures like ‘help2man: can't get '--help' info from # man/sha512sum.td/sha512sum’. enableParallelBuilding = false; NIX_LDFLAGS = optionalString selinuxSupport "-lsepol"; - FORCE_UNSAFE_CONFIGURE = optionalString stdenv.isSunOS "1"; + FORCE_UNSAFE_CONFIGURE = optionalString hostPlatform.isSunOS "1"; + + makeFlags = optionalString hostPlatform.isDarwin "CFLAGS=-D_FORTIFY_SOURCE=0"; + + # Works around a bug with 8.26: + # Makefile:3440: *** Recursive variable 'INSTALL' references itself (eventually). Stop. + ${if hostPlatform == buildPlatform then null else "preInstall"} = '' + sed -i Makefile -e 's|^INSTALL =.*|INSTALL = ${buildPackages.coreutils}/bin/install -c|' + ''; - makeFlags = optionalString stdenv.isDarwin "CFLAGS=-D_FORTIFY_SOURCE=0"; + ${if hostPlatform == buildPlatform then null else "postInstall"} = '' + rm $out/share/man/man1/* + cp ${buildPackages.coreutils}/share/man/man1/* $out/share/man/man1 + ''; meta = { homepage = http://www.gnu.org/software/coreutils/; @@ -112,4 +109,5 @@ stdenv.mkDerivation rec { maintainers = [ maintainers.eelco ]; }; + } diff --git a/pkgs/tools/misc/findutils/default.nix b/pkgs/tools/misc/findutils/default.nix index 53d75485d5ca..06a140fed502 100644 --- a/pkgs/tools/misc/findutils/default.nix +++ b/pkgs/tools/misc/findutils/default.nix @@ -1,4 +1,9 @@ -{ stdenv, fetchurl, coreutils }: +{ stdenv, fetchurl +, coreutils +, buildPlatform, hostPlatform +}: + +let inherit (stdenv.lib) optionals; in stdenv.mkDerivation rec { name = "findutils-4.6.0"; @@ -10,20 +15,18 @@ stdenv.mkDerivation rec { patches = [ ./memory-leak.patch ./no-install-statedir.patch ]; - buildInputs = [ coreutils ]; # bin/updatedb script needs to call sort + buildInputs = optionals (hostPlatform == buildPlatform) [ coreutils ]; # bin/updatedb script needs to call sort # Since glibc-2.25 the i686 tests hang reliably right after test-sleep. - doCheck = !stdenv.isDarwin && (stdenv.system != "i686-linux"); + doCheck + = !hostPlatform.isDarwin + && !(hostPlatform.libc == "glibc" && hostPlatform.isi686) + && hostPlatform == buildPlatform; outputs = [ "out" "info" ]; configureFlags = [ "--localstatedir=/var/cache" ]; - crossAttrs = { - # Fix the 'buildInputs = [ coreutils ]' above - that adds the cross coreutils to PATH :( - propagatedBuildInputs = [ ]; - }; - enableParallelBuilding = true; meta = { diff --git a/pkgs/tools/misc/xburst-tools/default.nix b/pkgs/tools/misc/xburst-tools/default.nix index 408879a45345..c64ae609bcbb 100644 --- a/pkgs/tools/misc/xburst-tools/default.nix +++ b/pkgs/tools/misc/xburst-tools/default.nix @@ -1,5 +1,6 @@ { stdenv, fetchgit, libusb, libusb1, autoconf, automake, confuse, pkgconfig -, gccCross ? null }: +, gccCross ? null, crossPrefix +}: let version = "2011-12-26"; @@ -18,7 +19,7 @@ stdenv.mkDerivation { ''; configureFlags = if gccCross != null then - "--enable-firmware CROSS_COMPILE=${gccCross.crossConfig}-" + "--enable-firmware CROSS_COMPILE=${crossPrefix}-" else ""; # Not to strip cross build binaries (this is for the gcc-cross-wrapper) diff --git a/pkgs/tools/networking/dropbear/default.nix b/pkgs/tools/networking/dropbear/default.nix index aeace91df191..a918aa6375f3 100644 --- a/pkgs/tools/networking/dropbear/default.nix +++ b/pkgs/tools/networking/dropbear/default.nix @@ -22,13 +22,6 @@ stdenv.mkDerivation rec { makeFlags=VPATH=`cat $NIX_CC/nix-support/orig-libc`/lib ''; - crossAttrs = { - # This works for uclibc, at least. - preConfigure = '' - makeFlags=VPATH=`cat ${stdenv.ccCross}/nix-support/orig-libc`/lib - ''; - }; - patches = [ # Allow sessions to inherit the PATH from the parent dropbear. # Otherwise they only get the usual /bin:/usr/bin kind of PATH diff --git a/pkgs/tools/system/ddrescue/default.nix b/pkgs/tools/system/ddrescue/default.nix index 3dcbf59d4d7d..0b94f328b84a 100644 --- a/pkgs/tools/system/ddrescue/default.nix +++ b/pkgs/tools/system/ddrescue/default.nix @@ -1,4 +1,9 @@ -{ stdenv, fetchurl, lzip }: +{ stdenv +, fetchurl, lzip +, hostPlatform, buildPlatform +}: + +let inherit (stdenv.lib) optionals; in stdenv.mkDerivation rec { name = "ddrescue-1.22"; @@ -10,7 +15,12 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ lzip ]; - doCheck = true; + doCheck = hostPlatform == buildPlatform; + + ${if hostPlatform != buildPlatform then "crossPlatforms" else null} = [ ]; + ${if hostPlatform != buildPlatform then "configureFlags" else null} = [ + "CXX=${stdenv.cc.prefix}c++" + ]; meta = with stdenv.lib; { description = "GNU ddrescue, a data recovery tool"; diff --git a/pkgs/tools/text/gnupatch/default.nix b/pkgs/tools/text/gnupatch/default.nix index adbd69154ecc..57543eb303b0 100644 --- a/pkgs/tools/text/gnupatch/default.nix +++ b/pkgs/tools/text/gnupatch/default.nix @@ -1,4 +1,7 @@ -{ stdenv, fetchurl, ed }: +{ stdenv, fetchurl +, ed +, buildPlatform, hostPlatform +}: stdenv.mkDerivation rec { name = "patch-2.7.5"; @@ -10,11 +13,11 @@ stdenv.mkDerivation rec { buildInputs = stdenv.lib.optional doCheck ed; - crossAttrs = { - configureFlags = [ "ac_cv_func_strnlen_working=yes" ]; - }; + configureFlags = if hostPlatform == buildPlatform then null else [ + "ac_cv_func_strnlen_working=yes" + ]; - doCheck = true; + doCheck = hostPlatform == buildPlatform; meta = { description = "GNU Patch, a program to apply differences to files"; |