hurd: cleanup unmaintained target

This has been not touched in 6 years. Let's remove it to cause less
problems when adding new cross-compiling infrastructure.
This also simplify gcc significantly.
wip/yesman
Jörg Thalheim 6 years ago
parent c4e8f4b442
commit 9efffe0135
  1. 2
      lib/systems/doubles.nix
  2. 2
      lib/systems/for-meta.nix
  3. 3
      lib/systems/inspect.nix
  4. 3
      lib/systems/parse.nix
  5. 2
      lib/tests/systems.nix
  6. 50
      pkgs/development/compilers/gcc/4.8/default.nix
  7. 51
      pkgs/development/compilers/gcc/4.9/default.nix
  8. 52
      pkgs/development/compilers/gcc/5/default.nix
  9. 51
      pkgs/development/compilers/gcc/6/default.nix
  10. 52
      pkgs/development/compilers/gcc/7/default.nix
  11. 52
      pkgs/development/compilers/gcc/8/default.nix
  12. 52
      pkgs/development/compilers/gcc/snapshot/default.nix
  13. 9
      pkgs/development/tools/misc/gdb/default.nix
  14. 113
      pkgs/os-specific/gnu/default.nix
  15. 91
      pkgs/os-specific/gnu/hurd/default.nix
  16. 81
      pkgs/os-specific/gnu/libpthread/default.nix
  17. 57
      pkgs/os-specific/gnu/mach/default.nix
  18. 50
      pkgs/os-specific/gnu/mig/default.nix
  19. 12
      pkgs/os-specific/gnu/mig/noyywrap.patch
  20. 44
      pkgs/os-specific/gnu/smbfs/default.nix
  21. 14
      pkgs/os-specific/gnu/smbfs/samba-without-byte-range-locks.patch
  22. 43
      pkgs/os-specific/gnu/unionfs/default.nix
  23. 2
      pkgs/stdenv/generic/default.nix
  24. 5
      pkgs/tools/filesystems/nixpart/0.4/parted.nix
  25. 5
      pkgs/tools/misc/parted/default.nix
  26. 42
      pkgs/top-level/all-packages.nix

@ -36,7 +36,7 @@ in rec {
cygwin = filterDoubles predicates.isCygwin;
darwin = filterDoubles predicates.isDarwin;
freebsd = filterDoubles predicates.isFreeBSD;
# Should be better, but MinGW is unclear, and HURD is bit-rotted.
# Should be better, but MinGW is unclear.
gnu = filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnu; });
illumos = filterDoubles predicates.isSunOS;
linux = filterDoubles predicates.isLinux;

@ -20,7 +20,7 @@ in rec {
cygwin = [ patterns.isCygwin ];
darwin = [ patterns.isDarwin ];
freebsd = [ patterns.isFreeBSD ];
# Should be better, but MinGW is unclear, and HURD is bit-rotted.
# Should be better, but MinGW is unclear.
gnu = [
{ kernel = parse.kernels.linux; abi = abis.gnu; }
{ kernel = parse.kernels.linux; abi = abis.gnueabi; }

@ -27,14 +27,13 @@ rec {
isBSD = { kernel = { families = { inherit (kernelFamilies) bsd; }; }; };
isDarwin = { kernel = { families = { inherit (kernelFamilies) darwin; }; }; };
isUnix = [ isBSD isDarwin isLinux isSunOS isHurd isCygwin ];
isUnix = [ isBSD isDarwin isLinux isSunOS isCygwin ];
isMacOS = { kernel = kernels.macos; };
isiOS = { kernel = kernels.ios; };
isLinux = { kernel = kernels.linux; };
isSunOS = { kernel = kernels.solaris; };
isFreeBSD = { kernel = kernels.freebsd; };
isHurd = { kernel = kernels.hurd; };
isNetBSD = { kernel = kernels.netbsd; };
isOpenBSD = { kernel = kernels.openbsd; };
isWindows = { kernel = kernels.windows; };

@ -172,7 +172,6 @@ rec {
macos = { execFormat = macho; families = { inherit darwin; }; name = "darwin"; };
ios = { execFormat = macho; families = { inherit darwin; }; };
freebsd = { execFormat = elf; families = { inherit bsd; }; };
hurd = { execFormat = elf; families = { }; };
linux = { execFormat = elf; families = { }; };
netbsd = { execFormat = elf; families = { inherit bsd; }; };
none = { execFormat = unknown; families = { }; };
@ -259,8 +258,6 @@ rec {
"2" = # We only do 2-part hacks for things Nix already supports
if elemAt l 1 == "cygwin"
then { cpu = elemAt l 0; kernel = "windows"; abi = "cygnus"; }
else if elemAt l 1 == "gnu"
then { cpu = elemAt l 0; kernel = "hurd"; abi = "gnu"; }
else { cpu = elemAt l 0; kernel = elemAt l 1; };
"3" = # Awkwards hacks, beware!
if elemAt l 1 == "apple"

@ -22,7 +22,7 @@ in with lib.systems.doubles; lib.runTests {
cygwin = assertTrue (mseteq cygwin [ "i686-cygwin" "x86_64-cygwin" ]);
darwin = assertTrue (mseteq darwin [ "x86_64-darwin" ]);
freebsd = assertTrue (mseteq freebsd [ "i686-freebsd" "x86_64-freebsd" ]);
gnu = assertTrue (mseteq gnu (linux /* ++ hurd ++ kfreebsd ++ ... */));
gnu = assertTrue (mseteq gnu (linux /* ++ kfreebsd ++ ... */));
illumos = assertTrue (mseteq illumos [ "x86_64-solaris" ]);
linux = assertTrue (mseteq linux [ "i686-linux" "x86_64-linux" "armv5tel-linux" "armv6l-linux" "armv7l-linux" "aarch64-linux" "mipsel-linux" ]);
netbsd = assertTrue (mseteq netbsd [ "i686-netbsd" "x86_64-netbsd" ]);

@ -24,7 +24,6 @@
, name ? "gcc"
, libcCross ? null
, crossStageStatic ? false
, libpthread ? null, libpthreadCross ? null # required for GNU/Hurd
, # Strip kills static libs of other archs (hence no cross)
stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform
, gnused ? null
@ -181,39 +180,7 @@ stdenv.mkDerivation ({
libc_dev = stdenv.cc.libc_dev;
postPatch =
if targetPlatform.isHurd
then
# On GNU/Hurd glibc refers to Hurd & Mach headers and libpthread is not
# in glibc, so add the right `-I' flags to the default spec string.
assert libcCross != null -> libpthreadCross != null;
let
libc = if libcCross != null then libcCross else stdenv.glibc;
gnu_h = "gcc/config/gnu.h";
extraCPPDeps =
libc.propagatedBuildInputs
++ stdenv.lib.optional (libpthreadCross != null) libpthreadCross
++ stdenv.lib.optional (libpthread != null) libpthread;
extraCPPSpec =
concatStrings (intersperse " "
(map (x: "-I${x.dev or x}/include") extraCPPDeps));
extraLibSpec =
if libpthreadCross != null
then "-L${libpthreadCross}/lib ${libpthreadCross.TARGET_LDFLAGS}"
else "-L${libpthread}/lib";
in
'' echo "augmenting \`CPP_SPEC' in \`${gnu_h}' with \`${extraCPPSpec}'..."
sed -i "${gnu_h}" \
-es'|CPP_SPEC *"\(.*\)$|CPP_SPEC "${extraCPPSpec} \1|g'
echo "augmenting \`LIB_SPEC' in \`${gnu_h}' with \`${extraLibSpec}'..."
sed -i "${gnu_h}" \
-es'|LIB_SPEC *"\(.*\)$|LIB_SPEC "${extraLibSpec} \1|g'
echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc.dev}/include'..."
sed -i "${gnu_h}" \
-es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc.dev}/include"|g'
''
else if targetPlatform != hostPlatform || stdenv.cc.libc != null then
if targetPlatform != hostPlatform || stdenv.cc.libc != null then
# On NixOS, use the right path to the dynamic linker instead of
# `/lib/ld*.so'.
let
@ -379,21 +346,13 @@ stdenv.mkDerivation ({
++ optional langJava boehmgc
++ optionals javaAwtGtk xlibs
++ optionals javaAwtGtk [ gmp mpfr ]
++ optional (libpthread != null) libpthread
++ optional (libpthreadCross != null) libpthreadCross
# On GNU/Hurd glibc refers to Mach & Hurd
# headers.
++ optionals (libcCross != null && libcCross ? propagatedBuildInputs)
libcCross.propagatedBuildInputs
));
LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
++ optional (zlib != null) zlib
++ optional langJava boehmgc
++ optionals javaAwtGtk xlibs
++ optionals javaAwtGtk [ gmp mpfr ]
++ optional (libpthread != null) libpthread)
++ optionals javaAwtGtk [ gmp mpfr ])
);
EXTRA_TARGET_FLAGS = optionals
@ -413,10 +372,7 @@ stdenv.mkDerivation ({
] else [
"-Wl,-rpath,${libcCross.out}/lib"
"-Wl,-rpath-link,${libcCross.out}/lib"
]) ++ optionals (libpthreadCross != null) [
"-L${libpthreadCross}/lib"
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
]);
]));
passthru = {
inherit langC langCC langObjC langObjCpp langFortran langGo version;

@ -24,7 +24,6 @@
, name ? "gcc"
, libcCross ? null
, crossStageStatic ? false
, libpthread ? null, libpthreadCross ? null # required for GNU/Hurd
, # Strip kills static libs of other archs (hence no cross)
stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform
, gnused ? null
@ -190,39 +189,7 @@ stdenv.mkDerivation ({
libc_dev = stdenv.cc.libc_dev;
postPatch =
if targetPlatform.isHurd
then
# On GNU/Hurd glibc refers to Hurd & Mach headers and libpthread is not
# in glibc, so add the right `-I' flags to the default spec string.
assert libcCross != null -> libpthreadCross != null;
let
libc = if libcCross != null then libcCross else stdenv.glibc;
gnu_h = "gcc/config/gnu.h";
extraCPPDeps =
libc.propagatedBuildInputs
++ stdenv.lib.optional (libpthreadCross != null) libpthreadCross
++ stdenv.lib.optional (libpthread != null) libpthread;
extraCPPSpec =
concatStrings (intersperse " "
(map (x: "-I${x.dev or x}/include") extraCPPDeps));
extraLibSpec =
if libpthreadCross != null
then "-L${libpthreadCross}/lib ${libpthreadCross.TARGET_LDFLAGS}"
else "-L${libpthread}/lib";
in
'' echo "augmenting \`CPP_SPEC' in \`${gnu_h}' with \`${extraCPPSpec}'..."
sed -i "${gnu_h}" \
-es'|CPP_SPEC *"\(.*\)$|CPP_SPEC "${extraCPPSpec} \1|g'
echo "augmenting \`LIB_SPEC' in \`${gnu_h}' with \`${extraLibSpec}'..."
sed -i "${gnu_h}" \
-es'|LIB_SPEC *"\(.*\)$|LIB_SPEC "${extraLibSpec} \1|g'
echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc.dev}/include'..."
sed -i "${gnu_h}" \
-es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc.dev}/include"|g'
''
else if targetPlatform != hostPlatform || stdenv.cc.libc != null then
if targetPlatform != hostPlatform || stdenv.cc.libc != null then
# On NixOS, use the right path to the dynamic linker instead of
# `/lib/ld*.so'.
let
@ -401,22 +368,13 @@ stdenv.mkDerivation ({
++ optional langJava boehmgc
++ optionals javaAwtGtk xlibs
++ optionals javaAwtGtk [ gmp mpfr ]
++ optional (libpthread != null) libpthread
++ optional (libpthreadCross != null) libpthreadCross
# On GNU/Hurd glibc refers to Mach & Hurd
# headers.
++ optionals (libcCross != null && libcCross ? propagatedBuildInputs)
libcCross.propagatedBuildInputs
));
LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
++ optional (zlib != null) zlib
++ optional langJava boehmgc
++ optionals javaAwtGtk xlibs
++ optionals javaAwtGtk [ gmp mpfr ]
++ optional (libpthread != null) libpthread)
);
++ optionals javaAwtGtk [ gmp mpfr ]));
EXTRA_TARGET_FLAGS = optionals
(targetPlatform != hostPlatform && libcCross != null)
@ -435,10 +393,7 @@ stdenv.mkDerivation ({
] else [
"-Wl,-rpath,${libcCross.out}/lib"
"-Wl,-rpath-link,${libcCross.out}/lib"
]) ++ optionals (libpthreadCross != null) [
"-L${libpthreadCross}/lib"
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
]);
]));
passthru =
{ inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; };

@ -24,7 +24,6 @@
, name ? "gcc"
, libcCross ? null
, crossStageStatic ? false
, libpthread ? null, libpthreadCross ? null # required for GNU/Hurd
, # Strip kills static libs of other archs (hence no cross)
stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform
, gnused ? null
@ -188,39 +187,7 @@ stdenv.mkDerivation ({
'';
postPatch =
if targetPlatform.isHurd
then
# On GNU/Hurd glibc refers to Hurd & Mach headers and libpthread is not
# in glibc, so add the right `-I' flags to the default spec string.
assert libcCross != null -> libpthreadCross != null;
let
libc = if libcCross != null then libcCross else stdenv.glibc;
gnu_h = "gcc/config/gnu.h";
extraCPPDeps =
libc.propagatedBuildInputs
++ stdenv.lib.optional (libpthreadCross != null) libpthreadCross
++ stdenv.lib.optional (libpthread != null) libpthread;
extraCPPSpec =
concatStrings (intersperse " "
(map (x: "-I${x.dev or x}/include") extraCPPDeps));
extraLibSpec =
if libpthreadCross != null
then "-L${libpthreadCross}/lib ${libpthreadCross.TARGET_LDFLAGS}"
else "-L${libpthread}/lib";
in
'' echo "augmenting \`CPP_SPEC' in \`${gnu_h}' with \`${extraCPPSpec}'..."
sed -i "${gnu_h}" \
-es'|CPP_SPEC *"\(.*\)$|CPP_SPEC "${extraCPPSpec} \1|g'
echo "augmenting \`LIB_SPEC' in \`${gnu_h}' with \`${extraLibSpec}'..."
sed -i "${gnu_h}" \
-es'|LIB_SPEC *"\(.*\)$|LIB_SPEC "${extraLibSpec} \1|g'
echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc.dev}/include'..."
sed -i "${gnu_h}" \
-es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc.dev}/include"|g'
''
else if targetPlatform != hostPlatform || stdenv.cc.libc != null then
if targetPlatform != hostPlatform || stdenv.cc.libc != null then
# On NixOS, use the right path to the dynamic linker instead of
# `/lib/ld*.so'.
let
@ -302,7 +269,7 @@ stdenv.mkDerivation ({
] ++
optional (libelf != null) "--with-libelf=${libelf}" ++
optional (!(crossMingw && crossStageStatic))
"--with-native-system-header-dir=${getDev stdenv.cc.libc}/include" ++
"--with-native-system-header-dir=${getDev stdenv.cc.libc}/include" ++
# Basic configuration
[
@ -400,13 +367,6 @@ stdenv.mkDerivation ({
++ optional langJava boehmgc
++ optionals javaAwtGtk xlibs
++ optionals javaAwtGtk [ gmp mpfr ]
++ optional (libpthread != null) libpthread
++ optional (libpthreadCross != null) libpthreadCross
# On GNU/Hurd glibc refers to Mach & Hurd
# headers.
++ optionals (libcCross != null && libcCross ? propagatedBuildInputs)
libcCross.propagatedBuildInputs
));
LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
@ -414,8 +374,7 @@ stdenv.mkDerivation ({
++ optional langJava boehmgc
++ optionals javaAwtGtk xlibs
++ optionals javaAwtGtk [ gmp mpfr ]
++ optional (libpthread != null) libpthread)
);
));
EXTRA_TARGET_FLAGS = optionals
(targetPlatform != hostPlatform && libcCross != null)
@ -434,10 +393,7 @@ stdenv.mkDerivation ({
] else [
"-Wl,-rpath,${libcCross.out}/lib"
"-Wl,-rpath-link,${libcCross.out}/lib"
]) ++ optionals (libpthreadCross != null) [
"-L${libpthreadCross}/lib"
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
]);
]));
passthru =
{ inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; };

@ -24,7 +24,6 @@
, name ? "gcc"
, libcCross ? null
, crossStageStatic ? false
, libpthread ? null, libpthreadCross ? null # required for GNU/Hurd
, # Strip kills static libs of other archs (hence no cross)
stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform
, gnused ? null
@ -192,39 +191,7 @@ stdenv.mkDerivation ({
'';
postPatch =
if targetPlatform.isHurd
then
# On GNU/Hurd glibc refers to Hurd & Mach headers and libpthread is not
# in glibc, so add the right `-I' flags to the default spec string.
assert libcCross != null -> libpthreadCross != null;
let
libc = if libcCross != null then libcCross else stdenv.glibc;
gnu_h = "gcc/config/gnu.h";
extraCPPDeps =
libc.propagatedBuildInputs
++ stdenv.lib.optional (libpthreadCross != null) libpthreadCross
++ stdenv.lib.optional (libpthread != null) libpthread;
extraCPPSpec =
concatStrings (intersperse " "
(map (x: "-I${x.dev or x}/include") extraCPPDeps));
extraLibSpec =
if libpthreadCross != null
then "-L${libpthreadCross}/lib ${libpthreadCross.TARGET_LDFLAGS}"
else "-L${libpthread}/lib";
in
'' echo "augmenting \`CPP_SPEC' in \`${gnu_h}' with \`${extraCPPSpec}'..."
sed -i "${gnu_h}" \
-es'|CPP_SPEC *"\(.*\)$|CPP_SPEC "${extraCPPSpec} \1|g'
echo "augmenting \`LIB_SPEC' in \`${gnu_h}' with \`${extraLibSpec}'..."
sed -i "${gnu_h}" \
-es'|LIB_SPEC *"\(.*\)$|LIB_SPEC "${extraLibSpec} \1|g'
echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc.dev}/include'..."
sed -i "${gnu_h}" \
-es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc.dev}/include"|g'
''
else if targetPlatform != hostPlatform || stdenv.cc.libc != null then
if targetPlatform != hostPlatform || stdenv.cc.libc != null then
# On NixOS, use the right path to the dynamic linker instead of
# `/lib/ld*.so'.
let
@ -408,22 +375,13 @@ stdenv.mkDerivation ({
++ optional langJava boehmgc
++ optionals javaAwtGtk xlibs
++ optionals javaAwtGtk [ gmp mpfr ]
++ optional (libpthread != null) libpthread
++ optional (libpthreadCross != null) libpthreadCross
# On GNU/Hurd glibc refers to Mach & Hurd
# headers.
++ optionals (libcCross != null && libcCross ? propagatedBuildInputs)
libcCross.propagatedBuildInputs
));
LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
++ optional (zlib != null) zlib
++ optional langJava boehmgc
++ optionals javaAwtGtk xlibs
++ optionals javaAwtGtk [ gmp mpfr ]
++ optional (libpthread != null) libpthread)
);
++ optionals javaAwtGtk [ gmp mpfr ]));
EXTRA_TARGET_FLAGS = optionals
(targetPlatform != hostPlatform && libcCross != null)
@ -442,10 +400,7 @@ stdenv.mkDerivation ({
] else [
"-Wl,-rpath,${libcCross.out}/lib"
"-Wl,-rpath-link,${libcCross.out}/lib"
]) ++ optionals (libpthreadCross != null) [
"-L${libpthreadCross}/lib"
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
]);
]));
passthru =
{ inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; };

@ -17,7 +17,6 @@
, name ? "gcc"
, libcCross ? null
, crossStageStatic ? false
, libpthread ? null, libpthreadCross ? null # required for GNU/Hurd
, # Strip kills static libs of other archs (hence no cross)
stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform
, gnused ? null
@ -165,39 +164,7 @@ stdenv.mkDerivation ({
patchShebangs $configureScript
done
'' + (
if targetPlatform.isHurd
then
# On GNU/Hurd glibc refers to Hurd & Mach headers and libpthread is not
# in glibc, so add the right `-I' flags to the default spec string.
assert libcCross != null -> libpthreadCross != null;
let
libc = if libcCross != null then libcCross else stdenv.glibc;
gnu_h = "gcc/config/gnu.h";
extraCPPDeps =
libc.propagatedBuildInputs
++ stdenv.lib.optional (libpthreadCross != null) libpthreadCross
++ stdenv.lib.optional (libpthread != null) libpthread;
extraCPPSpec =
concatStrings (intersperse " "
(map (x: "-I${x.dev or x}/include") extraCPPDeps));
extraLibSpec =
if libpthreadCross != null
then "-L${libpthreadCross}/lib ${libpthreadCross.TARGET_LDFLAGS}"
else "-L${libpthread}/lib";
in
'' echo "augmenting \`CPP_SPEC' in \`${gnu_h}' with \`${extraCPPSpec}'..."
sed -i "${gnu_h}" \
-es'|CPP_SPEC *"\(.*\)$|CPP_SPEC "${extraCPPSpec} \1|g'
echo "augmenting \`LIB_SPEC' in \`${gnu_h}' with \`${extraLibSpec}'..."
sed -i "${gnu_h}" \
-es'|LIB_SPEC *"\(.*\)$|LIB_SPEC "${extraLibSpec} \1|g'
echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc.dev}/include'..."
sed -i "${gnu_h}" \
-es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc.dev}/include"|g'
''
else if targetPlatform != hostPlatform || stdenv.cc.libc != null then
if targetPlatform != hostPlatform || stdenv.cc.libc != null then
# On NixOS, use the right path to the dynamic linker instead of
# `/lib/ld*.so'.
let
@ -357,19 +324,9 @@ stdenv.mkDerivation ({
CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
++ optional (zlib != null) zlib
++ optional (libpthread != null) libpthread
++ optional (libpthreadCross != null) libpthreadCross
# On GNU/Hurd glibc refers to Mach & Hurd
# headers.
++ optionals (libcCross != null && libcCross ? propagatedBuildInputs)
libcCross.propagatedBuildInputs
));
LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
++ optional (zlib != null) zlib
++ optional (libpthread != null) libpthread)
);
LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath (optional (zlib != null) zlib));
EXTRA_TARGET_FLAGS = optionals
(targetPlatform != hostPlatform && libcCross != null)
@ -388,10 +345,7 @@ stdenv.mkDerivation ({
] else [
"-Wl,-rpath,${libcCross.out}/lib"
"-Wl,-rpath-link,${libcCross.out}/lib"
]) ++ optionals (libpthreadCross != null) [
"-L${libpthreadCross}/lib"
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
]);
]));
passthru =
{ inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; };

@ -17,7 +17,6 @@
, name ? "gcc"
, libcCross ? null
, crossStageStatic ? false
, libpthread ? null, libpthreadCross ? null # required for GNU/Hurd
, # Strip kills static libs of other archs (hence no cross)
stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform
, gnused ? null
@ -160,39 +159,7 @@ stdenv.mkDerivation ({
patchShebangs $configureScript
done
'' + (
if targetPlatform.isHurd
then
# On GNU/Hurd glibc refers to Hurd & Mach headers and libpthread is not
# in glibc, so add the right `-I' flags to the default spec string.
assert libcCross != null -> libpthreadCross != null;
let
libc = if libcCross != null then libcCross else stdenv.glibc;
gnu_h = "gcc/config/gnu.h";
extraCPPDeps =
libc.propagatedBuildInputs
++ stdenv.lib.optional (libpthreadCross != null) libpthreadCross
++ stdenv.lib.optional (libpthread != null) libpthread;
extraCPPSpec =
concatStrings (intersperse " "
(map (x: "-I${x.dev or x}/include") extraCPPDeps));
extraLibSpec =
if libpthreadCross != null
then "-L${libpthreadCross}/lib ${libpthreadCross.TARGET_LDFLAGS}"
else "-L${libpthread}/lib";
in
'' echo "augmenting \`CPP_SPEC' in \`${gnu_h}' with \`${extraCPPSpec}'..."
sed -i "${gnu_h}" \
-es'|CPP_SPEC *"\(.*\)$|CPP_SPEC "${extraCPPSpec} \1|g'
echo "augmenting \`LIB_SPEC' in \`${gnu_h}' with \`${extraLibSpec}'..."
sed -i "${gnu_h}" \
-es'|LIB_SPEC *"\(.*\)$|LIB_SPEC "${extraLibSpec} \1|g'
echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc.dev}/include'..."
sed -i "${gnu_h}" \
-es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc.dev}/include"|g'
''
else if targetPlatform != hostPlatform || stdenv.cc.libc != null then
if targetPlatform != hostPlatform || stdenv.cc.libc != null then
# On NixOS, use the right path to the dynamic linker instead of
# `/lib/ld*.so'.
let
@ -346,19 +313,9 @@ stdenv.mkDerivation ({
CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
++ optional (zlib != null) zlib
++ optional (libpthread != null) libpthread
++ optional (libpthreadCross != null) libpthreadCross
# On GNU/Hurd glibc refers to Mach & Hurd
# headers.
++ optionals (libcCross != null && libcCross ? propagatedBuildInputs)
libcCross.propagatedBuildInputs
));
LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
++ optional (zlib != null) zlib
++ optional (libpthread != null) libpthread)
);
LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath (optional (zlib != null) zlib));
EXTRA_TARGET_FLAGS = optionals
(targetPlatform != hostPlatform && libcCross != null)
@ -377,10 +334,7 @@ stdenv.mkDerivation ({
] else [
"-Wl,-rpath,${libcCross.out}/lib"
"-Wl,-rpath-link,${libcCross.out}/lib"
]) ++ optionals (libpthreadCross != null) [
"-L${libpthreadCross}/lib"
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
]);
]));
passthru =
{ inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; };

@ -17,7 +17,6 @@
, name ? "gcc"
, libcCross ? null
, crossStageStatic ? false
, libpthread ? null, libpthreadCross ? null # required for GNU/Hurd
, # Strip kills static libs of other archs (hence no cross)
stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform
, gnused ? null
@ -134,39 +133,7 @@ stdenv.mkDerivation ({
hardeningDisable = [ "format" ];
postPatch =
if targetPlatform.isHurd
then
# On GNU/Hurd glibc refers to Hurd & Mach headers and libpthread is not
# in glibc, so add the right `-I' flags to the default spec string.
assert libcCross != null -> libpthreadCross != null;
let
libc = if libcCross != null then libcCross else stdenv.glibc;
gnu_h = "gcc/config/gnu.h";
extraCPPDeps =
libc.propagatedBuildInputs
++ stdenv.lib.optional (libpthreadCross != null) libpthreadCross
++ stdenv.lib.optional (libpthread != null) libpthread;
extraCPPSpec =
concatStrings (intersperse " "
(map (x: "-I${x.dev or x}/include") extraCPPDeps));
extraLibSpec =
if libpthreadCross != null
then "-L${libpthreadCross}/lib ${libpthreadCross.TARGET_LDFLAGS}"
else "-L${libpthread}/lib";
in
'' echo "augmenting \`CPP_SPEC' in \`${gnu_h}' with \`${extraCPPSpec}'..."
sed -i "${gnu_h}" \
-es'|CPP_SPEC *"\(.*\)$|CPP_SPEC "${extraCPPSpec} \1|g'
echo "augmenting \`LIB_SPEC' in \`${gnu_h}' with \`${extraLibSpec}'..."
sed -i "${gnu_h}" \
-es'|LIB_SPEC *"\(.*\)$|LIB_SPEC "${extraLibSpec} \1|g'
echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc.dev}/include'..."
sed -i "${gnu_h}" \
-es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc.dev}/include"|g'
''
else if targetPlatform != hostPlatform || stdenv.cc.libc != null then
if targetPlatform != hostPlatform || stdenv.cc.libc != null then
# On NixOS, use the right path to the dynamic linker instead of
# `/lib/ld*.so'.
let
@ -314,19 +281,9 @@ stdenv.mkDerivation ({
CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
++ optional (zlib != null) zlib
++ optional (libpthread != null) libpthread
++ optional (libpthreadCross != null) libpthreadCross
# On GNU/Hurd glibc refers to Mach & Hurd
# headers.
++ optionals (libcCross != null && libcCross ? propagatedBuildInputs)
libcCross.propagatedBuildInputs
));
LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
++ optional (zlib != null) zlib
++ optional (libpthread != null) libpthread)
);
LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath (optional (zlib != null) zlib));
EXTRA_TARGET_FLAGS = optionals
(targetPlatform != hostPlatform && libcCross != null)
@ -345,10 +302,7 @@ stdenv.mkDerivation ({
] else [
"-Wl,-rpath,${libcCross.out}/lib"
"-Wl,-rpath-link,${libcCross.out}/lib"
]) ++ optionals (libpthreadCross != null) [
"-L${libpthreadCross}/lib"
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
]);
]));
passthru =
{ inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; };

@ -11,9 +11,6 @@
, pythonSupport ? hostPlatform == buildPlatform && !hostPlatform.isCygwin, python ? null
, guile ? null
# Additional dependencies for GNU/Hurd.
, mig ? null, hurd ? null
}:
let
@ -21,7 +18,6 @@ let
version = "8.1.1";
in
assert targetPlatform.isHurd -> mig != null && hurd != null;
assert pythonSupport -> python != null;
stdenv.mkDerivation rec {
@ -38,13 +34,10 @@ stdenv.mkDerivation rec {
patches = [ ./debug-info-from-env.patch ]
++ stdenv.lib.optional stdenv.isDarwin ./darwin-target-match.patch;
nativeBuildInputs = [ pkgconfig texinfo perl setupDebugInfoDirs ]
# TODO(@Ericson2314) not sure if should be host or target
++ stdenv.lib.optional targetPlatform.isHurd mig;
nativeBuildInputs = [ pkgconfig texinfo perl setupDebugInfoDirs ];
buildInputs = [ ncurses readline gmp mpfr expat zlib guile ]
++ stdenv.lib.optional pythonSupport python
++ stdenv.lib.optional targetPlatform.isHurd hurd
++ stdenv.lib.optional doCheck dejagnu;
propagatedNativeBuildInputs = [ setupDebugInfoDirs ];

@ -1,113 +0,0 @@
# Packages that make up the GNU/Hurd operating system (aka. GNU).
args@{ fetchgit, stdenv, autoconf, automake, automake111x, libtool
, texinfo, glibcCross, hurdPartedCross, libuuid, samba
, gccCrossStageStatic, gcc
, pkgsi686Linux, newScope, config
, targetPlatform, buildPlatform
, overrides ? {}
, buildPackages, pkgs
}:
with args;
let
callPackage = newScope gnu;
forcedNativePackages =
if stdenv.hostPlatform == stdenv.buildPlatform
then pkgs
else buildPackages;
gnu = {
hurdCross = forcedNativePackages.callPackage ./hurd {
inherit fetchgit stdenv autoconf libtool texinfo
glibcCross hurdPartedCross;
inherit (gnu) machHeaders mig;
libuuid = libuuid.crossDrv;
automake = automake111x;
headersOnly = false;
cross = assert targetPlatform != buildPlatform; targetPlatform;
gccCross = gcc;
};
hurdCrossIntermediate = forcedNativePackages.callPackage ./hurd {
inherit fetchgit stdenv autoconf libtool texinfo glibcCross;
inherit (gnu) machHeaders mig;
hurdPartedCross = null;
libuuid = null;
automake = automake111x;
headersOnly = false;
cross = assert targetPlatform != buildPlatform; targetPlatform;
# The "final" GCC needs glibc and the Hurd libraries (libpthread in
# particular) so we first need an intermediate Hurd built with the
# intermediate GCC.
gccCross = gccCrossStageStatic;
# This intermediate Hurd is only needed to build libpthread, which needs
# libihash, and to build Parted, which needs libstore and
# libshouldbeinlibc.
buildTarget = "libihash libstore libshouldbeinlibc";
installTarget = "libihash-install libstore-install libshouldbeinlibc-install";
};
hurdHeaders = callPackage ./hurd {
automake = automake111x;
headersOnly = true;
gccCross = null;
glibcCross = null;
libuuid = null;
hurdPartedCross = null;
};
libpthreadHeaders = callPackage ./libpthread {
headersOnly = true;
hurd = null;
};
libpthreadCross = forcedNativePackages.callPackage ./libpthread {
inherit fetchgit stdenv autoconf automake libtool glibcCross;
inherit (gnu) machHeaders hurdHeaders;
hurd = gnu.hurdCrossIntermediate;
gccCross = gccCrossStageStatic;
cross = assert targetPlatform != buildPlatform; targetPlatform;
};
# In theory GNU Mach doesn't have to be cross-compiled. However, since it
# has to be built for i586 (it doesn't work on x86_64), one needs a cross
# compiler for that host.
mach = callPackage ./mach {
automake = automake111x;
};
machHeaders = callPackage ./mach {
automake = automake111x;
headersOnly = true;
mig = null;
};
mig = callPackage ./mig {
# Build natively, but force use of a 32-bit environment because we're
# targeting `i586-pc-gnu'.
stdenv = pkgsi686Linux.stdenv;
};
# XXX: Use this one for its `.crossDrv'. Using the one above from
# `x86_64-linux' leads to building a different cross-toolchain because of
# the `forceSystem'.
mig_raw = callPackage ./mig {};
smbfs = callPackage ./smbfs {
hurd = gnu.hurdCross;
};
unionfs = callPackage ./unionfs {
hurd = gnu.hurdCross;
};
}
# Allow callers to override elements of this attribute set.
// overrides;
in gnu # we trust!

@ -1,91 +0,0 @@
{ fetchgit, stdenv, autoconf, automake, libtool, texinfo
, machHeaders, mig, headersOnly ? true
, cross ? null, gccCross ? null, glibcCross ? null
, hurdPartedCross ? null, libuuid ? null
, buildTarget ? "all", installTarget ? "install" }:
assert (cross != null) -> (gccCross != null);
assert (hurdPartedCross != null) -> (libuuid != null);
let
# Unfortunately we can't use `master@{DATE}', see
# <http://www.bramschoenmakers.nl/en/node/645>.
date = "20111115";
rev = "969fbb646ffd89a482302e303eaded79781c3331";
suffix = if headersOnly
then "-headers"
else (if buildTarget != "all"
then "-minimal"
else "");
in
stdenv.mkDerivation ({
name = "hurd${suffix}-${date}";
src = fetchgit {
url = "git://git.sv.gnu.org/hurd/hurd.git";
sha256 = "b7f57ec2c6dcaf35ec03fb7979eb5506180ce4c6e2edf60a587f12ac5b11f004";
inherit rev;
};
buildInputs = [ autoconf automake libtool texinfo mig ]
++ stdenv.lib.optional (hurdPartedCross != null) hurdPartedCross
++ stdenv.lib.optional (libuuid != null) libuuid
++ stdenv.lib.optional (gccCross != null) gccCross
++ stdenv.lib.optional (glibcCross != null) glibcCross;
propagatedBuildInputs = [ machHeaders ];
configureFlags = stdenv.lib.optionals headersOnly [ "--build=i586-pc-gnu" ]
++ (if hurdPartedCross != null
then [ "--with-parted" ]
else [ "--without-parted" ]);
# Use `preConfigure' only for `autoreconf', so that users know they can
# simply clear it when the autoconf phase is unneeded.
preConfigure = "autoreconf -vfi";
postConfigure =
'' echo "removing \`-o root' from makefiles..."
for mf in {utils,daemons}/Makefile
do
sed -i "$mf" -e's/-o root//g'
done
'';
# Not needed after https://github.com/NixOS/nixpkgs/pull/43833
dontPatchShebangs = stdenv.hostPlatform != stdenv.buildPlatform;
meta = {
description = "The GNU Hurd, GNU project's replacement for the Unix kernel";
longDescription =
'' The GNU Hurd is the GNU project's replacement for the Unix kernel.
It is a collection of servers that run on the Mach microkernel to
implement file systems, network protocols, file access control, and
other features that are implemented by the Unix kernel or similar
kernels (such as Linux).
'';
license = stdenv.lib.licenses.gpl2Plus;
homepage = http://www.gnu.org/software/hurd/;
maintainers = [ stdenv.lib.maintainers.ludo ];
};
}
//
stdenv.lib.optionalAttrs (!headersOnly && buildTarget != null) {
# Use the default `buildPhase' and `installPhase' so that the usual hooks
# can still be used.
buildFlags = buildTarget;
installTargets = assert installTarget != null; installTarget;
}
//
stdenv.lib.optionalAttrs headersOnly {
dontBuild = true;
installPhase = "make install-headers";
})

@ -1,81 +0,0 @@
{ fetchgit, stdenv, autoconf, automake, libtool
, machHeaders, hurdHeaders, hurd, headersOnly ? false
, cross ? null, gccCross ? null, glibcCross ? null }:
assert (cross != null) -> (gccCross != null) && (glibcCross != null);
assert (!headersOnly) -> (hurd != null);
let
date = "20111020";
# Use the `tschwinge/Peter_Herbolzheimer' branch as prescribed in
# <http://www.gnu.org/software/hurd/hurd/building/cross-compiling.html>.
rev = "a7b82c3302bf9c47176648eb802a61ae2d9a16f5";
in
stdenv.mkDerivation ({
name = "libpthread-hurd-${if headersOnly then "headers-" else ""}${date}";
src = fetchgit {
url = "git://git.sv.gnu.org/hurd/libpthread.git";
sha256 = "e8300762914d927c0da4168341a5982a1057613e1af363ee68942087b2570b3d";
inherit rev;
};
nativeBuildInputs = [ autoconf automake libtool ];
buildInputs = [ machHeaders hurdHeaders ]
++ stdenv.lib.optional (!headersOnly) hurd
++ stdenv.lib.optional (gccCross != null) gccCross;
preConfigure = "autoreconf -vfi";
meta = {
description = "GNU Hurd's libpthread";
license = stdenv.lib.licenses.lgpl2Plus;
maintainers = [ stdenv.lib.maintainers.ludo ];
};
}
//
(if headersOnly
then {
configureFlags =
[ "--build=i586-pc-gnu"
"ac_cv_lib_ihash_hurd_ihash_create=yes"
];
dontBuild = true;
installPhase = "make install-data-local-headers";
}
else { })
//
(if cross != null
then {
# Tell gcc where to find `crt1.o' et al. This is specified in two
# different ways: one for gcc as run from `configure', and one for linking
# libpthread.so (by default `libtool --mode=link' swallows `-B', hence
# this workaround; see
# <http://lists.gnu.org/archive/html/bug-libtool/2010-05/msg00012.html>.)
LDFLAGS = "-B${glibcCross}/lib";
makeFlags = [ "LDFLAGS=-Wc,-B${glibcCross}/lib" ];
# Help the linker find glibc.
CPATH = "${glibcCross}/include";
LIBRARY_PATH = "${glibcCross}/lib";
passthru = {
# Extra target LDFLAGS to allow the cross-linker to find the
# dependencies of the cross libpthread.so, namely libihash.so.
# Note: these are raw `ld' flags, so `-Wl,' must be prepended when using
# `gcc'.
#
# This is actually only useful while building the final cross-gcc, since
# afterwards gcc-cross-wrapper should add the relevant flags.
TARGET_LDFLAGS = "-rpath-link=${hurd}/lib";
};
}
else { }))

@ -1,57 +0,0 @@
{ fetchgit, stdenv, mig ? null, autoconf, automake, texinfo
, headersOnly ? false }:
assert (!headersOnly) -> (mig != null);
let
date = "20120303";
rev = "2a603e88f86bee88e013c2451eacf076fbcaed81";
in
stdenv.mkDerivation ({
name = "gnumach${if headersOnly then "-headers" else ""}-${date}";
src = fetchgit {
url = "git://git.sv.gnu.org/hurd/gnumach.git";
sha256 = "1q8zk8xzbiwpnvvmfgkylj4gwkvkn5n2ydy9j054qv5plnaczj1c";
inherit rev;
};
configureFlags =
stdenv.lib.optional headersOnly "--build=i586-pc-gnu" # cheat
# Always enable dependency tracking. See
# <http://lists.gnu.org/archive/html/bug-hurd/2010-05/msg00137.html>.
++ [ "--enable-dependency-tracking" ];
nativeBuildInputs = [ autoconf automake texinfo ]
++ stdenv.lib.optional (mig != null) mig;
preConfigure = "autoreconf -vfi";
meta = {
description = "GNU Mach, the microkernel used by the GNU Hurd";
longDescription =
'' GNU Mach is the microkernel that the GNU Hurd system is based on.
It is maintained by the Hurd developers for the GNU project and
remains compatible with Mach 3.0.
The majority of GNU Mach's device drivers are from Linux 2.0. They
were added using glue code, i.e., a Linux emulation layer in Mach.
'';
license = stdenv.lib.licenses.gpl2Plus;
homepage = http://www.gnu.org/software/hurd/microkernel/mach/gnumach.html;
maintainers = [ stdenv.lib.maintainers.ludo ];
platforms = [ "i586-gnu" ];
};
}
//
(if headersOnly
then { dontBuild = true; installPhase = "make install-data"; }
else {}))

@ -1,50 +0,0 @@
{ fetchgit, stdenv, autoconf, automake, flex, bison, machHeaders, bash }:
let
date = "20100512";
rev = "4fee6a5652f609cb68cdbd9049d4da7a194f15f8";
in
stdenv.mkDerivation {
name = "mig-${date}";
src = fetchgit {
url = "git://git.sv.gnu.org/hurd/mig.git";
sha256 = "d6958d9b60925d4600aac133c9505bc873a16b203c69260bd0fb228922ee9273";
inherit rev;
};
patches = [ ./noyywrap.patch ];
nativeBuildInputs = [ autoconf automake flex bison machHeaders ];
preConfigure = "autoreconf -vfi";
doCheck = true;
# Fix the shebang to point to the cross-built shell. Won't be needed
# after #43833.
postInstall = ''
sed -i "$out/bin/mig" -e 's|^#!/.*|#!${bash}/bin/sh|g'
'';
meta = {
description = "GNU MIG, the Mach interface generator";
longDescription =
'' GNU MIG is the GNU distribution of the Mach 3.0 interface generator
MIG, as maintained by the GNU Hurd developers for the GNU project.
You need this tool to compile the GNU Mach and GNU Hurd
distributions, and to compile the GNU C library for the Hurd. Also,
you will need it for other software in the GNU system that uses
Mach-based inter-process communication.
'';
license = stdenv.lib.licenses.gpl2Plus;
homepage = http://www.gnu.org/software/hurd/microkernel/mach/mig/gnu_mig.html;
# platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux; # really GNU/Hurd
maintainers = [ stdenv.lib.maintainers.ludo ];
};
}

@ -1,12 +0,0 @@
Fix undefined reference to `yywrap'.
diff --git a/lexxer.l b/lexxer.l
index 9725d0b..15264bc 100644
--- a/lexxer.l
+++ b/lexxer.l
@@ -1,4 +1,5 @@
%option nounput
+%option noyywrap
%k 10000
%n 5000

@ -1,44 +0,0 @@
{ fetchcvs, stdenv, hurd, machHeaders, samba }:
let
date = "2012-03-15";
samba_patched = stdenv.lib.overrideDerivation samba (attrs: {
patches = attrs.patches ++ [ ./samba-without-byte-range-locks.patch ];
});
in
stdenv.mkDerivation rec {
name = "smbfs-${date}";
src = fetchcvs {
cvsRoot = ":pserver:anonymous@cvs.savannah.nongnu.org:/sources/hurdextras";
module = "smbfs";
sha256 = "5941d1a5da4488cbf0efe9aa0b41fe4ff5ba57b84ed24f7ff7c0feda4501d3e3";
inherit date;
};
patchPhase =
'' sed -i "Makefile" \
-e 's|gcc|i586-pc-gnu-gcc|g ;
s|^LDFLAGS=\(.*\)$|LDFLAGS=\1 -pthread|g'
'';
buildInputs = [ hurd machHeaders samba_patched ];
installPhase =
'' mkdir -p "$out/hurd"
cp -v smbfs "$out/hurd"
mkdir -p "$out/share/doc/${name}"
cp -v README "$out/share/doc/${name}"
'';
meta = {
description = "SMB/CIFS file system translator for GNU/Hurd";
homepage = http://www.nongnu.org/hurdextras/;
license = stdenv.lib.licenses.gpl3Plus;
maintainers = [ stdenv.lib.maintainers.ludo ];
};
}

@ -1,14 +0,0 @@
Since GNU/Hurd doesn't support byte-range file locks, shamelessly
disable them to allow the SMB client library to work (it uses TDB
to access /etc/samba/private/secrets.tdb, for instance.)
--- samba/lib/tdb/common/lock.c 2010-02-08 16:12:57.000000000 +0100
+++ samba/lib/tdb/common/lock.c 2012-03-01 23:39:02.000000000 +0100
@@ -48,7 +48,7 @@ int tdb_brlock(struct tdb_context *tdb,
struct flock fl;
int ret;
- if (tdb->flags & TDB_NOLOCK) {
+ if (1) {
return 0;
}

@ -1,43 +0,0 @@
{ fetchgit, stdenv, hurd, machHeaders, mig }:
let
date = "20120313";
rev = "64dfa4e12d93c13b676d1cd7d86f4f4004ebfafa";
in
stdenv.mkDerivation rec {
name = "unionfs-${date}";
src = fetchgit {
url = "git://git.sv.gnu.org/hurd/unionfs.git";
sha256 = "1c3d71112cb25f8f82719a16df936e43abcb1adb77af96c1bb100a8ad0889d65";
inherit rev;
};
patchPhase =
'' sed -i "Makefile" \
-e 's|gcc|i586-pc-gnu-gcc|g ;
s|-std=gnu99|-std=gnu99 -fgnu89-inline|g'
'';
makeFlags = [ "CC=i586-pc-gnu-gcc" ];
buildInputs = [ hurd machHeaders ];
nativeBuildInputs = [ mig ];
installPhase =
'' mkdir -p "$out/hurd"
cp -v unionfs "$out/hurd"
mkdir -p "$out/share/doc/${name}"
cp -v [A-Z]* "$out/share/doc/${name}"
'';
meta = {
description = "Union file system translator for GNU/Hurd";
homepage = http://www.gnu.org/software/hurd/hurd/translator/unionfs.html;
license = stdenv.lib.licenses.gpl2Plus;
maintainers = [ stdenv.lib.maintainers.ludo ];
};
}

@ -121,7 +121,7 @@ let
# Utility flags to test the type of platform.
inherit (hostPlatform)
isDarwin isLinux isSunOS isHurd isCygwin isFreeBSD isOpenBSD
isDarwin isLinux isSunOS isCygwin isFreeBSD isOpenBSD
isi686 isx86_64 is64bit isAarch32 isAarch64 isMips isBigEndian;
isArm = builtins.trace "stdenv.isArm is deprecated after 18.03" hostPlatform.isArm;

@ -1,5 +1,5 @@
{ stdenv, fetchurl, lvm2, libuuid, gettext, readline
, utillinux, check, enableStatic ? false, hurd ? null }:
, utillinux, check, enableStatic ? false }:
stdenv.mkDerivation rec {
name = "parted-3.1";
@ -12,8 +12,7 @@ stdenv.mkDerivation rec {
buildInputs = [ libuuid ]
++ stdenv.lib.optional (readline != null) readline
++ stdenv.lib.optional (gettext != null) gettext
++ stdenv.lib.optional (lvm2 != null) lvm2
++ stdenv.lib.optional (hurd != null) hurd;
++ stdenv.lib.optional (lvm2 != null) lvm2;
configureFlags =
(if (readline != null)

@ -1,5 +1,5 @@
{ stdenv, fetchurl, fetchpatch, lvm2, libuuid, gettext, readline, perl, python2
, utillinux, check, enableStatic ? false, hurd ? null }:
, utillinux, check, enableStatic ? false }:
stdenv.mkDerivation rec {
name = "parted-3.2";
@ -30,8 +30,7 @@ stdenv.mkDerivation rec {
buildInputs = [ libuuid ]
++ stdenv.lib.optional (readline != null) readline
++ stdenv.lib.optional (gettext != null) gettext
++ stdenv.lib.optional (lvm2 != null) lvm2
++ stdenv.lib.optional (hurd != null) hurd;
++ stdenv.lib.optional (lvm2 != null) lvm2;
configureFlags =
(if (readline != null)

@ -4502,7 +4502,7 @@ with pkgs;
patchutils = callPackage ../tools/text/patchutils { };
parted = callPackage ../tools/misc/parted { hurd = null; };
parted = callPackage ../tools/misc/parted { };
pell = callPackage ../applications/misc/pell { };
@ -4529,24 +4529,6 @@ with pkgs;
pngout = callPackage ../tools/graphics/pngout { };
hurdPartedCross =
if targetPlatform != buildPlatform && targetPlatform.config == "i586-pc-gnu"
then (makeOverridable
({ hurd }:
(parted.override {
# Needs the Hurd's libstore.
inherit hurd;
# The Hurd wants a libparted.a.
enableStatic = true;
gettext = null;
readline = null;
devicemapper = null;
}).crossDrv)
{ hurd = gnu.hurdCrossIntermediate; })
else null;
ipsecTools = callPackage ../os-specific/linux/ipsec-tools { flex = flex_2_5_35; };
patch = gnupatch;
@ -8762,8 +8744,6 @@ with pkgs;
gdb = callPackage ../development/tools/misc/gdb {
guile = null;
hurd = gnu.hurdCross;
inherit (gnu) mig;
};
jhiccup = callPackage ../development/tools/java/jhiccup { };
@ -13737,22 +13717,7 @@ with pkgs;
libossp_uuid = callPackage ../development/libraries/libossp-uuid { };
libuuid =
if targetPlatform != buildPlatform && targetPlatform.config == "i586-pc-gnu"
then (utillinuxMinimal // {
crossDrv = lib.overrideDerivation utillinuxMinimal.crossDrv (args: {
# `libblkid' fails to build on GNU/Hurd.
configureFlags = args.configureFlags
+ " --disable-libblkid --disable-mount --disable-libmount"
+ " --disable-fsck --enable-static --disable-partx";
doCheck = false;
CPPFLAGS = # ugly hack for ugly software!
lib.concatStringsSep " "
(map (v: "-D${v}=4096")
[ "PATH_MAX" "MAXPATHLEN" "MAXHOSTNAMELEN" ]);
});
})
else if stdenv.isLinux
libuuid = if stdenv.isLinux
then utillinuxMinimal
else null;
@ -13824,9 +13789,6 @@ with pkgs;
nmon = callPackage ../os-specific/linux/nmon { };
# GNU/Hurd core packages.
gnu = recurseIntoAttrs (callPackage ../os-specific/gnu { });
hwdata = callPackage ../os-specific/linux/hwdata { };
i7z = callPackage ../os-specific/linux/i7z { };

Loading…
Cancel
Save