From b1149dc3031fc7d0994ae990f495a27a490725d8 Mon Sep 17 00:00:00 2001 From: Artturin Date: Sun, 17 Jul 2022 21:54:01 +0300 Subject: [PATCH] cmake: add check-pc-files hook to check broken pc files see nixpkgs pr 172150 --- .../cmake/check-pc-files-hook.sh | 18 ++++++++++++++++++ .../tools/build-managers/cmake/default.nix | 8 +++++--- 2 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 pkgs/development/tools/build-managers/cmake/check-pc-files-hook.sh diff --git a/pkgs/development/tools/build-managers/cmake/check-pc-files-hook.sh b/pkgs/development/tools/build-managers/cmake/check-pc-files-hook.sh new file mode 100644 index 000000000000000..94d1b7b53556eb0 --- /dev/null +++ b/pkgs/development/tools/build-managers/cmake/check-pc-files-hook.sh @@ -0,0 +1,18 @@ +cmakePcfileCheckPhase() { + while IFS= read -rd $'\0' file; do + grepout=$(grep --line-number '}//nix/store' "$file" || true) + if [ -n "$grepout" ]; then + { + echo "Broken paths found in a .pc file! $file" + echo "The following lines have issues (specifically '//' in paths)." + echo "$grepout" + echo "It is very likely that paths are being joined improperly." + echo 'ex: "${prefix}/@CMAKE_INSTALL_LIBDIR@" should be "@CMAKE_INSTALL_FULL_LIBDIR@"' + echo "Please see https://github.com/NixOS/nixpkgs/issues/144170 for more details." + exit 1 + } 1>&2 + fi + done < <(find "${!outputDev}" -iname "*.pc" -print0) +} + +postFixupHooks+=(cmakePcfileCheckPhase) diff --git a/pkgs/development/tools/build-managers/cmake/default.nix b/pkgs/development/tools/build-managers/cmake/default.nix index 7badaccf8ab1d7f..722c8b63034b63b 100644 --- a/pkgs/development/tools/build-managers/cmake/default.nix +++ b/pkgs/development/tools/build-managers/cmake/default.nix @@ -61,13 +61,15 @@ stdenv.mkDerivation rec { outputs = [ "out" ] ++ lib.optionals buildDocs [ "man" "info" ]; setOutputFlags = false; - setupHook = ./setup-hook.sh; + setupHooks = [ + ./setup-hook.sh + ./check-pc-files-hook.sh + ]; depsBuildBuild = [ buildPackages.stdenv.cc ]; - nativeBuildInputs = [ + nativeBuildInputs = setupHooks ++ [ pkg-config - setupHook ] ++ lib.optionals buildDocs [ texinfo ] ++ lib.optionals qt5UI [ wrapQtAppsHook ];