diff options
Diffstat (limited to 'nixpkgs/pkgs/test/default.nix')
-rw-r--r-- | nixpkgs/pkgs/test/default.nix | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/test/default.nix b/nixpkgs/pkgs/test/default.nix new file mode 100644 index 000000000000..29dc4b5192ec --- /dev/null +++ b/nixpkgs/pkgs/test/default.nix @@ -0,0 +1,170 @@ +{ pkgs, callPackage }: + +with pkgs; + +{ + cc-wrapper = with builtins; let + pkgNames = (attrNames pkgs); + llvmTests = let + pkgSets = lib.pipe pkgNames [ + (filter (lib.hasPrefix "llvmPackages")) + (filter (n: n != "rocmPackages.llvm")) + # Is a throw alias. + (filter (n: n != "llvmPackages_rocm")) + (filter (n: n != "llvmPackages_latest")) + (filter (n: n != "llvmPackages_git")) + ]; + tests = lib.genAttrs pkgSets (name: recurseIntoAttrs { + clang = callPackage ./cc-wrapper { stdenv = pkgs.${name}.stdenv; }; + libcxx = callPackage ./cc-wrapper { stdenv = pkgs.${name}.libcxxStdenv; }; + }); + in + tests; + gccTests = let + pkgSets = lib.pipe (attrNames pkgs) ([ + (filter (lib.hasPrefix "gcc")) + (filter (lib.hasSuffix "Stdenv")) + (filter (n: n != "gccCrossLibcStdenv")) + ] ++ lib.optionals (!( + (stdenv.buildPlatform.isLinux && stdenv.buildPlatform.isx86_64) && + (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isx86_64) + )) [ + (filter (n: !lib.hasSuffix "MultiStdenv" n)) + ]); + in lib.genAttrs pkgSets (name: callPackage ./cc-wrapper { stdenv = pkgs.${name}; }); + in recurseIntoAttrs { + default = callPackage ./cc-wrapper { }; + + supported = stdenv.mkDerivation { + name = "cc-wrapper-supported"; + builtGCC = + let + inherit (lib) filterAttrs; + sets = lib.pipe gccTests ([ + (filterAttrs (_: v: lib.meta.availableOn stdenv.hostPlatform v.stdenv.cc)) + # Broken + (filterAttrs (n: _: n != "gcc49Stdenv")) + (filterAttrs (n: _: n != "gccMultiStdenv")) + ] ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [ + # fails with things like + # ld: warning: ld: warning: object file (trunctfsf2_s.o) was built for newer macOS version (11.0) than being linked (10.5) + # ld: warning: ld: warning: could not create compact unwind for ___fixunstfdi: register 20 saved somewhere other than in frame + (filterAttrs (n: _: n != "gcc11Stdenv")) + ]); + in + toJSON sets; + + builtLLVM = + let + inherit (lib) filterAttrs; + sets = lib.pipe llvmTests ([ + (filterAttrs (_: v: lib.meta.availableOn stdenv.hostPlatform v.clang.stdenv.cc)) + (filterAttrs (_: v: lib.meta.availableOn stdenv.hostPlatform v.libcxx.stdenv.cc)) + + # libcxxStdenv broken + # fix in https://github.com/NixOS/nixpkgs/pull/216273 + ] ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [ + (filterAttrs (n: _: n != "llvmPackages_6")) + (filterAttrs (n: _: n != "llvmPackages_8")) + (filterAttrs (n: _: n != "llvmPackages_9")) + (filterAttrs (n: _: n != "llvmPackages_10")) + ]); + in + toJSON sets; + buildCommand = '' + touch $out + ''; + }; + + llvmTests = recurseIntoAttrs llvmTests; + inherit gccTests; + }; + + stdenv-inputs = callPackage ./stdenv-inputs { }; + stdenv = callPackage ./stdenv { }; + + hardeningFlags = recurseIntoAttrs (callPackage ./cc-wrapper/hardening.nix {}); + hardeningFlags-gcc = recurseIntoAttrs (callPackage ./cc-wrapper/hardening.nix { + stdenv = gccStdenv; + }); + hardeningFlags-clang = recurseIntoAttrs (callPackage ./cc-wrapper/hardening.nix { + stdenv = llvmPackages.stdenv; + }); + + config = callPackage ./config.nix { }; + + top-level = callPackage ./top-level { }; + + haskell = callPackage ./haskell { }; + + hooks = callPackage ./hooks { }; + + cc-multilib-gcc = callPackage ./cc-wrapper/multilib.nix { stdenv = gccMultiStdenv; }; + cc-multilib-clang = callPackage ./cc-wrapper/multilib.nix { stdenv = clangMultiStdenv; }; + + fetchurl = callPackages ../build-support/fetchurl/tests.nix { }; + fetchtorrent = callPackages ../build-support/fetchtorrent/tests.nix { }; + fetchpatch = callPackages ../build-support/fetchpatch/tests.nix { }; + fetchpatch2 = callPackages ../build-support/fetchpatch/tests.nix { fetchpatch = fetchpatch2; }; + fetchDebianPatch = callPackages ../build-support/fetchdebianpatch/tests.nix { }; + fetchzip = callPackages ../build-support/fetchzip/tests.nix { }; + fetchgit = callPackages ../build-support/fetchgit/tests.nix { }; + fetchFirefoxAddon = callPackages ../build-support/fetchfirefoxaddon/tests.nix { }; + + install-shell-files = callPackage ./install-shell-files {}; + + kernel-config = callPackage ./kernel.nix {}; + + ld-library-path = callPackage ./ld-library-path {}; + + macOSSierraShared = callPackage ./macos-sierra-shared {}; + + cross = callPackage ./cross {}; + + php = recurseIntoAttrs (callPackages ./php {}); + + pkg-config = recurseIntoAttrs (callPackage ../top-level/pkg-config/tests.nix { }); + + buildRustCrate = callPackage ../build-support/rust/build-rust-crate/test { }; + importCargoLock = callPackage ../build-support/rust/test/import-cargo-lock { }; + + vim = callPackage ./vim {}; + + nixos-functions = callPackage ./nixos-functions {}; + + overriding = callPackage ./overriding.nix { }; + + texlive = callPackage ./texlive {}; + + cuda = callPackage ./cuda { }; + + trivial-builders = callPackage ../build-support/trivial-builders/test/default.nix {}; + + writers = callPackage ../build-support/writers/test.nix {}; + + testers = callPackage ../build-support/testers/test/default.nix {}; + + dhall = callPackage ./dhall { }; + + cue-validation = callPackage ./cue {}; + + coq = callPackage ./coq {}; + + dotnet = recurseIntoAttrs (callPackages ./dotnet { }); + + makeHardcodeGsettingsPatch = callPackage ./make-hardcode-gsettings-patch { }; + + makeWrapper = callPackage ./make-wrapper { }; + makeBinaryWrapper = callPackage ./make-binary-wrapper { + makeBinaryWrapper = pkgs.makeBinaryWrapper.override { + # Enable sanitizers in the tests only, to avoid the performance cost in regular usage. + # The sanitizers cause errors on aarch64-darwin, see https://github.com/NixOS/nixpkgs/pull/150079#issuecomment-994132734 + sanitizers = pkgs.lib.optionals (! (pkgs.stdenv.isDarwin && pkgs.stdenv.isAarch64)) + [ "undefined" "address" ]; + }; + }; + + pkgs-lib = recurseIntoAttrs (import ../pkgs-lib/tests { inherit pkgs; }); + + nixpkgs-check-by-name = callPackage ./nixpkgs-check-by-name { }; +} |