Merge pull request #45721 from Mic92/remove-hurd

hurd: cleanup unmaintained target
This commit is contained in:
Jörg Thalheim 2018-08-28 23:32:39 +01:00 committed by GitHub
commit c748ac5bdd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
26 changed files with 34 additions and 906 deletions

View File

@ -36,7 +36,7 @@ in rec {
cygwin = filterDoubles predicates.isCygwin; cygwin = filterDoubles predicates.isCygwin;
darwin = filterDoubles predicates.isDarwin; darwin = filterDoubles predicates.isDarwin;
freebsd = filterDoubles predicates.isFreeBSD; 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; }); gnu = filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnu; });
illumos = filterDoubles predicates.isSunOS; illumos = filterDoubles predicates.isSunOS;
linux = filterDoubles predicates.isLinux; linux = filterDoubles predicates.isLinux;

View File

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

View File

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

View File

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

View File

@ -22,7 +22,7 @@ in with lib.systems.doubles; lib.runTests {
cygwin = assertTrue (mseteq cygwin [ "i686-cygwin" "x86_64-cygwin" ]); cygwin = assertTrue (mseteq cygwin [ "i686-cygwin" "x86_64-cygwin" ]);
darwin = assertTrue (mseteq darwin [ "x86_64-darwin" ]); darwin = assertTrue (mseteq darwin [ "x86_64-darwin" ]);
freebsd = assertTrue (mseteq freebsd [ "i686-freebsd" "x86_64-freebsd" ]); 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" ]); 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" ]); 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" ]); netbsd = assertTrue (mseteq netbsd [ "i686-netbsd" "x86_64-netbsd" ]);

View File

@ -24,7 +24,6 @@
, name ? "gcc" , name ? "gcc"
, libcCross ? null , libcCross ? null
, crossStageStatic ? false , crossStageStatic ? false
, libpthread ? null, libpthreadCross ? null # required for GNU/Hurd
, # Strip kills static libs of other archs (hence no cross) , # Strip kills static libs of other archs (hence no cross)
stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform
, gnused ? null , gnused ? null
@ -181,39 +180,7 @@ stdenv.mkDerivation ({
libc_dev = stdenv.cc.libc_dev; libc_dev = stdenv.cc.libc_dev;
postPatch = postPatch =
if targetPlatform.isHurd if targetPlatform != hostPlatform || stdenv.cc.libc != null then
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
# On NixOS, use the right path to the dynamic linker instead of # On NixOS, use the right path to the dynamic linker instead of
# `/lib/ld*.so'. # `/lib/ld*.so'.
let let
@ -379,21 +346,13 @@ stdenv.mkDerivation ({
++ optional langJava boehmgc ++ optional langJava boehmgc
++ optionals javaAwtGtk xlibs ++ optionals javaAwtGtk xlibs
++ optionals javaAwtGtk [ gmp mpfr ] ++ 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 ([] LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
++ optional (zlib != null) zlib ++ optional (zlib != null) zlib
++ optional langJava boehmgc ++ optional langJava boehmgc
++ optionals javaAwtGtk xlibs ++ optionals javaAwtGtk xlibs
++ optionals javaAwtGtk [ gmp mpfr ] ++ optionals javaAwtGtk [ gmp mpfr ])
++ optional (libpthread != null) libpthread)
); );
EXTRA_TARGET_FLAGS = optionals EXTRA_TARGET_FLAGS = optionals
@ -413,10 +372,7 @@ stdenv.mkDerivation ({
] else [ ] else [
"-Wl,-rpath,${libcCross.out}/lib" "-Wl,-rpath,${libcCross.out}/lib"
"-Wl,-rpath-link,${libcCross.out}/lib" "-Wl,-rpath-link,${libcCross.out}/lib"
]) ++ optionals (libpthreadCross != null) [ ]));
"-L${libpthreadCross}/lib"
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
]);
passthru = { passthru = {
inherit langC langCC langObjC langObjCpp langFortran langGo version; inherit langC langCC langObjC langObjCpp langFortran langGo version;

View File

@ -24,7 +24,6 @@
, name ? "gcc" , name ? "gcc"
, libcCross ? null , libcCross ? null
, crossStageStatic ? false , crossStageStatic ? false
, libpthread ? null, libpthreadCross ? null # required for GNU/Hurd
, # Strip kills static libs of other archs (hence no cross) , # Strip kills static libs of other archs (hence no cross)
stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform
, gnused ? null , gnused ? null
@ -190,39 +189,7 @@ stdenv.mkDerivation ({
libc_dev = stdenv.cc.libc_dev; libc_dev = stdenv.cc.libc_dev;
postPatch = postPatch =
if targetPlatform.isHurd if targetPlatform != hostPlatform || stdenv.cc.libc != null then
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
# On NixOS, use the right path to the dynamic linker instead of # On NixOS, use the right path to the dynamic linker instead of
# `/lib/ld*.so'. # `/lib/ld*.so'.
let let
@ -401,22 +368,13 @@ stdenv.mkDerivation ({
++ optional langJava boehmgc ++ optional langJava boehmgc
++ optionals javaAwtGtk xlibs ++ optionals javaAwtGtk xlibs
++ optionals javaAwtGtk [ gmp mpfr ] ++ 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 ([] LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
++ optional (zlib != null) zlib ++ optional (zlib != null) zlib
++ optional langJava boehmgc ++ optional langJava boehmgc
++ optionals javaAwtGtk xlibs ++ optionals javaAwtGtk xlibs
++ optionals javaAwtGtk [ gmp mpfr ] ++ optionals javaAwtGtk [ gmp mpfr ]));
++ optional (libpthread != null) libpthread)
);
EXTRA_TARGET_FLAGS = optionals EXTRA_TARGET_FLAGS = optionals
(targetPlatform != hostPlatform && libcCross != null) (targetPlatform != hostPlatform && libcCross != null)
@ -435,10 +393,7 @@ stdenv.mkDerivation ({
] else [ ] else [
"-Wl,-rpath,${libcCross.out}/lib" "-Wl,-rpath,${libcCross.out}/lib"
"-Wl,-rpath-link,${libcCross.out}/lib" "-Wl,-rpath-link,${libcCross.out}/lib"
]) ++ optionals (libpthreadCross != null) [ ]));
"-L${libpthreadCross}/lib"
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
]);
passthru = passthru =
{ inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; }; { inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; };

View File

@ -24,7 +24,6 @@
, name ? "gcc" , name ? "gcc"
, libcCross ? null , libcCross ? null
, crossStageStatic ? false , crossStageStatic ? false
, libpthread ? null, libpthreadCross ? null # required for GNU/Hurd
, # Strip kills static libs of other archs (hence no cross) , # Strip kills static libs of other archs (hence no cross)
stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform
, gnused ? null , gnused ? null
@ -188,39 +187,7 @@ stdenv.mkDerivation ({
''; '';
postPatch = postPatch =
if targetPlatform.isHurd if targetPlatform != hostPlatform || stdenv.cc.libc != null then
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
# On NixOS, use the right path to the dynamic linker instead of # On NixOS, use the right path to the dynamic linker instead of
# `/lib/ld*.so'. # `/lib/ld*.so'.
let let
@ -302,7 +269,7 @@ stdenv.mkDerivation ({
] ++ ] ++
optional (libelf != null) "--with-libelf=${libelf}" ++ optional (libelf != null) "--with-libelf=${libelf}" ++
optional (!(crossMingw && crossStageStatic)) 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 # Basic configuration
[ [
@ -400,13 +367,6 @@ stdenv.mkDerivation ({
++ optional langJava boehmgc ++ optional langJava boehmgc
++ optionals javaAwtGtk xlibs ++ optionals javaAwtGtk xlibs
++ optionals javaAwtGtk [ gmp mpfr ] ++ 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 ([] LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
@ -414,8 +374,7 @@ stdenv.mkDerivation ({
++ optional langJava boehmgc ++ optional langJava boehmgc
++ optionals javaAwtGtk xlibs ++ optionals javaAwtGtk xlibs
++ optionals javaAwtGtk [ gmp mpfr ] ++ optionals javaAwtGtk [ gmp mpfr ]
++ optional (libpthread != null) libpthread) ));
);
EXTRA_TARGET_FLAGS = optionals EXTRA_TARGET_FLAGS = optionals
(targetPlatform != hostPlatform && libcCross != null) (targetPlatform != hostPlatform && libcCross != null)
@ -434,10 +393,7 @@ stdenv.mkDerivation ({
] else [ ] else [
"-Wl,-rpath,${libcCross.out}/lib" "-Wl,-rpath,${libcCross.out}/lib"
"-Wl,-rpath-link,${libcCross.out}/lib" "-Wl,-rpath-link,${libcCross.out}/lib"
]) ++ optionals (libpthreadCross != null) [ ]));
"-L${libpthreadCross}/lib"
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
]);
passthru = passthru =
{ inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; }; { inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; };

View File

@ -24,7 +24,6 @@
, name ? "gcc" , name ? "gcc"
, libcCross ? null , libcCross ? null
, crossStageStatic ? false , crossStageStatic ? false
, libpthread ? null, libpthreadCross ? null # required for GNU/Hurd
, # Strip kills static libs of other archs (hence no cross) , # Strip kills static libs of other archs (hence no cross)
stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform
, gnused ? null , gnused ? null
@ -192,39 +191,7 @@ stdenv.mkDerivation ({
''; '';
postPatch = postPatch =
if targetPlatform.isHurd if targetPlatform != hostPlatform || stdenv.cc.libc != null then
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
# On NixOS, use the right path to the dynamic linker instead of # On NixOS, use the right path to the dynamic linker instead of
# `/lib/ld*.so'. # `/lib/ld*.so'.
let let
@ -408,22 +375,13 @@ stdenv.mkDerivation ({
++ optional langJava boehmgc ++ optional langJava boehmgc
++ optionals javaAwtGtk xlibs ++ optionals javaAwtGtk xlibs
++ optionals javaAwtGtk [ gmp mpfr ] ++ 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 ([] LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
++ optional (zlib != null) zlib ++ optional (zlib != null) zlib
++ optional langJava boehmgc ++ optional langJava boehmgc
++ optionals javaAwtGtk xlibs ++ optionals javaAwtGtk xlibs
++ optionals javaAwtGtk [ gmp mpfr ] ++ optionals javaAwtGtk [ gmp mpfr ]));
++ optional (libpthread != null) libpthread)
);
EXTRA_TARGET_FLAGS = optionals EXTRA_TARGET_FLAGS = optionals
(targetPlatform != hostPlatform && libcCross != null) (targetPlatform != hostPlatform && libcCross != null)
@ -442,10 +400,7 @@ stdenv.mkDerivation ({
] else [ ] else [
"-Wl,-rpath,${libcCross.out}/lib" "-Wl,-rpath,${libcCross.out}/lib"
"-Wl,-rpath-link,${libcCross.out}/lib" "-Wl,-rpath-link,${libcCross.out}/lib"
]) ++ optionals (libpthreadCross != null) [ ]));
"-L${libpthreadCross}/lib"
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
]);
passthru = passthru =
{ inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; }; { inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; };

View File

@ -17,7 +17,6 @@
, name ? "gcc" , name ? "gcc"
, libcCross ? null , libcCross ? null
, crossStageStatic ? false , crossStageStatic ? false
, libpthread ? null, libpthreadCross ? null # required for GNU/Hurd
, # Strip kills static libs of other archs (hence no cross) , # Strip kills static libs of other archs (hence no cross)
stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform
, gnused ? null , gnused ? null
@ -165,39 +164,7 @@ stdenv.mkDerivation ({
patchShebangs $configureScript patchShebangs $configureScript
done done
'' + ( '' + (
if targetPlatform.isHurd if targetPlatform != hostPlatform || stdenv.cc.libc != null then
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
# On NixOS, use the right path to the dynamic linker instead of # On NixOS, use the right path to the dynamic linker instead of
# `/lib/ld*.so'. # `/lib/ld*.so'.
let let
@ -357,19 +324,9 @@ stdenv.mkDerivation ({
CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([] CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
++ optional (zlib != null) zlib ++ 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 ([] LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath (optional (zlib != null) zlib));
++ optional (zlib != null) zlib
++ optional (libpthread != null) libpthread)
);
EXTRA_TARGET_FLAGS = optionals EXTRA_TARGET_FLAGS = optionals
(targetPlatform != hostPlatform && libcCross != null) (targetPlatform != hostPlatform && libcCross != null)
@ -388,10 +345,7 @@ stdenv.mkDerivation ({
] else [ ] else [
"-Wl,-rpath,${libcCross.out}/lib" "-Wl,-rpath,${libcCross.out}/lib"
"-Wl,-rpath-link,${libcCross.out}/lib" "-Wl,-rpath-link,${libcCross.out}/lib"
]) ++ optionals (libpthreadCross != null) [ ]));
"-L${libpthreadCross}/lib"
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
]);
passthru = passthru =
{ inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; }; { inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; };

View File

@ -17,7 +17,6 @@
, name ? "gcc" , name ? "gcc"
, libcCross ? null , libcCross ? null
, crossStageStatic ? false , crossStageStatic ? false
, libpthread ? null, libpthreadCross ? null # required for GNU/Hurd
, # Strip kills static libs of other archs (hence no cross) , # Strip kills static libs of other archs (hence no cross)
stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform
, gnused ? null , gnused ? null
@ -160,39 +159,7 @@ stdenv.mkDerivation ({
patchShebangs $configureScript patchShebangs $configureScript
done done
'' + ( '' + (
if targetPlatform.isHurd if targetPlatform != hostPlatform || stdenv.cc.libc != null then
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
# On NixOS, use the right path to the dynamic linker instead of # On NixOS, use the right path to the dynamic linker instead of
# `/lib/ld*.so'. # `/lib/ld*.so'.
let let
@ -346,19 +313,9 @@ stdenv.mkDerivation ({
CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([] CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
++ optional (zlib != null) zlib ++ 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 ([] LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath (optional (zlib != null) zlib));
++ optional (zlib != null) zlib
++ optional (libpthread != null) libpthread)
);
EXTRA_TARGET_FLAGS = optionals EXTRA_TARGET_FLAGS = optionals
(targetPlatform != hostPlatform && libcCross != null) (targetPlatform != hostPlatform && libcCross != null)
@ -377,10 +334,7 @@ stdenv.mkDerivation ({
] else [ ] else [
"-Wl,-rpath,${libcCross.out}/lib" "-Wl,-rpath,${libcCross.out}/lib"
"-Wl,-rpath-link,${libcCross.out}/lib" "-Wl,-rpath-link,${libcCross.out}/lib"
]) ++ optionals (libpthreadCross != null) [ ]));
"-L${libpthreadCross}/lib"
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
]);
passthru = passthru =
{ inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; }; { inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; };

View File

@ -17,7 +17,6 @@
, name ? "gcc" , name ? "gcc"
, libcCross ? null , libcCross ? null
, crossStageStatic ? false , crossStageStatic ? false
, libpthread ? null, libpthreadCross ? null # required for GNU/Hurd
, # Strip kills static libs of other archs (hence no cross) , # Strip kills static libs of other archs (hence no cross)
stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform
, gnused ? null , gnused ? null
@ -134,39 +133,7 @@ stdenv.mkDerivation ({
hardeningDisable = [ "format" ]; hardeningDisable = [ "format" ];
postPatch = postPatch =
if targetPlatform.isHurd if targetPlatform != hostPlatform || stdenv.cc.libc != null then
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
# On NixOS, use the right path to the dynamic linker instead of # On NixOS, use the right path to the dynamic linker instead of
# `/lib/ld*.so'. # `/lib/ld*.so'.
let let
@ -314,19 +281,9 @@ stdenv.mkDerivation ({
CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([] CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
++ optional (zlib != null) zlib ++ 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 ([] LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath (optional (zlib != null) zlib));
++ optional (zlib != null) zlib
++ optional (libpthread != null) libpthread)
);
EXTRA_TARGET_FLAGS = optionals EXTRA_TARGET_FLAGS = optionals
(targetPlatform != hostPlatform && libcCross != null) (targetPlatform != hostPlatform && libcCross != null)
@ -345,10 +302,7 @@ stdenv.mkDerivation ({
] else [ ] else [
"-Wl,-rpath,${libcCross.out}/lib" "-Wl,-rpath,${libcCross.out}/lib"
"-Wl,-rpath-link,${libcCross.out}/lib" "-Wl,-rpath-link,${libcCross.out}/lib"
]) ++ optionals (libpthreadCross != null) [ ]));
"-L${libpthreadCross}/lib"
"-Wl,${libpthreadCross.TARGET_LDFLAGS}"
]);
passthru = passthru =
{ inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; }; { inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; };

View File

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

View File

@ -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!

View File

@ -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";
})

View File

@ -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 { }))

View File

@ -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 {}))

View File

@ -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 ];
};
}

View File

@ -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

View File

@ -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 ];
};
}

View File

@ -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;
}

View File

@ -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 ];
};
}

View File

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

View File

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

View File

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

View File

@ -4504,7 +4504,7 @@ with pkgs;
patchutils = callPackage ../tools/text/patchutils { }; patchutils = callPackage ../tools/text/patchutils { };
parted = callPackage ../tools/misc/parted { hurd = null; }; parted = callPackage ../tools/misc/parted { };
pell = callPackage ../applications/misc/pell { }; pell = callPackage ../applications/misc/pell { };
@ -4531,24 +4531,6 @@ with pkgs;
pngout = callPackage ../tools/graphics/pngout { }; 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; }; ipsecTools = callPackage ../os-specific/linux/ipsec-tools { flex = flex_2_5_35; };
patch = gnupatch; patch = gnupatch;
@ -8764,8 +8746,6 @@ with pkgs;
gdb = callPackage ../development/tools/misc/gdb { gdb = callPackage ../development/tools/misc/gdb {
guile = null; guile = null;
hurd = gnu.hurdCross;
inherit (gnu) mig;
}; };
jhiccup = callPackage ../development/tools/java/jhiccup { }; jhiccup = callPackage ../development/tools/java/jhiccup { };
@ -13744,22 +13724,7 @@ with pkgs;
libossp_uuid = callPackage ../development/libraries/libossp-uuid { }; libossp_uuid = callPackage ../development/libraries/libossp-uuid { };
libuuid = libuuid = if stdenv.isLinux
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
then utillinuxMinimal then utillinuxMinimal
else null; else null;
@ -13831,9 +13796,6 @@ with pkgs;
nmon = callPackage ../os-specific/linux/nmon { }; nmon = callPackage ../os-specific/linux/nmon { };
# GNU/Hurd core packages.
gnu = recurseIntoAttrs (callPackage ../os-specific/gnu { });
hwdata = callPackage ../os-specific/linux/hwdata { }; hwdata = callPackage ../os-specific/linux/hwdata { };
i7z = callPackage ../os-specific/linux/i7z { }; i7z = callPackage ../os-specific/linux/i7z { };