separate cross builds in separate release expression, will add extra jobset
svn path=/nixpkgs/trunk/; revision=20484
This commit is contained in:
parent
8d8e6f7e4c
commit
b44af59afb
107
pkgs/top-level/release-cross.nix
Normal file
107
pkgs/top-level/release-cross.nix
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
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;
|
||||||
|
});
|
||||||
|
}) // (
|
||||||
|
|
||||||
|
/* 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;
|
||||||
|
});
|
||||||
|
}) // (
|
||||||
|
|
||||||
|
/* 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;
|
||||||
|
});
|
||||||
|
})
|
103
pkgs/top-level/release-lib.nix
Normal file
103
pkgs/top-level/release-lib.nix
Normal 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"] ;
|
||||||
|
|
||||||
|
}
|
@ -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 = 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"] ;
|
|
||||||
|
|
||||||
in {
|
|
||||||
|
|
||||||
tarball = import ./make-tarball.nix;
|
tarball = import ./make-tarball.nix;
|
||||||
|
|
||||||
@ -699,108 +598,5 @@ in {
|
|||||||
xset = linux;
|
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;
|
|
||||||
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;
|
|
||||||
});
|
|
||||||
}) // (
|
|
||||||
|
|
||||||
/* 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;
|
|
||||||
});
|
|
||||||
}) // (
|
|
||||||
|
|
||||||
/* 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;
|
|
||||||
});
|
|
||||||
})
|
|
||||||
|
Loading…
Reference in New Issue
Block a user