<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/b2519bb2c09d59e7bacb5a84b1010e8043a6409f">https://github.com/macports/macports-base/commit/b2519bb2c09d59e7bacb5a84b1010e8043a6409f</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit b2519bb2c09d59e7bacb5a84b1010e8043a6409f
</span>Author: Clemens Lang <cal@macports.org>
AuthorDate: Mon Dec 18 23:14:45 2023 +0100

<span style='display:block; white-space:pre;color:#404040;'>    macports/restore: Use snapshot::diff to display summary
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    At the end of migration, show a summary of which ports failed to
</span><span style='display:block; white-space:pre;color:#404040;'>    install, or which (requested) ports were installed, for example, with
</span><span style='display:block; white-space:pre;color:#404040;'>    changed variants due to a change in default variants.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    This message should eventually be extended with information how to
</span><span style='display:block; white-space:pre;color:#404040;'>    re-attempt migration by re-running 'port restore' as well a pointer on
</span><span style='display:block; white-space:pre;color:#404040;'>    how to run 'port snapshot --diff <id> --all' to see all differences.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Additionally, the message should recommend running cleanup steps such as
</span><span style='display:block; white-space:pre;color:#404040;'>    reclaim and uninstall inactive.
</span>---
 src/macports1.0/restore.tcl | 64 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 64 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/macports1.0/restore.tcl b/src/macports1.0/restore.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 98b053a68..00ae50f40 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/macports1.0/restore.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/macports1.0/restore.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -104,6 +104,70 @@ namespace eval restore {
</span>             set note "Migration finished.\n"
         }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+        array set diff [snapshot::diff $snapshot]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        foreach field {added removed changed} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set result {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            foreach port $diff($field) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                lassign $port _ requested
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                if {$requested} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    lappend result $port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set diff($field) $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;'>+        if {[llength $diff(added)] > 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            append note "The following requested ports were additionally installed:\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            foreach added_port [lsort -ascii -index 0 $diff(added)] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                lassign $added_port name _ _ _ requested_variants
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                if {$requested_variants ne ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    append note " - $name\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    append note " - $name $requested_variants\n"
</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;'>+        if {[llength $diff(removed)] > 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            append note "The following ports could not be restored:\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            foreach removed_port [lsort -ascii -index 0 $diff(removed)] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                lassign $removed_port name _ _ _ requested_variants
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                if {$requested_variants ne ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    append note " - $name\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    append note " - $name $requested_variants\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                if {[info exists failed($name)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    lassign $failed($name) type reason
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    switch $type {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        skipped {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            append note "   Skipped becuase its $reason\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        failed {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            append note "   Failed to build: $reason\n"
</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;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {[llength $diff(changed)] > 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            append note "The following ports were restored with changes:\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            foreach changed_port [lsort -ascii -index 0 $diff(changed)] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                lassign $changed_port name _ _ _ requested_variants changes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                if {$requested_variants ne ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    append note " - $name\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    append note " - $name $requested_variants\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                foreach change $changes {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    lassign $change field old new
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    append note "   $field changed from '$old' to '$new'\n"
</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>         if {[info exists macports::ui_options(notifications_system)]} {
             $macports::ui_options(notifications_system) $note
         } else {
</pre><pre style='margin:0'>

</pre>