<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/338f08b69498d01ffd55731c230d374efff1393e">https://github.com/macports/macports-base/commit/338f08b69498d01ffd55731c230d374efff1393e</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 338f08b69498d01ffd55731c230d374efff1393e
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Tue Dec 12 22:55:21 2023 +1100
<span style='display:block; white-space:pre;color:#404040;'> Cache result of Xcode license acceptance check
</span>---
src/macports1.0/macports.tcl | 41 +++++++++++++++++++++++++++++---
src/macports1.0/macports_autoconf.tcl.in | 1 +
src/port1.0/portutil.tcl | 7 ++----
3 files changed, 41 insertions(+), 8 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 2b6e25b3a..bd8f38a73 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 xcodecltversion \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ place_worksymlink xcodeversion xcodebuildcmd xcodecltversion xcode_license_unaccepted \
</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 "developer_dir xcodeversion xcodebuildcmd xcodecltversion"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variable portinterp_deferred_options "developer_dir xcodeversion xcodebuildcmd xcodecltversion xcode_license_unaccepted"
</span>
variable open_mports {}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -548,6 +548,10 @@ proc macports::set_developer_dir {name1 name2 op} {
</span>
trace remove variable macports::developer_dir read macports::set_developer_dir
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[info exists developer_dir]} {
</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> # Look for xcodeselect, and make sure it has a valid value
macports_try -pass_signal {
set xcodeselect [findBinary xcode-select $macports::autoconf::xcode_select_path]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -655,6 +659,10 @@ proc macports::set_xcodecltversion {name1 name2 op} {
</span>
trace remove variable macports::xcodecltversion read macports::set_xcodecltversion
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[info exists xcodecltversion]} {
</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> # Potential names for the CLTs pkg on different OS versions.
set pkgnames [list CLTools_Executables CLTools_Base DeveloperToolsCLI DeveloperToolsCLILeo]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -685,6 +693,25 @@ proc macports::set_xcodecltversion {name1 name2 op} {
</span> set macports::xcodecltversion none
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+proc macports::set_xcode_license_unaccepted {name1 name2 op} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global macports::xcode_license_unaccepted
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ trace remove variable macports::xcode_license_unaccepted read macports::set_xcode_license_unaccepted
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[info exists xcode_license_unaccepted]} {
</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;'>+ catch {exec [findBinary xcrun $macports::autoconf::xcrun_path] clang 2>@1} output
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set output [join [lrange [split $output "\n"] 0 end-1] "\n"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[string match -nocase "*license*" $output]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set macports::xcode_license_unaccepted yes
</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;'>+ set macports::xcode_license_unaccepted no
</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;'>@@ -737,6 +764,7 @@ proc mportinit {{up_ui_options {}} {up_options {}} {up_variations {}}} {
</span> macports::xcodebuildcmd \
macports::xcodeversion \
macports::xcodecltversion \
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ macports::xcode_license_unaccepted \
</span> macports::configureccache \
macports::ccache_dir \
macports::ccache_size \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1370,6 +1398,13 @@ match macports.conf.default."
</span> set macports::xcodecltversion {}
}
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![info exists xcode_license_unaccepted]} {
</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::xcode_license_unaccepted read macports::set_xcode_license_unaccepted
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set macports::xcode_license_unaccepted no
</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;background:#e0e0e0;'>@@ -5996,7 +6031,7 @@ proc macports::get_tool_path {tool} {
</span> set toolpath "/usr/bin/${tool}"
if {![file executable $toolpath]} {
# Use xcode's xcrun to find the named tool.
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[catch {exec -ignorestderr [findBinary xcrun $portutil::autoconf::xcrun_path] -find ${tool} 2> /dev/null} toolpath]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[catch {exec -ignorestderr [findBinary xcrun $macports::autoconf::xcrun_path] -find ${tool} 2> /dev/null} toolpath]} {
</span> set toolpath ""
}
}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/macports1.0/macports_autoconf.tcl.in b/src/macports1.0/macports_autoconf.tcl.in
</span><span style='display:block; white-space:pre;color:#808080;'>index 0b7167381..f3c349d49 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/macports1.0/macports_autoconf.tcl.in
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/macports1.0/macports_autoconf.tcl.in
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -54,6 +54,7 @@ namespace eval macports::autoconf {
</span> variable xar_path "@XAR@"
variable xcode_select_path "@XCODE_SELECT@"
variable xcodebuild_path "@XCODEBUILD@"
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ variable xcrun_path "@XCRUN@"
</span> variable os_platform "@OS_PLATFORM@"
variable os_major "@OS_MAJOR@"
}
<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 577b21971..bb1dc93a7 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;'>@@ -3397,7 +3397,7 @@ proc check_supported_archs {} {
</span> # check if the installed xcode version is new enough
proc _check_xcode_version {} {
global os.subplatform os.major macos_version_major xcodeversion \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- xcodecltversion use_xcode subport
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xcodecltversion use_xcode xcode_license_unaccepted subport
</span>
if {${os.subplatform} eq "macosx"} {
switch $macos_version_major {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3561,10 +3561,7 @@ proc _check_xcode_version {} {
</span> return 1
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # Check whether users have agreed to the Xcode license agreement
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- catch {exec [findBinary xcrun $portutil::autoconf::xcrun_path] clang 2>@1} output
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set output [join [lrange [split $output "\n"] 0 end-1] "\n"]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[string match -nocase "*license*" $output]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$xcode_license_unaccepted} {
</span> ui_error "It seems you have not accepted the Xcode license; most ports will fail to build."
ui_error "Agree to the license by opening Xcode or running `sudo xcodebuild -license'."
return 1
</pre><pre style='margin:0'>
</pre>