at 16.09-beta 3.3 kB view raw
1# Packages that make up the GNU/Hurd operating system (aka. GNU). 2 3args@{ fetchgit, stdenv, autoconf, automake, automake111x, libtool 4, texinfo, glibcCross, hurdPartedCross, libuuid, samba 5, gccCrossStageStatic, gccCrossStageFinal 6, forceNativeDrv, forceSystem, newScope, platform, config, crossSystem 7, overrides ? {} }: 8 9with args; 10 11let 12 callPackage = newScope gnu; 13 14 gnu = { 15 hurdCross = forceNativeDrv (callPackage ./hurd { 16 inherit fetchgit stdenv autoconf libtool texinfo 17 glibcCross hurdPartedCross; 18 inherit (gnu) machHeaders mig; 19 libuuid = libuuid.crossDrv; 20 automake = automake111x; 21 headersOnly = false; 22 cross = assert crossSystem != null; crossSystem; 23 gccCross = gccCrossStageFinal; 24 }); 25 26 hurdCrossIntermediate = forceNativeDrv (callPackage ./hurd { 27 inherit fetchgit stdenv autoconf libtool texinfo glibcCross; 28 inherit (gnu) machHeaders mig; 29 hurdPartedCross = null; 30 libuuid = null; 31 automake = automake111x; 32 headersOnly = false; 33 cross = assert crossSystem != null; crossSystem; 34 35 # The "final" GCC needs glibc and the Hurd libraries (libpthread in 36 # particular) so we first need an intermediate Hurd built with the 37 # intermediate GCC. 38 gccCross = gccCrossStageStatic; 39 40 # This intermediate Hurd is only needed to build libpthread, which needs 41 # libihash, and to build Parted, which needs libstore and 42 # libshouldbeinlibc. 43 buildTarget = "libihash libstore libshouldbeinlibc"; 44 installTarget = "libihash-install libstore-install libshouldbeinlibc-install"; 45 }); 46 47 hurdHeaders = callPackage ./hurd { 48 automake = automake111x; 49 headersOnly = true; 50 gccCross = null; 51 glibcCross = null; 52 libuuid = null; 53 hurdPartedCross = null; 54 }; 55 56 libpthreadHeaders = callPackage ./libpthread { 57 headersOnly = true; 58 hurd = null; 59 }; 60 61 libpthreadCross = forceNativeDrv (callPackage ./libpthread { 62 inherit fetchgit stdenv autoconf automake libtool glibcCross; 63 inherit (gnu) machHeaders hurdHeaders; 64 hurd = gnu.hurdCrossIntermediate; 65 gccCross = gccCrossStageStatic; 66 cross = assert crossSystem != null; crossSystem; 67 }); 68 69 # In theory GNU Mach doesn't have to be cross-compiled. However, since it 70 # has to be built for i586 (it doesn't work on x86_64), one needs a cross 71 # compiler for that host. 72 mach = callPackage ./mach { 73 automake = automake111x; 74 }; 75 76 machHeaders = callPackage ./mach { 77 automake = automake111x; 78 headersOnly = true; 79 mig = null; 80 }; 81 82 mig = callPackage ./mig { 83 # Build natively, but force use of a 32-bit environment because we're 84 # targeting `i586-pc-gnu'. 85 stdenv = (forceSystem "i686-linux" "i386").stdenv; 86 }; 87 88 # XXX: Use this one for its `.crossDrv'. Using the one above from 89 # `x86_64-linux' leads to building a different cross-toolchain because of 90 # the `forceSystem'. 91 mig_raw = callPackage ./mig {}; 92 93 smbfs = callPackage ./smbfs { 94 hurd = gnu.hurdCross; 95 }; 96 97 unionfs = callPackage ./unionfs { 98 hurd = gnu.hurdCross; 99 }; 100 } 101 102 # Allow callers to override elements of this attribute set. 103 // overrides; 104 105in gnu # we trust!