diff --git a/src/lists/darwin-deps b/src/lists/darwin-deps new file mode 100644 index 0000000..2d6c9df --- /dev/null +++ b/src/lists/darwin-deps @@ -0,0 +1 @@ +geos=geos \ No newline at end of file diff --git a/src/lists/linux-deps b/src/lists/linux-deps new file mode 100644 index 0000000..f39909d --- /dev/null +++ b/src/lists/linux-deps @@ -0,0 +1,4 @@ +geos=libgeos-dev +pdo_firebird=firebird-dev +oci8=libaio-dev +pdo_oci=libaio-dev \ No newline at end of file diff --git a/src/scripts/darwin.sh b/src/scripts/darwin.sh index d2dffb7..c2ea188 100644 --- a/src/scripts/darwin.sh +++ b/src/scripts/darwin.sh @@ -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 diff --git a/src/scripts/linux.sh b/src/scripts/linux.sh index a4b0e1c..3ca9a19 100644 --- a/src/scripts/linux.sh +++ b/src/scripts/linux.sh @@ -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=""