<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-base.

</pre>
<p><a href="https://github.com/macports/macports-base/commit/5deaa7c26dc95e6b5bee8911d52a8842e9a53d24">https://github.com/macports/macports-base/commit/5deaa7c26dc95e6b5bee8911d52a8842e9a53d24</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 5deaa7c26dc95e6b5bee8911d52a8842e9a53d24
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Mon Jul 15 16:22:39 2024 +1000

<span style='display:block; white-space:pre;color:#404040;'>    migrate: check Xcode/CLT version
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Move list of compatible Xcode versions to macports1.0 so it can be
</span><span style='display:block; white-space:pre;color:#404040;'>    reused here.
</span>---
 src/macports1.0/macports.tcl | 104 +++++++++++++++++++++++++++++++++++++++++++
 src/macports1.0/migrate.tcl  |  44 ++++++++++++++++++
 src/port1.0/portutil.tcl     |  88 +-----------------------------------
 3 files changed, 149 insertions(+), 87 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/macports1.0/macports.tcl b/src/macports1.0/macports.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 4ee35b880..073b420c7 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/macports1.0/macports.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/macports1.0/macports.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2017,6 +2017,8 @@ proc macports::worker_init {workername portpath porturl portbuildpath options va
</span>     # tool path cache
     $workername alias get_tool_path macports::get_tool_path
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    $workername alias get_compatible_xcode_versions macports::get_compatible_xcode_versions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>     foreach opt $portinterp_options {
         if {![info exists $opt]} {
             variable $opt
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -6550,3 +6552,105 @@ proc macports::get_parallel_jobs {{mem_restrict yes}} {
</span>     }
     return $jobs
 }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Returns list of Xcode versions for the current macOS version:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# [min, ok, rec]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# min = lowest version that will work at all
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# ok = lowest version without any serious known issues
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# rec = recommended version, usually the latest known
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc macports::get_compatible_xcode_versions {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    variable macos_version_major
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    switch $macos_version_major {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        10.4 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set min 2.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set ok 2.4.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set rec 2.5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        10.5 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set min 3.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set ok 3.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set rec 3.1.4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        10.6 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set min 3.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set ok 3.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set rec 3.2.6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        10.7 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set min 4.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set ok 4.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set rec 4.6.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        10.8 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set min 4.4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set ok 4.4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set rec 5.1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        10.9 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set min 5.0.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set ok 5.0.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set rec 6.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        10.10 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set min 6.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set ok 6.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set rec 7.2.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        10.11 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set min 7.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set ok 7.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set rec 8.2.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        10.12 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set min 8.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set ok 8.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set rec 9.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        10.13 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set min 9.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set ok 9.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set rec 9.4.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        10.14 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set min 10.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set ok 10.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set rec 10.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        10.15 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set min 11.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set ok 11.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set rec 11.7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        11 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set min 12.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set ok 12.2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set rec 12.5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        12 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set min 13.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set ok 13.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set rec 13.4.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        13 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set min 14.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set ok 14.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set rec 14.3.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        14 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set min 15.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set ok 15.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set rec 15.4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        15 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set min 16
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set ok 16
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set rec 16
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        default {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set min 16
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set ok 16
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set rec 16
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return [list $min $ok $rec]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/macports1.0/migrate.tcl b/src/macports1.0/migrate.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 219a238f2..7976b436b 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/macports1.0/migrate.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/macports1.0/migrate.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -45,6 +45,10 @@ namespace eval migrate {
</span>     #          flag set.
     proc main {opts} {
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {[check_toolchain]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            return 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>         if {[needs_migration]} {
             if {[info exists macports::ui_options(questions_yesno)]} {
                 set msg "Migration will first upgrade MacPorts and then reinstall all installed ports."
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -118,6 +122,46 @@ namespace eval migrate {
</span>         return $ret
     }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Check that Xcode and/or CLTs are usable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    proc check_toolchain {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        global macports::macos_version_major macports::xcodeversion \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               macports::xcodecltversion macports::os_platform
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {$os_platform ne "darwin"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            return 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        lassign [macports::get_compatible_xcode_versions] min ok rec
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {[vercmp $macos_version_major >= "10.9"]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {$xcodecltversion ne "none"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                if {[vercmp $xcodecltversion < $min]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ui_error "The installed Xcode Command Line Tools are too old."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ui_error "Version $xcodecltversion installed; at least $min required."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ui_error "Run Software Update or follow <https://trac.macports.org/wiki/ProblemHotlist#reinstall-clt>"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    return 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                return 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            } elseif {[file exists "/Library/Developer/CommandLineTools/"]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                ui_error "The Xcode Command Line Tools package appears to be installed, but its receipt appears to be missing."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                ui_error "The Command Line Tools may be outdated, which can cause problems."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                ui_error "Please see: <https://trac.macports.org/wiki/ProblemHotlist#reinstall-clt>"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                return 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {$xcodeversion ne "none"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[vercmp $xcodeversion < $min]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                ui_error "The installed version of Xcode is too old."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                ui_error "Version $xcodeversion installed; at least $min required."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                ui_error "(If you have multiple versions installed, you may need to select a newer one using xcode-select.)"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                return 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            return 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_error "Neither Xcode nor the Command Line Tools appear to be installed."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_error "See <https://guide.macports.org/#installing.xcode>"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>     ##
     # Open the current in-tree Portfile for each installed port,
     # using the recorded requested variants, and figure out its archs.
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portutil.tcl b/src/port1.0/portutil.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 32792f48d..84334afab 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portutil.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portutil.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3316,93 +3316,7 @@ proc _check_xcode_version {} {
</span>            xcodecltversion use_xcode xcode_license_unaccepted subport
 
     if {${os.subplatform} eq "macosx"} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        switch $macos_version_major {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            10.4 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set min 2.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set ok 2.4.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set rec 2.5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            10.5 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set min 3.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set ok 3.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set rec 3.1.4
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            10.6 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set min 3.2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set ok 3.2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set rec 3.2.6
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            10.7 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set min 4.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set ok 4.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set rec 4.6.3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            10.8 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set min 4.4
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set ok 4.4
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set rec 5.1.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            10.9 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set min 5.0.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set ok 5.0.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set rec 6.2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            10.10 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set min 6.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set ok 6.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set rec 7.2.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            10.11 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set min 7.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set ok 7.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set rec 8.2.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            10.12 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set min 8.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set ok 8.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set rec 9.2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            10.13 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set min 9.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set ok 9.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set rec 9.4.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            10.14 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set min 10.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set ok 10.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set rec 10.3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            10.15 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set min 11.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set ok 11.3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set rec 11.7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            11 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set min 12.2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set ok 12.2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set rec 12.5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            12 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set min 13.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set ok 13.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set rec 13.4.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            13 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set min 14.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set ok 14.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set rec 14.3.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            14 {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set min 15.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set ok 15.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set rec 15.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            default {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set min 15.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set ok 15.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set rec 15.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        lassign [get_compatible_xcode_versions] min ok rec
</span>         if {$xcodeversion eq "none"} {
             if {[file exists "/Applications/Install Xcode.app"]} {
                 ui_warn "You downloaded Xcode from the Mac App Store but didn't install it. Run \"Install Xcode\" in the /Applications folder."
</pre><pre style='margin:0'>

</pre>