Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
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 inherit gccTests;
91 };
92
93 devShellTools = callPackage ../build-support/dev-shell-tools/tests { };
94
95 stdenv-inputs = callPackage ./stdenv-inputs { };
96 stdenv = 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 = 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 = callPackages ../build-support/fetchurl/tests.nix { };
124 fetchtorrent = callPackages ../build-support/fetchtorrent/tests.nix { };
125 fetchpatch = callPackages ../build-support/fetchpatch/tests.nix { };
126 fetchpatch2 = callPackages ../build-support/fetchpatch/tests.nix { fetchpatch = fetchpatch2; };
127 fetchDebianPatch = callPackages ../build-support/fetchdebianpatch/tests.nix { };
128 fetchzip = callPackages ../build-support/fetchzip/tests.nix { };
129 fetchgit = callPackages ../build-support/fetchgit/tests.nix { };
130 fetchFirefoxAddon = callPackages ../build-support/fetchfirefoxaddon/tests.nix { };
131 fetchPypiLegacy = callPackages ../build-support/fetchpypilegacy/tests.nix { };
132
133 install-shell-files = callPackage ./install-shell-files { };
134
135 checkpointBuildTools = callPackage ./checkpointBuild { };
136
137 kernel-config = callPackage ./kernel.nix { };
138
139 ld-library-path = callPackage ./ld-library-path { };
140
141 cross = callPackage ./cross { } // {
142 __attrsFailEvaluation = true;
143 };
144
145 php = recurseIntoAttrs (callPackages ./php { });
146
147 pkg-config = recurseIntoAttrs (callPackage ../top-level/pkg-config/tests.nix { }) // {
148 __recurseIntoDerivationForReleaseJobs = true;
149 };
150
151 buildRustCrate = callPackage ../build-support/rust/build-rust-crate/test { };
152 importCargoLock = callPackage ../build-support/rust/test/import-cargo-lock { };
153
154 vim = callPackage ./vim { };
155
156 nixos-functions = callPackage ./nixos-functions { };
157
158 nixosOptionsDoc = callPackage ../../nixos/lib/make-options-doc/tests.nix { };
159
160 overriding = callPackage ./overriding.nix { };
161
162 texlive = callPackage ./texlive { };
163
164 cuda = callPackage ./cuda { };
165
166 trivial-builders = callPackage ../build-support/trivial-builders/test/default.nix { };
167
168 writers = callPackage ../build-support/writers/test.nix { };
169
170 testers = callPackage ../build-support/testers/test/default.nix { };
171
172 dhall = callPackage ./dhall { };
173
174 cue-validation = callPackage ./cue { };
175
176 coq = callPackage ./coq { };
177
178 dotnet = recurseIntoAttrs (callPackages ./dotnet { });
179
180 makeHardcodeGsettingsPatch = callPackage ./make-hardcode-gsettings-patch { };
181
182 makeWrapper = callPackage ./make-wrapper { };
183 makeBinaryWrapper = callPackage ./make-binary-wrapper {
184 makeBinaryWrapper = pkgs.makeBinaryWrapper.override {
185 # Enable sanitizers in the tests only, to avoid the performance cost in regular usage.
186 # The sanitizers cause errors on aarch64-darwin, see https://github.com/NixOS/nixpkgs/pull/150079#issuecomment-994132734
187 sanitizers =
188 pkgs.lib.optionals (!(pkgs.stdenv.hostPlatform.isDarwin && pkgs.stdenv.hostPlatform.isAarch64))
189 [
190 "undefined"
191 "address"
192 ];
193 };
194 };
195
196 pkgs-lib = recurseIntoAttrs (import ../pkgs-lib/tests { inherit pkgs; });
197
198 buildFHSEnv = recurseIntoAttrs (callPackages ./buildFHSEnv { });
199
200 nixpkgs-check-by-name = throw "tests.nixpkgs-check-by-name is now specified in a separate repository: https://github.com/NixOS/nixpkgs-check-by-name";
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}