Allow specifying extensions not supported in certain distros
parent
47409e2d23
commit
657657c864
|
@ -6,7 +6,8 @@ This repository contains a script that can be used to easily install a PHP exten
|
||||||
|
|
||||||
The script will install all the required APT/APK packages; at the end of the script execution, the no-more needed packages will be removed so that the image will be much smaller.
|
The script will install all the required APT/APK packages; at the end of the script execution, the no-more needed packages will be removed so that the image will be much smaller.
|
||||||
|
|
||||||
Supported docker images are all the Alpine/Debian versions, except for PHP 5.5 where we only support Debian 8 (jessie) (that is, `php:5.5`, `php:5.5-apache`, `php:5.5-cli`, `php:5.5-fpm`, `php:5.5-zts`)
|
Supported docker images are all the Alpine/Debian versions, except for PHP 5.5 where we only support Debian 8 (jessie) (that is, `php:5.5`, `php:5.5-apache`, `php:5.5-cli`, `php:5.5-fpm`, `php:5.5-zts`).
|
||||||
|
See also the notes in the [Special requirements](#special-requirements) section.
|
||||||
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
|
@ -76,6 +76,29 @@ extractExtensionsFromData() {
|
||||||
EXTENSIONS_TO_BE_TESTED="${EXTENSIONS_TO_BE_TESTED# }"
|
EXTENSIONS_TO_BE_TESTED="${EXTENSIONS_TO_BE_TESTED# }"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Remove from the EXTENSIONS_TO_BE_TESTED variable the extensions that are
|
||||||
|
# not supported in the distro specified in the data/special-requirements file
|
||||||
|
|
||||||
|
# Update: EXTENSIONS_TO_BE_TESTED
|
||||||
|
filterUnsupportedExensionsForDistro() {
|
||||||
|
if test -z "$EXTENSIONS_TO_BE_TESTED"; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
filterUnsupportedExensionsForDistro_reqs="$CI_BUILD_DIR/data/special-requirements"
|
||||||
|
if ! test -f "$filterUnsupportedExensionsForDistro_reqs"; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
filterUnsupportedExensionsForDistro_filtered=''
|
||||||
|
for filterUnsupportedExensionsForDistro_extension in "$EXTENSIONS_TO_BE_TESTED"; do
|
||||||
|
if stringInList "!$DOCKER_DISTRO" "$(cat "$filterUnsupportedExensionsForDistro_reqs" | grep -E "^$filterUnsupportedExensionsForDistro_extension[ \t]")"; then
|
||||||
|
printf 'Note: extension "%s" is not supported for distro "%s"\n' "$filterUnsupportedExensionsForDistro_extension" "$DOCKER_DISTRO"
|
||||||
|
else
|
||||||
|
filterUnsupportedExensionsForDistro_filtered="$filterUnsupportedExensionsForDistro_filtered $filterUnsupportedExensionsForDistro_extension"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
EXTENSIONS_TO_BE_TESTED="${filterUnsupportedExensionsForDistro_filtered# }"
|
||||||
|
}
|
||||||
|
|
||||||
# Get the docker image ID for a PHP extension and a PHP version
|
# Get the docker image ID for a PHP extension and a PHP version
|
||||||
#
|
#
|
||||||
# Arguments:
|
# Arguments:
|
||||||
|
@ -262,6 +285,8 @@ if test -z "${DOCKER_DISTRO:-}"; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
. "$CI_BUILD_DIR/scripts/common"
|
||||||
|
|
||||||
case "${1:-}" in
|
case "${1:-}" in
|
||||||
from-commits)
|
from-commits)
|
||||||
if test -z "${2:-}"; then
|
if test -z "${2:-}"; then
|
||||||
|
@ -289,13 +314,13 @@ case "${1:-}" in
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
filterUnsupportedExensionsForDistro
|
||||||
|
|
||||||
if test -z "$EXTENSIONS_TO_BE_TESTED"; then
|
if test -z "$EXTENSIONS_TO_BE_TESTED"; then
|
||||||
echo 'No extensions to be tested.'
|
echo 'No extensions to be tested.'
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
. "$CI_BUILD_DIR/scripts/common"
|
|
||||||
|
|
||||||
printf '### EXTENSIONS TO BE TESTED: %s\n' "$EXTENSIONS_TO_BE_TESTED"
|
printf '### EXTENSIONS TO BE TESTED: %s\n' "$EXTENSIONS_TO_BE_TESTED"
|
||||||
SOME_TEST_FAILED=0
|
SOME_TEST_FAILED=0
|
||||||
IFS='
|
IFS='
|
||||||
|
|
|
@ -143,25 +143,43 @@ generateExtensionsTable() {
|
||||||
# Output:
|
# Output:
|
||||||
# the markdown table
|
# the markdown table
|
||||||
generateSpecialRequirementsTable() {
|
generateSpecialRequirementsTable() {
|
||||||
generateSpecialRequirementsTable_started=''
|
generateSpecialRequirementsTable_started=0
|
||||||
IFS='
|
IFS='
|
||||||
'
|
'
|
||||||
for generateSpecialRequirementsTable_line in $(cat -- "$1" | sort); do
|
for generateSpecialRequirementsTable_line in $(cat -- "$1" | sort); do
|
||||||
if test -z "$generateSpecialRequirementsTable_started"; then
|
|
||||||
printf '| Extension | Requirements |\n'
|
|
||||||
printf '|:---:|:---:|\n'
|
|
||||||
generateSpecialRequirementsTable_started='y'
|
|
||||||
fi
|
|
||||||
resetIFS
|
resetIFS
|
||||||
generateSpecialRequirementsTable_requirement="$(echo "$generateSpecialRequirementsTable_line" | sed -E 's/^\s*\w+\s+//')"
|
generateSpecialRequirementsTable_index=0
|
||||||
case "$generateSpecialRequirementsTable_requirement" in
|
for generateSpecialRequirementsTable_chunk in $generateSpecialRequirementsTable_line; do
|
||||||
|
if test $generateSpecialRequirementsTable_index -eq 0; then
|
||||||
|
generateSpecialRequirementsTable_extension="$generateSpecialRequirementsTable_chunk"
|
||||||
|
else
|
||||||
|
if test $generateSpecialRequirementsTable_index -eq 1; then
|
||||||
|
generateSpecialRequirementsTable_requirements=''
|
||||||
|
elif test $generateSpecialRequirementsTable_index -eq 2; then
|
||||||
|
generateSpecialRequirementsTable_requirements="$(printf -- '• %s<br />• ' "$generateSpecialRequirementsTable_requirements")"
|
||||||
|
else
|
||||||
|
generateSpecialRequirementsTable_requirements="$(printf '%s<br />• ' "$generateSpecialRequirementsTable_requirements")"
|
||||||
|
fi
|
||||||
|
case "$generateSpecialRequirementsTable_chunk" in
|
||||||
zts)
|
zts)
|
||||||
generateSpecialRequirementsTable_requirement='Requires images with PHP compiled with thread-safety enabled (`zts`).'
|
generateSpecialRequirementsTable_chunk='Requires images with PHP compiled with thread-safety enabled (`zts`).'
|
||||||
|
;;
|
||||||
|
!*)
|
||||||
|
generateSpecialRequirementsTable_chunk="$(printf 'Not available in `%s` docker images' "${generateSpecialRequirementsTable_chunk#!}")"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
printf '| %s | %s |\n' \
|
generateSpecialRequirementsTable_requirements="$(printf '%s%s' "$generateSpecialRequirementsTable_requirements" "$generateSpecialRequirementsTable_chunk")"
|
||||||
"$(echo "$generateSpecialRequirementsTable_line" | awk '{print $1;}')" \
|
fi
|
||||||
"$generateSpecialRequirementsTable_requirement"
|
generateSpecialRequirementsTable_index=$((generateSpecialRequirementsTable_index + 1))
|
||||||
|
done
|
||||||
|
if test $generateSpecialRequirementsTable_index -gt 1; then
|
||||||
|
if test $generateSpecialRequirementsTable_started -eq 0; then
|
||||||
|
printf '| Extension | Requirements |\n'
|
||||||
|
printf '|---|---|\n'
|
||||||
|
generateSpecialRequirementsTable_started=1
|
||||||
|
fi
|
||||||
|
printf '| %s | %s |\n' "$generateSpecialRequirementsTable_extension" "$generateSpecialRequirementsTable_requirements"
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue