forked from NixOS/nixpkgs
-
Notifications
You must be signed in to change notification settings - Fork 1
/
check-quickfix.nix
99 lines (83 loc) · 3.59 KB
/
check-quickfix.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
let
processAllPackagesArgs = {defaultScope, ...}: rec {
lib = import ../../../lib;
callPackage = lib.callPackageWith defaultScope;
};
defaultPackages = {
allPackages = x: import ../../../pkgs/top-level/all-packages.nix x // (
with (processAllPackagesArgs x); {
foo = callPackage ./check-quickfix-pkgs-foo.nix { };
bar = callPackage ./check-quickfix-pkgs-bar.nix { }; # depends on foo
baz = callPackage ./check-quickfix-pkgs-baz.nix { }; # depends on bar
qux = callPackage ./check-quickfix-pkgs-qux.nix { }; # depends on baz
});
aliasedPackages = import ../../../pkgs/top-level/all-packages-aliases.nix;
};
# Only change the foo package which is used explicitly by bar, and
# indirectly by baz.
quickfixPackages = {
allPackages = x: defaultPackages.allPackages x // (
with (processAllPackagesArgs x); {
# Check if all packages which depend on this one are patched.
bar = callPackage ./check-quickfix-pkgs-bar.nix {
name = "bar-1.0.1";
};
# Check if the package is renamed because of a name length mismatch.
baz = callPackage ./check-quickfix-pkgs-baz.nix {
name = "baz-1.0.51";
};
});
aliasedPackages = defaultPackages.aliasedPackages;
};
withoutFix = import ../../../. {
inherit defaultPackages quickfixPackages;
useQuickfix = false;
};
withFix = import ../../../. {
inherit defaultPackages quickfixPackages;
useQuickfix = true;
};
in
withoutFix.stdenv.mkDerivation {
name = "check-quickfix";
buildInputs = [];
buildCommand = ''
set -x;
: Check that fixes are correctly applies:
test ${withoutFix.foo} = ${withFix.foo}
test \! ${withoutFix.bar} = ${withFix.bar}
test \! ${withoutFix.baz} = ${withFix.baz}
test \! ${withoutFix.qux} = ${withFix.qux}
: Check wether packages names are correctly set.
test \! ${withoutFix.bar.name} = ${withFix.bar.name}
test ${withoutFix.baz.name} = ${withFix.baz.name}
grep -q "baz-1.0.0" ${withoutFix.baz}/installed
grep -q "baz-1.0.51" ${withFix.baz}/installed
: Sanity checks
grep -q ${withoutFix.foo} ${withoutFix.bar}/dependency
grep -q ${withoutFix.foo.name} ${withoutFix.bar}/installed
grep -q ${withoutFix.foo} ${withoutFix.baz}/dependency
grep -q ${withoutFix.foo.name} ${withoutFix.baz}/installed
grep -q ${withoutFix.foo} ${withoutFix.qux}/dependency
grep -q ${withoutFix.foo.name} ${withoutFix.qux}/installed
grep -q ${withoutFix.bar} ${withoutFix.baz}/dependency
grep -q ${withoutFix.bar.name} ${withoutFix.baz}/installed
grep -q ${withoutFix.bar} ${withoutFix.qux}/dependency
grep -q ${withoutFix.bar.name} ${withoutFix.qux}/installed
grep -q ${withoutFix.baz} ${withoutFix.qux}/dependency
grep -q ${withoutFix.baz.name} ${withoutFix.qux}/installed
: Check that fixes involve recompilation of fixed packages:
grep -q ${withFix.bar} ${withFix.bar}/dependency
grep -q ${withFix.bar.name} ${withFix.bar}/installed
: Check that fixes do not involve recompilation of dependent packages:
grep -q ${withFix.bar} ${withFix.baz}/dependency
grep -q ${withoutFix.bar.name} ${withFix.baz}/installed
grep -q ${withFix.baz} ${withFix.qux}/dependency
grep -q ${withoutFix.baz.name} ${withFix.qux}/installed
: Check that fixes are applied transitively:
grep -q ${withFix.bar} ${withFix.qux}/dependency
grep -q ${withoutFix.bar.name} ${withFix.qux}/installed
mkdir -p $out
echo success > $out/result
'';
}