[67096] trunk/base/src/registry2.0/portimage.tcl
jmr at macports.org
jmr at macports.org
Wed Apr 28 19:54:19 PDT 2010
Revision: 67096
http://trac.macports.org/changeset/67096
Author: jmr at macports.org
Date: 2010-04-28 19:54:14 -0700 (Wed, 28 Apr 2010)
Log Message:
-----------
roll back the right set of files when activation fails
Modified Paths:
--------------
trunk/base/src/registry2.0/portimage.tcl
Modified: trunk/base/src/registry2.0/portimage.tcl
===================================================================
--- trunk/base/src/registry2.0/portimage.tcl 2010-04-29 00:47:49 UTC (rev 67095)
+++ trunk/base/src/registry2.0/portimage.tcl 2010-04-29 02:54:14 UTC (rev 67096)
@@ -267,7 +267,7 @@
registry::check_dependents $requested $force
}
- _deactivate_contents $requested {} $force
+ _deactivate_contents $requested [$requested files] $force
$requested state imaged
} else {
set ref [registry::open_entry $name $version $revision $variants]
@@ -521,6 +521,7 @@
# We don't have to do this as mentioned above, but it makes the
# debug output of activate make more sense.
set theList [lsort -increasing -unique $files]
+ set rollback_filelist {}
registry::write {
# Activate it, and catch errors so we can roll-back
@@ -528,6 +529,7 @@
$port activate $imagefiles
foreach file $theList {
_activate_file "${imagedir}${file}" $file
+ lappend rollback_filelist $file
}
} catch {*} {
ui_debug "Activation failed, rolling back."
@@ -539,7 +541,7 @@
} catch {*} {
# roll back activation of this port
if {[info exists deactivate_this]} {
- _deactivate_contents $port {} yes
+ _deactivate_contents $port $rollback_filelist yes yes
}
# if any errors occurred, move backed-up files back to their original
# locations, then rethrow the error. Transaction rollback will take care
@@ -632,13 +634,15 @@
# We don't have to do this as mentioned above, but it makes the
# debug output of activate make more sense.
set theList [lsort -increasing -unique $files]
+ set rollback_filelist {}
# Activate it, and catch errors so we can roll-back
if { [catch { foreach file $theList {
_activate_file "${imagedir}${file}" $file
+ lappend rollback_filelist $file
}} result]} {
ui_debug "Activation failed, rolling back."
- _deactivate_contents $name $imagefiles
+ _deactivate_contents $name $rollback_filelist yes yes
# return backed up files to their old locations
foreach f $backups {
set bakfile "${f}${baksuffix}"
@@ -680,12 +684,9 @@
}
}
-proc _deactivate_contents {port imagefiles {force 0}} {
+proc _deactivate_contents {port imagefiles {force 0} {rollback 0}} {
variable use_reg2
set files [list]
- if {$use_reg2} {
- set imagefiles [$port files]
- }
foreach file $imagefiles {
if { [file exists $file] || (![catch {file type $file}] && [file type $file] == "link") } {
@@ -719,7 +720,7 @@
set theList [lsort -decreasing -unique $files]
# Remove all elements.
- if {$use_reg2} {
+ if {$use_reg2 && !$rollback} {
registry::write {
$port deactivate $imagefiles
foreach file $theList {
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20100428/f32aaf11/attachment.html>
More information about the macports-changes
mailing list