<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/288b1044a3ed6ce7dceb264d1f9d47d9f52be129">https://github.com/macports/macports-base/commit/288b1044a3ed6ce7dceb264d1f9d47d9f52be129</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 288b1044a3ed6ce7dceb264d1f9d47d9f52be129
</span>Author: Umesh Singla <umeshksingla@macports.org>
AuthorDate: Sun Aug 6 03:08:36 2017 +0530

<span style='display:block; white-space:pre;color:#404040;'>    fetching snapshot procedure in progress
</span>---
 src/cregistry/entry.c        | 17 +++++++++++++++++
 src/cregistry/entry.h        |  3 +++
 src/macports1.0/migrate.tcl  |  7 ++++---
 src/macports1.0/snapshot.tcl | 12 ++++++++----
 src/registry2.0/entry.c      | 32 +++++++++++++++++++++++++++++---
 5 files changed, 61 insertions(+), 10 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/cregistry/entry.c b/src/cregistry/entry.c
</span><span style='display:block; white-space:pre;color:#808080;'>index 092a46e..761f240 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/cregistry/entry.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/cregistry/entry.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1532,6 +1532,23 @@ int get_parsed_variants(char* variants_str, variant* all_variants, char* delim,
</span>     return 0;
 }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+char* reg_snapshot_get_id(reg_registry* reg, char* id, reg_error* errPtr) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    printf("inside cregistry get snapshot..\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    sqlite3_stmt* stmt = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    reg_entry* entry = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    char* query = "SELECT id FROM registry.snapshots ORDER BY id DESC LIMIT 1";
</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;'>+snapshot* reg_snapshot_get(reg_registry* reg, char* id, reg_error* errPtr) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    printf("inside cregistry get snapshot..\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    sqlite3_stmt* stmt = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    reg_entry* entry = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    char* query = "SELECT id FROM registry.snapshots ORDER BY id DESC LIMIT 1";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> /**
  * Fetches a list of all open entries.
  *
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/cregistry/entry.h b/src/cregistry/entry.h
</span><span style='display:block; white-space:pre;color:#808080;'>index 7de38e5..d27dd60 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/cregistry/entry.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/cregistry/entry.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -109,6 +109,9 @@ int snapshot_store_port_variants(reg_registry* reg, reg_entry* port_entry,
</span> int get_parsed_variants(char* variants_str, variant* all_variants,
     char* delim, int* variant_count);
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+char* reg_snapshot_get_id(reg_registry* reg, reg_error* errPtr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+snapshot* reg_snapshot_get(reg_registry* reg, char* id, reg_error* errPtr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> int reg_all_open_entries(reg_registry* reg, reg_entry*** entries);
 
 #endif /* _CENTRY_H */
<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 3705427..2086441 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;'>@@ -79,7 +79,6 @@ namespace eval migrate {
</span> 
         #uninstall_installed $portlist
         return 0
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        # sort_ports $portlist
</span>         # recover_ports_state $portlist
 
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -93,9 +92,11 @@ namespace eval migrate {
</span> 
     proc fetch_latest_snapshot {} {
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+        return
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>     }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    proc dependenciesForPort {portName variantInfo} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    proc port_dependencies {portName variantInfo} {
</span> 
         set dependencyList [list]
         set portSearchResult [mportlookup $portName]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -145,7 +146,7 @@ namespace eval migrate {
</span>             }
 
             if {![info exists port_deps(${name},${variants})]} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                set port_deps(${name},${variants}) [dependenciesForPort $name $variants]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set port_deps(${name},${variants}) [port_dependencies $name $variants]
</span>             }
 
             #puts "$port_deps(${name},$variants)"
<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 581bbce..981fef5 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;'>@@ -42,10 +42,14 @@ namespace eval snapshot {
</span>             puts $port
         }
         puts
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        set snapshot [registry::entry snapshot "test snapshot"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set snapshot [registry::entry create_snapshot "test snapshot"]
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        return snapshot
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        puts $snapshot
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        puts [$snapshot name]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        puts [$snapshot created_at]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span> 
     proc all_snapshots {opts} {
         # List the snapshots
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -55,6 +59,6 @@ namespace eval snapshot {
</span> 
     proc latest_snapshot {opts} {
         # Get the latest snapshot
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        puts "latest"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return [registry::entry get_snapshot]
</span>     }
 }
\ No newline at end of file
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/registry2.0/entry.c b/src/registry2.0/entry.c
</span><span style='display:block; white-space:pre;color:#808080;'>index cd6fc56..ba252f1 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/registry2.0/entry.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/registry2.0/entry.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -467,13 +467,13 @@ static int entry_owner(Tcl_Interp* interp, int objc, Tcl_Obj* CONST objv[]) {
</span>     }
 }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-static int snapshot_create(Tcl_Interp* interp, int objc, Tcl_Obj* CONST objv[]) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+static int create_snapshot(Tcl_Interp* interp, int objc, Tcl_Obj* CONST objv[]) {
</span> 
     printf("inside 2.0 entry\n");
 
     reg_registry* reg = registry_for(interp, reg_attached);
     if (objc > 3) {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        Tcl_WrongNumArgs(interp, 2, objv, "snapshot ?note?");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        Tcl_WrongNumArgs(interp, 2, objv, "create_snapshot ?note?");
</span>         return TCL_ERROR;
     } else if (reg == NULL) {
         return TCL_ERROR;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -493,6 +493,31 @@ static int snapshot_create(Tcl_Interp* interp, int objc, Tcl_Obj* CONST objv[])
</span>     }
 }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+static int get_snapshot(Tcl_Interp* interp, int objc, Tcl_Obj* CONST objv[]) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    printf("getting snapshot\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    reg_registry* reg = registry_for(interp, reg_attached);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if (objc > 3) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        Tcl_WrongNumArgs(interp, 2, objv, "get_snapshot ?snapshot_id?");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    } else if (reg == NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        char* id = Tcl_GetString(objv[2]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        reg_error error;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        snapshot* snapshot = reg_snapshot_get(reg, id, &error);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if (snapshot != NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            Tcl_Obj* result;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if (entry_to_obj(interp, &result, snapshot, NULL, &error)) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                Tcl_SetObjResult(interp, result);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                return TCL_OK;
</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;'>+        return registry_failed(interp, &error);
</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> typedef struct {
     char* name;
     int (*function)(Tcl_Interp* interp, int objc, Tcl_Obj* CONST objv[]);
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -509,7 +534,8 @@ static entry_cmd_type entry_cmds[] = {
</span>     { "imaged", entry_imaged },
     { "installed", entry_installed },
     { "owner", entry_owner },
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    { "snapshot", snapshot_create},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    { "create_snapshot", create_snapshot},
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    { "get_snapshot", get_snapshot},
</span>     { NULL, NULL }
 };
 
</pre><pre style='margin:0'>

</pre>