git.iko.soy/typeable/nixpkgs
on master help sign in
Merge pull request #87866 from danieldk/validate-pkgconfig-hook

validatePkgConfig: init

commit4af635feff9a2ad8d617611ad8cfd05def8ca604 authorBenjamin Hipple <bhipple@protonmail.com> dateTue 2 Jun 2020, 23:27 (6 years ago) parent33d5340127cdd0
4 files changed+36−12
doc/stdenv/stdenv.xml+10 pkgs/build-support/setup-hooks/validate-pkg-config.sh+19 pkgs/development/libraries/science/math/mkl/default.nix+3−12 pkgs/top-level/all-packages.nix+4
doc/stdenv/stdenv.xml+10
@@ -2081,6 +2081,16 @@ postInstall = ''
20812081 </para>
20822082 </listitem>
20832083 </varlistentry>
2084+ <varlistentry>
2085+ <term>
2086+ validatePkgConfig
2087+ </term>
2088+ <listitem>
2089+ <para>
2090+ The <literal>validatePkgConfig</literal> hook validates all pkg-config (<filename>.pc</filename>) files in a package. This helps catching some common errors in pkg-config files, such as undefined variables.
2091+ </para>
2092+ </listitem>
2093+ </varlistentry>
20842094 <varlistentry>
20852095 <term>
20862096 cmake
pkgs/build-support/setup-hooks/validate-pkg-config.shnew file+19
@@ -0,0 +1,19 @@
1+# This setup hook validates each pkgconfig file in each output.
2+
3+fixupOutputHooks+=(_validatePkgConfig)
4+
5+_validatePkgConfig() {
6+ for pc in $(find "$prefix" -name '*.pc'); do
7+ local bail=0
8+
9+ # Do not fail immediately. It's nice to see all errors when
10+ # there are multiple pkgconfig files.
11+ if ! pkg-config --validate "$pc"; then
12+ bail=1
13+ fi
14+ done
15+
16+ if [ $bail -eq 1 ]; then
17+ exit 1
18+ fi
19+}
pkgs/development/libraries/science/math/mkl/default.nix+3−12
@@ -1,9 +1,9 @@
11{ stdenvNoCC
22, fetchurl
3−, pkgconfig
43, rpmextract
54, undmg
65, darwin
6+, validatePkgConfig
77, enableStatic ? false
88}:
99
@@ -46,15 +46,11 @@ in stdenvNoCC.mkDerivation {
4646 sha256 = "0v86hrqg15mbc78m9qk8dbkaaq3mlwashgbf9n79kxpl1gilnah8";
4747 });
4848
49− nativeBuildInputs = if stdenvNoCC.isDarwin
49+ nativeBuildInputs = [ validatePkgConfig ] ++ (if stdenvNoCC.isDarwin
5050 then
5151 [ undmg darwin.cctools ]
5252 else
53− [ rpmextract ];
54−
55− installCheckInputs = [ pkgconfig ];
56−
57− doInstallCheck = true;
53+ [ rpmextract ]);
5854
5955 buildPhase = if stdenvNoCC.isDarwin then ''
6056 for f in Contents/Resources/pkg/*.tgz; do
@@ -152,11 +148,6 @@ in stdenvNoCC.mkDerivation {
152148 install_name_tool -change @rpath/libtbbmalloc.dylib $out/lib/libtbbmalloc.dylib $out/lib/libtbbmalloc_proxy.dylib
153149 '';
154150
155− # Validate pkgconfig files, since they break often on updates.
156− installCheckPhase = ''
157− pkg-config --validate $out/lib/pkgconfig/*.pc
158− '';
159−
160151 # Per license agreement, do not modify the binary
161152 dontStrip = true;
162153 dontPatchELF = true;
pkgs/top-level/all-packages.nix+4
@@ -507,6 +507,10 @@ in
507507
508508 iconConvTools = callPackage ../build-support/icon-conv-tools {};
509509
510+ validatePkgConfig = makeSetupHook
511+ { name = "validate-pkg-config"; deps = [ findutils pkgconfig ]; }
512+ ../build-support/setup-hooks/validate-pkg-config.sh;
513+
510514 #package writers
511515 writers = callPackage ../build-support/writers {};
512516