<pre style='margin:0'>
Umesh Singla (umeshksingla) pushed a commit to branch gsoc17-migrate
in repository macports-base.
</pre>
<p><a href="https://github.com/macports/macports-base/commit/d2ae305422742cb11cb12830c342971e944d3c28">https://github.com/macports/macports-base/commit/d2ae305422742cb11cb12830c342971e944d3c28</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit d2ae305422742cb11cb12830c342971e944d3c28
</span>Author: Umesh Singla <umeshksingla@macports.org>
AuthorDate: Sun Sep 3 00:08:57 2017 +0530
<span style='display:block; white-space:pre;color:#404040;'> Add a port command check before restoring
</span>---
src/macports1.0/macports.tcl | 6 ++----
src/macports1.0/migrate.tcl | 4 ++--
src/macports1.0/restore.tcl | 20 ++++++++++++++++++++
src/macports1.0/snapshot.tcl | 3 ++-
src/port/port.tcl | 15 ++++++---------
5 files changed, 32 insertions(+), 16 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 81f3422..2528c18 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;'>@@ -4418,8 +4418,7 @@ proc macports::snapshot_main {opts} {
</span> # Returns:
# 0 on successful execution.
<span style='display:block; white-space:pre;background:#ffe0e0;'>- snapshot::main $opts
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return [snapshot::main $opts]
</span> }
# restores a snapshot.
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -4432,8 +4431,7 @@ proc macports::restore_main {opts} {
</span> # Returns:
# 0 on successful execution.
<span style='display:block; white-space:pre;background:#ffe0e0;'>- restore::main $opts
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return [restore::main $opts]
</span> }
proc macports::migrate_main {opts} {
<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 e99bb60..df331a6 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;'>@@ -55,7 +55,7 @@ namespace eval migrate {
</span> ui_msg "Done: snapshot '$id':'$note' created at $datetime"
if {[info exists macports::ui_options(questions_yesno)]} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set msg "Migration will first uninstall all the installed ports and then reinstall."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set msg "Migration will first uninstall all the installed ports, upgrade MacPorts and then reinstall them again."
</span> set retvalue [$macports::ui_options(questions_yesno) $msg "MigrationPrompt" "" {y} 0 "Would you like to continue?"]
if {$retvalue == 1} {
# quit as user answered 'no'
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -67,7 +67,7 @@ namespace eval migrate {
</span> ui_msg "Uninstalling all ports.."
uninstall_installed [registry::entry imaged]
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ui_msg "Upgrading macports.."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_msg "Upgrading MacPorts.."
</span> upgrade_port_command
ui_msg "Fetching ports to install.."
<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 fd58c1e..ad63b49 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;'>@@ -54,6 +54,10 @@ namespace eval restore {
</span> }
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {![check_port_command]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return -code error "OS platform mismatch"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> ui_msg ":: Deactivating all ports installed.."
deactivate_all
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -61,6 +65,22 @@ namespace eval restore {
</span> restore_state [$snapshot ports]
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ proc check_port_command {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global tcl_platform
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set os_version $tcl_platform(osVersion)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set os_major [lindex [split $os_version .] 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set os_platform [string tolower $tcl_platform(os)]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Check that the current pla tform is the one we were configured for, otherwise need to do migration
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {($os_platform ne $macports::autoconf::os_platform) || ($os_major != $macports::autoconf::os_major)} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "Current platform \"$os_platform $os_major\" does not match expected platform \"$macports::autoconf::os_platform $macports::autoconf::os_major\""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_error "If you upgraded your OS or changed the hardware architecture, you need to run 'port migrate' instead."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> proc fetch_snapshot {snapshot_id} {
return [registry::snapshot get_by_id $snapshot_id]
}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/macports1.0/snapshot.tcl b/src/macports1.0/snapshot.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 704d82c..2dad420 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/macports1.0/snapshot.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/macports1.0/snapshot.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -35,7 +35,7 @@ package require registry 1.0
</span>
namespace eval snapshot {
proc main {opts} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # The main function. Handles all the calls to the correct functions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Function to create a snapshot of the current state of ports.
</span> #
# Args:
# opts - The options passed in.
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -52,6 +52,7 @@ namespace eval snapshot {
</span> } else {
set note "snapshot created for migration"
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ # TODO: catch
</span> set snapshot [registry::snapshot create $note]
}
return $snapshot
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port/port.tcl b/src/port/port.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index dbb8201..520516a 100755
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port/port.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port/port.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2802,19 +2802,16 @@ proc action_reclaim { action portlist opts } {
</span>
}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-proc action_snapshot { action portlist opts} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- macports::snapshot_main $opts
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc action_snapshot { action portlist opts } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return [macports::snapshot_main $opts]
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-proc action_restore { action portlist opts} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- macports::restore_main $opts
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc action_restore { action portlist opts } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return [macports::restore_main $opts]
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-proc action_migrate { action portlist opts} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- macports::migrate_main $opts
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc action_migrate { action portlist opts } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return [macports::migrate_main $opts]
</span> }
proc action_upgrade { action portlist opts } {
</pre><pre style='margin:0'>
</pre>