mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-11 04:05:40 +03:00
build-support/php: refactor build scripts
This commit is contained in:
parent
1de8208e4a
commit
489ac4817f
5 changed files with 61 additions and 72 deletions
|
@ -9,15 +9,14 @@ let
|
|||
buildComposerProjectOverride =
|
||||
finalAttrs:
|
||||
{
|
||||
php ? toplevel.php,
|
||||
composer ? toplevel.php.packages.composer,
|
||||
composerVendor ? null,
|
||||
vendorHash ? null,
|
||||
composerLock ? null,
|
||||
composerNoDev ? true,
|
||||
composerNoPlugins ? true,
|
||||
composerNoScripts ? true,
|
||||
composerStrictValidation ? true,
|
||||
php ? finalAttrs.php or toplevel.php,
|
||||
composer ? finalAttrs.php.packages.composer or toplevel.php.packages.composer,
|
||||
composerLock ? finalAttrs.composerLock or null,
|
||||
vendorHash ? finalAttrs.vendorHash or "",
|
||||
composerNoDev ? finalAttrs.composerNoDev or true,
|
||||
composerNoPlugins ? finalAttrs.composerNoPlugins or true,
|
||||
composerNoScripts ? finalAttrs.composerNoScripts or true,
|
||||
composerStrictValidation ? finalAttrs.composerStrictValidation or true,
|
||||
buildInputs ? [ ],
|
||||
nativeBuildInputs ? [ ],
|
||||
strictDeps ? true,
|
||||
|
@ -35,6 +34,7 @@ let
|
|||
doCheck
|
||||
doInstallCheck
|
||||
;
|
||||
|
||||
nativeBuildInputs = nativeBuildInputs ++ [
|
||||
composer
|
||||
php
|
||||
|
@ -81,20 +81,20 @@ let
|
|||
|
||||
composerVendor =
|
||||
args.composerVendor or (php.mkComposerVendor {
|
||||
inherit (finalAttrs)
|
||||
pname
|
||||
src
|
||||
version
|
||||
;
|
||||
inherit
|
||||
php
|
||||
composer
|
||||
vendorHash
|
||||
composerLock
|
||||
composerNoDev
|
||||
composerNoPlugins
|
||||
composerNoScripts
|
||||
composerStrictValidation
|
||||
vendorHash
|
||||
;
|
||||
inherit (finalAttrs)
|
||||
patches
|
||||
pname
|
||||
src
|
||||
version
|
||||
;
|
||||
});
|
||||
|
||||
|
|
|
@ -8,14 +8,14 @@ let
|
|||
mkComposerVendorOverride =
|
||||
finalAttrs:
|
||||
{
|
||||
php ? toplevel.php,
|
||||
composer ? toplevel.php.packages.composer,
|
||||
composerLock,
|
||||
vendorHash ? null,
|
||||
composerNoDev ? true,
|
||||
composerNoPlugins ? true,
|
||||
composerNoScripts ? true,
|
||||
composerStrictValidation ? true,
|
||||
php ? finalAttrs.php or toplevel.php,
|
||||
composer ? finalAttrs.php.packages.composer or toplevel.php.packages.composer,
|
||||
composerLock ? finalAttrs.composerLock or null,
|
||||
vendorHash ? finalAttrs.vendorHash or "",
|
||||
composerNoDev ? finalAttrs.composerNoDev or true,
|
||||
composerNoPlugins ? finalAttrs.composerNoPlugins or true,
|
||||
composerNoScripts ? finalAttrs.composerNoScripts or true,
|
||||
composerStrictValidation ? finalAttrs.composerStrictValidation or true,
|
||||
buildInputs ? [ ],
|
||||
nativeBuildInputs ? [ ],
|
||||
dontPatchShebangs ? true,
|
||||
|
@ -24,10 +24,9 @@ let
|
|||
doInstallCheck ? false,
|
||||
...
|
||||
}@args:
|
||||
assert (lib.assertMsg (args ? src) "mkComposerVendor expects src argument.");
|
||||
assert (lib.assertMsg (args ? vendorHash) "mkComposerVendor expects vendorHash argument.");
|
||||
assert (lib.assertMsg (args ? version) "mkComposerVendor expects version argument.");
|
||||
assert (lib.assertMsg (args ? pname) "mkComposerVendor expects pname argument.");
|
||||
assert (lib.assertMsg (args ? version) "mkComposerVendor expects version argument.");
|
||||
assert (lib.assertMsg (args ? src) "mkComposerVendor expects src argument.");
|
||||
{
|
||||
name = "${args.pname}-composer-vendor-${args.version}";
|
||||
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
declare composerVendor
|
||||
declare version
|
||||
declare composerNoDev
|
||||
declare composerNoPlugins
|
||||
declare composerNoScripts
|
||||
declare -g version
|
||||
declare -g pname
|
||||
declare -g composerVendor
|
||||
declare -g -i composerStrictValidation="${composerStrictValidation:-0}"
|
||||
|
||||
preConfigureHooks+=(composerInstallConfigureHook)
|
||||
preBuildHooks+=(composerInstallBuildHook)
|
||||
|
@ -17,7 +16,7 @@ composerInstallConfigureHook() {
|
|||
setComposerRootVersion
|
||||
|
||||
if [[ ! -e "${composerVendor}" ]]; then
|
||||
echo "No local composer vendor found."
|
||||
echo "No local composer vendor found." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
@ -60,10 +59,11 @@ composerInstallInstallHook() {
|
|||
cp -r . "$out"/share/php/"${pname}"/
|
||||
|
||||
# Create symlinks for the binaries.
|
||||
jq -r -c 'try (.bin[] | select(test(".bat$")? | not) )' composer.json | while read -r bin; do
|
||||
mapfile -t BINS < <(jq -r -c 'try (.bin[] | select(test(".bat$")? | not) )' composer.json)
|
||||
for bin in "${BINS[@]}"; do
|
||||
echo -e "\e[32mCreating symlink ${bin}...\e[0m"
|
||||
mkdir -p "$out"/bin
|
||||
ln -s "$out"/share/php/"${pname}"/"$bin" "$out"/bin/"$(basename "$bin")"
|
||||
mkdir -p "$out/bin"
|
||||
ln -s "$out/share/php/${pname}/${bin}" "$out/bin/$(basename "$bin")"
|
||||
done
|
||||
|
||||
echo "Finished composerInstallInstallHook"
|
||||
|
|
|
@ -1,28 +1,28 @@
|
|||
declare composerLock
|
||||
declare version
|
||||
declare composerNoDev
|
||||
declare composerNoPlugins
|
||||
declare composerNoScripts
|
||||
declare composerStrictValidation
|
||||
source @phpScriptUtils@
|
||||
|
||||
declare -g composerNoDev="${composerNoDev:+--no-dev}"
|
||||
declare -g composerNoPlugins="${composerNoPlugins:+--no-plugins}"
|
||||
declare -g composerNoScripts="${composerNoScripts:+--no-scripts}"
|
||||
|
||||
preConfigureHooks+=(composerVendorConfigureHook)
|
||||
preBuildHooks+=(composerVendorBuildHook)
|
||||
preCheckHooks+=(composerVendorCheckHook)
|
||||
preInstallHooks+=(composerVendorInstallHook)
|
||||
|
||||
source @phpScriptUtils@
|
||||
|
||||
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 \
|
||||
|
@ -30,9 +30,9 @@ composerVendorConfigureHook() {
|
|||
--no-interaction \
|
||||
--no-progress \
|
||||
--optimize-autoloader \
|
||||
${composerNoDev:+--no-dev} \
|
||||
${composerNoPlugins:+--no-plugins} \
|
||||
${composerNoScripts:+--no-scripts} \
|
||||
${composerNoDev} \
|
||||
${composerNoPlugins} \
|
||||
${composerNoScripts} \
|
||||
update
|
||||
|
||||
if [[ -f "composer.lock" ]]; then
|
||||
|
@ -74,9 +74,9 @@ composerVendorBuildHook() {
|
|||
--no-interaction \
|
||||
--no-progress \
|
||||
--optimize-autoloader \
|
||||
${composerNoDev:+--no-dev} \
|
||||
${composerNoPlugins:+--no-plugins} \
|
||||
${composerNoScripts:+--no-scripts} \
|
||||
${composerNoDev} \
|
||||
${composerNoPlugins} \
|
||||
${composerNoScripts} \
|
||||
install
|
||||
|
||||
echo "Finished composerVendorBuildHook"
|
||||
|
@ -96,7 +96,7 @@ composerVendorInstallHook() {
|
|||
mkdir -p $out
|
||||
|
||||
cp -ar composer.json $(composer config vendor-dir) $out/
|
||||
mapfile -t installer_paths < <(jq -r 'try((.extra."installer-paths") | keys[])' composer.json)
|
||||
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
|
||||
|
@ -105,6 +105,7 @@ composerVendorInstallHook() {
|
|||
# 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 {} ";"
|
||||
|
|
|
@ -1,35 +1,24 @@
|
|||
declare version
|
||||
declare composerStrictValidation
|
||||
declare composerGlobal
|
||||
declare -g version
|
||||
declare -g -i composerStrictValidation="${composerStrictValidation:-0}"
|
||||
|
||||
setComposerRootVersion() {
|
||||
set +e # Disable exit on error
|
||||
|
||||
if [[ -v version ]]; then
|
||||
if [[ -n $version ]]; then
|
||||
echo -e "\e[32mSetting COMPOSER_ROOT_VERSION to $version\e[0m"
|
||||
export COMPOSER_ROOT_VERSION=$version
|
||||
export COMPOSER_ROOT_VERSION="$version"
|
||||
fi
|
||||
|
||||
set -e
|
||||
}
|
||||
|
||||
setComposerEnvVariables() {
|
||||
echo -e "\e[32mSetting some required environment variables for Composer...\e[0m"
|
||||
export COMPOSER_MIRROR_PATH_REPOS=1
|
||||
export COMPOSER_CACHE_DIR=/dev/null
|
||||
export COMPOSER_HTACCESS_PROTECT=0
|
||||
export COMPOSER_FUND=0
|
||||
}
|
||||
|
||||
checkComposerValidate() {
|
||||
if [ "1" == "${composerGlobal-}" ]; then
|
||||
global="global";
|
||||
else
|
||||
global="";
|
||||
fi
|
||||
|
||||
command="composer ${global} validate --strict --quiet --no-interaction --no-check-all --no-check-lock"
|
||||
command="composer validate --strict --quiet --no-interaction --no-check-all --no-check-lock"
|
||||
if ! $command; then
|
||||
if [ "1" == "${composerStrictValidation-}" ]; then
|
||||
if [[ "${composerStrictValidation}" == "1" ]]; then
|
||||
echo
|
||||
echo -e "\e[31mERROR: composer files validation failed\e[0m"
|
||||
echo
|
||||
|
@ -57,9 +46,9 @@ checkComposerValidate() {
|
|||
fi
|
||||
fi
|
||||
|
||||
command="composer ${global} validate --strict --no-ansi --no-interaction --quiet --no-check-all --check-lock"
|
||||
command="composer validate --strict --no-ansi --no-interaction --quiet --no-check-all --check-lock"
|
||||
if ! $command; then
|
||||
if [ "1" == "${composerStrictValidation-}" ]; then
|
||||
if [[ "${composerStrictValidation}" == "1" ]]; then
|
||||
echo
|
||||
echo -e "\e[31mERROR: composer files validation failed\e[0m"
|
||||
echo
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue