about summary refs log tree commit diff
path: root/src/ci/scripts
diff options
context:
space:
mode:
authorJubilee Young <workingjubilee@gmail.com>2024-08-30 18:02:03 -0700
committerJubilee Young <workingjubilee@gmail.com>2024-08-30 20:51:52 -0700
commit06f49f6d5326440192b8d31d69fa490dbfe01cfe (patch)
tree6d21e6f2f8058cac26348588f351d041e295970b /src/ci/scripts
parent600edc948ab5de7a92538bcc2f49cb8d47925e2d (diff)
downloadrust-06f49f6d5326440192b8d31d69fa490dbfe01cfe.tar.gz
rust-06f49f6d5326440192b8d31d69fa490dbfe01cfe.zip
ci: Try to remove unused Xcode dirs
Diffstat (limited to 'src/ci/scripts')
-rwxr-xr-xsrc/ci/scripts/select-xcode.sh17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/ci/scripts/select-xcode.sh b/src/ci/scripts/select-xcode.sh
index 569c4a4136d..d635d438472 100755
--- a/src/ci/scripts/select-xcode.sh
+++ b/src/ci/scripts/select-xcode.sh
@@ -1,5 +1,6 @@
 #!/bin/bash
 # This script selects the Xcode instance to use.
+# It also tries to do some cleanup in CI jobs of unused Xcodes.
 
 set -euo pipefail
 IFS=$'\n\t'
@@ -7,5 +8,21 @@ IFS=$'\n\t'
 source "$(cd "$(dirname "$0")" && pwd)/../shared.sh"
 
 if isMacOS; then
+    # This additional step is to try to remove an Xcode we aren't using because each one is HUGE
+    old_xcode="$(xcode-select --print-path)"
+    old_xcode="${old_xcode%/*}" # pop a dir
+    old_xcode="${old_xcode%/*}" # twice
+    if [[ $old_xcode =~ $SELECT_XCODE ]]; then
+        echo "xcode-select.sh's brutal hack may not be necessary?"
+        exit 1
+    elif [[ $SELECT_XCODE =~ "16" ]]; then
+        echo "Using Xcode 16? Please fix xcode-select.sh"
+        exit 1
+    fi
+    if [ $CI ]; then # just in case someone sources this on their real computer
+        sudo rm -rf "${old_xcode}"
+        xcode_16="${old_xcode%/*}/Xcode-16.0.0.app"
+        sudo rm -rf "${xcode_16}"
+    fi
     sudo xcode-select -s "${SELECT_XCODE}"
 fi