Merge pull request #37397 from obsidiansystems/nixpkgs
This commit is contained in:
commit
5bb50fb9f6
@ -17,14 +17,14 @@ let
|
|||||||
} // args);
|
} // args);
|
||||||
|
|
||||||
# Note: only supportedSystems are considered.
|
# Note: only supportedSystems are considered.
|
||||||
callTestOnTheseSystems = systems: fn: args:
|
callTestOnMatchingSystems = systems: fn: args:
|
||||||
forTheseSystems
|
forMatchingSystems
|
||||||
(intersectLists supportedSystems systems)
|
(intersectLists supportedSystems systems)
|
||||||
(system: hydraJob (importTest fn args system));
|
(system: hydraJob (importTest fn args system));
|
||||||
callTest = callTestOnTheseSystems supportedSystems;
|
callTest = callTestOnMatchingSystems supportedSystems;
|
||||||
|
|
||||||
callSubTests = callSubTestsOnTheseSystems supportedSystems;
|
callSubTests = callSubTestsOnMatchingSystems supportedSystems;
|
||||||
callSubTestsOnTheseSystems = systems: fn: args: let
|
callSubTestsOnMatchingSystems = systems: fn: args: let
|
||||||
discover = attrs: let
|
discover = attrs: let
|
||||||
subTests = filterAttrs (const (hasAttr "test")) attrs;
|
subTests = filterAttrs (const (hasAttr "test")) attrs;
|
||||||
in mapAttrs (const (t: hydraJob t.test)) subTests;
|
in mapAttrs (const (t: hydraJob t.test)) subTests;
|
||||||
@ -127,7 +127,7 @@ in rec {
|
|||||||
# Build the initial ramdisk so Hydra can keep track of its size over time.
|
# Build the initial ramdisk so Hydra can keep track of its size over time.
|
||||||
initialRamdisk = buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.initialRamdisk);
|
initialRamdisk = buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.initialRamdisk);
|
||||||
|
|
||||||
netboot = forTheseSystems [ "x86_64-linux" "aarch64-linux" ] (system: makeNetboot {
|
netboot = forMatchingSystems [ "x86_64-linux" "aarch64-linux" ] (system: makeNetboot {
|
||||||
inherit system;
|
inherit system;
|
||||||
modules = [
|
modules = [
|
||||||
./modules/installer/netboot/netboot-minimal.nix
|
./modules/installer/netboot/netboot-minimal.nix
|
||||||
@ -141,7 +141,7 @@ in rec {
|
|||||||
inherit system;
|
inherit system;
|
||||||
});
|
});
|
||||||
|
|
||||||
iso_graphical = forTheseSystems [ "x86_64-linux" ] (system: makeIso {
|
iso_graphical = forMatchingSystems [ "x86_64-linux" ] (system: makeIso {
|
||||||
module = ./modules/installer/cd-dvd/installation-cd-graphical-kde.nix;
|
module = ./modules/installer/cd-dvd/installation-cd-graphical-kde.nix;
|
||||||
type = "graphical";
|
type = "graphical";
|
||||||
inherit system;
|
inherit system;
|
||||||
@ -149,7 +149,7 @@ in rec {
|
|||||||
|
|
||||||
# A variant with a more recent (but possibly less stable) kernel
|
# A variant with a more recent (but possibly less stable) kernel
|
||||||
# that might support more hardware.
|
# that might support more hardware.
|
||||||
iso_minimal_new_kernel = forTheseSystems [ "x86_64-linux" ] (system: makeIso {
|
iso_minimal_new_kernel = forMatchingSystems [ "x86_64-linux" ] (system: makeIso {
|
||||||
module = ./modules/installer/cd-dvd/installation-cd-minimal-new-kernel.nix;
|
module = ./modules/installer/cd-dvd/installation-cd-minimal-new-kernel.nix;
|
||||||
type = "minimal-new-kernel";
|
type = "minimal-new-kernel";
|
||||||
inherit system;
|
inherit system;
|
||||||
@ -157,7 +157,7 @@ in rec {
|
|||||||
|
|
||||||
|
|
||||||
# A bootable VirtualBox virtual appliance as an OVA file (i.e. packaged OVF).
|
# A bootable VirtualBox virtual appliance as an OVA file (i.e. packaged OVF).
|
||||||
ova = forTheseSystems [ "x86_64-linux" ] (system:
|
ova = forMatchingSystems [ "x86_64-linux" ] (system:
|
||||||
|
|
||||||
with import nixpkgs { inherit system; };
|
with import nixpkgs { inherit system; };
|
||||||
|
|
||||||
@ -233,9 +233,9 @@ in rec {
|
|||||||
tests.boot-stage1 = callTest tests/boot-stage1.nix {};
|
tests.boot-stage1 = callTest tests/boot-stage1.nix {};
|
||||||
tests.borgbackup = callTest tests/borgbackup.nix {};
|
tests.borgbackup = callTest tests/borgbackup.nix {};
|
||||||
tests.buildbot = callTest tests/buildbot.nix {};
|
tests.buildbot = callTest tests/buildbot.nix {};
|
||||||
tests.cadvisor = callTestOnTheseSystems ["x86_64-linux"] tests/cadvisor.nix {};
|
tests.cadvisor = callTestOnMatchingSystems ["x86_64-linux"] tests/cadvisor.nix {};
|
||||||
tests.ceph = callTestOnTheseSystems ["x86_64-linux"] tests/ceph.nix {};
|
tests.ceph = callTestOnMatchingSystems ["x86_64-linux"] tests/ceph.nix {};
|
||||||
tests.chromium = (callSubTestsOnTheseSystems ["x86_64-linux"] tests/chromium.nix {}).stable or {};
|
tests.chromium = (callSubTestsOnMatchingSystems ["x86_64-linux"] tests/chromium.nix {}).stable or {};
|
||||||
tests.cjdns = callTest tests/cjdns.nix {};
|
tests.cjdns = callTest tests/cjdns.nix {};
|
||||||
tests.cloud-init = callTest tests/cloud-init.nix {};
|
tests.cloud-init = callTest tests/cloud-init.nix {};
|
||||||
tests.containers-ipv4 = callTest tests/containers-ipv4.nix {};
|
tests.containers-ipv4 = callTest tests/containers-ipv4.nix {};
|
||||||
@ -249,21 +249,21 @@ in rec {
|
|||||||
tests.containers-hosts = callTest tests/containers-hosts.nix {};
|
tests.containers-hosts = callTest tests/containers-hosts.nix {};
|
||||||
tests.containers-macvlans = callTest tests/containers-macvlans.nix {};
|
tests.containers-macvlans = callTest tests/containers-macvlans.nix {};
|
||||||
tests.couchdb = callTest tests/couchdb.nix {};
|
tests.couchdb = callTest tests/couchdb.nix {};
|
||||||
tests.docker = callTestOnTheseSystems ["x86_64-linux"] tests/docker.nix {};
|
tests.docker = callTestOnMatchingSystems ["x86_64-linux"] tests/docker.nix {};
|
||||||
tests.docker-tools = callTestOnTheseSystems ["x86_64-linux"] tests/docker-tools.nix {};
|
tests.docker-tools = callTestOnMatchingSystems ["x86_64-linux"] tests/docker-tools.nix {};
|
||||||
tests.docker-edge = callTestOnTheseSystems ["x86_64-linux"] tests/docker-edge.nix {};
|
tests.docker-edge = callTestOnMatchingSystems ["x86_64-linux"] tests/docker-edge.nix {};
|
||||||
tests.dovecot = callTest tests/dovecot.nix {};
|
tests.dovecot = callTest tests/dovecot.nix {};
|
||||||
tests.dnscrypt-proxy = callTestOnTheseSystems ["x86_64-linux"] tests/dnscrypt-proxy.nix {};
|
tests.dnscrypt-proxy = callTestOnMatchingSystems ["x86_64-linux"] tests/dnscrypt-proxy.nix {};
|
||||||
tests.ecryptfs = callTest tests/ecryptfs.nix {};
|
tests.ecryptfs = callTest tests/ecryptfs.nix {};
|
||||||
tests.etcd = callTestOnTheseSystems ["x86_64-linux"] tests/etcd.nix {};
|
tests.etcd = callTestOnMatchingSystems ["x86_64-linux"] tests/etcd.nix {};
|
||||||
tests.ec2-nixops = (callSubTestsOnTheseSystems ["x86_64-linux"] tests/ec2.nix {}).boot-ec2-nixops or {};
|
tests.ec2-nixops = (callSubTestsOnMatchingSystems ["x86_64-linux"] tests/ec2.nix {}).boot-ec2-nixops or {};
|
||||||
tests.ec2-config = (callSubTestsOnTheseSystems ["x86_64-linux"] tests/ec2.nix {}).boot-ec2-config or {};
|
tests.ec2-config = (callSubTestsOnMatchingSystems ["x86_64-linux"] tests/ec2.nix {}).boot-ec2-config or {};
|
||||||
tests.elk = callSubTestsOnTheseSystems ["x86_64-linux"] tests/elk.nix {};
|
tests.elk = callSubTestsOnMatchingSystems ["x86_64-linux"] tests/elk.nix {};
|
||||||
tests.env = callTest tests/env.nix {};
|
tests.env = callTest tests/env.nix {};
|
||||||
tests.ferm = callTest tests/ferm.nix {};
|
tests.ferm = callTest tests/ferm.nix {};
|
||||||
tests.firefox = callTest tests/firefox.nix {};
|
tests.firefox = callTest tests/firefox.nix {};
|
||||||
tests.firewall = callTest tests/firewall.nix {};
|
tests.firewall = callTest tests/firewall.nix {};
|
||||||
tests.fleet = callTestOnTheseSystems ["x86_64-linux"] tests/fleet.nix {};
|
tests.fleet = callTestOnMatchingSystems ["x86_64-linux"] tests/fleet.nix {};
|
||||||
tests.fwupd = callTest tests/fwupd.nix {};
|
tests.fwupd = callTest tests/fwupd.nix {};
|
||||||
#tests.gitlab = callTest tests/gitlab.nix {};
|
#tests.gitlab = callTest tests/gitlab.nix {};
|
||||||
tests.gitolite = callTest tests/gitolite.nix {};
|
tests.gitolite = callTest tests/gitolite.nix {};
|
||||||
@ -296,7 +296,7 @@ in rec {
|
|||||||
tests.kernel-copperhead = callTest tests/kernel-copperhead.nix {};
|
tests.kernel-copperhead = callTest tests/kernel-copperhead.nix {};
|
||||||
tests.kernel-latest = callTest tests/kernel-latest.nix {};
|
tests.kernel-latest = callTest tests/kernel-latest.nix {};
|
||||||
tests.kernel-lts = callTest tests/kernel-lts.nix {};
|
tests.kernel-lts = callTest tests/kernel-lts.nix {};
|
||||||
tests.kubernetes = callSubTestsOnTheseSystems ["x86_64-linux"] tests/kubernetes/default.nix {};
|
tests.kubernetes = callSubTestsOnMatchingSystems ["x86_64-linux"] tests/kubernetes/default.nix {};
|
||||||
tests.latestKernel.login = callTest tests/login.nix { latestKernel = true; };
|
tests.latestKernel.login = callTest tests/login.nix { latestKernel = true; };
|
||||||
tests.ldap = callTest tests/ldap.nix {};
|
tests.ldap = callTest tests/ldap.nix {};
|
||||||
#tests.lightdm = callTest tests/lightdm.nix {};
|
#tests.lightdm = callTest tests/lightdm.nix {};
|
||||||
@ -326,14 +326,14 @@ in rec {
|
|||||||
tests.nginx = callTest tests/nginx.nix { };
|
tests.nginx = callTest tests/nginx.nix { };
|
||||||
tests.nghttpx = callTest tests/nghttpx.nix { };
|
tests.nghttpx = callTest tests/nghttpx.nix { };
|
||||||
tests.nix-ssh-serve = callTest tests/nix-ssh-serve.nix { };
|
tests.nix-ssh-serve = callTest tests/nix-ssh-serve.nix { };
|
||||||
tests.novacomd = callTestOnTheseSystems ["x86_64-linux"] tests/novacomd.nix { };
|
tests.novacomd = callTestOnMatchingSystems ["x86_64-linux"] tests/novacomd.nix { };
|
||||||
tests.leaps = callTest tests/leaps.nix { };
|
tests.leaps = callTest tests/leaps.nix { };
|
||||||
tests.nsd = callTest tests/nsd.nix {};
|
tests.nsd = callTest tests/nsd.nix {};
|
||||||
tests.openssh = callTest tests/openssh.nix {};
|
tests.openssh = callTest tests/openssh.nix {};
|
||||||
tests.openldap = callTest tests/openldap.nix {};
|
tests.openldap = callTest tests/openldap.nix {};
|
||||||
tests.owncloud = callTest tests/owncloud.nix {};
|
tests.owncloud = callTest tests/owncloud.nix {};
|
||||||
tests.pam-oath-login = callTest tests/pam-oath-login.nix {};
|
tests.pam-oath-login = callTest tests/pam-oath-login.nix {};
|
||||||
#tests.panamax = callTestOnTheseSystems ["x86_64-linux"] tests/panamax.nix {};
|
#tests.panamax = callTestOnMatchingSystems ["x86_64-linux"] tests/panamax.nix {};
|
||||||
tests.peerflix = callTest tests/peerflix.nix {};
|
tests.peerflix = callTest tests/peerflix.nix {};
|
||||||
tests.php-pcre = callTest tests/php-pcre.nix {};
|
tests.php-pcre = callTest tests/php-pcre.nix {};
|
||||||
tests.postgresql = callSubTests tests/postgresql.nix {};
|
tests.postgresql = callSubTests tests/postgresql.nix {};
|
||||||
@ -366,7 +366,7 @@ in rec {
|
|||||||
tests.tomcat = callTest tests/tomcat.nix {};
|
tests.tomcat = callTest tests/tomcat.nix {};
|
||||||
tests.udisks2 = callTest tests/udisks2.nix {};
|
tests.udisks2 = callTest tests/udisks2.nix {};
|
||||||
tests.vault = callTest tests/vault.nix {};
|
tests.vault = callTest tests/vault.nix {};
|
||||||
tests.virtualbox = callSubTestsOnTheseSystems ["x86_64-linux"] tests/virtualbox.nix {};
|
tests.virtualbox = callSubTestsOnMatchingSystems ["x86_64-linux"] tests/virtualbox.nix {};
|
||||||
tests.wordpress = callTest tests/wordpress.nix {};
|
tests.wordpress = callTest tests/wordpress.nix {};
|
||||||
tests.xautolock = callTest tests/xautolock.nix {};
|
tests.xautolock = callTest tests/xautolock.nix {};
|
||||||
tests.xfce = callTest tests/xfce.nix {};
|
tests.xfce = callTest tests/xfce.nix {};
|
||||||
|
@ -88,7 +88,7 @@ in
|
|||||||
f (["buildPackages"] ++ path) { inherit system crossSystem; }
|
f (["buildPackages"] ++ path) { inherit system crossSystem; }
|
||||||
);
|
);
|
||||||
|
|
||||||
testEqual = path: systems: forTheseSystems systems (testEqualOne path);
|
testEqual = path: systems: forMatchingSystems systems (testEqualOne path);
|
||||||
|
|
||||||
mapTestEqual = lib.mapAttrsRecursive testEqual;
|
mapTestEqual = lib.mapAttrsRecursive testEqual;
|
||||||
|
|
||||||
|
@ -48,33 +48,56 @@ rec {
|
|||||||
pkgs_x86_64_cygwin = allPackages { system = "x86_64-cygwin"; };
|
pkgs_x86_64_cygwin = allPackages { system = "x86_64-cygwin"; };
|
||||||
|
|
||||||
|
|
||||||
|
# Given a list of 'meta.platforms'-style patterns, return the sublist of
|
||||||
|
# `supportedSystems` containing systems that matches at least one of the given
|
||||||
|
# patterns.
|
||||||
|
#
|
||||||
|
# This is written in a funny way so that we only elaborate the systems once.
|
||||||
|
supportedMatches = let
|
||||||
|
supportedPlatforms = map
|
||||||
|
(system: lib.systems.elaborate { inherit system; })
|
||||||
|
supportedSystems;
|
||||||
|
in metaPatterns: let
|
||||||
|
anyMatch = platform:
|
||||||
|
lib.any (lib.meta.platformMatch platform) metaPatterns;
|
||||||
|
matchingPlatforms = lib.filter anyMatch supportedPlatforms;
|
||||||
|
in map ({ system, ...}: system) matchingPlatforms;
|
||||||
|
|
||||||
|
|
||||||
assertTrue = bool:
|
assertTrue = bool:
|
||||||
if bool
|
if bool
|
||||||
then pkgs.runCommand "evaluated-to-true" {} "touch $out"
|
then pkgs.runCommand "evaluated-to-true" {} "touch $out"
|
||||||
else pkgs.runCommand "evaluated-to-false" {} "false";
|
else pkgs.runCommand "evaluated-to-false" {} "false";
|
||||||
|
|
||||||
|
|
||||||
/* The working or failing mails for cross builds will be sent only to
|
/* The working or failing mails for cross builds will be sent only to
|
||||||
the following maintainers, as most package maintainers will not be
|
the following maintainers, as most package maintainers will not be
|
||||||
interested in the result of cross building a package. */
|
interested in the result of cross building a package. */
|
||||||
crossMaintainers = [ maintainers.viric ];
|
crossMaintainers = [ maintainers.viric ];
|
||||||
|
|
||||||
|
|
||||||
|
# Generate attributes for all supported systems.
|
||||||
forAllSystems = genAttrs supportedSystems;
|
forAllSystems = genAttrs supportedSystems;
|
||||||
forTheseSystems = systems: f:
|
|
||||||
genAttrs (filter (x: elem x supportedSystems) systems) f;
|
|
||||||
|
# Generate attributes for all sytems matching at least one of the given
|
||||||
|
# patterns
|
||||||
|
forMatchingSystems = metaPatterns: genAttrs (supportedMatches metaPatterns);
|
||||||
|
|
||||||
|
|
||||||
/* Build a package on the given set of platforms. The function `f'
|
/* Build a package on the given set of platforms. The function `f'
|
||||||
is called for each supported platform with Nixpkgs for that
|
is called for each supported platform with Nixpkgs for that
|
||||||
platform as an argument . We return an attribute set containing
|
platform as an argument . We return an attribute set containing
|
||||||
a derivation for each supported platform, i.e. ‘{ x86_64-linux =
|
a derivation for each supported platform, i.e. ‘{ x86_64-linux =
|
||||||
f pkgs_x86_64_linux; i686-linux = f pkgs_i686_linux; ... }’. */
|
f pkgs_x86_64_linux; i686-linux = f pkgs_i686_linux; ... }’. */
|
||||||
testOn = systems: f: forTheseSystems systems
|
testOn = metaPatterns: f: forMatchingSystems metaPatterns
|
||||||
(system: hydraJob' (f (pkgsFor system)));
|
(system: hydraJob' (f (pkgsFor system)));
|
||||||
|
|
||||||
|
|
||||||
/* Similar to the testOn function, but with an additional
|
/* Similar to the testOn function, but with an additional
|
||||||
'crossSystem' parameter for allPackages, defining the target
|
'crossSystem' parameter for allPackages, defining the target
|
||||||
platform for cross builds. */
|
platform for cross builds. */
|
||||||
testOnCross = crossSystem: systems: f: forTheseSystems systems
|
testOnCross = crossSystem: metaPatterns: f: forMatchingSystems metaPatterns
|
||||||
(system: hydraJob' (f (allPackages { inherit system crossSystem; })));
|
(system: hydraJob' (f (allPackages { inherit system crossSystem; })));
|
||||||
|
|
||||||
|
|
||||||
@ -82,14 +105,14 @@ rec {
|
|||||||
map each leaf node to `testOn [platforms...] (pkgs:
|
map each leaf node to `testOn [platforms...] (pkgs:
|
||||||
pkgs.<attrPath>)'. */
|
pkgs.<attrPath>)'. */
|
||||||
mapTestOn = mapAttrsRecursive
|
mapTestOn = mapAttrsRecursive
|
||||||
(path: systems: testOn systems (pkgs: getAttrFromPath path pkgs));
|
(path: metaPatterns: testOn metaPatterns (pkgs: getAttrFromPath path pkgs));
|
||||||
|
|
||||||
|
|
||||||
/* Similar to the testOn function, but with an additional 'crossSystem'
|
/* Similar to the testOn function, but with an additional 'crossSystem'
|
||||||
* parameter for allPackages, defining the target platform for cross builds,
|
* parameter for allPackages, defining the target platform for cross builds,
|
||||||
* and triggering the build of the host derivation (cross built - crossDrv). */
|
* and triggering the build of the host derivation (cross built - crossDrv). */
|
||||||
mapTestOnCross = crossSystem: mapAttrsRecursive
|
mapTestOnCross = crossSystem: mapAttrsRecursive
|
||||||
(path: systems: testOnCross crossSystem systems
|
(path: metaPatterns: testOnCross crossSystem metaPatterns
|
||||||
(pkgs: addMetaAttrs { maintainers = crossMaintainers; } (getAttrFromPath path pkgs)));
|
(pkgs: addMetaAttrs { maintainers = crossMaintainers; } (getAttrFromPath path pkgs)));
|
||||||
|
|
||||||
|
|
||||||
@ -98,12 +121,8 @@ rec {
|
|||||||
packagePlatforms = mapAttrs (name: value:
|
packagePlatforms = mapAttrs (name: value:
|
||||||
let res = builtins.tryEval (
|
let res = builtins.tryEval (
|
||||||
if isDerivation value then
|
if isDerivation value then
|
||||||
value.meta.hydraPlatforms or (let
|
value.meta.hydraPlatforms
|
||||||
linuxDefaulted = value.meta.platforms or [ "x86_64-linux" ];
|
or supportedMatches (value.meta.platforms or [ "x86_64-linux" ])
|
||||||
pred = system: lib.any
|
|
||||||
(lib.meta.platformMatch (lib.systems.elaborate { inherit system; }))
|
|
||||||
linuxDefaulted;
|
|
||||||
in lib.filter pred supportedSystems)
|
|
||||||
else if value.recurseForDerivations or false || value.recurseForRelease or false then
|
else if value.recurseForDerivations or false || value.recurseForRelease or false then
|
||||||
packagePlatforms value
|
packagePlatforms value
|
||||||
else
|
else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user