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