[35790] trunk/base/src/port1.0/portutil.tcl
raimue at macports.org
raimue at macports.org
Sun Apr 6 12:00:50 PDT 2008
Revision: 35790
http://trac.macosforge.org/projects/macports/changeset/35790
Author: raimue at macports.org
Date: 2008-04-06 12:00:49 -0700 (Sun, 06 Apr 2008)
Log Message:
-----------
port1.0/portutil.tcl:
Avoid parsing Portfiles multiple times in recursive_collect_deps.
This makes tracemode a lot faster if there are many deps.
Modified Paths:
--------------
trunk/base/src/port1.0/portutil.tcl
Modified: trunk/base/src/port1.0/portutil.tcl
===================================================================
--- trunk/base/src/port1.0/portutil.tcl 2008-04-06 18:00:59 UTC (rev 35789)
+++ trunk/base/src/port1.0/portutil.tcl 2008-04-06 19:00:49 UTC (rev 35790)
@@ -1227,13 +1227,10 @@
set portlist $depsPorts
foreach depName $depsPorts {
- set portlist [concat $portlist [recursive_collect_deps $depName $deptypes]]
+ set portlist [recursive_collect_deps $depName $deptypes $portlist]
}
- #uniquer from http://aspn.activestate.com/ASPN/Cookbook/Tcl/Recipe/147663
- array set a [split "[join $portlist {::}]:" {:}]
- set depsPorts [array names a]
- if {[llength $deptypes] > 0} {tracelib setdeps $depsPorts}
+ if {[llength $deptypes] > 0} {tracelib setdeps $portlist}
}
}
@@ -1305,9 +1302,8 @@
return $result
}
-# recursive found depends for portname
-# It isn't ideal, because it scan many ports multiple time
-proc recursive_collect_deps {portname deptypes} \
+# recursive dependency search for portname
+proc recursive_collect_deps {portname deptypes {depsfound {}}} \
{
set res [mport_search ^$portname\$]
if {[llength $res] < 2} \
@@ -1325,13 +1321,15 @@
set depends [concat $depends $portinfo($deptype)]
}
}
-
- set portdeps {}
+
+ set portdeps $depsfound
foreach depspec $depends \
{
set portname [lindex [split $depspec :] end]
- lappend portdeps $portname
- set portdeps [concat $portdeps [recursive_collect_deps $portname $deptypes]]
+ if {[lsearch -exact $portdeps $portname] == -1} {
+ lappend portdeps $portname
+ set portdeps [recursive_collect_deps $portname $deptypes $portdeps]
+ }
}
return $portdeps
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macports-changes/attachments/20080406/1f963439/attachment.html
More information about the macports-changes
mailing list