blob: 69ec5a0f09c15aff7c2df4cf7352b284abfcb6d1 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# 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)
(builtins.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 severly 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; }
|