@@ -275,11 +275,16 @@ jobs:
275275 shell : bash
276276 run : |
277277 set -euo pipefail
278- CANDIDATES="$(find /Applications -maxdepth 1 -type d \( -name 'Xcode_26*.app' -o -name 'Xcode-26*.app' \) | sort -r) "
279- if [[ -z "$CANDIDATES" && - d /Applications/Xcode.app ]]; then
278+ CANDIDATES=""
279+ if [[ -d /Applications/Xcode.app ]]; then
280280 CANDIDATES="/Applications/Xcode.app"
281281 fi
282+ EXTRA_CANDIDATES="$(find /Applications -maxdepth 1 -type d \( -name 'Xcode_26*.app' -o -name 'Xcode-26*.app' \) ! -name 'Xcode.app' | sort -r)"
283+ if [[ -n "$EXTRA_CANDIDATES" ]]; then
284+ CANDIDATES="${CANDIDATES:+${CANDIDATES}"$'\n'}${EXTRA_CANDIDATES}"
285+ fi
282286 SELECTED_XCODE_APP=""
287+ BETA_FALLBACK=""
283288 while IFS= read -r XCODE_APP; do
284289 [[ -n "$XCODE_APP" ]] || continue
285290 DEV_DIR="$XCODE_APP/Contents/Developer"
@@ -292,10 +297,15 @@ jobs:
292297 fi
293298 echo "Candidate: $XCODE_APP, Xcode ${XCODE_VERSION:-unknown}, iPhoneOS SDK ${SDK_VERSION:-missing}, platform installed: $HAS_PLATFORM"
294299 if [[ "$XCODE_VERSION" == 26.* && "$SDK_VERSION" == 26.* && "$HAS_PLATFORM" == "yes" ]]; then
300+ if [[ "$(basename "$XCODE_APP" | tr '[:upper:]' '[:lower:]')" == *beta* ]]; then
301+ [[ -n "$BETA_FALLBACK" ]] || BETA_FALLBACK="$XCODE_APP"
302+ continue
303+ fi
295304 SELECTED_XCODE_APP="$XCODE_APP"
296305 break
297306 fi
298307 done <<< "$CANDIDATES"
308+ [[ -n "$SELECTED_XCODE_APP" ]] || SELECTED_XCODE_APP="$BETA_FALLBACK"
299309 [[ -n "$SELECTED_XCODE_APP" ]] || { echo "No Xcode 26 installation with iPhoneOS 26 SDK platform found under /Applications"; exit 1; }
300310 sudo xcode-select -s "$SELECTED_XCODE_APP/Contents/Developer"
301311 XCODE_VERSION="$(xcodebuild -version | awk 'NR==1 {print $2}')"
@@ -462,11 +472,16 @@ jobs:
462472 shell : bash
463473 run : |
464474 set -euo pipefail
465- CANDIDATES="$(find /Applications -maxdepth 1 -type d \( -name 'Xcode_26*.app' -o -name 'Xcode-26*.app' \) | sort -r) "
466- if [[ -z "$CANDIDATES" && - d /Applications/Xcode.app ]]; then
475+ CANDIDATES=""
476+ if [[ -d /Applications/Xcode.app ]]; then
467477 CANDIDATES="/Applications/Xcode.app"
468478 fi
479+ EXTRA_CANDIDATES="$(find /Applications -maxdepth 1 -type d \( -name 'Xcode_26*.app' -o -name 'Xcode-26*.app' \) ! -name 'Xcode.app' | sort -r)"
480+ if [[ -n "$EXTRA_CANDIDATES" ]]; then
481+ CANDIDATES="${CANDIDATES:+${CANDIDATES}"$'\n'}${EXTRA_CANDIDATES}"
482+ fi
469483 SELECTED_XCODE_APP=""
484+ BETA_FALLBACK=""
470485 while IFS= read -r XCODE_APP; do
471486 [[ -n "$XCODE_APP" ]] || continue
472487 DEV_DIR="$XCODE_APP/Contents/Developer"
@@ -479,10 +494,15 @@ jobs:
479494 fi
480495 echo "Candidate: $XCODE_APP, Xcode ${XCODE_VERSION:-unknown}, iPhoneOS SDK ${SDK_VERSION:-missing}, platform installed: $HAS_PLATFORM"
481496 if [[ "$XCODE_VERSION" == 26.* && "$SDK_VERSION" == 26.* && "$HAS_PLATFORM" == "yes" ]]; then
497+ if [[ "$(basename "$XCODE_APP" | tr '[:upper:]' '[:lower:]')" == *beta* ]]; then
498+ [[ -n "$BETA_FALLBACK" ]] || BETA_FALLBACK="$XCODE_APP"
499+ continue
500+ fi
482501 SELECTED_XCODE_APP="$XCODE_APP"
483502 break
484503 fi
485504 done <<< "$CANDIDATES"
505+ [[ -n "$SELECTED_XCODE_APP" ]] || SELECTED_XCODE_APP="$BETA_FALLBACK"
486506 [[ -n "$SELECTED_XCODE_APP" ]] || { echo "No Xcode 26 installation with iPhoneOS 26 SDK platform found under /Applications"; exit 1; }
487507 sudo xcode-select -s "$SELECTED_XCODE_APP/Contents/Developer"
488508 XCODE_VERSION="$(xcodebuild -version | awk 'NR==1 {print $2}')"
0 commit comments