[47756] trunk/base/src/macports1.0/macports.tcl
jmr at macports.org
jmr at macports.org
Thu Mar 5 07:24:51 PST 2009
Revision: 47756
http://trac.macports.org/changeset/47756
Author: jmr at macports.org
Date: 2009-03-05 07:24:46 -0800 (Thu, 05 Mar 2009)
Log Message:
-----------
upgrade: split upgrading dependencies into a separate proc, and use it to make sure that before new ports are installed during upgrade, their dependencies are upgraded.
Modified Paths:
--------------
trunk/base/src/macports1.0/macports.tcl
Modified: trunk/base/src/macports1.0/macports.tcl
===================================================================
--- trunk/base/src/macports1.0/macports.tcl 2009-03-05 12:52:16 UTC (rev 47755)
+++ trunk/base/src/macports1.0/macports.tcl 2009-03-05 15:24:46 UTC (rev 47756)
@@ -2270,7 +2270,9 @@
set portwasopened 1
if {![_mportispresent $workername $dspec ] } {
- # port in not installed - install it!
+ # upgrade its dependencies first
+ _upgrade_dependencies portinfo depscache globalvarlist variationslist options
+ # now install it
if {[catch {set result [mportexec $workername install]} result]} {
global errorInfo
ui_debug "$errorInfo"
@@ -2452,17 +2454,7 @@
set saved_do_dependents [info exists options(ports_do_dependents)]
unset -nocomplain options(ports_do_dependents)
- # each dep type is upgraded
- foreach dtype {depends_build depends_lib depends_run} {
- if {[info exists portinfo($dtype)]} {
- foreach i $portinfo($dtype) {
- set d [lindex [split $i :] end]
- if {![llength [array get depscache port:${d}]] && ![llength [array get depscache $i]]} {
- upgrade $d $i $globalvarlist $variationslist [array get options] depscache
- }
- }
- }
- }
+ _upgrade_dependencies portinfo depscache globalvarlist variationslist options
# restore dependent-following to its former value
if {$saved_do_dependents} {
@@ -2600,6 +2592,27 @@
mportclose $workername
}
+# upgrade_dependencies: helper proc for upgrade
+# Calls upgrade on each dependency listed in the PortInfo.
+# Uses upvar to access the variables.
+proc macports::_upgrade_dependencies {portinfoname depscachename globalvarlistname variationslistname optionsname} {
+ upvar $portinfoname portinfo $depscachename depscache \
+ $globalvarlistname globalvarlist $variationslistname variationslist \
+ $optionsname options
+
+ # each dep type is upgraded
+ foreach dtype {depends_build depends_lib depends_run} {
+ if {[info exists portinfo($dtype)]} {
+ foreach i $portinfo($dtype) {
+ set d [lindex [split $i :] end]
+ if {![llength [array get depscache port:${d}]] && ![llength [array get depscache $i]]} {
+ upgrade $d $i $globalvarlist $variationslist [array get options] depscache
+ }
+ }
+ }
+ }
+}
+
# mportselect
# * command: The only valid commands are list, set and show
# * group: This argument should correspond to a directory under
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20090305/9ccf51fd/attachment.html>
More information about the macports-changes
mailing list