Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
127 lines
3.5 KiB
Bash
127 lines
3.5 KiB
Bash
# shellcheck shell=bash
|
|
|
|
# shellcheck source=/dev/null
|
|
source @phpScriptUtils@
|
|
|
|
declare -g out
|
|
declare -g composerLock
|
|
declare -g composerNoDev
|
|
declare -g composerNoPlugins
|
|
declare -g composerNoScripts
|
|
|
|
declare -ga composerFlags=()
|
|
[[ -n "$composerNoDev" ]] && composerFlags+=(--no-dev)
|
|
[[ -n "$composerNoPlugins" ]] && composerFlags+=(--no-plugins)
|
|
[[ -n "$composerNoScripts" ]] && composerFlags+=(--no-scripts)
|
|
|
|
preConfigureHooks+=(composerVendorConfigureHook)
|
|
preBuildHooks+=(composerVendorBuildHook)
|
|
preCheckHooks+=(composerVendorCheckHook)
|
|
preInstallHooks+=(composerVendorInstallHook)
|
|
|
|
composerVendorConfigureHook() {
|
|
echo "Executing composerVendorConfigureHook"
|
|
|
|
setComposerRootVersion
|
|
|
|
if [[ -f "composer.lock" ]]; then
|
|
echo -e "\e[32mUsing \`composer.lock\` file from the source package\e[0m"
|
|
fi
|
|
|
|
if [[ -e "$composerLock" ]]; then
|
|
echo -e "\e[32mUsing user provided \`composer.lock\` file from \`$composerLock\`\e[0m"
|
|
install -Dm644 "$composerLock" ./composer.lock
|
|
fi
|
|
|
|
if [[ ! -f "composer.lock" ]]; then
|
|
composer \
|
|
--no-cache \
|
|
--no-install \
|
|
--no-interaction \
|
|
--no-progress \
|
|
--optimize-autoloader \
|
|
"${composerFlags[@]}" \
|
|
update
|
|
|
|
if [[ -f "composer.lock" ]]; then
|
|
install -Dm644 composer.lock -t "$out"/
|
|
|
|
echo
|
|
echo -e "\e[31mERROR: No composer.lock found\e[0m"
|
|
echo
|
|
echo -e '\e[31mNo composer.lock file found, consider adding one to your repository to ensure reproducible builds.\e[0m'
|
|
echo -e "\e[31mIn the meantime, a composer.lock file has been generated for you in $out/composer.lock\e[0m"
|
|
echo
|
|
echo -e '\e[31mTo fix the issue:\e[0m'
|
|
echo -e "\e[31m1. Copy the composer.lock file from $out/composer.lock to the project's source:\e[0m"
|
|
echo -e "\e[31m cp $out/composer.lock <path>\e[0m"
|
|
echo -e '\e[31m2. Add the composerLock attribute, pointing to the copied composer.lock file:\e[0m'
|
|
echo -e '\e[31m composerLock = ./composer.lock;\e[0m'
|
|
echo
|
|
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if [[ -f "composer.lock" ]]; then
|
|
chmod +w composer.lock
|
|
fi
|
|
|
|
chmod +w composer.json
|
|
|
|
echo "Finished composerVendorConfigureHook"
|
|
}
|
|
|
|
composerVendorBuildHook() {
|
|
echo "Executing composerVendorBuildHook"
|
|
|
|
setComposerEnvVariables
|
|
|
|
composer \
|
|
--no-cache \
|
|
--no-interaction \
|
|
--no-progress \
|
|
--optimize-autoloader \
|
|
"${composerFlags[@]}" \
|
|
install
|
|
|
|
echo "Finished composerVendorBuildHook"
|
|
}
|
|
|
|
composerVendorCheckHook() {
|
|
echo "Executing composerVendorCheckHook"
|
|
|
|
checkComposerValidate
|
|
|
|
echo "Finished composerVendorCheckHook"
|
|
}
|
|
|
|
composerVendorInstallHook() {
|
|
echo "Executing composerVendorInstallHook"
|
|
|
|
mkdir -p "$out"
|
|
|
|
cp -ar composer.json "$(composer config vendor-dir)" "$out"/
|
|
mapfile -t installer_paths < <(jq -r -c 'try((.extra."installer-paths") | keys[])' composer.json)
|
|
|
|
for installer_path in "${installer_paths[@]}"; do
|
|
# Remove everything after {$name} placeholder
|
|
installer_path="${installer_path/\{\$name\}*/}"
|
|
out_installer_path="$out/${installer_path/\{\$name\}*/}"
|
|
# Copy the installer path if it exists
|
|
if [[ -d "$installer_path" ]]; then
|
|
mkdir -p "$(dirname "$out_installer_path")"
|
|
echo -e "\e[32mCopying installer path $installer_path to $out_installer_path\e[0m"
|
|
cp -ar "$installer_path" "$out_installer_path"
|
|
# Strip out the git repositories
|
|
find "$out_installer_path" -name .git -type d -prune -print -exec rm -rf {} ";"
|
|
fi
|
|
done
|
|
|
|
if [[ -f "composer.lock" ]]; then
|
|
cp -ar composer.lock "$out"/
|
|
fi
|
|
|
|
echo "Finished composerVendorInstallHook"
|
|
}
|