<pre style='margin:0'>
Clemens Lang (neverpanic) pushed a commit to branch master
in repository macports-base.
</pre>
<p><a href="https://github.com/macports/macports-base/commit/9e83ceadc729dce732909437bc7f8cd89878f03e">https://github.com/macports/macports-base/commit/9e83ceadc729dce732909437bc7f8cd89878f03e</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 9e83cea macports1.0: Only check Xcode if building from src
</span>9e83cea is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 9e83ceadc729dce732909437bc7f8cd89878f03e
</span>Author: Clemens Lang <cal@macports.org>
AuthorDate: Mon Aug 26 22:52:22 2019 +0200
<span style='display:block; white-space:pre;color:#404040;'> macports1.0: Only check Xcode if building from src
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> We don't need to check the Xcode version (or presence) if we're not
</span><span style='display:block; white-space:pre;color:#404040;'> going to build a port from source. This was previously achieved with
</span><span style='display:block; white-space:pre;color:#404040;'> a shortcut in _check_xcode_version that would always return 0 if an
</span><span style='display:block; white-space:pre;color:#404040;'> archive was available.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> This fixes a situation where _check_xcode_version would indicate Xcode
</span><span style='display:block; white-space:pre;color:#404040;'> isn't required because an archive is available even though a user
</span><span style='display:block; white-space:pre;color:#404040;'> specifically asked for a build from source (e.g. when running 'sudo port
</span><span style='display:block; white-space:pre;color:#404040;'> destroot' on a port that sets `use_xcode yes`).
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> The newly introduced _target_needs_toolchain now returns yes for all
</span><span style='display:block; white-space:pre;color:#404040;'> cases where a toolchain is required regardless of archive availability
</span><span style='display:block; white-space:pre;color:#404040;'> and returns yes iff an archive is available for those targets that only
</span><span style='display:block; white-space:pre;color:#404040;'> need a toolchain when no prebuilt archive is being used.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> See: https://github.com/macports/macports-base/pull/140
</span>---
src/macports1.0/macports.tcl | 51 +++++++++++++++++++++++++++++++++++++++-----
src/port1.0/portutil.tcl | 4 ----
2 files changed, 46 insertions(+), 9 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 506db22..5744056 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;'>@@ -2101,8 +2101,12 @@ proc _mportexec {target mport} {
</span> # xxx: set the work path?
set workername [ditem_key $mport workername]
$workername eval {validate_macportsuser}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # If the target doesn't need a toolchain (e.g. because an archive is
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # available and we're not going to build it), don't check for the Xcode
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # version (and presence for use_xcode yes ports).
</span> if {![catch {$workername eval "check_variants $target"} result] && $result == 0 &&
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ![catch {$workername eval {_check_xcode_version}} result] && $result == 0 &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (![macports::_target_needs_toolchain $workername $target] || (![catch {$workername eval {_check_xcode_version}} result] && $result == 0)) &&
</span> ![catch {$workername eval {check_supported_archs}} result] && $result == 0 &&
![catch {$workername eval "eval_targets $target"} result] && $result == 0} {
# If auto-clean mode, clean-up after dependency install
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2147,10 +2151,9 @@ proc mportexec {mport target} {
</span> set log_needs_pop yes
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # Use _target_needs_deps as a proxy for whether we're going to
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # build and will therefore need to check Xcode version and
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # supported_archs.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[macports::_target_needs_deps $target]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Use _target_needs_toolchain as a proxy for whether we're going to build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # and will therefore need to check Xcode version and supported_archs.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[macports::_target_needs_toolchain $workername $target]} {
</span> # possibly warn or error out depending on how old Xcode is
if {[$workername eval {_check_xcode_version}] != 0} {
if {$log_needs_pop} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3644,6 +3647,44 @@ proc macports::_target_needs_deps {target} {
</span> }
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+##
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Determine if the given target of the given port needs a toolchain. Returns
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# true iff the target will require a compiler (or a different part of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# a standard toolchain) to successfully execute.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Returns false otherwise, in which case it can be assumed that no toolchain is
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# required for the successful execution of this task.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# @param workername A reference to the port interpreter of the port for which
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# this function should check whether a toolchain is needed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# @param target The target that will be run for this port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# @return true iff a toolchain is needed for this port, false otherwise
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc macports::_target_needs_toolchain {workername target} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ switch -- $target {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ build -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return yes
</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;'>+ install -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ activate -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dmg -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mdmg -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pkg -
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mpkg {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # check if an archive is available; if there isn't we'll need
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # a toolchain for these
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return [expr {![$workername eval _archive_available]}]
</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;'>+ default {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return no
</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> # Determine dependency types required for target
proc macports::_deptypes_for_target {target workername} {
switch -- $target {
<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 a6fc2ac..abe349b 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;'>@@ -3237,10 +3237,6 @@ proc check_supported_archs {} {
</span> proc _check_xcode_version {} {
global os.subplatform macosx_version xcodeversion use_xcode subport
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[_archive_available]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> if {${os.subplatform} eq "macosx"} {
switch $macosx_version {
10.4 {
</pre><pre style='margin:0'>
</pre>