@@ -17,7 +17,7 @@ handle_dependency_extensions() {
1717 for dependency_extension in " ${dependency_extensions[@]} " ; do
1818 safe_brew install --skip-link " ${brew_opts[@]} " " $ext_tap /$dependency_extension @$version " > /dev/null 2>&1 &&
1919 brew link --overwrite --force " $dependency_extension @$version " > /dev/null 2>&1 &&
20- copy_brew_extensions " $dependency_extension "
20+ copy_brew_extensions " $dependency_extension " || return $?
2121 done
2222 fi
2323}
@@ -71,6 +71,16 @@ copy_brew_extensions() {
7171 fi
7272}
7373
74+ # Install an extension and its variant-specific dependencies with the current Brew state.
75+ install_brew_extension () {
76+ local formula=$1
77+ local extension=$2
78+ handle_dependency_extensions " $formula " " $extension " &&
79+ safe_brew install --skip-link " ${brew_opts[@]} " " $ext_tap /$formula @$version " &&
80+ brew link --overwrite --force " $formula @$version " &&
81+ copy_brew_extensions " $formula "
82+ }
83+
7484# Function to install a php extension from shivammathur/extensions tap.
7585add_brew_extension () {
7686 formula=$1
@@ -84,13 +94,13 @@ add_brew_extension() {
8494 add_brew_tap " $php_tap "
8595 add_brew_tap " $ext_tap "
8696 formula=" $( get_renamed_formula " $formula " ) "
87- update_dependencies > /dev/null 2>&1
88- handle_dependency_extensions " $formula " " $extension " > /dev/null 2>&1
8997 (
90- safe_brew install --skip-link " ${brew_opts[@]} " " $ext_tap /$formula @$version " > /dev/null 2>&1 &&
91- brew link --overwrite --force " $formula @$version " > /dev/null 2>&1 &&
92- copy_brew_extensions " $formula "
93- ) || {
98+ patch_brew
99+ # Keep the watchdog, but refresh before retrying a failed first attempt.
100+ SETUP_PHP_BREW_RETRY_ATTEMPTS=1 install_brew_extension " $formula " " $extension " || {
101+ update_dependencies && install_brew_extension " $formula " " $extension "
102+ }
103+ ) > /dev/null 2>&1 || {
94104 if [ -n " $expected_version " ]; then
95105 pecl_install " $extension -$expected_version " || pecl_install " $extension "
96106 else
@@ -157,15 +167,15 @@ patch_brew() {
157167
158168# Function to update dependencies.
159169update_dependencies () {
160- patch_brew
161170 if ! [ -e /tmp/update_dependencies ]; then
162171 for repo in " $brew_repo " " ${core_repo:? } " ; do
163172 if [ -e " $repo " ]; then
164- git_retry -C " $repo " fetch origin main && git -C " $repo " reset --hard origin/main
173+ git_retry -C " $repo " fetch origin main && git -C " $repo " reset --hard origin/main || return $?
165174 fi
166175 done
167176 echo ' ' | sudo tee /tmp/update_dependencies > /dev/null 2>&1
168177 fi
178+ patch_brew
169179}
170180
171181# Function to get PHP version if it is already installed using Homebrew.
0 commit comments