From 1d0e91831be906e63bdcd9d32ff721b67462699b Mon Sep 17 00:00:00 2001 From: John Ericson Date: Sun, 25 Dec 2016 10:50:53 -0800 Subject: release-cross: Test for unchanged native derivations These derivations do not care about the target platform, and thus should not be affected by cross-compiling. Currently, these tests *fail*, but they will be fixed soon by a latter PR. The release-cross job doesn't block a channel, so this should be no problem. --- pkgs/top-level/release-cross.nix | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'pkgs/top-level/release-cross.nix') diff --git a/pkgs/top-level/release-cross.nix b/pkgs/top-level/release-cross.nix index cbafc65195d..de64c2b3cc7 100644 --- a/pkgs/top-level/release-cross.nix +++ b/pkgs/top-level/release-cross.nix @@ -1,5 +1,7 @@ with import ./release-lib.nix { supportedSystems = [ builtins.currentSystem ]; }; let + lib = import ../../lib; + nativePlatforms = linux; /* Basic list of packages to cross-build */ @@ -22,6 +24,40 @@ let in { + # These `nativeDrv`s should be identical to their vanilla ones --- cross + # compiling should not affect the native derivation. + ensureUnaffected = let + # Absurd values are fine here, as we are not building anything. In fact, + # there probably a good idea to try to be "more parametric" --- i.e. avoid + # any special casing. + crossSystem = { + config = "foosys"; + libc = "foolibc"; + }; + + # Converting to a string (drv path) before checking equality is probably a + # good idea lest there be some irrelevant pass-through debug attrs that + # cause false negatives. + testEqualOne = path: system: let + f = attrs: builtins.toString (lib.getAttrFromPath path (allPackages attrs)); + in assert f { inherit system; } == f { inherit system crossSystem; }; true; + + testEqual = path: systems: forAllSupportedSystems systems (testEqualOne path); + + mapTestEqual = lib.mapAttrsRecursive testEqual; + + in mapTestEqual { + boehmgc = nativePlatforms; + libffi = nativePlatforms; + libiconv = nativePlatforms; + libtool = nativePlatforms; + zlib = nativePlatforms; + readline = nativePlatforms; + libxml2 = nativePlatforms; + guile = nativePlatforms; + }; + + /* Test some cross builds to the Sheevaplug */ crossSheevaplugLinux = let crossSystem = { -- cgit 1.4.1