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