Improve support for extensions with custom support on setup-php

This commit is contained in:
Shivam Mathur
2021-09-19 07:53:27 +05:30
parent da71add69c
commit e51a646160
4 changed files with 30 additions and 7 deletions

1
src/lists/darwin-deps Normal file
View File

@@ -0,0 +1 @@
geos=geos

4
src/lists/linux-deps Normal file
View File

@@ -0,0 +1,4 @@
geos=libgeos-dev
pdo_firebird=firebird-dev
oci8=libaio-dev
pdo_oci=libaio-dev

View File

@@ -23,6 +23,19 @@ add_brew_tap() {
fi
}
get_dependencies() {
extension=$1
list_deps="$(grep "$extension" "${script_dir:?}"/../lists/darwin-deps | cut -d '=' -f 2)"
formula_file="$tap_dir/$ext_tap/Formula/$extension@${version:?}.rb"
if [ -e "$formula_file" ]; then
formula_deps="$(grep "depends_on" "$formula_file" | cut -d '"' -f 2 | tr '\n' ' ')"
fi
deps=()
[[ -n "${list_deps[*]}" ]] && deps+=("${list_deps[@]}")
[[ -n "${formula_deps[*]}" ]] && deps+=("${formula_deps[@]}")
echo "${deps[@]}"
}
filter_extensions() {
extensions_array=("$@")
filtered_extensions=()
@@ -40,7 +53,7 @@ setup_extensions_helper() {
extension_dir=$3
cached_extension="${deps_cache_directory:?}/$dependency_extension.so"
if ! [ -e "$cached_extension" ]; then
brew install "$dependency_extension@${version:?}"
brew install "$dependency_extension@$version"
sudo find "$brew_cellar/$dependency_extension@${version:?}" -name "$dependency_extension.so" -exec cp {} "$cached_extension" \;
else
echo "Found $dependency_extension extension in cache"
@@ -145,7 +158,7 @@ setup_dependencies() {
add_brew_tap "$php_tap"
add_brew_tap "$ext_tap"
for extension in "${extensions_array[@]}"; do
IFS=' ' read -r -a dependency_array <<<"$(grep "depends_on" "$tap_dir/$ext_tap/Formula/$extension@$version.rb" | cut -d '"' -f 2 | tr '\n' ' ')"
IFS=' ' read -r -a dependency_array <<<"$(get_dependencies "$extension")"
IFS=' ' read -r -a extension_array <<<"$(echo "${dependency_array[@]}" | grep -Eo "[a-z]*@" | sed 's/@//' | tr '\n' ' ')"
IFS=' ' read -r -a libraries_array <<<"${dependency_array[@]//shivammathur*/}"
if [[ -n "${libraries_array[*]// /}" ]]; then

View File

@@ -6,9 +6,9 @@ link_apt_fast() {
fetch_package() {
if ! [ -e /tmp/Packages ]; then
. /etc/lsb-release
. /etc/os-release
deb_build_arch=$(dpkg-architecture -q DEB_BUILD_ARCH)
curl -o /tmp/Packages.gz -sL "http://ppa.launchpad.net/ondrej/php/ubuntu/dists/$DISTRIB_CODENAME/main/binary-$deb_build_arch/Packages.gz"
curl -o /tmp/Packages.gz -sL "http://ppa.launchpad.net/ondrej/php/ubuntu/dists/$VERSION_CODENAME/main/binary-$deb_build_arch/Packages.gz"
gzip -df /tmp/Packages.gz
fi
}
@@ -16,7 +16,12 @@ fetch_package() {
get_dependencies() {
package=$1
prefix=$2
sed -e '/Package:\s'"$package$"'/,/^\s*$/!d' /tmp/Packages | grep -Eo "^Depends.*" | tr ',' '\n' | awk -v ORS='' '/^\s'"$prefix"'/{print$0}' | sed -e 's/([^()]*)//g' | sort | uniq | xargs echo -n
list_deps="$(grep "${package#*-}" "${script_dir:?}"/../lists/linux-deps | cut -d '=' -f 2 | grep -Eo "$prefix.*")"
package_deps="$(sed -e '/Package:\s'"$package$"'/,/^\s*$/!d' /tmp/Packages | grep -Eo "^Depends.*" | tr ',' '\n' | awk -v ORS='' '/^\s'"$prefix"'/{print$0}' | sed -e 's/([^()]*)//g' | sort | uniq | xargs echo -n)"
deps=()
[[ -n "${list_deps[*]}" ]] && deps+=("${list_deps[@]}")
[[ -n "${package_deps[*]}" ]] && deps+=("${package_deps[@]}")
echo "${deps[@]}"
}
get_package_link() {
@@ -58,7 +63,7 @@ setup_extensions() {
filter_libraries() {
libraries="$(echo "$1" | xargs -n1 | sort | uniq | xargs)"
for library in $libraries; do
if grep -i -q -w "$library" "${script_dir:?}"/../lists/"$DISTRIB_CODENAME"-libs; then
if grep -i -q -w "$library" "${script_dir:?}"/../lists/"$VERSION_CODENAME"-libs; then
libraries=${libraries//$library/}
fi
done
@@ -88,7 +93,7 @@ setup_dependencies() {
extension_dir=$2
[[ -z "${extensions// }" ]] && return
IFS=' ' read -r -a extensions_array <<<"$(echo "$extensions" | sed -e "s/pdo[_-]//g" -Ee "s/^|,\s*/ php$version-/g")"
. /etc/lsb-release
. /etc/os-release
sudo rm -rf "${ext_config_directory:?}" || true
libraries=""
extension_packages=""