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 (filter (n: n != "gcc7Stdenv")) 44 (filter (n: n != "gcc8Stdenv")) 45 ] 46 ++ 47 lib.optionals 48 ( 49 !( 50 (stdenv.buildPlatform.isLinux && stdenv.buildPlatform.isx86_64) 51 && (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86_64) 52 ) 53 ) 54 [ 55 (filter (n: !lib.hasSuffix "MultiStdenv" n)) 56 ] 57 ); 58 in 59 lib.genAttrs pkgSets (name: callPackage ./cc-wrapper { stdenv = pkgs.${name}; }); 60 in 61 recurseIntoAttrs { 62 default = callPackage ./cc-wrapper { }; 63 64 supported = stdenv.mkDerivation { 65 name = "cc-wrapper-supported"; 66 builtGCC = 67 let 68 inherit (lib) filterAttrs; 69 sets = lib.pipe gccTests [ 70 (filterAttrs (_: v: lib.meta.availableOn stdenv.hostPlatform v.stdenv.cc)) 71 # Broken 72 (filterAttrs (n: _: n != "gccMultiStdenv")) 73 ]; 74 in 75 toJSON sets; 76 77 builtLLVM = 78 let 79 inherit (lib) filterAttrs; 80 sets = lib.pipe llvmTests [ 81 (filterAttrs (_: v: lib.meta.availableOn stdenv.hostPlatform v.clang.stdenv.cc)) 82 (filterAttrs (_: v: lib.meta.availableOn stdenv.hostPlatform v.libcxx.stdenv.cc)) 83 ]; 84 in 85 toJSON sets; 86 buildCommand = '' 87 touch $out 88 ''; 89 }; 90 91 llvmTests = recurseIntoAttrs llvmTests; 92 gccTests = recurseIntoAttrs gccTests; 93 }; 94 95 devShellTools = callPackage ../build-support/dev-shell-tools/tests { }; 96 97 stdenv-inputs = callPackage ./stdenv-inputs { }; 98 stdenv = recurseIntoAttrs (callPackage ./stdenv { }); 99 100 hardeningFlags = recurseIntoAttrs (callPackage ./cc-wrapper/hardening.nix { }); 101 hardeningFlags-gcc = recurseIntoAttrs ( 102 callPackage ./cc-wrapper/hardening.nix { 103 stdenv = gccStdenv; 104 } 105 ); 106 hardeningFlags-clang = recurseIntoAttrs ( 107 callPackage ./cc-wrapper/hardening.nix { 108 stdenv = llvmPackages.stdenv; 109 } 110 ); 111 112 config = callPackage ./config.nix { }; 113 114 top-level = callPackage ./top-level { }; 115 116 haskell = callPackage ./haskell { }; 117 118 hooks = recurseIntoAttrs (callPackage ./hooks { }); 119 120 cc-multilib-gcc = callPackage ./cc-wrapper/multilib.nix { stdenv = gccMultiStdenv; }; 121 cc-multilib-clang = callPackage ./cc-wrapper/multilib.nix { stdenv = clangMultiStdenv; }; 122 123 compress-drv = callPackage ../build-support/compress-drv/test.nix { }; 124 125 fetchurl = recurseIntoAttrs (callPackages ../build-support/fetchurl/tests.nix { }); 126 fetchtorrent = recurseIntoAttrs (callPackages ../build-support/fetchtorrent/tests.nix { }); 127 fetchpatch = recurseIntoAttrs (callPackages ../build-support/fetchpatch/tests.nix { }); 128 fetchpatch2 = recurseIntoAttrs ( 129 callPackages ../build-support/fetchpatch/tests.nix { fetchpatch = fetchpatch2; } 130 ); 131 fetchDebianPatch = recurseIntoAttrs (callPackages ../build-support/fetchdebianpatch/tests.nix { }); 132 fetchzip = recurseIntoAttrs (callPackages ../build-support/fetchzip/tests.nix { }); 133 fetchgit = recurseIntoAttrs (callPackages ../build-support/fetchgit/tests.nix { }); 134 fetchFirefoxAddon = recurseIntoAttrs ( 135 callPackages ../build-support/fetchfirefoxaddon/tests.nix { } 136 ); 137 fetchPypiLegacy = recurseIntoAttrs (callPackages ../build-support/fetchpypilegacy/tests.nix { }); 138 139 install-shell-files = recurseIntoAttrs (callPackage ./install-shell-files { }); 140 141 checkpointBuildTools = callPackage ./checkpointBuild { }; 142 143 kernel-config = callPackage ./kernel.nix { }; 144 145 ld-library-path = callPackage ./ld-library-path { }; 146 147 cross = recurseIntoAttrs (callPackage ./cross { }); 148 149 php = recurseIntoAttrs (callPackages ./php { }); 150 151 pkg-config = recurseIntoAttrs (callPackage ../top-level/pkg-config/tests.nix { }) // { 152 __recurseIntoDerivationForReleaseJobs = true; 153 }; 154 155 buildRustCrate = recurseIntoAttrs (callPackage ../build-support/rust/build-rust-crate/test { }); 156 importCargoLock = recurseIntoAttrs (callPackage ../build-support/rust/test/import-cargo-lock { }); 157 158 vim = callPackage ./vim { }; 159 160 nixos-functions = callPackage ./nixos-functions { }; 161 162 nixosOptionsDoc = recurseIntoAttrs (callPackage ../../nixos/lib/make-options-doc/tests.nix { }); 163 164 overriding = callPackage ./overriding.nix { }; 165 166 texlive = recurseIntoAttrs (callPackage ./texlive { }); 167 168 cuda = callPackage ./cuda { }; 169 170 trivial-builders = callPackage ../build-support/trivial-builders/test/default.nix { }; 171 172 writers = callPackage ../build-support/writers/test.nix { }; 173 174 testers = callPackage ../build-support/testers/test/default.nix { }; 175 176 dhall = callPackage ./dhall { }; 177 178 cue-validation = callPackage ./cue { }; 179 180 coq = callPackage ./coq { }; 181 182 dotnet = recurseIntoAttrs (callPackages ./dotnet { }); 183 184 makeHardcodeGsettingsPatch = recurseIntoAttrs (callPackage ./make-hardcode-gsettings-patch { }); 185 186 makeWrapper = callPackage ./make-wrapper { }; 187 makeBinaryWrapper = callPackage ./make-binary-wrapper { 188 makeBinaryWrapper = pkgs.makeBinaryWrapper.override { 189 # Enable sanitizers in the tests only, to avoid the performance cost in regular usage. 190 # The sanitizers cause errors on aarch64-darwin, see https://github.com/NixOS/nixpkgs/pull/150079#issuecomment-994132734 191 sanitizers = 192 pkgs.lib.optionals (!(pkgs.stdenv.hostPlatform.isDarwin && pkgs.stdenv.hostPlatform.isAarch64)) 193 [ 194 "undefined" 195 "address" 196 ]; 197 }; 198 }; 199 200 pkgs-lib = recurseIntoAttrs (import ../pkgs-lib/tests { inherit pkgs; }); 201 202 buildFHSEnv = recurseIntoAttrs (callPackages ./buildFHSEnv { }); 203 204 auto-patchelf-hook = callPackage ./auto-patchelf-hook { }; 205 206 # Accumulate all passthru.tests from arrayUtilities into a single attribute set. 207 arrayUtilities = recurseIntoAttrs ( 208 lib.concatMapAttrs ( 209 name: value: 210 lib.optionalAttrs (value ? passthru.tests) { 211 ${name} = value.passthru.tests; 212 } 213 ) arrayUtilities 214 ); 215 216 srcOnly = callPackage ../build-support/src-only/tests.nix { }; 217 218 systemd = callPackage ./systemd { }; 219 220 replaceVars = recurseIntoAttrs (callPackage ./replace-vars { }); 221 222 substitute = recurseIntoAttrs (callPackage ./substitute { }); 223 224 build-environment-info = callPackage ./build-environment-info { }; 225 226 rust-hooks = recurseIntoAttrs (callPackages ../build-support/rust/hooks/test { }); 227}