[37442] trunk/base/src/macports1.0/macports.tcl
jmr at macports.org
jmr at macports.org
Sat Jun 7 16:28:21 PDT 2008
Revision: 37442
http://trac.macosforge.org/projects/macports/changeset/37442
Author: jmr at macports.org
Date: 2008-06-07 16:28:20 -0700 (Sat, 07 Jun 2008)
Log 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.
Modified Paths:
--------------
trunk/base/src/macports1.0/macports.tcl
Modified: trunk/base/src/macports1.0/macports.tcl
===================================================================
--- trunk/base/src/macports1.0/macports.tcl 2008-06-07 23:06:23 UTC (rev 37441)
+++ trunk/base/src/macports1.0/macports.tcl 2008-06-07 23:28:20 UTC (rev 37442)
@@ -2143,15 +2143,21 @@
}
# uninstall old ports
- if {[info exists options(port_uninstall_old)] || $epoch_override == 1 || [info exists options(ports_force)] || 0 != [string compare "image" ${macports::registry.installtype}] } {
+ if { $epoch_override == 1 || [info exists options(ports_force)] || 0 != [string compare "image" ${macports::registry.installtype}] } {
# uninstall old
ui_debug "Uninstalling $iname ${version_installed}_$revision_installed$oldvariant"
- if {[catch {portuninstall::uninstall $iname ${version_installed}_$revision_installed$oldvariant $optionslist} result]} {
+ # we have to force the uninstall in case of dependents
+ set force_cur [info exists options(ports_force)]
+ set options(ports_force) yes
+ if {[catch {portuninstall::uninstall $iname ${version_installed}_$revision_installed$oldvariant [array get options]} result]} {
global errorInfo
ui_debug "$errorInfo"
ui_error "Uninstall $iname ${version_installed}_$revision_installed$oldvariant failed: $result"
return 1
}
+ if {!$force_cur} {
+ unset options(ports_force)
+ }
} else {
# XXX deactivate version_installed
if {[catch {portimage::deactivate $iname ${version_installed}_$revision_installed$oldvariant $optionslist} result]} {
@@ -2160,6 +2166,11 @@
ui_error "Deactivating $iname ${version_installed}_$revision_installed failed: $result"
return 1
}
+ if { [info exists options(port_uninstall_old)] } {
+ # uninstalling now could fail due to dependents when not forced,
+ # because the new version is not installed
+ set uninstall_later yes
+ }
}
if {[catch {set result [mportexec $workername install]} result]} {
@@ -2168,6 +2179,16 @@
ui_error "Couldn't activate $portname ${version_in_tree}_$revision_in_tree$oldvariant: $result"
return 1
}
+
+ if { [info exists uninstall_later] && $uninstall_later == yes } {
+ ui_debug "Uninstalling $iname ${version_installed}_$revision_installed$oldvariant"
+ if {[catch {portuninstall::uninstall $iname ${version_installed}_$revision_installed$oldvariant $optionslist} result]} {
+ global errorInfo
+ ui_debug "$errorInfo"
+ ui_error "Uninstall $iname ${version_installed}_$revision_installed$oldvariant failed: $result"
+ return 1
+ }
+ }
# Check if we have to do dependents
if {[info exists options(ports_do_dependents)]} {
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macports-changes/attachments/20080607/8d869cf3/attachment.htm
More information about the macports-changes
mailing list