<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/d05ebde36fa2e2dd36d91aa5693be706c082342f">https://github.com/macports/macports-base/commit/d05ebde36fa2e2dd36d91aa5693be706c082342f</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new d05ebde3 Add xcodecltversion and improve SDK warnings
</span>d05ebde3 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit d05ebde36fa2e2dd36d91aa5693be706c082342f
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Fri Aug 19 18:45:48 2022 +1000

<span style='display:block; white-space:pre;color:#404040;'>    Add xcodecltversion and improve SDK warnings
</span>---
 src/macports1.0/macports.tcl | 58 ++++++++++++++++++++++++++++++++++++++------
 src/port1.0/portutil.tcl     | 26 ++++++++++++--------
 2 files changed, 67 insertions(+), 17 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 f1dbcc26..022f749a 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;'>@@ -50,7 +50,7 @@ namespace eval macports {
</span>         portarchivetype hfscompression portautoclean \
         porttrace portverbose keeplogs destroot_umask variants_conf rsync_server rsync_options \
         rsync_dir startupitem_autostart startupitem_type startupitem_install \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        place_worksymlink xcodeversion xcodebuildcmd \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        place_worksymlink xcodeversion xcodebuildcmd xcodecltversion \
</span>         configureccache ccache_dir ccache_size configuredistcc configurepipe buildnicevalue buildmakejobs \
         applications_dir frameworks_dir developer_dir universal_archs build_arch macosx_sdk_version macosx_deployment_target \
         macportsuser proxy_override_env proxy_http proxy_https proxy_ftp proxy_rsync proxy_skip \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -75,7 +75,7 @@ namespace eval macports {
</span>     # deferred options are only computed when needed.
     # they are not exported to the trace thread.
     # they are not exported to the interpreter in system_options array.
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    variable portinterp_deferred_options "xcodeversion xcodebuildcmd developer_dir"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    variable portinterp_deferred_options "developer_dir xcodeversion xcodebuildcmd xcodecltversion"
</span> 
     variable open_mports {}
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -166,13 +166,13 @@ proc macports::ch_logging {mport} {
</span> 
 # log platform information
 proc macports::_log_sysinfo {} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    global macports::current_phase
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    global macports::os_platform macports::os_subplatform \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global macports::current_phase \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           macports::os_platform macports::os_subplatform \
</span>            macports::os_version macports::os_major macports::os_minor \
            macports::os_endian macports::os_arch \
            macports::macos_version macports::macosx_sdk_version macports::macosx_deployment_target \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-           macports::xcodeversion
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    global tcl_platform
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           macports::xcodeversion macports::xcodecltversion \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           tcl_platform
</span> 
     set previous_phase ${macports::current_phase}
     set macports::current_phase "sysinfo"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -197,7 +197,7 @@ proc macports::_log_sysinfo {} {
</span>     ui_debug "$os_version_string ($os_platform/$os_version) arch $os_arch"
     ui_debug "MacPorts [macports::version]"
     if {$os_platform eq "darwin" && $os_subplatform eq "macosx"} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        ui_debug "Xcode ${xcodeversion}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_debug "Xcode ${xcodeversion}, CLT ${xcodecltversion}"
</span>         ui_debug "SDK ${macosx_sdk_version}"
         ui_debug "MACOSX_DEPLOYMENT_TARGET: ${macosx_deployment_target}"
     }
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -604,6 +604,42 @@ proc macports::_is_valid_developer_dir {dir} {
</span>     return 1
 }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# deferred calculation of xcodecltversion
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc macports::set_xcodecltversion {name1 name2 op} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global macports::xcodecltversion
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    trace remove variable macports::xcodecltversion read macports::set_xcodecltversion
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Potential names for the CLTs pkg on different OS versions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set pkgnames [list CLTools_Executables CLTools_Base DeveloperToolsCLI DeveloperToolsCLILeo]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[catch {exec -ignorestderr /usr/sbin/pkgutil --pkgs=com\\.apple\\.pkg\\.([join $pkgnames |])} result]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set macports::xcodecltversion none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set pkgs [split $result \n]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Check in order from newest to oldest, just in case something
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # stuck around from an older OS version.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    foreach pkgname $pkgnames {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set fullpkgname com.apple.pkg.${pkgname}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {$fullpkgname in $pkgs} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {![catch {exec -ignorestderr /usr/sbin/pkgutil --pkg-info $fullpkgname} result]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                foreach line [split $result \n] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    lassign [split $line] name val
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    if {$name eq "version:"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        set macports::xcodecltversion $val
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        return
</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;'>+            } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                ui_debug "set_xcodecltversion: Failed to get info for installed pkg ${fullpkgname}: $result"
</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;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set macports::xcodecltversion none
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> 
 proc mportinit {{up_ui_options {}} {up_options {}} {up_variations {}}} {
     # Disable unknown(n)'s behavior of running unknown commands in the system
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -657,6 +693,7 @@ proc mportinit {{up_ui_options {}} {up_options {}} {up_variations {}}} {
</span>         macports::frameworks_dir_frozen \
         macports::xcodebuildcmd \
         macports::xcodeversion \
<span style='display:block; white-space:pre;background:#e0ffe0;'>+        macports::xcodecltversion \
</span>         macports::configureccache \
         macports::ccache_dir \
         macports::ccache_size \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1260,6 +1297,13 @@ match macports.conf.default."
</span>         trace add variable macports::xcodeversion read macports::setxcodeinfo
         trace add variable macports::xcodebuildcmd read macports::setxcodeinfo
     }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {![info exists xcodecltversion]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {$os_platform eq "darwin"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            trace add variable macports::xcodecltversion read macports::set_xcodecltversion
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set macports::xcodecltversion {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span> 
     if {![info exists developer_dir]} {
         if {$os_platform eq "darwin"} {
<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 95c349e5..07405405 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;'>@@ -3393,7 +3393,7 @@ proc _check_xcode_version {} {
</span>             }
 
             # Check whether /usr/include and /usr/bin/make exist and tell users to install the command line tools, if they don't
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            if {${os.major} <= 17 && (![file isdirectory [file join $cltpath usr include]] || ![file executable  [file join $cltpath usr bin make]])} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {${os.major} <= 17 && (![file isdirectory [file join $cltpath usr include]] || ![file executable [file join $cltpath usr bin make]])} {
</span>                 if {[vercmp $xcodeversion 10.0] >= 0} {
                     ui_warn "System headers do not appear to be installed. Ports may not build correctly due to Xcode 10 only providing a 10.14 SDK."
                 } else {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3407,15 +3407,21 @@ proc _check_xcode_version {} {
</span>                 }
             }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            if {${os.major} >= 18 && [option configure.sdk_version] ne "" &&
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                ![string match MacOSX[option configure.sdk_version]*.sdk [file tail [option configure.sdkroot]]]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                if { [option configure.sdkroot] eq "" } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    ui_warn "The macOS [option configure.sdk_version] SDK is requested but configure.sdkroot is set to"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    ui_warn "a NULL string. Ports may not build correctly with this configuration."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    ui_warn "The macOS [option configure.sdk_version] SDK does not appear to be match the configured"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    ui_warn "SDKROOT '[option configure.sdkroot]'. Ports may not build correctly."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    ui_warn "You can install it as part of the Xcode Command Line Tools package by running `xcode-select --install'."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {${os.major} >= 18} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                global xcodecltversion configure.sdk_version macosx_sdk_version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                if {$xcodecltversion eq "none" && [file executable [file join $cltpath usr bin make]]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ui_warn "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_warn "The Command Line Tools may be outdated, which can cause problems."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ui_warn "Please see: <https://trac.macports.org/wiki/ProblemHotlist#reinstall-clt>"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                } elseif {${configure.sdk_version} ne "" && ![string match MacOSX${configure.sdk_version}*.sdk \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        [file tail [portconfigure::configure_get_sdkroot ${configure.sdk_version}]]]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    if {${configure.sdk_version} eq ${macosx_sdk_version}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        ui_warn "The macOS ${configure.sdk_version} SDK does not appear to be installed. Ports may not build correctly."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        ui_warn "You can install it as part of the Xcode Command Line Tools package by running `xcode-select --install'."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        ui_warn "If already installed, update with Software Update, or manually: <https://trac.macports.org/wiki/ProblemHotlist#reinstall-clt>"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        ui_warn "The macOS ${configure.sdk_version} SDK does not appear to be installed. This port may not build correctly."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    }
</span>                 }
             }
 
</pre><pre style='margin:0'>

</pre>