mirror of
https://github.com/shivammathur/setup-php.git
synced 2026-08-06 08:12:09 -03:00
Add support for APCu on macOS from shivammathur/homebrew-extensions Improve support for geos to compile on PHP 8.0 and 8.1 Fix pecl setup to avoid unnecessary callbacks Use GitHub releases for all couchbase versions Use add_extension_from_source for all custom supported extensions Remove bintray and use shivammathur/intl-icu releases Add patch for protobuf for installing from source Move patches from custom extension scripts to patches directory Add support to build extension from GitHub and pecl tar archives (Internal API) Refactor regex in extension.ts Move add_pecl_extension to common.sh Refactor remove_extension in darwin.sh Fix shellcheck warning in darwin.sh Improve switch_version in linux.sh to accept parameters
121 lines
3.7 KiB
Bash
121 lines
3.7 KiB
Bash
# Function to get http version for a PHP version.
|
|
get_http_version() {
|
|
if [[ ${version:?} =~ 5.[3-6] ]]; then
|
|
echo "pecl_http-2.6.0"
|
|
elif [[ ${version:?} =~ 7.[0-4] ]]; then
|
|
echo "pecl_http-3.2.4"
|
|
else
|
|
echo "pecl_http-$(get_pecl_version "pecl_http" "stable")"
|
|
fi
|
|
}
|
|
|
|
# Function to enable http extension.
|
|
enable_http() {
|
|
enable_extension propro extension
|
|
enable_extension raphf extension
|
|
if (! [[ ${version:?} =~ ${jit_versions:?} ]] && check_extension propro && check_extension raphf) ||
|
|
( [[ ${version:?} =~ ${jit_versions:?} ]] && check_extension raphf); then
|
|
enable_extension http extension
|
|
fi
|
|
}
|
|
|
|
# Function to install extensions.
|
|
add_extension_helper() {
|
|
if [ "$os" = "Linux" ]; then
|
|
add_extension "$1" extension
|
|
else
|
|
add_brew_extension "$1" extension
|
|
fi
|
|
}
|
|
|
|
# Function to install http dependencies.
|
|
add_http_dependencies() {
|
|
if [[ ${version:?} =~ ${old_versions:?} ]]; then
|
|
add_pecl_extension raphf 1.1.2 extension
|
|
add_pecl_extension propro 1.0.2 extension
|
|
elif [[ ${version:?} =~ 5.6|7.[0-4] ]]; then
|
|
add_extension_helper propro
|
|
add_extension_helper raphf
|
|
else
|
|
add_extension_helper raphf
|
|
fi
|
|
}
|
|
|
|
# Function to get configure options for http.
|
|
get_http_configure_opts() {
|
|
if [ "$os" = 'Linux' ]; then
|
|
for lib in zlib libbrotli libcurl libevent libicu libidn2 libidn libidnkit2 libidnkit; do
|
|
http_opts+=( "--with-http-$lib-dir=/usr" )
|
|
done
|
|
else
|
|
http_opts+=( "--with-http-zlib-dir=$(xcrun --show-sdk-path)/usr" )
|
|
http_opts+=( "--with-http-libbrotli-dir=$(brew --prefix brotli)" )
|
|
http_opts+=( "--with-http-libcurl-dir=$(brew --prefix curl)" )
|
|
http_opts+=( "--with-http-libicu-dir=$(brew --prefix icu4c)" )
|
|
http_opts+=( "--with-http-libevent-dir=$(brew --prefix libevent)" )
|
|
http_opts+=( "--with-http-libidn2-dir=$(brew --prefix libidn2)" )
|
|
fi
|
|
}
|
|
|
|
# Compile and install http explicitly.
|
|
# This is done as pecl compiles raphf and propro as well.
|
|
add_http_helper() {
|
|
ext=$1
|
|
http_opts=() && get_http_configure_opts
|
|
export HTTP_PREFIX_CONFIGURE_OPTS="CFLAGS=-Wno-implicit-function-declaration"
|
|
http_configure_opts="--with-http --with-php-config=$(command -v php-config) ${http_opts[*]}"
|
|
export HTTP_CONFIGURE_OPTS="$http_configure_opts"
|
|
export HTTP_LINUX_LIBS="zlib1g libbrotli-dev libcurl4-openssl-dev libevent-dev libicu-dev libidn2-dev"
|
|
export HTTP_DARWIN_LIBS="brotli curl icu4c libevent libidn2"
|
|
if [[ "${version:?}" =~ ${nightly_versions:?} ]]; then
|
|
add_extension_from_source http https://github.com m6w6 ext-http . master extension
|
|
else
|
|
add_extension_from_source pecl_http https://pecl.php.net http http . "${ext##*-}" extension pecl
|
|
fi
|
|
}
|
|
|
|
# Function to setup latest http extension.
|
|
add_http_latest() {
|
|
enable_http
|
|
if ! check_extension http; then
|
|
add_http_dependencies
|
|
if [ "$os" = "Linux" ]; then
|
|
if ! [[ "${version:?}" =~ ${old_versions:?}|${nightly_versions:?} ]]; then
|
|
install_packages "php$version-http"
|
|
else
|
|
add_http_helper "$(get_http_version)" "$os"
|
|
fi
|
|
else
|
|
if ! [[ "${version:?}" =~ ${old_versions:?} ]]; then
|
|
add_brew_extension pecl_http extension
|
|
fi
|
|
fi
|
|
status="Installed and enabled"
|
|
fi
|
|
}
|
|
|
|
# Function to setup http extension given a version.
|
|
add_http_version() {
|
|
ext=$1
|
|
enable_http
|
|
if [ "x$(php -r "echo phpversion('http');")" != "x${ext##*-}" ]; then
|
|
remove_extension http >/dev/null
|
|
add_http_helper pecl_http-"${ext##*-}" "$os"
|
|
status="Installed and enabled"
|
|
fi
|
|
}
|
|
|
|
# Function to setup http extension
|
|
add_http() {
|
|
ext=$1
|
|
status="Enabled"
|
|
if [[ "$ext" =~ ^(pecl_http|http)$ ]]; then
|
|
add_http_latest >/dev/null 2>&1
|
|
else
|
|
add_http_version "$ext" >/dev/null 2>&1
|
|
fi
|
|
add_extension_log "http" "$status"
|
|
}
|
|
|
|
os="$(uname -s)"
|