summary refs log tree commit diff
path: root/pkgs/build-support
diff options
context:
space:
mode:
authorYureka <yuka@yuka.dev>2023-10-04 13:42:47 +0200
committerYureka <yuka@yuka.dev>2023-10-04 15:12:08 +0200
commitdd104a90a83013c6c0e7b87efe0340c8576dc133 (patch)
tree9a73711831c68c75cdc29036a431c42ccacea329 /pkgs/build-support
parent7d2c531f28619151bcd3e34c358c84f6eb03ae73 (diff)
downloadnixpkgs-dd104a90a83013c6c0e7b87efe0340c8576dc133.tar
nixpkgs-dd104a90a83013c6c0e7b87efe0340c8576dc133.tar.gz
nixpkgs-dd104a90a83013c6c0e7b87efe0340c8576dc133.tar.bz2
nixpkgs-dd104a90a83013c6c0e7b87efe0340c8576dc133.tar.lz
nixpkgs-dd104a90a83013c6c0e7b87efe0340c8576dc133.tar.xz
nixpkgs-dd104a90a83013c6c0e7b87efe0340c8576dc133.tar.zst
nixpkgs-dd104a90a83013c6c0e7b87efe0340c8576dc133.zip
php.buildComposerProject: warn about outdated vendorHash
Diffstat (limited to 'pkgs/build-support')
-rw-r--r--pkgs/build-support/php/hooks/composer-install-hook.sh17
-rw-r--r--pkgs/build-support/php/hooks/default.nix10
2 files changed, 25 insertions, 2 deletions
diff --git a/pkgs/build-support/php/hooks/composer-install-hook.sh b/pkgs/build-support/php/hooks/composer-install-hook.sh
index 86e0006f6ee..4aa9e631c14 100644
--- a/pkgs/build-support/php/hooks/composer-install-hook.sh
+++ b/pkgs/build-support/php/hooks/composer-install-hook.sh
@@ -26,6 +26,23 @@ composerInstallConfigureHook() {
         exit 1
     fi
 
+    echo "Validating consistency between composer.lock and ${composerRepository}/composer.lock"
+    if ! @diff@ composer.lock "${composerRepository}/composer.lock"; then
+        echo
+        echo "ERROR: vendorHash is out of date"
+        echo
+        echo "composer.lock is not the same in $composerRepository"
+        echo
+        echo "To fix the issue:"
+        echo '1. Set vendorHash to an empty string: `vendorHash = "";`'
+        echo '2. Build the derivation and wait for it to fail with a hash mismatch'
+        echo '3. Copy the "got: sha256-..." value back into the vendorHash field'
+        echo '   You should have: vendorHash = "sha256-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=";'
+        echo
+
+        exit 1
+    fi
+
     chmod +w composer.json composer.lock
 
     echo "Finished composerInstallConfigureHook"
diff --git a/pkgs/build-support/php/hooks/default.nix b/pkgs/build-support/php/hooks/default.nix
index 5ff69a87786..c19bc757581 100644
--- a/pkgs/build-support/php/hooks/default.nix
+++ b/pkgs/build-support/php/hooks/default.nix
@@ -1,9 +1,11 @@
-{ makeSetupHook
+{ lib
+, makeSetupHook
 , jq
 , moreutils
 , makeBinaryWrapper
 , php
 , cacert
+, buildPackages
 }:
 
 {
@@ -18,6 +20,10 @@
     {
       name = "composer-install-hook.sh";
       propagatedBuildInputs = [ jq makeBinaryWrapper moreutils php cacert ];
-      substitutions = { };
+      substitutions = {
+        # Specify the stdenv's `diff` by abspath to ensure that the user's build
+        # inputs do not cause us to find the wrong `diff`.
+        diff = "${lib.getBin buildPackages.diffutils}/bin/diff";
+      };
     } ./composer-install-hook.sh;
 }