about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBenjamin Hipple <bhipple@protonmail.com>2020-06-02 23:27:27 -0400
committerGitHub <noreply@github.com>2020-06-02 23:27:27 -0400
commit4af635feff9a2ad8d617611ad8cfd05def8ca604 (patch)
tree877650e8a881b4d222f06cc695aef405ce264665
parent33d5340769efd7a079cebb75a88aecd4b025e048 (diff)
parent127cdd0cab64405fff28d8668d3f416c979406d4 (diff)
downloadnixlib-4af635feff9a2ad8d617611ad8cfd05def8ca604.tar
nixlib-4af635feff9a2ad8d617611ad8cfd05def8ca604.tar.gz
nixlib-4af635feff9a2ad8d617611ad8cfd05def8ca604.tar.bz2
nixlib-4af635feff9a2ad8d617611ad8cfd05def8ca604.tar.lz
nixlib-4af635feff9a2ad8d617611ad8cfd05def8ca604.tar.xz
nixlib-4af635feff9a2ad8d617611ad8cfd05def8ca604.tar.zst
nixlib-4af635feff9a2ad8d617611ad8cfd05def8ca604.zip
Merge pull request #87866 from danieldk/validate-pkgconfig-hook
validatePkgConfig: init
-rw-r--r--doc/stdenv/stdenv.xml10
-rw-r--r--pkgs/build-support/setup-hooks/validate-pkg-config.sh19
-rw-r--r--pkgs/development/libraries/science/math/mkl/default.nix15
-rw-r--r--pkgs/top-level/all-packages.nix4
4 files changed, 36 insertions, 12 deletions
diff --git a/doc/stdenv/stdenv.xml b/doc/stdenv/stdenv.xml
index a4174f4f7edc..ee93f39318b8 100644
--- a/doc/stdenv/stdenv.xml
+++ b/doc/stdenv/stdenv.xml
@@ -2083,6 +2083,16 @@ postInstall = ''
     </varlistentry>
     <varlistentry>
      <term>
+      validatePkgConfig
+     </term>
+     <listitem>
+      <para>
+       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.
+      </para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term>
       cmake
      </term>
      <listitem>
diff --git a/pkgs/build-support/setup-hooks/validate-pkg-config.sh b/pkgs/build-support/setup-hooks/validate-pkg-config.sh
new file mode 100644
index 000000000000..54fc9cc122ca
--- /dev/null
+++ b/pkgs/build-support/setup-hooks/validate-pkg-config.sh
@@ -0,0 +1,19 @@
+# This setup hook validates each pkgconfig file in each output.
+
+fixupOutputHooks+=(_validatePkgConfig)
+
+_validatePkgConfig() {
+    for pc in $(find "$prefix" -name '*.pc'); do
+        local bail=0
+
+        # Do not fail immediately. It's nice to see all errors when
+        # there are multiple pkgconfig files.
+        if ! pkg-config --validate "$pc"; then
+            bail=1
+        fi
+    done
+
+    if [ $bail -eq 1 ]; then
+        exit 1
+    fi
+}
diff --git a/pkgs/development/libraries/science/math/mkl/default.nix b/pkgs/development/libraries/science/math/mkl/default.nix
index 016864abed8c..19f988d965c4 100644
--- a/pkgs/development/libraries/science/math/mkl/default.nix
+++ b/pkgs/development/libraries/science/math/mkl/default.nix
@@ -1,9 +1,9 @@
 { stdenvNoCC
 , fetchurl
-, pkgconfig
 , rpmextract
 , undmg
 , darwin
+, validatePkgConfig
 , enableStatic ? false
 }:
 
@@ -46,15 +46,11 @@ in stdenvNoCC.mkDerivation {
         sha256 = "0v86hrqg15mbc78m9qk8dbkaaq3mlwashgbf9n79kxpl1gilnah8";
       });
 
-  nativeBuildInputs = if stdenvNoCC.isDarwin
+  nativeBuildInputs = [ validatePkgConfig ] ++ (if stdenvNoCC.isDarwin
     then
       [ undmg darwin.cctools ]
     else
-      [ rpmextract ];
-
-  installCheckInputs = [ pkgconfig ];
-
-  doInstallCheck = true;
+      [ rpmextract ]);
 
   buildPhase = if stdenvNoCC.isDarwin then ''
     for f in Contents/Resources/pkg/*.tgz; do
@@ -152,11 +148,6 @@ in stdenvNoCC.mkDerivation {
     install_name_tool -change @rpath/libtbbmalloc.dylib $out/lib/libtbbmalloc.dylib $out/lib/libtbbmalloc_proxy.dylib
   '';
 
-  # Validate pkgconfig files, since they break often on updates.
-  installCheckPhase = ''
-    pkg-config --validate $out/lib/pkgconfig/*.pc
-  '';
-
   # Per license agreement, do not modify the binary
   dontStrip = true;
   dontPatchELF = true;
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index f57bff13b6f6..47f8ceb07e05 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -507,6 +507,10 @@ in
 
   iconConvTools = callPackage ../build-support/icon-conv-tools {};
 
+  validatePkgConfig = makeSetupHook
+    { name = "validate-pkg-config"; deps = [ findutils pkgconfig ]; }
+    ../build-support/setup-hooks/validate-pkg-config.sh;
+
   #package writers
   writers = callPackage ../build-support/writers {};