@@ -22,6 +22,9 @@ CURL_MAX_RETRIES=5
2222CURL_RETRY_DELAY=5
2323CURL_TIMEOUT=300
2424
25+ SDK_INSTALL_MAX_RETRIES=5
26+ SDK_INSTALL_INITIAL_RETRY_DELAY=10
27+
2528curl_with_retry () {
2629 local attempt=1
2730 local exit_code=0
@@ -47,6 +50,41 @@ curl_with_retry() {
4750 return $exit_code
4851}
4952
53+ swift_sdk_install_with_retry () {
54+ local swift_executable=" $1 "
55+ local sdk_url=" $2 "
56+ local checksum=" $3 "
57+ local sdk_type=" $4 "
58+
59+ local attempt=1
60+ local retry_delay=$SDK_INSTALL_INITIAL_RETRY_DELAY
61+
62+ while [ $attempt -le $SDK_INSTALL_MAX_RETRIES ]; do
63+ if [ $attempt -gt 1 ]; then
64+ log " Retry attempt $attempt of $SDK_INSTALL_MAX_RETRIES for ${sdk_type} SDK installation after ${retry_delay} s delay..."
65+ sleep $retry_delay
66+ fi
67+
68+ log " Attempt $attempt : Installing ${sdk_type} SDK from ${sdk_url} "
69+
70+ if " $swift_executable " sdk install " $sdk_url " --checksum " $checksum " ; then
71+ log " ✅ ${sdk_type} SDK installed successfully"
72+ return 0
73+ else
74+ local exit_code=$?
75+ log " swift sdk install failed with exit code $exit_code on attempt $attempt "
76+
77+ # Exponential backoff: double the delay each time
78+ retry_delay=$(( retry_delay * 2 ))
79+ fi
80+
81+ attempt=$(( attempt + 1 ))
82+ done
83+
84+ error " ${sdk_type} SDK installation failed after $SDK_INSTALL_MAX_RETRIES attempts"
85+ return 1
86+ }
87+
5088# Parse command line options
5189INSTALL_ANDROID=false
5290INSTALL_STATIC_LINUX=false
@@ -586,11 +624,7 @@ install_android_sdk() {
586624 local android_sdk_filename=" ${android_sdk_bundle_name} .tar.gz"
587625 local sdk_url=" ${ANDROID_SDK_DOWNLOAD_ROOT} /${ANDROID_SDK_TAG} /${android_sdk_filename} "
588626
589- log " Running: ${SWIFT_EXECUTABLE_FOR_ANDROID_SDK} sdk install ${sdk_url} --checksum ${ANDROID_SDK_CHECKSUM} "
590-
591- if " $SWIFT_EXECUTABLE_FOR_ANDROID_SDK " sdk install " $sdk_url " --checksum " $ANDROID_SDK_CHECKSUM " ; then
592- log " ✅ Android Swift SDK installed successfully"
593- else
627+ if ! swift_sdk_install_with_retry " $SWIFT_EXECUTABLE_FOR_ANDROID_SDK " " $sdk_url " " $ANDROID_SDK_CHECKSUM " " Android Swift" ; then
594628 fatal " Failed to install Android Swift SDK"
595629 fi
596630
@@ -632,11 +666,7 @@ install_static_linux_sdk() {
632666 local static_linux_sdk_filename=" ${STATIC_LINUX_SDK_TAG} _static-linux-0.0.1.artifactbundle.tar.gz"
633667 local sdk_url=" ${STATIC_LINUX_SDK_DOWNLOAD_ROOT} /${STATIC_LINUX_SDK_TAG} /${static_linux_sdk_filename} "
634668
635- log " Running: ${SWIFT_EXECUTABLE_FOR_STATIC_LINUX_SDK} sdk install ${sdk_url} --checksum ${STATIC_LINUX_SDK_CHECKSUM} "
636-
637- if " $SWIFT_EXECUTABLE_FOR_STATIC_LINUX_SDK " sdk install " $sdk_url " --checksum " $STATIC_LINUX_SDK_CHECKSUM " ; then
638- log " ✅ Static Linux Swift SDK installed successfully"
639- else
669+ if ! swift_sdk_install_with_retry " $SWIFT_EXECUTABLE_FOR_STATIC_LINUX_SDK " " $sdk_url " " $STATIC_LINUX_SDK_CHECKSUM " " Static Linux Swift" ; then
640670 fatal " Failed to install Static Linux Swift SDK"
641671 fi
642672
@@ -655,11 +685,7 @@ install_wasm_sdk() {
655685 local wasm_sdk_filename=" ${WASM_SDK_TAG} _wasm.artifactbundle.tar.gz"
656686 local sdk_url=" ${WASM_SDK_DOWNLOAD_ROOT} /${WASM_SDK_TAG} /${wasm_sdk_filename} "
657687
658- log " Running: ${SWIFT_EXECUTABLE_FOR_WASM_SDK} sdk install ${sdk_url} --checksum ${WASM_SDK_CHECKSUM} "
659-
660- if " $SWIFT_EXECUTABLE_FOR_WASM_SDK " sdk install " $sdk_url " --checksum " $WASM_SDK_CHECKSUM " ; then
661- log " ✅ Swift SDK for Wasm installed successfully"
662- else
688+ if ! swift_sdk_install_with_retry " $SWIFT_EXECUTABLE_FOR_WASM_SDK " " $sdk_url " " $WASM_SDK_CHECKSUM " " Swift Wasm" ; then
663689 fatal " Failed to install Swift SDK for Wasm"
664690 fi
665691
0 commit comments