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