<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch release-2.10
in repository macports-base.

</pre>
<p><a href="https://github.com/macports/macports-base/commit/9da5e4f9d48910fd2698ca2a829ec7ef47a7a5ca">https://github.com/macports/macports-base/commit/9da5e4f9d48910fd2698ca2a829ec7ef47a7a5ca</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 9da5e4f9d48910fd2698ca2a829ec7ef47a7a5ca
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Sat Aug 10 06:23:33 2024 +1000

<span style='display:block; white-space:pre;color:#404040;'>    Better check for whether to migrate due to Rosetta 2
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Only consider migration to be needed if there is also no arm64 slice in
</span><span style='display:block; white-space:pre;color:#404040;'>    our binary. This prevents migrating when base is correctly universal
</span><span style='display:block; white-space:pre;color:#404040;'>    but the x86_64 slice is being run for whatever reason.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    See: https://trac.macports.org/ticket/70512
</span><span style='display:block; white-space:pre;color:#404040;'>    (cherry picked from commit 9eb441f714c58a4bbc0c3abbc1f563ac591eadb6)
</span>---
 src/macports1.0/macports_autoconf.tcl.in |  1 +
 src/macports1.0/migrate.tcl              | 23 +++++++++++++++++++++--
 2 files changed, 22 insertions(+), 2 deletions(-)

<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 21985c509..c2444bfdb 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 tar_command "@TAR_CMD@"
     variable tar_path "@TAR@"
     variable tar_q "@TAR_Q@"
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    variable tclsh_path "@TCLSH@"
</span>     variable unzip_path "@UNZIP@"
     variable xar_path "@XAR@"
     variable xcode_select_path "@XCODE_SELECT@"
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/macports1.0/migrate.tcl b/src/macports1.0/migrate.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 8bf49b9fa..9b380c2b0 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/macports1.0/migrate.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/macports1.0/migrate.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -248,8 +248,27 @@ namespace eval migrate {
</span>         if {$os_platform eq "darwin" && $os_major >= 20
                 && ![catch {sysctl sysctl.proc_translated} translated] && $translated
         } then {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            set reason "MacPorts is running through Rosetta 2, and should be rebuilt for Apple Silicon"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            return 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # Check if our tclsh has an arm64 slice - rebuilding not needed if it's universal
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set h [machista::create_handle]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set rlist [machista::parse_file $h $macports::autoconf::tclsh_path]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[lindex $rlist 0] == $machista::SUCCESS} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set r [lindex $rlist 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set a [$r cget -mt_archs]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set has_arm64 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                while {$a ne "NULL"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    set arch [machista::get_arch_name [$a cget -mat_arch]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    if {$arch eq "arm64"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        set has_arm64 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        break
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    set a [$a cget -next]
</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;'>+            machista::destroy_handle $h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[info exists has_arm64] && !$has_arm64} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set reason "MacPorts is running through Rosetta 2, and should be rebuilt for Apple Silicon"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                return 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span>         }
         return 0
     }
</pre><pre style='margin:0'>

</pre>