Merge pull request #45721 from Mic92/remove-hurd
hurd: cleanup unmaintained target
This commit is contained in:
commit
c748ac5bdd
@ -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)
|
||||
|
@ -4504,7 +4504,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 { };
|
||||
|
||||
@ -4531,24 +4531,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;
|
||||
@ -8764,8 +8746,6 @@ with pkgs;
|
||||
|
||||
gdb = callPackage ../development/tools/misc/gdb {
|
||||
guile = null;
|
||||
hurd = gnu.hurdCross;
|
||||
inherit (gnu) mig;
|
||||
};
|
||||
|
||||
jhiccup = callPackage ../development/tools/java/jhiccup { };
|
||||
@ -13744,22 +13724,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;
|
||||
|
||||
@ -13831,9 +13796,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…
Reference in New Issue
Block a user