New Ticket     Tickets     Wiki     Browse Source     Timeline     Roadmap     Ticket Reports     Search

Changeset 81265


Ignore:
Timestamp:
07/28/11 06:18:42 (4 years ago)
Author:
cal@…
Message:

rev-upgrade: Use entry objects rather than port names for topsort

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/gsoc11-rev-upgrade/base/src/macports1.0/macports.tcl

    r81260 r81265  
    38443844        set broken_files [lsort -unique $broken_files] 
    38453845        foreach file $broken_files { 
    3846             set port [registry::file_registered $file] 
    3847             if {$port == 0} { 
     3846            set port [registry::entry owner $file] 
     3847            if {$port == ""} { 
    38483848                ui_error "Broken file `$file' doesn't belong to any port." 
    38493849            } 
     
    38823882                    lappend topsort_ports $port 
    38833883                    # remove from unsorted list 
     3884                    # TODO: use lremove(n) 
    38843885                    set index [lsearch $unsorted_ports $port] 
    38853886                    set unsorted_ports [concat [lrange $unsorted_ports 0 $index-1] [lrange $unsorted_ports $index+1 end]] 
     
    38943895        } 
    38953896 
    3896         ui_msg "---> Rebuilding in order: $topsort_ports" 
     3897        ui_msg "---> Rebuilding in order" 
     3898        foreach port $topsort_ports { 
     3899            ui_msg "     [$port name] @[$port version] [$port variants][$port negated_variants]" 
     3900        } 
    38973901    } 
    38983902 
     
    39063910    upvar $visitedname visited 
    39073911 
    3908     ui_debug "Processing port $port" 
    3909     set dependent_ports [get_dependent_ports $port false] 
     3912    ui_debug "Processing port [$port name] @[$port epoch]:[$port version]_[$port revision] [$port variants] [$port negated_variants]" 
     3913    set dependent_ports [$port dependents] 
    39103914    foreach dep $dependent_ports { 
    3911         array set deparray $dep 
    3912         set depname $deparray(name) 
    3913  
    3914         if {[info exists visited($depname)]} { 
     3915        if {[info exists visited($dep)]} { 
    39153916            continue 
    39163917        } 
    3917         set visited($depname) true 
     3918        set visited($dep) true 
    39183919        set is_broken_port false 
    39193920 
    3920         if {[info exists adjlist($depname)]} { 
    3921             ui_debug "Dependency $depname is broken, adding edge from [lindex $stack 0] to $depname" 
    3922             ui_debug "Making $depname new head of stack" 
     3921        if {[info exists adjlist($dep)]} { 
     3922            ui_debug "Dependency [$dep name] is broken, adding edge from [[lindex $stack 0] name] to [$dep name]" 
     3923            ui_debug "Making [$dep name] new head of stack" 
    39233924            # $dep is one of the broken ports 
    39243925            # add an edge to the last broken port in the DFS 
    3925             lappend adjlist([lindex $stack 0]) $depname 
    3926             lappend revadjlist($depname) [lindex $stack 0] 
     3926            lappend revadjlist([lindex $stack 0]) $dep 
     3927            lappend adjlist($dep) [lindex $stack 0] 
    39273928            # make this port the new last broken port by prepending it to the stack 
    3928             set stack [linsert last_visited 0 $depname] 
     3929            set stack [linsert $stack 0 $dep] 
    39293930             
    39303931            set is_broken_port true 
    39313932        } 
    3932         revupgrade_buildgraph $depname stack adjlist revadjlist visited 
     3933        revupgrade_buildgraph $dep stack adjlist revadjlist visited 
    39333934        if {$is_broken_port} { 
    3934             ui_debug "Removing $depname from stack" 
     3935            ui_debug "Removing [$dep name] from stack" 
    39353936            # remove $dep from the stack 
    39363937            set stack [lrange $stack 1 end] 
Note: See TracChangeset for help on using the changeset viewer.