<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>