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