<div dir="ltr">Hi Brad,<div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 1, 2017 at 12:19 AM, Bradley Giesbrecht <span dir="ltr"><<a href="mailto:pixilla@macports.org">pixilla@macports.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">The evaluation is dependent on the work and effort. We need you to communicate the details of what has been accomplished, what works, doesn’t work and future plans.<br></blockquote><div><br></div><div>Sure.</div><div><br></div><div>Effectively, my project had three course of actions to implement - snapshot, migrate and restore. Out of them, migrate and restore both depended on the snapshot action largely and also, I divided each of these actions into procedures or simpler steps further as you probably know from my previous mails throughout the term. I have the following points to make. I welcome all kinds of comments.</div><div><br></div><div>1. snapshot action is entirely finished for now.</div><div><ul><li>All the Tcl and C functions for creating a snapshot, fetching a snapshot given its id, fetching a list of recent snapshots, fetching properties of a certain snapshot have been finished.</li><li>This required me to create a new entity named reg_snapshot and wrote all the helper functions as well in util.c as were there for entry, file, portgroup etc.</li></ul></div><div>2. restore action is also finished for now.</div><div><ul><li>It takes an optional argument as 'port restore --snapshot-id <id>' if you want to pass in a certain snapshot or without the argument, it lists the snapshots on the console and asks user to select an id and proceeds.</li><li>It first deactivates all the currently active ports and then reproduces the install commands for the selected snaphsot. NOTE that it doesn't uninstall the original ports, as desired for the minimal build.</li><li>But before deactivating, it first sorts the portlist in a way that dependencies come later. </li><li>And also, before installing the selected snapshot, it first sorts the ports from the snapshot in a way that dependencies come first. </li><li>I have used "registry::run_target" directly for doing all this and tried testing by modifying registry.db locally with many of the scenarios I could think of.</li></ul><div>3. migrate action had essentially four steps - a) creating a snapshot, b) uninstall the current ports, c) upgrade port command and d) restore the last snapshot.</div></div><div><ul><li>Out of these 4, creating a snapshot and restoring are simply imported from the respective modules.</li><li>I have finished the procedure for uninstalling the ports, and verified.</li><li>The one task that is left to commit, is to cover, if even possible, all the scenarios where we need to look for upgrading port command, that is, basically check for the change in OS or arch in macports.conf.</li><li>While I have added the most simple checks for it like here [0], there was a wonderful discussion thread on it by Mojca [1] and Clemens [2] yesterday covering many good cases like change of compiler, for one or change in libraries by Apple, for two. This is what I am working on as informed by my last update.</li></ul><div>4. I have added most of the documentation for all the modules, functions and any important steps, listed any minor TODOs in the code itself, added ui_msg statements, cleaned the code etc.</div><div><br></div><div>5. Apart from this, I have been trying to get involved more in the community on the dev mailing list and as Ken pointed out that writing a portfile is not a task too difficult, I have been looking at portfile tutorial as well.</div></div><div><br></div><div>6. Future Plans related to the project:</div><div><ul><li>First, finish the part of migration left.</li><li>Write testcases.</li><li>On mportinit, we should suggest the user to run `port migrate` instead of (or in addition to) the link to migration guide. </li></ul></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Your branch of base does not build for me, is that expected?</blockquote><div><br></div><div>No, it's not expected. It should build. It builds for me locally and almost all the Travis CI builds have been successfully passing for about last 15 days [3]. Here are the Travis build logs from my last commit [4]. Can you tell me the error you're getting?</div><div><br></div><div>I guess, I'll update my blog with this email. Thanks again for asking for updates. I only have these points to make at present, but I'll try to update you with any new developments soon.<br></div></div></div><div class="gmail_extra"><div class="gmail_extra"><br class="gmail-Apple-interchange-newline">Regards,</div><div class="gmail_extra">Umesh Singla</div><div class="gmail_extra"><br></div></div><div class="gmail_extra">[0]: <a href="https://github.com/macports/macports-base/blob/e3a0dc2ebde62a9c5feac6a1edee1708a95bb02a/src/macports1.0/macports.tcl#L651-L656">https://github.com/macports/macports-base/blob/e3a0dc2ebde62a9c5feac6a1edee1708a95bb02a/src/macports1.0/macports.tcl#L651-L656</a></div><div class="gmail_extra">[1]: <a href="https://lists.macports.org/pipermail/macports-dev/2017-August/036323.html">https://lists.macports.org/pipermail/macports-dev/2017-August/036323.html</a></div><div class="gmail_extra">[2]: <a href="https://lists.macports.org/pipermail/macports-dev/2017-August/036311.html">https://lists.macports.org/pipermail/macports-dev/2017-August/036311.html</a></div><div class="gmail_extra">[3]: <a href="https://github.com/macports/macports-base/commits/gsoc17-migrate">https://github.com/macports/macports-base/commits/gsoc17-migrate</a></div><div class="gmail_extra">[4]: <a href="https://travis-ci.org/macports/macports-base/builds/269010852">https://travis-ci.org/macports/macports-base/builds/269010852</a></div></div>