New Ticket     Tickets     Wiki     Browse Source     Timeline     Roadmap     Ticket Reports     Search

Changeset 82947


Ignore:
Timestamp:
08/22/11 07:16:25 (4 years ago)
Author:
jmr@…
Message:

uninstall and deactivate dependents before their dependencies (#8431)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/base/src/port/port.tcl

    r82291 r82947  
    514514} 
    515515 
     516# sort portlist so dependents come before their dependencies 
     517proc portlist_sortdependents { portlist } { 
     518    foreach p $portlist { 
     519        array set pvals $p 
     520        lappend entries($pvals(name)) $p 
     521        if {![info exists dependents($pvals(name))]} { 
     522            set dependents($pvals(name)) {} 
     523            foreach result [registry::list_dependents $pvals(name)] { 
     524                lappend dependents($pvals(name)) [lindex $result 2] 
     525            } 
     526        } 
     527        array unset pvals 
     528    } 
     529    set ret {} 
     530    foreach p $portlist { 
     531        portlist_sortdependents_helper $p entries dependents seen ret 
     532    } 
     533    return $ret 
     534} 
     535 
     536proc portlist_sortdependents_helper {p up_entries up_dependents up_seen up_retlist} { 
     537    upvar $up_seen seen 
     538    if {![info exists seen($p)]} { 
     539        set seen($p) 1 
     540        upvar $up_entries entries $up_dependents dependents $up_retlist retlist 
     541        array set pvals $p 
     542        foreach dependent $dependents($pvals(name)) { 
     543            if {[info exists entries($dependent)]} { 
     544                foreach entry $entries($dependent) { 
     545                    portlist_sortdependents_helper $entry entries dependents seen retlist 
     546                } 
     547            } 
     548        } 
     549        lappend retlist $p 
     550    } 
     551} 
     552 
    516553proc regex_pat_sanitize { s } { 
    517554    set sanitized [regsub -all {[\\(){}+$.^]} $s {\\&}] 
     
    23372374        return 1 
    23382375    } 
     2376    set portlist [portlist_sortdependents $portlist] 
    23392377    foreachport $portlist { 
    23402378        set composite_version [composite_version $portversion [array get variations]] 
     
    28992937        return 1 
    29002938    } 
     2939 
     2940    set portlist [portlist_sortdependents $portlist] 
    29012941 
    29022942    foreachport $portlist { 
Note: See TracChangeset for help on using the changeset viewer.