Revision
67109
Author
jmr@macports.org
Date
2010-04-29 00:42:54 -0700 (Thu, 29 Apr 2010)

Log Message

portindex: efficiency improvements, fix -f

Modified Paths

Diff

Modified: trunk/base/src/port/portindex.tcl (67108 => 67109)


--- trunk/base/src/port/portindex.tcl	2010-04-29 07:37:43 UTC (rev 67108)
+++ trunk/base/src/port/portindex.tcl	2010-04-29 07:42:54 UTC (rev 67109)
@@ -38,10 +38,8 @@
 }
 
 proc pindex {portdir} {
-    global target oldfd oldmtime qindex fd directory archive outdir stats full_reindex
-    global macports::prefix ui_options port_options
-    set save_prefix $prefix
-    set prefix {\${prefix}}
+    global target oldfd oldmtime qindex fd directory archive outdir stats full_reindex \
+           ui_options port_options save_prefix keepkeys
 
     # try to reuse the existing entry if it's still valid
     if {$full_reindex != "1" && $archive != "1" && [info exists qindex([string tolower [file tail $portdir]])]} {
@@ -71,6 +69,7 @@
     }
 
     incr stats(total)
+    set prefix {\${prefix}}
     if {[catch {set interp [mportopen file://[file join $directory $portdir] $port_options]} result]} {
         puts stderr "Failed to parse file $portdir/Portfile: $result"
         # revert the prefix.
@@ -101,9 +100,8 @@
             }
         }
 
-        set keepkeys {categories depends_fetch depends_extract depends_build depends_lib depends_run description epoch homepage long_description maintainers name platforms revision variants version portdir portarchive replaced_by license}
         foreach availkey [array names portinfo] {
-            if {[lsearch -exact ${keepkeys} $availkey] == -1} {
+            if {![info exists keepkeys($availkey)]} {
                 unset portinfo($availkey)
             }
         }
@@ -138,7 +136,7 @@
                 set os_arch [lindex $platlist 2]
                 lappend port_options os.platform $os_platform os.major $os_major os.arch $os_arch
             } elseif {$arg == "-f"} { # Completely rebuild index
-                set full_reindex yes
+                set full_reindex 1
             } else {
                 puts stderr "Unknown option: $arg"
                 print_usage
@@ -202,6 +200,13 @@
 
 set tempportindex [mktemp "/tmp/mports.portindex.XXXXXXXX"]
 set fd [open $tempportindex w]
+set save_prefix ${macports::prefix}
+foreach key {categories depends_fetch depends_extract depends_build \
+             depends_lib depends_run description epoch homepage \
+             long_description maintainers name platforms revision variants \
+             version portdir portarchive replaced_by license} {
+    set keepkeys($key) 1
+}
 mporttraverse pindex $directory
 if {[info exists oldfd]} {
     close $oldfd