<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/424784f4810dd0520f64c15304073a11f37a04ae">https://github.com/macports/macports-base/commit/424784f4810dd0520f64c15304073a11f37a04ae</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 424784f4810dd0520f64c15304073a11f37a04ae
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Wed May 22 20:59:29 2024 +1000

<span style='display:block; white-space:pre;color:#404040;'>    Migrate: only uninstall ports with incompatible platform
</span>---
 src/macports1.0/migrate.tcl | 40 ++++++++++++++++++++++++++++++++++------
 1 file changed, 34 insertions(+), 6 deletions(-)

<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 320458a1e..4142fb2b3 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;'>@@ -98,8 +98,10 @@ namespace eval migrate {
</span>         set datetime [$snapshot created_at]
         ui_msg "Done: Snapshot '$id' : '$note' created at $datetime"
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        ui_msg "Uninstalling all ports..."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        uninstall_installed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_msg "Deactivating all ports..."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        deactivate_installed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_msg "Uninstalling ports that need to be reinstalled..."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        uninstall_incompatible
</span> 
         ui_msg "Restoring ports..."
         return [restore_snapshot]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -121,16 +123,42 @@ namespace eval migrate {
</span>     }
 
     ##
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    # Uninstall all installed ports for migration
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Deactivate all installed ports for migration
</span>     #
     # @return void on success, raises an error on failure
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    proc uninstall_installed {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    proc deactivate_installed {} {
</span>         set options {}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+        set portlist [restore::portlist_sort_dependencies_later [registry::entry installed]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        foreach port $portlist {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ui_msg "Deactivating: [$port name]"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {![registry::run_target $port deactivate $options]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    && [catch {portimage::deactivate [$port name] [$port version] [$port revision] [$port variants] $options} result]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                ui_error "Error deactivating [$port name]: $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;'>+    ##
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Uninstall installed ports that are not compatible with
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # the current platform
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # @return void on success, raises an error on failure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    proc uninstall_incompatible {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        global macports::os_major macports::os_platform
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set options [dict create ports_nodepcheck 1]
</span>         set portlist [restore::portlist_sort_dependencies_later [registry::entry imaged]]
         foreach port $portlist {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+            # TODO: check archs match (needs open mport)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {($os_major eq [$port os_major] || [$port os_major] eq "any")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                && ($os_platform eq [$port os_platform] || [$port os_platform] eq "any")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            } then {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                # Compatible with current platform
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                continue
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span>             ui_msg "Uninstalling: [$port name]"
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            if {![registry::run_target $port uninstall $options]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                ui_error "Error uninstalling [$port name]"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {![registry::run_target $port uninstall $options]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    && [catch {registry_uninstall::uninstall [$port name] [$port version] [$port revision] [$port variants] $options} result]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                ui_error "Error uninstalling [$port name]: $result"
</span>             }
         }
     }
</pre><pre style='margin:0'>

</pre>