···3535 cp composer.lock $out/
36363737 echo
3838- echo 'No composer.lock file found, consider adding one to your repository to ensure reproducible builds.'
3939- echo "In the meantime, a composer.lock file has been generated for you in $out/composer.lock"
3838+ echo -e "\e[31mERROR: No composer.lock found\e[0m"
4039 echo
4141- echo 'To fix the issue:'
4242- echo "1. Copy the composer.lock file from $out/composer.lock to the project's source:"
4343- echo " cp $out/composer.lock <path>"
4444- echo '2. Add the composerLock attribute, pointing to the copied composer.lock file:'
4545- echo ' composerLock = ./composer.lock;'
4040+ echo -e '\e[31mNo composer.lock file found, consider adding one to your repository to ensure reproducible builds.\e[0m'
4141+ echo -e "\e[31mIn the meantime, a composer.lock file has been generated for you in $out/composer.lock\e[0m"
4242+ echo
4343+ echo -e '\e[31mTo fix the issue:\e[0m'
4444+ echo -e "\e[31m1. Copy the composer.lock file from $out/composer.lock to the project's source:\e[0m"
4545+ echo -e "\e[31m cp $out/composer.lock <path>\e[0m"
4646+ echo -e '\e[31m2. Add the composerLock attribute, pointing to the copied composer.lock file:\e[0m'
4747+ echo -e '\e[31m composerLock = ./composer.lock;\e[0m'
4648 echo
47494850 exit 1
···5153 echo "Validating consistency between composer.lock and ${composerRepository}/composer.lock"
5254 if ! @cmp@ -s "composer.lock" "${composerRepository}/composer.lock"; then
5355 echo
5454- echo "ERROR: vendorHash is out of date"
5656+ echo -e "\e[31mERROR: vendorHash is out of date\e[0m"
5557 echo
5656- echo "composer.lock is not the same in $composerRepository"
5858+ echo -e "\e[31mcomposer.lock is not the same in $composerRepository\e[0m"
5759 echo
5858- echo "To fix the issue:"
5959- echo '1. Set vendorHash to an empty string: `vendorHash = "";`'
6060- echo '2. Build the derivation and wait for it to fail with a hash mismatch'
6161- echo '3. Copy the "got: sha256-..." value back into the vendorHash field'
6262- echo ' You should have: vendorHash = "sha256-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=";'
6060+ echo -e "\e[31mTo fix the issue:\e[0m"
6161+ echo -e '\e[31m1. Set vendorHash to an empty string: `vendorHash = "";`\e[0m'
6262+ echo -e '\e[31m2. Build the derivation and wait for it to fail with a hash mismatch\e[0m'
6363+ echo -e '\e[31m3. Copy the "got: sha256-..." value back into the vendorHash field\e[0m'
6464+ echo -e '\e[31m You should have: vendorHash = "sha256-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=";\e[0m'
6365 echo
64666567 exit 1
···105107composerInstallCheckHook() {
106108 echo "Executing composerInstallCheckHook"
107109108108- composer validate --no-ansi --no-interaction
110110+ if ! composer validate --strict --no-ansi --no-interaction --quiet; then
111111+ if [ ! -z "${composerStrictValidation-}" ]; then
112112+ echo
113113+ echo -e "\e[31mERROR: composer files validation failed\e[0m"
114114+ echo
115115+ echo -e '\e[31mThe validation of the composer.json and composer.lock failed.\e[0m'
116116+ echo -e '\e[31mMake sure that the file composer.lock is consistent with composer.json.\e[0m'
117117+ echo
118118+ exit 1
119119+ else
120120+ echo
121121+ echo -e "\e[33mWARNING: composer files validation failed\e[0m"
122122+ echo
123123+ echo -e '\e[33mThe validation of the composer.json and composer.lock failed.\e[0m'
124124+ echo -e '\e[33mMake sure that the file composer.lock is consistent with composer.json.\e[0m'
125125+ echo
126126+ echo -e '\e[33mThis check is not blocking, but it is recommended to fix the issue.\e[0m'
127127+ echo
128128+ fi
129129+ fi
109130110131 echo "Finished composerInstallCheckHook"
111132}
···33declare composerNoDev
44declare composerNoPlugins
55declare composerNoScripts
66+declare composerStrictValidation
6778preConfigureHooks+=(composerRepositoryConfigureHook)
89preBuildHooks+=(composerRepositoryBuildHook)
···3132 cp composer.lock $out/
32333334 echo
3434- echo 'No composer.lock file found, consider adding one to your repository to ensure reproducible builds.'
3535- echo "In the meantime, a composer.lock file has been generated for you in $out/composer.lock"
3535+ echo -e "\e[31mERROR: No composer.lock found\e[0m"
3636+ echo
3737+ echo -e '\e[31mNo composer.lock file found, consider adding one to your repository to ensure reproducible builds.\e[0m'
3838+ echo -e "\e[31mIn the meantime, a composer.lock file has been generated for you in $out/composer.lock\e[0m"
3639 echo
3737- echo 'To fix the issue:'
3838- echo "1. Copy the composer.lock file from $out/composer.lock to the project's source:"
3939- echo " cp $out/composer.lock <path>"
4040- echo '2. Add the composerLock attribute, pointing to the copied composer.lock file:'
4141- echo ' composerLock = ./composer.lock;'
4040+ echo -e '\e[31mTo fix the issue:\e[0m'
4141+ echo -e "\e[31m1. Copy the composer.lock file from $out/composer.lock to the project's source:\e[0m"
4242+ echo -e "\e[31m cp $out/composer.lock <path>\e[0m"
4343+ echo -e '\e[31m2. Add the composerLock attribute, pointing to the copied composer.lock file:\e[0m'
4444+ echo -e '\e[31m composerLock = ./composer.lock;\e[0m'
4245 echo
43464447 exit 1
···6366composerRepositoryCheckHook() {
6467 echo "Executing composerRepositoryCheckHook"
65686666- composer validate --no-ansi --no-interaction
6969+ if ! composer validate --strict --no-ansi --no-interaction --quiet; then
7070+ if [ ! -z "${composerStrictValidation-}" ]; then
7171+ echo
7272+ echo -e "\e[31mERROR: composer files validation failed\e[0m"
7373+ echo
7474+ echo -e '\e[31mThe validation of the composer.json and composer.lock failed.\e[0m'
7575+ echo -e '\e[31mMake sure that the file composer.lock is consistent with composer.json.\e[0m'
7676+ echo
7777+ exit 1
7878+ else
7979+ echo
8080+ echo -e "\e[33mWARNING: composer files validation failed\e[0m"
8181+ echo
8282+ echo -e '\e[33mThe validation of the composer.json and composer.lock failed.\e[0m'
8383+ echo -e '\e[33mMake sure that the file composer.lock is consistent with composer.json.\e[0m'
8484+ echo
8585+ echo -e '\e[33mThis check is not blocking, but it is recommended to fix the issue.\e[0m'
8686+ echo
8787+ fi
8888+ fi
67896890 echo "Finished composerRepositoryCheckHook"
6991}