Files
nixpkgs/pkgs/top-level/pkg-config/test-defaultPkgConfigPackages.nix
Dark Steveneq 646b892680
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
push sheeet
2025-10-09 14:15:47 +02:00

58 lines
2.1 KiB
Nix

# cd nixpkgs
# nix-build -A tests.pkg-config.defaultPkgConfigPackages
{
lib,
pkg-config,
defaultPkgConfigPackages,
runCommand,
testers,
}:
let
inherit (lib.strings) escapeNixIdentifier;
allTests = lib.mapAttrs (k: v: if v == null then null else makePkgConfigTestMaybe k v) (
removeAttrs defaultPkgConfigPackages [ "recurseForDerivations" ]
);
# nix-build rejects attribute names with periods
# This will build those regardless.
tests-combined =
runCommand "pkg-config-checks"
{
allTests = lib.attrValues allTests;
}
''
touch $out
'';
makePkgConfigTestMaybe =
moduleName: pkg:
if !lib.isDerivation pkg then
throw "pkg-config module `${escapeNixIdentifier moduleName}` is not defined to be a derivation. Please check the attribute value for `${escapeNixIdentifier moduleName}` in `pkgs/top-level/pkg-config-packages.nix` in Nixpkgs."
else if !pkg ? meta.unsupported then
throw "pkg-config module `${escapeNixIdentifier moduleName}` does not have a `meta.unsupported` attribute. This can't be right. Please check the attribute value for `${escapeNixIdentifier moduleName}` in `pkgs/top-level/pkg-config-packages.nix` in Nixpkgs."
else if pkg.meta.unsupported then
# We return `null` instead of doing a `filterAttrs`, because with
# `filterAttrs` the evaluator would not be able to return the attribute
# set without first evaluating all of the attribute _values_. This would
# be rather expensive, and severely slow down the use case of getting a
# single test, which we want to do in `passthru.tests`, or interactively.
null
else if !pkg ? meta.broken then
throw "pkg-config module `${escapeNixIdentifier moduleName}` does not have a `meta.broken` attribute. This can't be right. Please check the attribute value for `${escapeNixIdentifier moduleName}` in `pkgs/top-level/pkg-config.packages.nix` in Nixpkgs."
else if pkg.meta.broken then
null
else
testers.hasPkgConfigModules {
moduleNames = [ moduleName ];
package = pkg;
};
in
lib.recurseIntoAttrs allTests // { inherit tests-combined; }