Updating from trunk.

svn path=/nixpkgs/branches/stdenv-updates/; revision=20491
This commit is contained in:
Lluís Batlle i Rossell 2010-03-09 13:33:56 +00:00
commit 1bb2ab1904
27 changed files with 371 additions and 291 deletions

View File

@ -13,7 +13,7 @@ stdenv.mkDerivation {
sha256 = "1sxs1nwb2zh2j8dbwm65r04byn66yn79kpzhilhswly6r8d7yivg";
};
buildInputs = [
buildNativeInputs = [
glibc
glib
stdenv.gcc.gcc
@ -51,7 +51,7 @@ stdenv.mkDerivation {
chmod +x $out/bin/googleearth
fullPath=
for i in $buildInputs; do
for i in $buildNativeInputs; do
fullPath=$fullPath:$i/lib
done

View File

@ -1,18 +0,0 @@
{stdenv, fetchurl, SDL, zlib, which}:
stdenv.mkDerivation {
name = "qemu-0.12.2";
src = fetchurl {
url = http://download.savannah.gnu.org/releases/qemu/qemu-0.12.2.tar.gz;
sha256 = "0hv8fs8z14miryqm81vhlwwp4gmffw11lka7945rxn6vqzpc5kmc";
};
patchFlags = "-p2";
buildInputs = [SDL zlib which];
meta = {
description = "QEmu processor emulator";
};
}

View File

@ -0,0 +1,18 @@
{stdenv, fetchurl, SDL, zlib, which}:
stdenv.mkDerivation rec {
name = "qemu-0.12.3";
src = fetchurl {
url = "http://download.savannah.gnu.org/releases/qemu/${name}.tar.gz";
sha256 = "0jyyz9vm8qrjb6nzfgdwmj9y990fnk2bl9ja0sr1i555n27nzqiw";
};
patchFlags = "-p2";
buildInputs = [SDL zlib which];
meta = {
description = "QEmu processor emulator";
};
}

View File

@ -0,0 +1,12 @@
{cabal, parsec}:
cabal.mkDerivation (self : {
pname = "csv";
version = "0.1.1";
sha256 = "046e989f4bb76c9b15c33c3ec63f57a689317de8170449c9cf9e152393b7f1a0";
propagatedBuildInputs = [parsec];
meta = {
description = "CSV loader and dumper";
};
})

View File

@ -2,8 +2,8 @@
cabal.mkDerivation (self : {
pname = "uulib";
version = "0.9.10";
sha256 = "1df7336ed76c278323c2e25ab53ec1afc9eba6a7c918c826e9f783e84479e08f";
version = "0.9.11";
sha256 = "f364ec14f249c9fc28ab341050c7e1cc1bde865fb787e4456c07c1df450815c8";
meta = {
description = "Haskell Utecht Tools Library";
};

View File

@ -2,6 +2,13 @@
stdenv.mkDerivation {
name = "libusb-0.1.12";
# On non-linux, we get warnings compiling, and we don't want the
# build to break.
patchPhase = ''
sed -i s/-Werror// Makefile.in
'';
src = fetchurl {
url = mirror://sourceforge/libusb/libusb-0.1.12.tar.gz;
md5 = "caf182cbc7565dac0fd72155919672e6";

View File

@ -1,5 +1,11 @@
{ stdenv, fetchurl, perl }:
let
opensslCrossSystem = stdenv.lib.attrByPath [ "openssl" "system" ]
(throw "openssl needs its platform name cross building" null)
stdenv.cross;
in
stdenv.mkDerivation rec {
name = "openssl-0.9.8l";
@ -10,12 +16,24 @@ stdenv.mkDerivation rec {
patches = [ ./darwin-arch.patch ];
buildInputs = [ perl ];
buildNativeInputs = [ perl ];
configureScript = "./config";
configureFlags = "shared";
crossAttrs = {
configurePhase = ''
export cross=$crossSystem-
./Configure --prefix=$out ${opensslCrossSystem} shared
'';
buildPhase = ''
make CC=$crossConfig-gcc \
AR="$crossConfig-ar r" \
RANLIB=$crossConfig-ranlib
'';
};
meta = {
homepage = http://www.openssl.org/;
description = "A cryptographic library that implements the SSL and TLS protocols";

View File

@ -11,13 +11,12 @@ assert pythonBindings -> python != null;
let
optional = stdenv.lib.optional;
in
stdenv.mkDerivation
{
name = "radare-1.4.2";
stdenv.mkDerivation rec {
name = "radare-1.5";
src = fetchurl {
url = http://radare.org/get/radare-1.4.2.tar.gz;
sha256 = "09pai3k4x3kzq7zjfd8425jjb16fpximrhp5wyy6pwgdc82q30sd";
url = "http://radare.org/get/${name}.tar.gz";
sha256 = "1r0c9cc7z9likma8zicp2pbv2y85vjjmnk0k45wdhbvhgqh6il1h";
};
@ -32,6 +31,6 @@ stdenv.mkDerivation
homepage = http://radare.org/;
license = "GPLv2+";
maintainers = with stdenv.lib.maintainers; [viric];
platforms = with stdenv.lib.platforms; linux;
platforms = with stdenv.lib.platforms; all;
};
}

View File

@ -2,9 +2,9 @@
cabal.mkDerivation (self : {
pname = "uuagc";
version = "0.9.10";
version = "0.9.14";
name = self.fname;
sha256 = "cdbe78b6138a67bbc612f0f667f70ba483ebbdaa4d0c87c5508cfb5e68a49dcb";
sha256 = "076250219874b03fc04473a71f6fc6e1c2324f3a65e98a6f7afcaa42de4dea0c";
extraBuildInputs = [uulib];
meta = {
description = "Attribute Grammar System of Universiteit Utrecht";

View File

@ -31,7 +31,7 @@ rec {
overrideDerivation = drv: f:
let
# Filter out special attributes.
attrs = removeAttrs drv ["meta" "passthru" "outPath" "drvPath" "hostDrv" "buildDrv"];
attrs = removeAttrs drv ["meta" "passthru" "outPath" "drvPath" "hostDrv" "buildDrv" "type"];
newDrv = derivation (attrs // (f drv));
in newDrv //
{ meta = if drv ? meta then drv.meta else {};

View File

@ -46,19 +46,26 @@ rec {
doPostInstall = fullDepEntry(''
mv $out/bin $out/libexec
ensureDir $out/bin
for i in $out/libexec/*/*; do
for i in "$out/libexec/"*"/"*; do
echo -ne "#! /bin/sh\\n$i \"\$@\"" >$out/bin/$(basename $i)
chmod a+x $out/bin/$(basename $i)
done
[ -d $out/texmf-config ] || ln -s $out/texmf $out/texmf-config
ln -s $out/*texmf* $out/share/
ln -s "$out/"*texmf* "$out/share/"
sed -e 's/.*pyhyph.*/=&/' -i $out/texmf-config/tex/generic/config/language.dat
PATH=$PATH:$out/bin mktexlsr $out/texmf*
HOME=. PATH=$PATH:$out/bin updmap-sys --syncwithtrees
# Prebuild the format files, as it used to be done with TeXLive 2007.
# Note the funny argument parser of `mktexfmt', which wants something
# ending in `.fmt' as its first argument.
ensureDir "$out/texmf-var/web2c"
PATH="$PATH:$out/bin" mktexfmt does-not-matter.fmt \
--fmtdir="$out/texmf-var/web2c" --all
PATH=$PATH:$out/bin mktexlsr $out/texmf*
'') ["minInit" "defEnsureDir" "doUnpack" "doMakeInstall"];

View File

@ -114,7 +114,10 @@ stdenv.mkDerivation {
kernelConfig = kernelConfigFun configCross;
buildInputs = lib.optional (cp.uboot != null) (ubootChooser cp.uboot);
# The substitution of crossAttrs happens *after* the stdenv cross adapter sets
# the parameters for the usual stdenv. Thus, we need to specify
# the ".hostDrv" in the buildInputs here.
buildInputs = lib.optional (cp.uboot != null) (ubootChooser cp.uboot).hostDrv;
};
meta = {

View File

@ -2,7 +2,7 @@
let
versionNumber = "195.36.08";
versionNumber = "190.53";
in
@ -15,12 +15,12 @@ stdenv.mkDerivation {
if stdenv.system == "i686-linux" then
fetchurl {
url = "http://us.download.nvidia.com/XFree86/Linux-x86/${versionNumber}/NVIDIA-Linux-x86-${versionNumber}-pkg0.run";
sha256 = "0kwkms1lj7h0gaz6x3m44575mfb1zbif0xlm55xffym2n4338lds";
sha256 = "0ypm4ld8zvir5c6nc1a7x4wxkb0fdx13lf8a2fzi3fmvhpa8bag9";
}
else if stdenv.system == "x86_64-linux" then
fetchurl {
url = "http://us.download.nvidia.com/XFree86/Linux-x86_64/${versionNumber}/NVIDIA-Linux-x86_64-${versionNumber}-pkg0.run";
sha256 = "14yxypv4fq4ldpin51110bs5a4062mfr7gvr1vikhsa1b2vq502f";
sha256 = "0mm841563wy373hg5az42dncmvkzk8y7yxlij7axw4q1pjbihi80";
}
else throw "nvidia-x11 does not support platform ${stdenv.system}";

View File

@ -3,11 +3,11 @@
assert stdenv.isLinux;
stdenv.mkDerivation rec {
name = "qemu-kvm-0.12.2";
name = "qemu-kvm-0.12.3";
src = fetchurl {
url = "mirror://sourceforge/kvm/${name}.tar.gz";
sha256 = "0nmg9dp3h040dkxq5vv4i7ip76v98rnhzqwy4pd88zznawc2k9l2";
sha256 = "1cn20jsmf27h23ynm804bz41i2fmmbg02gbnfknz6cwbjg4cvk3p";
};
patches = [ ./unix-domain.patch ./smb-tmpdir.patch ];

View File

@ -6,12 +6,12 @@
assert sslSupport -> openssl != null;
stdenv.mkDerivation rec {
version = "2.2.14";
version = "2.2.15";
name = "apache-httpd-${version}";
src = fetchurl {
url = "mirror://apache/httpd/httpd-${version}.tar.bz2";
md5 = "a5226203aaf97e5b941c41a71c112704";
sha1 = "5f0e973839ed2e38a4d03adba109ef5ce3381bc2";
};
#inherit sslSupport;

View File

@ -1,11 +1,11 @@
{stdenv, fetchurl, zlib, lzo, bzip2, nasm}:
stdenv.mkDerivation {
name = "lrzip-0.23";
stdenv.mkDerivation rec {
name = "lrzip-0.44";
src = fetchurl {
url = http://ck.kolivas.org/apps/lrzip/lrzip-0.23.tar.bz2;
sha256 = "52514a46228266230760fe8f7da9dd669b4c82160e9c238f029cd535d0988065";
url = "http://ck.kolivas.org/apps/lrzip/${name}.tar.bz2";
sha256 = "1ncr6igs8v6yxp60sgb9h4ra8wb7jzbxiyj4a9m4nrxyw8fwm2iv";
};
NIX_CFLAGS_COMPILE = "-isystem ${zlib}/include";

View File

@ -34,6 +34,16 @@ stdenv.mkDerivation rec {
# other LDFLAGS, because it doesn't use libtool for linking in the tests.
makeFlags = if linkStatic then "LDFLAGS=-all-static" else "";
crossAttrs = {
# We should refer to the cross built openssl
# For the 'urandom', maybe it should be a cross-system option
configureFlags = ''
${if sslSupport then "--with-ssl=${openssl.hostDrv}" else "--without-ssl"}
${if linkStatic then "--enable-static --disable-shared" else ""}
--with-random /dev/urandom
'';
};
passthru = {
inherit sslSupport openssl;
};

View File

@ -13,8 +13,11 @@ stdenv.mkDerivation {
installPhase = "python setup.py install --prefix=$out ;"+
" echo 'export PYTHONPATH=$PYTHONPATH:'$out'/lib/python2.4/site-packages:"+
wxPython26+"/lib/python2.4/site-packages:"+
wxPython26+"/lib/python2.6/site-packages:"+
"'$out'/lib/python2.5/site-packages:"+
"'$out'/lib/python2.6/site-packages:"+
wxPython26+"/lib/python2.4/site-packages/wx-2.6-gtk2-unicode:"+
wxPython26+"/lib/python2.6/site-packages/wx-2.6-gtk2-unicode:"+
wxPython26+"/lib/python2.5/site-packages/wx-2.6-gtk2-unicode; "+
"python `which btdownloadgui.py` --ipv6_enabled 1 --ipv6_binds_v4 0 \"$@\";' >"+
"$out/bin/bittornado ; chmod a+rx $out/bin/bittornado;";

View File

@ -11,7 +11,8 @@ stdenv.mkDerivation rec {
sha256 = "844e5878d55a68ae2aac657718a1960dcfc943f6738ebdfb2bc93e8c462d0ad7";
};
buildInputs = [perl curl openssl];
buildNativeInputs = [perl];
buildInputs = [curl openssl];
configureFlags = ''
--with-store-dir=${storeDir} --localstatedir=${stateDir}

View File

@ -18,7 +18,7 @@ stdenv.mkDerivation {
description = "terminal mixer - multiplexer for the i/o of terminal applications";
license="GPLv2";
maintainers = with stdenv.lib.maintainers; [viric];
platforms = with stdenv.lib.platforms; linux;
platforms = with stdenv.lib.platforms; all;
};
}

View File

@ -16,6 +16,6 @@ stdenv.mkDerivation {
description = "task spooler - batch queue";
license="GPLv2";
maintainers = with stdenv.lib.maintainers; [viric];
platforms = with stdenv.lib.platforms; linux;
platforms = with stdenv.lib.platforms; all;
};
}

View File

@ -1,11 +1,11 @@
{ stdenv, fetchurl, gettext }:
stdenv.mkDerivation rec {
name = "enscript-1.6.5";
name = "enscript-1.6.5.1";
src = fetchurl {
url = "mirror://gnu/enscript/${name}.tar.gz";
sha256 = "1sq4ng7z34qhx6cavnzndgkjpjr9lbvpxgd5a3ajgif3n57fjki2";
sha256 = "12zmd3iibpdwpgk10pwd71111dfh31x37xy6cllb1g243in3bgsp";
};
buildInputs = [ gettext ];

View File

@ -183,8 +183,8 @@ let
defaultStdenv = allStdenvs.stdenv // { inherit platform; };
stdenvCross = makeStdenvCross defaultStdenv crossSystem (binutilsCross crossSystem)
(gccCrossStageFinal crossSystem);
stdenvCross = makeStdenvCross defaultStdenv crossSystem binutilsCross
gccCrossStageFinal;
stdenv =
if bootStdenv != null then bootStdenv else
@ -1949,45 +1949,47 @@ let
profiledCompiler = true;
}));
gcc43_realCross = cross : makeOverridable (import ../development/compilers/gcc-4.3) {
inherit stdenv fetchurl texinfo gmp mpfr noSysDirs cross;
binutilsCross = binutilsCross cross;
libcCross = libcCross cross;
gcc43_realCross = makeOverridable (import ../development/compilers/gcc-4.3) {
inherit stdenv fetchurl texinfo gmp mpfr noSysDirs;
binutilsCross = binutilsCross;
libcCross = libcCross;
profiledCompiler = false;
enableMultilib = true;
crossStageStatic = false;
cross = assert crossSystem != null; crossSystem;
};
gcc44_realCross = cross : makeOverridable (import ../development/compilers/gcc-4.4) {
inherit stdenv fetchurl texinfo gmp mpfr ppl cloogppl noSysDirs cross
gcc44_realCross = makeOverridable (import ../development/compilers/gcc-4.4) {
inherit stdenv fetchurl texinfo gmp mpfr ppl cloogppl noSysDirs
gettext which;
binutilsCross = binutilsCross cross;
libcCross = libcCross cross;
binutilsCross = binutilsCross;
libcCross = libcCross;
profiledCompiler = false;
enableMultilib = false;
# cross-building for ultrasparc in 4.4.3 will require disabling shared due to a gcc bug.
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41818
enableShared = if (crossSystem.arch == "sparc64") then false else true;
crossStageStatic = false;
cross = assert crossSystem != null; crossSystem;
};
gccCrossStageStatic = cross: wrapGCCCross {
gcc = forceBuildDrv ((gcc44_realCross cross).override {
gccCrossStageStatic = wrapGCCCross {
gcc = forceBuildDrv (gcc44_realCross.override {
crossStageStatic = true;
langCC = false;
libcCross = null;
enableShared = true;
});
libc = null;
binutils = binutilsCross cross;
inherit cross;
binutils = binutilsCross;
cross = assert crossSystem != null; crossSystem;
};
gccCrossStageFinal = cross: wrapGCCCross {
gcc = forceBuildDrv (gcc44_realCross cross);
libc = libcCross cross;
binutils = binutilsCross cross;
inherit cross;
gccCrossStageFinal = wrapGCCCross {
gcc = forceBuildDrv gcc44_realCross;
libc = libcCross;
binutils = binutilsCross;
cross = assert crossSystem != null; crossSystem;
};
gcc43_multi = lowPrio (wrapGCCWith (import ../build-support/gcc-wrapper) glibc_multi (gcc43.gcc.override {
@ -2853,9 +2855,10 @@ let
inherit fetchurl stdenv noSysDirs;
});
binutilsCross = cross : forceBuildDrv (import ../development/tools/misc/binutils {
inherit stdenv fetchurl cross;
binutilsCross = forceBuildDrv (import ../development/tools/misc/binutils {
inherit stdenv fetchurl;
noSysDirs = true;
cross = assert crossSystem != null; crossSystem;
});
bison = bison23;
@ -3713,10 +3716,10 @@ let
installLocales = getPkgConfig "glibc" "locales" false;
};
glibc29Cross = cross: forceBuildDrv (makeOverridable (import ../development/libraries/glibc-2.9) {
glibc29Cross = forceBuildDrv (makeOverridable (import ../development/libraries/glibc-2.9) {
inherit stdenv fetchurl;
gccCross = gccCrossStageStatic cross;
kernelHeaders = linuxHeadersCross cross;
gccCross = gccCrossStageStatic;
kernelHeaders = linuxHeadersCross;
installLocales = getPkgConfig "glibc" "locales" false;
});
@ -3726,16 +3729,16 @@ let
installLocales = getPkgConfig "glibc" "locales" false;
};
glibc211Cross = cross : forceBuildDrv (makeOverridable (import ../development/libraries/glibc-2.11) {
glibc211Cross = forceBuildDrv (makeOverridable (import ../development/libraries/glibc-2.11) {
inherit stdenv fetchurl;
gccCross = gccCrossStageStatic cross;
kernelHeaders = linuxHeadersCross cross;
gccCross = gccCrossStageStatic;
kernelHeaders = linuxHeadersCross;
installLocales = getPkgConfig "glibc" "locales" false;
});
# We can choose:
libcCross = cross: glibc211Cross cross;
# libcCross = cross: uclibcCross cross;
libcCross = glibc211Cross;
# libcCross = uclibcCross;
eglibc = import ../development/libraries/eglibc {
inherit fetchsvn stdenv;
@ -5869,8 +5872,9 @@ let
linuxHeaders = linuxHeaders_2_6_28;
linuxHeadersCross = cross : forceBuildDrv (import ../os-specific/linux/kernel-headers/2.6.32.nix {
inherit stdenv fetchurl cross perl;
linuxHeadersCross = forceBuildDrv (import ../os-specific/linux/kernel-headers/2.6.32.nix {
inherit stdenv fetchurl perl;
cross = assert crossSystem != null; crossSystem;
});
linuxHeaders_2_6_18 = import ../os-specific/linux/kernel-headers/2.6.18.5.nix {
@ -7919,7 +7923,7 @@ let
inherit fetchurl stdenv pkgconfig imagemagick boost python;
};
qemu = import ../applications/virtualization/qemu/0.12.2.nix {
qemu = import ../applications/virtualization/qemu/0.12.3.nix {
inherit stdenv fetchurl SDL zlib which;
};
@ -8706,7 +8710,7 @@ let
};
kde4 = kde44;
kde4 = kde43;
kde43 = makeOverridable (import ../desktops/kde-4.3) (pkgs // {
openexr = openexr_1_6_1;
@ -9032,11 +9036,11 @@ let
};
# The SQLite branch.
nixSqlite = makeOverridable (import ../tools/package-management/nix/sqlite.nix) {
nixSqlite = lowPrio (makeOverridable (import ../tools/package-management/nix/sqlite.nix) {
inherit fetchurl stdenv perl curl bzip2 openssl aterm sqlite;
storeDir = getPkgConfig "nix" "storeDir" "/nix/store";
stateDir = getPkgConfig "nix" "stateDir" "/nix/var";
};
});
nixCustomFun = src: preConfigure: enableScripts: configureFlags:
import ../tools/package-management/nix/custom.nix {

View File

@ -81,6 +81,10 @@ rec {
json = json_036;
};
csv = import ../development/libraries/haskell/csv {
inherit cabal parsec;
};
dataenc = import ../development/libraries/haskell/dataenc {
inherit cabal;
};

View File

@ -0,0 +1,110 @@
with (import ./release-lib.nix);
(
/* Test some cross builds to the Sheevaplug */
let
crossSystem = {
config = "armv5tel-unknown-linux-gnueabi";
bigEndian = false;
arch = "arm";
float = "soft";
withTLS = true;
platform = pkgs.platforms.sheevaplug;
openssl.system = "linux-generic32";
};
nativePlatforms = linux;
in {
crossSheevaplugLinux = mapTestOnCross crossSystem (rec {
bison = nativePlatforms;
tightvnc = nativePlatforms;
#openoffice = nativePlatforms;
wxGTK = nativePlatforms;
#firefox = nativePlatforms;
xorg = {
#xorgserver = nativePlatforms;
};
nixUnstable = linux;
linuxPackages_2_6_32.kernel = linux;
linuxPackages_2_6_33.kernel = linux;
gdbCross = nativePlatforms;
gcc44_real.gcc = linux;
});
}) // (
/* Test some cross builds to the mipsel */
let
crossSystem = {
config = "mipsel-unknown-linux";
bigEndian = false;
arch = "mips";
float = "soft";
withTLS = true;
platform = {
name = "malta";
kernelBaseConfig = "malta_defconfig";
kernelHeadersBaseConfig = "malta_defconfig";
uboot = null;
kernelArch = "mips";
kernelAutoModules = false;
kernelTarget = "vmlinux.bin";
};
openssl.system = "linux-generic32";
};
nativePlatforms = linux;
in {
crossMipselLinux = mapTestOnCross crossSystem (rec {
bison = nativePlatforms;
tightvnc = nativePlatforms;
#openoffice = nativePlatforms;
wxGTK = nativePlatforms;
#firefox = nativePlatforms;
xorg = {
#xorgserver = nativePlatforms;
};
nixUnstable = linux;
linuxPackages_2_6_32.kernel = linux;
linuxPackages_2_6_33.kernel = linux;
gdbCross = nativePlatforms;
gcc44_real.gcc = linux;
});
}) // (
/* Test some cross builds to the ultrasparc */
let
crossSystem = {
config = "sparc64-unknown-linux";
bigEndian = true;
arch = "sparc64";
float = "hard";
withTLS = true;
cpu = "ultrasparc";
platform = {
name = "ultrasparc";
kernelHeadersBaseConfig = "sparc64_defconfig";
kernelBaseConfig = "sparc64_defconfig";
kernelArch = "sparc";
kernelAutoModules = false;
kernelTarget = "zImage";
uboot = null;
};
openssl.system = "linux64-sparcv9";
};
nativePlatforms = linux;
in {
crossUltraSparcLinux = mapTestOnCross crossSystem (rec {
bison = nativePlatforms;
tightvnc = nativePlatforms;
#openoffice = nativePlatforms;
wxGTK = nativePlatforms;
#firefox = nativePlatforms;
xorg = {
#xorgserver = nativePlatforms;
};
nixUnstable = linux;
linuxPackages_2_6_32.kernel = linux;
linuxPackages_2_6_33.kernel = linux;
gdbCross = nativePlatforms;
gcc44_real.gcc = linux;
});
})

View File

@ -0,0 +1,103 @@
rec {
allPackages = import ./all-packages.nix;
pkgs = allPackages {};
/* The working or failing letters for cross builds will be sent only to
the following maintainers, as most package maintainers will not be
interested in the result of cross building a package. */
crossMaintainers = with pkgs.lib.maintainers; [ viric ];
/* Set the Hydra scheduling priority for a job. The default
priority (100) should be used for most jobs. A different
priority should only be used for a few particularly interesting
jobs (in terms of giving feedback to developers), such as stdenv.
*/
prio = level: job: toJob job // { schedulingPriority = level; };
toJob = x: if builtins.isAttrs x then x else
{ type = "job"; systems = x; schedulingPriority = 10; };
/* Perform a job on the given set of platforms. The function `f' is
called by Hydra for each platform, and should return some job
to build on that platform. `f' is passed the Nixpkgs collection
for the platform in question. */
testOn = systems: f: {system ? builtins.currentSystem}:
if pkgs.lib.elem system systems then f (allPackages {inherit system;}) else {};
/* Similar to the testOn function, but with an additional 'crossSystem'
* parameter for allPackages, defining the target platform for cross builds */
testOnCross = crossSystem: systems: f: {system ? builtins.currentSystem}:
if pkgs.lib.elem system systems then f (allPackages {inherit system
crossSystem;}) else {};
/* Map an attribute of the form `foo = [platforms...]' to `testOn
[platforms...] (pkgs: pkgs.foo)'. */
mapTestOn = pkgs.lib.mapAttrsRecursiveCond
(as: !(as ? type && as.type == "job"))
(path: value:
let
job = toJob value;
getPkg = pkgs:
pkgs.lib.addMetaAttrs { schedulingPriority = toString job.schedulingPriority; }
(pkgs.lib.getAttrFromPath path pkgs);
in testOn job.systems getPkg);
/* Similar to the testOn function, but with an additional 'crossSystem'
* parameter for allPackages, defining the target platform for cross builds,
* and triggering the build of the host derivation (cross built - hostDrv). */
mapTestOnCross = crossSystem: pkgs.lib.mapAttrsRecursiveCond
(as: !(as ? type && as.type == "job"))
(path: value:
let
job = toJob value;
getPkg = pkgs: setCrossMaintainers
(pkgs.lib.addMetaAttrs { schedulingPriority = toString job.schedulingPriority; }
(pkgs.lib.getAttrFromPath (path ++ ["hostDrv"]) pkgs));
in testOnCross crossSystem job.systems getPkg);
setCrossMaintainers = pkg: pkg // { meta.maintainers = crossMaintainers; };
/* Find all packages that have a meta.platforms field listing the
supported platforms. */
packagesWithMetaPlatform = attrSet:
if builtins ? tryEval then
let pairs = pkgs.lib.concatMap
(x:
let pair = builtins.tryEval
(let
attrVal = (builtins.getAttr x attrSet);
in
{val=(processPackage attrVal);
attrVal = attrVal;
attrValIsAttrs = builtins.isAttrs attrVal;
});
success = (builtins.tryEval pair.value.attrVal).success;
in
if success && pair.value.attrValIsAttrs &&
pair.value.val != [] then
[{name= x; value=pair.value.val;}] else [])
(builtins.attrNames attrSet);
in
builtins.listToAttrs pairs
else {};
# May fail as much as it wishes, we will catch the error.
processPackage = attrSet:
if attrSet ? recurseForDerivations && attrSet.recurseForDerivations then
packagesWithMetaPlatform attrSet
else
if attrSet ? meta && attrSet.meta ? platforms
then attrSet.meta.platforms
else [];
/* Common platform groups on which to test packages. */
inherit (pkgs.lib.platforms) linux darwin cygwin allBut all mesaPlatforms;
/* Platform groups for specific kinds of applications. */
x11Supported = linux;
gtkSupported = linux;
ghcSupported = linux ++ ["i686-darwin"] ;
}

View File

@ -1,107 +1,6 @@
let
with (import ./release-lib.nix);
allPackages = import ./all-packages.nix;
pkgs = allPackages {};
/* The working or failing letters for cross builds will be sent only to
the following maintainers, as most package maintainers will not be
interested in the result of cross building a package. */
crossMaintainers = with pkgs.lib.maintainers; [ viric ];
/* Set the Hydra scheduling priority for a job. The default
priority (100) should be used for most jobs. A different
priority should only be used for a few particularly interesting
jobs (in terms of giving feedback to developers), such as stdenv.
*/
prio = level: job: toJob job // { schedulingPriority = level; };
toJob = x: if builtins.isAttrs x then x else
{ type = "job"; systems = x; schedulingPriority = 5; };
/* Perform a job on the given set of platforms. The function `f' is
called by Hydra for each platform, and should return some job
to build on that platform. `f' is passed the Nixpkgs collection
for the platform in question. */
testOn = systems: f: {system ? builtins.currentSystem}:
if pkgs.lib.elem system systems then f (allPackages {inherit system;}) else {};
/* Similar to the testOn function, but with an additional 'crossSystem'
* parameter for allPackages, defining the target platform for cross builds */
testOnCross = crossSystem: systems: f: {system ? builtins.currentSystem}:
if pkgs.lib.elem system systems then f (allPackages {inherit system
crossSystem;}) else {};
/* Map an attribute of the form `foo = [platforms...]' to `testOn
[platforms...] (pkgs: pkgs.foo)'. */
mapTestOn = pkgs.lib.mapAttrsRecursiveCond
(as: !(as ? type && as.type == "job"))
(path: value:
let
job = toJob value;
getPkg = pkgs:
pkgs.lib.addMetaAttrs { schedulingPriority = toString job.schedulingPriority; }
(pkgs.lib.getAttrFromPath path pkgs);
in testOn job.systems getPkg);
/* Similar to the testOn function, but with an additional 'crossSystem'
* parameter for allPackages, defining the target platform for cross builds,
* and triggering the build of the host derivation (cross built - hostDrv). */
mapTestOnCross = crossSystem: pkgs.lib.mapAttrsRecursiveCond
(as: !(as ? type && as.type == "job"))
(path: value:
let
job = toJob value;
getPkg = pkgs: setCrossMaintainers
(pkgs.lib.addMetaAttrs { schedulingPriority = toString job.schedulingPriority; }
(pkgs.lib.getAttrFromPath (path ++ ["hostDrv"]) pkgs));
in testOnCross crossSystem job.systems getPkg);
setCrossMaintainers = pkg: pkg // { meta.maintainers = crossMaintainers; };
/* Find all packages that have a meta.platforms field listing the
supported platforms. */
packagesWithMetaPlatform = attrSet:
if builtins ? tryEval then
let pairs = pkgs.lib.concatMap
(x:
let pair = builtins.tryEval
(let
attrVal = (builtins.getAttr x attrSet);
in
{val=(processPackage attrVal);
attrVal = attrVal;
attrValIsAttrs = builtins.isAttrs attrVal;
});
success = (builtins.tryEval pair.value.attrVal).success;
in
if success && pair.value.attrValIsAttrs &&
pair.value.val != [] then
[{name= x; value=pair.value.val;}] else [])
(builtins.attrNames attrSet);
in
builtins.listToAttrs pairs
else {};
# May fail as much as it wishes, we will catch the error.
processPackage = attrSet:
if attrSet ? recurseForDerivations && attrSet.recurseForDerivations then
packagesWithMetaPlatform attrSet
else
if attrSet ? meta && attrSet.meta ? platforms
then attrSet.meta.platforms
else [];
/* Common platform groups on which to test packages. */
inherit (pkgs.lib.platforms) linux darwin cygwin allBut all mesaPlatforms;
/* Platform groups for specific kinds of applications. */
x11Supported = linux;
gtkSupported = linux;
ghcSupported = linux ++ ["i686-darwin"] ;
in {
{
tarball = import ./make-tarball.nix;
@ -699,105 +598,5 @@ in {
xset = linux;
};
} )) // (
} ))
/* Test some cross builds to the Sheevaplug */
let
crossSystem = {
config = "armv5tel-unknown-linux-gnueabi";
bigEndian = false;
arch = "arm";
float = "soft";
withTLS = true;
platform = pkgs.platforms.sheevaplug;
};
nativePlatforms = linux;
in {
crossSheevaplugLinux = mapTestOnCross crossSystem (rec {
bison = nativePlatforms;
tightvnc = nativePlatforms;
#openoffice = nativePlatforms;
wxGTK = nativePlatforms;
#firefox = nativePlatforms;
xorg = {
#xorgserver = nativePlatforms;
};
linuxPackages_2_6_32.kernel = linux;
linuxPackages_2_6_33.kernel = linux;
gdbCross = nativePlatforms;
gcc44_real.gcc = linux;
});
}) // (
/* Test some cross builds to the mipsel */
let
crossSystem = {
config = "mipsel-unknown-linux";
bigEndian = false;
arch = "mips";
float = "soft";
withTLS = true;
platform = {
name = "malta";
kernelBaseConfig = "malta_defconfig";
kernelHeadersBaseConfig = "malta_defconfig";
uboot = null;
kernelArch = "mips";
kernelAutoModules = false;
kernelTarget = "vmlinux.bin";
};
};
nativePlatforms = linux;
in {
crossMipselLinux = mapTestOnCross crossSystem (rec {
bison = nativePlatforms;
tightvnc = nativePlatforms;
#openoffice = nativePlatforms;
wxGTK = nativePlatforms;
#firefox = nativePlatforms;
xorg = {
#xorgserver = nativePlatforms;
};
linuxPackages_2_6_32.kernel = linux;
linuxPackages_2_6_33.kernel = linux;
gdbCross = nativePlatforms;
gcc44_real.gcc = linux;
});
}) // (
/* Test some cross builds to the ultrasparc */
let
crossSystem = {
config = "sparc64-unknown-linux";
bigEndian = true;
arch = "sparc64";
float = "hard";
withTLS = true;
cpu = "ultrasparc";
platform = {
name = "ultrasparc";
kernelHeadersBaseConfig = "sparc64_defconfig";
kernelBaseConfig = "sparc64_defconfig";
kernelArch = "sparc";
kernelAutoModules = false;
kernelTarget = "zImage";
uboot = null;
};
};
nativePlatforms = linux;
in {
crossUltraSparcLinux = mapTestOnCross crossSystem (rec {
bison = nativePlatforms;
tightvnc = nativePlatforms;
#openoffice = nativePlatforms;
wxGTK = nativePlatforms;
#firefox = nativePlatforms;
xorg = {
#xorgserver = nativePlatforms;
};
linuxPackages_2_6_32.kernel = linux;
linuxPackages_2_6_33.kernel = linux;
gdbCross = nativePlatforms;
gcc44_real.gcc = linux;
});
})