1{ pkgs, callPackage }:
2
3with pkgs;
4
5{
6 cc-wrapper =
7 with builtins;
8 let
9 pkgNames = (attrNames pkgs);
10 llvmTests =
11 let
12 pkgSets = lib.pipe pkgNames [
13 (filter (lib.hasPrefix "llvmPackages"))
14 (filter (n: n != "rocmPackages.llvm"))
15 # Are throw aliases.
16 (filter (n: n != "llvmPackages_rocm"))
17 (filter (n: n != "llvmPackages_latest"))
18 (filter (n: n != "llvmPackages_6"))
19 (filter (n: n != "llvmPackages_7"))
20 (filter (n: n != "llvmPackages_8"))
21 (filter (n: n != "llvmPackages_9"))
22 (filter (n: n != "llvmPackages_10"))
23 (filter (n: n != "llvmPackages_11"))
24 ];
25 tests = lib.genAttrs pkgSets (
26 name:
27 recurseIntoAttrs {
28 clang = callPackage ./cc-wrapper { stdenv = pkgs.${name}.stdenv; };
29 libcxx = callPackage ./cc-wrapper { stdenv = pkgs.${name}.libcxxStdenv; };
30 }
31 );
32 in
33 tests;
34 gccTests =
35 let
36 pkgSets = lib.pipe (attrNames pkgs) (
37 [
38 (filter (lib.hasPrefix "gcc"))
39 (filter (lib.hasSuffix "Stdenv"))
40 (filter (n: n != "gccCrossLibcStdenv"))
41 (filter (n: n != "gcc49Stdenv"))
42 (filter (n: n != "gcc6Stdenv"))
43 ]
44 ++
45 lib.optionals
46 (
47 !(
48 (stdenv.buildPlatform.isLinux && stdenv.buildPlatform.isx86_64)
49 && (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86_64)
50 )
51 )
52 [
53 (filter (n: !lib.hasSuffix "MultiStdenv" n))
54 ]
55 );
56 in
57 lib.genAttrs pkgSets (name: callPackage ./cc-wrapper { stdenv = pkgs.${name}; });
58 in
59 recurseIntoAttrs {
60 default = callPackage ./cc-wrapper { };
61
62 supported = stdenv.mkDerivation {
63 name = "cc-wrapper-supported";
64 builtGCC =
65 let
66 inherit (lib) filterAttrs;
67 sets = lib.pipe gccTests [
68 (filterAttrs (_: v: lib.meta.availableOn stdenv.hostPlatform v.stdenv.cc))
69 # Broken
70 (filterAttrs (n: _: n != "gccMultiStdenv"))
71 ];
72 in
73 toJSON sets;
74
75 builtLLVM =
76 let
77 inherit (lib) filterAttrs;
78 sets = lib.pipe llvmTests [
79 (filterAttrs (_: v: lib.meta.availableOn stdenv.hostPlatform v.clang.stdenv.cc))
80 (filterAttrs (_: v: lib.meta.availableOn stdenv.hostPlatform v.libcxx.stdenv.cc))
81 ];
82 in
83 toJSON sets;
84 buildCommand = ''
85 touch $out
86 '';
87 };
88
89 llvmTests = recurseIntoAttrs llvmTests;
90 gccTests = recurseIntoAttrs gccTests;
91 };
92
93 devShellTools = callPackage ../build-support/dev-shell-tools/tests { };
94
95 stdenv-inputs = callPackage ./stdenv-inputs { };
96 stdenv = recurseIntoAttrs (callPackage ./stdenv { });
97
98 hardeningFlags = recurseIntoAttrs (callPackage ./cc-wrapper/hardening.nix { });
99 hardeningFlags-gcc = recurseIntoAttrs (
100 callPackage ./cc-wrapper/hardening.nix {
101 stdenv = gccStdenv;
102 }
103 );
104 hardeningFlags-clang = recurseIntoAttrs (
105 callPackage ./cc-wrapper/hardening.nix {
106 stdenv = llvmPackages.stdenv;
107 }
108 );
109
110 config = callPackage ./config.nix { };
111
112 top-level = callPackage ./top-level { };
113
114 haskell = callPackage ./haskell { };
115
116 hooks = recurseIntoAttrs (callPackage ./hooks { });
117
118 cc-multilib-gcc = callPackage ./cc-wrapper/multilib.nix { stdenv = gccMultiStdenv; };
119 cc-multilib-clang = callPackage ./cc-wrapper/multilib.nix { stdenv = clangMultiStdenv; };
120
121 compress-drv = callPackage ../build-support/compress-drv/test.nix { };
122
123 fetchurl = recurseIntoAttrs (callPackages ../build-support/fetchurl/tests.nix { });
124 fetchtorrent = recurseIntoAttrs (callPackages ../build-support/fetchtorrent/tests.nix { });
125 fetchpatch = recurseIntoAttrs (callPackages ../build-support/fetchpatch/tests.nix { });
126 fetchpatch2 = recurseIntoAttrs (
127 callPackages ../build-support/fetchpatch/tests.nix { fetchpatch = fetchpatch2; }
128 );
129 fetchDebianPatch = recurseIntoAttrs (callPackages ../build-support/fetchdebianpatch/tests.nix { });
130 fetchzip = recurseIntoAttrs (callPackages ../build-support/fetchzip/tests.nix { });
131 fetchgit = recurseIntoAttrs (callPackages ../build-support/fetchgit/tests.nix { });
132 fetchFirefoxAddon = recurseIntoAttrs (
133 callPackages ../build-support/fetchfirefoxaddon/tests.nix { }
134 );
135 fetchPypiLegacy = recurseIntoAttrs (callPackages ../build-support/fetchpypilegacy/tests.nix { });
136
137 install-shell-files = recurseIntoAttrs (callPackage ./install-shell-files { });
138
139 checkpointBuildTools = callPackage ./checkpointBuild { };
140
141 kernel-config = callPackage ./kernel.nix { };
142
143 ld-library-path = callPackage ./ld-library-path { };
144
145 cross = recurseIntoAttrs (callPackage ./cross { });
146
147 php = recurseIntoAttrs (callPackages ./php { });
148
149 pkg-config = recurseIntoAttrs (callPackage ../top-level/pkg-config/tests.nix { }) // {
150 __recurseIntoDerivationForReleaseJobs = true;
151 };
152
153 buildRustCrate = recurseIntoAttrs (callPackage ../build-support/rust/build-rust-crate/test { });
154 importCargoLock = recurseIntoAttrs (callPackage ../build-support/rust/test/import-cargo-lock { });
155
156 vim = callPackage ./vim { };
157
158 nixos-functions = callPackage ./nixos-functions { };
159
160 nixosOptionsDoc = recurseIntoAttrs (callPackage ../../nixos/lib/make-options-doc/tests.nix { });
161
162 overriding = callPackage ./overriding.nix { };
163
164 texlive = recurseIntoAttrs (callPackage ./texlive { });
165
166 cuda = callPackage ./cuda { };
167
168 trivial-builders = callPackage ../build-support/trivial-builders/test/default.nix { };
169
170 writers = callPackage ../build-support/writers/test.nix { };
171
172 testers = callPackage ../build-support/testers/test/default.nix { };
173
174 dhall = callPackage ./dhall { };
175
176 cue-validation = callPackage ./cue { };
177
178 coq = callPackage ./coq { };
179
180 dotnet = recurseIntoAttrs (callPackages ./dotnet { });
181
182 makeHardcodeGsettingsPatch = recurseIntoAttrs (callPackage ./make-hardcode-gsettings-patch { });
183
184 makeWrapper = callPackage ./make-wrapper { };
185 makeBinaryWrapper = callPackage ./make-binary-wrapper {
186 makeBinaryWrapper = pkgs.makeBinaryWrapper.override {
187 # Enable sanitizers in the tests only, to avoid the performance cost in regular usage.
188 # The sanitizers cause errors on aarch64-darwin, see https://github.com/NixOS/nixpkgs/pull/150079#issuecomment-994132734
189 sanitizers =
190 pkgs.lib.optionals (!(pkgs.stdenv.hostPlatform.isDarwin && pkgs.stdenv.hostPlatform.isAarch64))
191 [
192 "undefined"
193 "address"
194 ];
195 };
196 };
197
198 pkgs-lib = recurseIntoAttrs (import ../pkgs-lib/tests { inherit pkgs; });
199
200 buildFHSEnv = recurseIntoAttrs (callPackages ./buildFHSEnv { });
201
202 auto-patchelf-hook = callPackage ./auto-patchelf-hook { };
203
204 srcOnly = callPackage ../build-support/src-only/tests.nix { };
205
206 systemd = callPackage ./systemd { };
207
208 replaceVars = recurseIntoAttrs (callPackage ./replace-vars { });
209
210 substitute = recurseIntoAttrs (callPackage ./substitute { });
211
212 build-environment-info = callPackage ./build-environment-info { };
213
214 rust-hooks = recurseIntoAttrs (callPackages ../build-support/rust/hooks/test { });
215}