Projects
New Ticket     Wiki     Browse Source     Timeline     Roadmap     Bug Reports     Search

Changeset 37442 for trunk/base/src

Show
Ignore:
Timestamp:
06/07/08 16:28:20 (6 months ago)
Author:
jmr@…
Message:

Make uninstalling the old version of a port during upgrade work without -f,
whether due to -u, epoch override, or being in direct mode.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/base/src/macports1.0/macports.tcl

    r37433 r37442  
    21442144 
    21452145    # uninstall old ports 
    2146     if {[info exists options(port_uninstall_old)] || $epoch_override == 1 || [info exists options(ports_force)] || 0 != [string compare "image" ${macports::registry.installtype}] } { 
     2146    if { $epoch_override == 1 || [info exists options(ports_force)] || 0 != [string compare "image" ${macports::registry.installtype}] } { 
    21472147        # uninstall old 
     2148        ui_debug "Uninstalling $iname ${version_installed}_$revision_installed$oldvariant" 
     2149        # we have to force the uninstall in case of dependents 
     2150        set force_cur [info exists options(ports_force)] 
     2151        set options(ports_force) yes 
     2152        if {[catch {portuninstall::uninstall $iname ${version_installed}_$revision_installed$oldvariant [array get options]} result]} { 
     2153            global errorInfo 
     2154            ui_debug "$errorInfo" 
     2155            ui_error "Uninstall $iname ${version_installed}_$revision_installed$oldvariant failed: $result" 
     2156            return 1 
     2157        } 
     2158        if {!$force_cur} { 
     2159            unset options(ports_force) 
     2160        } 
     2161    } else { 
     2162        # XXX deactivate version_installed 
     2163        if {[catch {portimage::deactivate $iname ${version_installed}_$revision_installed$oldvariant $optionslist} result]} { 
     2164            global errorInfo 
     2165            ui_debug "$errorInfo" 
     2166            ui_error "Deactivating $iname ${version_installed}_$revision_installed failed: $result" 
     2167            return 1 
     2168        } 
     2169        if { [info exists options(port_uninstall_old)] } { 
     2170            # uninstalling now could fail due to dependents when not forced, 
     2171            # because the new version is not installed 
     2172            set uninstall_later yes 
     2173        } 
     2174    } 
     2175 
     2176    if {[catch {set result [mportexec $workername install]} result]} { 
     2177        global errorInfo 
     2178        ui_debug "$errorInfo" 
     2179        ui_error "Couldn't activate $portname ${version_in_tree}_$revision_in_tree$oldvariant: $result" 
     2180        return 1 
     2181    } 
     2182     
     2183    if { [info exists uninstall_later] && $uninstall_later == yes } { 
    21482184        ui_debug "Uninstalling $iname ${version_installed}_$revision_installed$oldvariant" 
    21492185        if {[catch {portuninstall::uninstall $iname ${version_installed}_$revision_installed$oldvariant $optionslist} result]} { 
     
    21532189            return 1 
    21542190        } 
    2155     } else { 
    2156         # XXX deactivate version_installed 
    2157         if {[catch {portimage::deactivate $iname ${version_installed}_$revision_installed$oldvariant $optionslist} result]} { 
    2158             global errorInfo 
    2159             ui_debug "$errorInfo" 
    2160             ui_error "Deactivating $iname ${version_installed}_$revision_installed failed: $result" 
    2161             return 1 
    2162         } 
    2163     } 
    2164  
    2165     if {[catch {set result [mportexec $workername install]} result]} { 
    2166         global errorInfo 
    2167         ui_debug "$errorInfo" 
    2168         ui_error "Couldn't activate $portname ${version_in_tree}_$revision_in_tree$oldvariant: $result" 
    2169         return 1 
    21702191    } 
    21712192