On 2017-7-27 08:40 , Umesh Singla wrote:
On Sat, Jul 22, 2017 at 7:26 AM, Joshua Root <j...@macports.org <mailto:j...@macports.org>> wrote:

    On 2017-7-21 08:22 , Umesh Singla wrote:

        For now, I'd like to ask in what order does "registry::entry
        imaged" returns the port list? Because I'm running the sorting
        function which the restore_ports.tcl uses but it's giving me the
        ports in the same order as result.


    Probably just ordered by rowid, i.e. might as well be random. Note
    that the sort_ports proc from restore_ports.tcl does not take a list
    of registry references like registry::entry returns, but a list of
    strings representing port names, versions and variants in the format
    generated by 'port installed'.


I have a question, might be stupid but seems to confuse me for more than the required time. Does the order of ports (in a portlist) followed while uninstalling all of them be same as while installing them? I'm trying to imagine a tree-based structure here but not quite getting the picture.

I mean, does the order even matter when we want to uninstall of them?

The order to follow when uninstalling is the reverse of the order used when installing, i.e. dependents-first rather than dependencies-first. Order does matter because we check whether a port has dependents when uninstalling and raise an error if so. You can set a flag to ignore this check, but warnings will still be printed, so it's better just to do it in the right order.

Technically the structure of the dependency relationships of a set of ports is a directed acyclic graph, not a tree. A DAG can be topologically sorted, which is a bit like flattening a tree. When you're dealing with a set of ports that don't all necessarily have dependencies in common, only a partial ordering can be established, and that's what you see in the sorting done by portlist_sortdependents in port.tcl (each port comes earlier in the list than all its dependencies) and sort_ports in restore_ports.tcl (each port is later in the list than all its dependencies).

- Josh

Reply via email to