Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at flake-libs 215 lines 7.5 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 (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}