2011-11-01 23:10:51 +01:00
|
|
|
# Packages that make up the GNU/Hurd operating system (aka. GNU).
|
|
|
|
|
|
|
|
args@{ fetchgit, stdenv, autoconf, automake, automake111x, libtool
|
2012-02-23 01:01:29 +01:00
|
|
|
, texinfo, glibcCross, hurdPartedCross, libuuid, samba_light
|
2011-11-01 23:10:51 +01:00
|
|
|
, gccCrossStageStatic, gccCrossStageFinal
|
2012-04-04 21:50:15 +02:00
|
|
|
, forceBuildDrv, forceSystem, callPackage, platform, config, crossSystem
|
2012-04-04 22:05:48 +02:00
|
|
|
, overrides ? {} }:
|
2011-11-01 23:10:51 +01:00
|
|
|
|
|
|
|
with args;
|
|
|
|
|
|
|
|
rec {
|
2012-04-04 21:50:15 +02:00
|
|
|
# Allow callers to override elements of this attribute set.
|
2012-04-04 22:05:48 +02:00
|
|
|
__overrides = overrides;
|
2012-04-04 21:50:15 +02:00
|
|
|
|
2011-11-01 23:10:51 +01:00
|
|
|
hurdCross = forceBuildDrv(import ./hurd {
|
|
|
|
inherit fetchgit stdenv autoconf libtool texinfo machHeaders
|
|
|
|
mig glibcCross hurdPartedCross;
|
|
|
|
libuuid = libuuid.hostDrv;
|
|
|
|
automake = automake111x;
|
|
|
|
headersOnly = false;
|
|
|
|
cross = assert crossSystem != null; crossSystem;
|
|
|
|
gccCross = gccCrossStageFinal;
|
|
|
|
});
|
|
|
|
|
|
|
|
hurdCrossIntermediate = forceBuildDrv(import ./hurd {
|
|
|
|
inherit fetchgit stdenv autoconf libtool texinfo machHeaders
|
|
|
|
mig glibcCross;
|
|
|
|
automake = automake111x;
|
|
|
|
headersOnly = false;
|
|
|
|
cross = assert crossSystem != null; crossSystem;
|
|
|
|
|
|
|
|
# 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 = forceBuildDrv(import ./libpthread {
|
|
|
|
inherit fetchgit stdenv autoconf automake libtool
|
|
|
|
machHeaders hurdHeaders glibcCross;
|
|
|
|
hurd = hurdCrossIntermediate;
|
|
|
|
gccCross = gccCrossStageStatic;
|
|
|
|
cross = assert crossSystem != null; crossSystem;
|
|
|
|
});
|
|
|
|
|
|
|
|
# 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;
|
|
|
|
};
|
|
|
|
|
2012-03-15 21:27:53 +01:00
|
|
|
mig = callPackage ./mig {
|
|
|
|
# Build natively, but force use of a 32-bit environment because we're
|
|
|
|
# targeting `i586-pc-gnu'.
|
|
|
|
stdenv = (forceSystem "i686-linux").stdenv;
|
|
|
|
};
|
2012-02-23 01:01:29 +01:00
|
|
|
|
2012-03-15 21:28:07 +01:00
|
|
|
# XXX: Use this one for its `.hostDrv'. Using the one above from
|
|
|
|
# `x86_64-linux' leads to building a different cross-toolchain because of
|
|
|
|
# the `forceSystem'.
|
|
|
|
mig_raw = callPackage ./mig {};
|
|
|
|
|
2012-02-23 01:01:29 +01:00
|
|
|
smbfs = callPackage ./smbfs {
|
|
|
|
samba = samba_light;
|
|
|
|
hurd = hurdCross;
|
|
|
|
};
|
2012-03-14 00:19:02 +01:00
|
|
|
|
|
|
|
unionfs = callPackage ./unionfs {
|
|
|
|
hurd = hurdCross;
|
|
|
|
};
|
2011-11-01 23:10:51 +01:00
|
|
|
}
|