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