The old hard-coded lists are now used to test system parsing. In the process, make an `assertTrue` in release lib for eval tests; also use it in release-crosswip/yesman
parent
fffcee35f9
commit
8c99aab3ea
@ -1,24 +1,44 @@ |
||||
let lists = import ../lists.nix; in |
||||
let parse = import ./parse.nix; in |
||||
let inherit (import ../attrsets.nix) matchAttrs; in |
||||
|
||||
let |
||||
all = [ |
||||
"aarch64-linux" |
||||
"armv5tel-linux" "armv6l-linux" "armv7l-linux" |
||||
|
||||
"mips64el-linux" |
||||
|
||||
"i686-cygwin" "i686-freebsd" "i686-linux" "i686-netbsd" "i686-openbsd" |
||||
|
||||
"x86_64-cygwin" "x86_64-darwin" "x86_64-freebsd" "x86_64-linux" |
||||
"x86_64-netbsd" "x86_64-openbsd" "x86_64-solaris" |
||||
]; |
||||
|
||||
allParsed = map parse.mkSystemFromString all; |
||||
|
||||
filterDoubles = f: map parse.doubleFromSystem (lists.filter f allParsed); |
||||
|
||||
in rec { |
||||
inherit all; |
||||
|
||||
rec { |
||||
all = linux ++ darwin ++ cygwin ++ freebsd ++ openbsd ++ netbsd ++ illumos; |
||||
allBut = platforms: lists.filter (x: !(builtins.elem x platforms)) all; |
||||
none = []; |
||||
|
||||
arm = ["armv5tel-linux" "armv6l-linux" "armv7l-linux" ]; |
||||
i686 = ["i686-linux" "i686-freebsd" "i686-netbsd" "i686-cygwin"]; |
||||
mips = [ "mips64el-linux" ]; |
||||
x86_64 = ["x86_64-linux" "x86_64-darwin" "x86_64-freebsd" "x86_64-openbsd" "x86_64-netbsd" "x86_64-cygwin"]; |
||||
|
||||
cygwin = ["i686-cygwin" "x86_64-cygwin"]; |
||||
darwin = ["x86_64-darwin"]; |
||||
freebsd = ["i686-freebsd" "x86_64-freebsd"]; |
||||
gnu = linux; /* ++ hurd ++ kfreebsd ++ ... */ |
||||
illumos = ["x86_64-solaris"]; |
||||
linux = ["i686-linux" "x86_64-linux" "armv5tel-linux" "armv6l-linux" "armv7l-linux" "aarch64-linux" "mips64el-linux"]; |
||||
netbsd = ["i686-netbsd" "x86_64-netbsd"]; |
||||
openbsd = ["i686-openbsd" "x86_64-openbsd"]; |
||||
unix = linux ++ darwin ++ freebsd ++ openbsd ++ netbsd ++ illumos; |
||||
arm = filterDoubles (matchAttrs { cpu = { family = "arm"; bits = 32; }; }); |
||||
i686 = filterDoubles parse.isi686; |
||||
mips = filterDoubles (matchAttrs { cpu = { family = "mips"; }; }); |
||||
x86_64 = filterDoubles parse.isx86_64; |
||||
|
||||
cygwin = filterDoubles (matchAttrs { kernel = parse.kernels.cygwin; }); |
||||
darwin = filterDoubles parse.isDarwin; |
||||
freebsd = filterDoubles (matchAttrs { kernel = parse.kernels.freebsd; }); |
||||
gnu = filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnu; }); # Should be better |
||||
illumos = filterDoubles (matchAttrs { kernel = parse.kernels.solaris; }); |
||||
linux = filterDoubles parse.isLinux; |
||||
netbsd = filterDoubles (matchAttrs { kernel = parse.kernels.netbsd; }); |
||||
openbsd = filterDoubles (matchAttrs { kernel = parse.kernels.openbsd; }); |
||||
unix = filterDoubles parse.isUnix; |
||||
|
||||
mesaPlatforms = ["i686-linux" "x86_64-linux" "x86_64-darwin" "armv5tel-linux" "armv6l-linux" "armv7l-linux" "aarch64-linux"]; |
||||
} |
||||
|
@ -1,31 +1,40 @@ |
||||
{ nixpkgs }: |
||||
{ nixpkgs ? { outPath = (import ../.).cleanSource ../..; revCount = 1234; shortRev = "abcdef"; } |
||||
, # The platforms for which we build Nixpkgs. |
||||
supportedSystems ? [ builtins.currentSystem ] |
||||
, # Strip most of attributes when evaluating to spare memory usage |
||||
scrubJobs ? true |
||||
}: |
||||
|
||||
with import ../.. { }; |
||||
with import ../../pkgs/top-level/release-lib.nix { inherit supportedSystems scrubJobs; }; |
||||
with lib; |
||||
|
||||
stdenv.mkDerivation { |
||||
name = "nixpkgs-lib-tests"; |
||||
buildInputs = [ nix ]; |
||||
NIX_PATH="nixpkgs=${nixpkgs}"; |
||||
{ |
||||
systems = import ./systems.nix { inherit lib assertTrue; }; |
||||
|
||||
buildCommand = '' |
||||
datadir="${nix}/share" |
||||
export TEST_ROOT=$(pwd)/test-tmp |
||||
export NIX_BUILD_HOOK= |
||||
export NIX_CONF_DIR=$TEST_ROOT/etc |
||||
export NIX_DB_DIR=$TEST_ROOT/db |
||||
export NIX_LOCALSTATE_DIR=$TEST_ROOT/var |
||||
export NIX_LOG_DIR=$TEST_ROOT/var/log/nix |
||||
export NIX_MANIFESTS_DIR=$TEST_ROOT/var/nix/manifests |
||||
export NIX_STATE_DIR=$TEST_ROOT/var/nix |
||||
export NIX_STORE_DIR=$TEST_ROOT/store |
||||
export PAGER=cat |
||||
cacheDir=$TEST_ROOT/binary-cache |
||||
nix-store --init |
||||
moduleSystem = pkgs.stdenv.mkDerivation { |
||||
name = "nixpkgs-lib-tests"; |
||||
buildInputs = [ pkgs.nix ]; |
||||
NIX_PATH="nixpkgs=${nixpkgs}"; |
||||
|
||||
cd ${nixpkgs}/lib/tests |
||||
./modules.sh |
||||
buildCommand = '' |
||||
datadir="${pkgs.nix}/share" |
||||
export TEST_ROOT=$(pwd)/test-tmp |
||||
export NIX_BUILD_HOOK= |
||||
export NIX_CONF_DIR=$TEST_ROOT/etc |
||||
export NIX_DB_DIR=$TEST_ROOT/db |
||||
export NIX_LOCALSTATE_DIR=$TEST_ROOT/var |
||||
export NIX_LOG_DIR=$TEST_ROOT/var/log/nix |
||||
export NIX_MANIFESTS_DIR=$TEST_ROOT/var/nix/manifests |
||||
export NIX_STATE_DIR=$TEST_ROOT/var/nix |
||||
export NIX_STORE_DIR=$TEST_ROOT/store |
||||
export PAGER=cat |
||||
cacheDir=$TEST_ROOT/binary-cache |
||||
nix-store --init |
||||
|
||||
touch $out |
||||
''; |
||||
cd ${nixpkgs}/lib/tests |
||||
./modules.sh |
||||
|
||||
touch $out |
||||
''; |
||||
}; |
||||
} |
||||
|
@ -0,0 +1,31 @@ |
||||
# We assert that the new algorithmic way of generating these lists matches the |
||||
# way they were hard-coded before. |
||||
# |
||||
# One might think "if we exhaustively test, what's the point of procedurally |
||||
# calculating the lists anyway?". The answer is one can mindlessly update these |
||||
# tests as new platforms become supported, and then just give the diff a quick |
||||
# sanity check before committing :). |
||||
{ lib, assertTrue }: |
||||
|
||||
with lib.systems.doubles; |
||||
|
||||
let mseteq = x: y: lib.sort lib.lessThan x == lib.sort lib.lessThan y; in |
||||
|
||||
{ |
||||
all = assertTrue (mseteq all (linux ++ darwin ++ cygwin ++ freebsd ++ openbsd ++ netbsd ++ illumos)); |
||||
|
||||
arm = assertTrue (mseteq arm [ "armv5tel-linux" "armv6l-linux" "armv7l-linux" ]); |
||||
i686 = assertTrue (mseteq i686 [ "i686-linux" "i686-freebsd" "i686-netbsd" "i686-cygwin" ]); |
||||
mips = assertTrue (mseteq mips [ "mips64el-linux" ]); |
||||
x86_64 = assertTrue (mseteq x86_64 [ "x86_64-linux" "x86_64-darwin" "x86_64-freebsd" "x86_64-openbsd" "x86_64-netbsd" "x86_64-cygwin" ]); |
||||
|
||||
cygwin = assertTrue (mseteq cygwin [ "i686-cygwin" "x86_64-cygwin" ]); |
||||
darwin = assertTrue (mseteq darwin [ "x86_64-darwin" ]); |
||||
freebsd = assertTrue (mseteq freebsd [ "i686-freebsd" "x86_64-freebsd" ]); |
||||
gnu = assertTrue (mseteq gnu (linux /* ++ hurd ++ kfreebsd ++ ... */)); |
||||
illumos = assertTrue (mseteq illumos [ "x86_64-solaris" ]); |
||||
linux = assertTrue (mseteq linux [ "i686-linux" "x86_64-linux" "armv5tel-linux" "armv6l-linux" "armv7l-linux" "aarch64-linux" "mips64el-linux" ]); |
||||
netbsd = assertTrue (mseteq netbsd [ "i686-netbsd" "x86_64-netbsd" ]); |
||||
openbsd = assertTrue (mseteq openbsd [ "i686-openbsd" "x86_64-openbsd" ]); |
||||
unix = assertTrue (mseteq unix (linux ++ darwin ++ freebsd ++ openbsd ++ netbsd ++ illumos)); |
||||
} |
Loading…
Reference in new issue