[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