[51133] trunk/base/src

jmr at macports.org jmr at macports.org
Mon May 18 17:54:46 PDT 2009


Revision: 51133
          http://trac.macports.org/changeset/51133
Author:   jmr at macports.org
Date:     2009-05-18 17:54:45 -0700 (Mon, 18 May 2009)
Log Message:
-----------
implement registry::close_file_map, use correctly (fixes #16246), also use register_bulk_files in an appropriate place

Modified Paths:
--------------
    trunk/base/src/pextlib1.0/tracelib.c
    trunk/base/src/port/port.tcl
    trunk/base/src/registry1.0/portimage.tcl
    trunk/base/src/registry1.0/receipt_flat.tcl
    trunk/base/src/registry1.0/registry.tcl

Modified: trunk/base/src/pextlib1.0/tracelib.c
===================================================================
--- trunk/base/src/pextlib1.0/tracelib.c	2009-05-18 23:53:42 UTC (rev 51132)
+++ trunk/base/src/pextlib1.0/tracelib.c	2009-05-19 00:54:45 UTC (rev 51133)
@@ -465,7 +465,7 @@
 	return TCL_OK;
 }
 
-static int TracelibCleanCmd(Tcl_Interp * interp UNUSED)
+static int TracelibCleanCmd(Tcl_Interp * interp)
 {
 	#define safe_free(x) do{free(x); x=0;}while(0);
 	cleanuping=1;
@@ -489,6 +489,7 @@
 	enable_fence=0;
 	#undef safe_free
 	cleanuping=0;
+	Tcl_Eval(interp, "registry::close_file_map");
 	return TCL_OK;
 }
 

Modified: trunk/base/src/port/port.tcl
===================================================================
--- trunk/base/src/port/port.tcl	2009-05-18 23:53:42 UTC (rev 51132)
+++ trunk/base/src/port/port.tcl	2009-05-19 00:54:45 UTC (rev 51133)
@@ -1804,6 +1804,7 @@
             puts "$file does not exist."
         }
     }
+    registry::close_file_map
     
     return 0
 }
@@ -2316,6 +2317,7 @@
             }
         }
     }
+    registry::close_file_map
 
     return $status
 }

Modified: trunk/base/src/registry1.0/portimage.tcl
===================================================================
--- trunk/base/src/registry1.0/portimage.tcl	2009-05-18 23:53:42 UTC (rev 51132)
+++ trunk/base/src/registry1.0/portimage.tcl	2009-05-19 00:54:45 UTC (rev 51133)
@@ -130,11 +130,7 @@
 
 	registry::write_entry $ref
 
-	registry::open_file_map
-	foreach file $imagefiles {
-		registry::register_file $file $name
-	}
-	registry::write_file_map
+	registry::register_bulk_files $imagefiles $name
 }
 
 proc deactivate {name v optionslist} {
@@ -185,15 +181,16 @@
 
 	set imagedir [registry::property_retrieve $ref imagedir]
 
+	registry::open_file_map
 	set imagefiles [registry::port_registered $name]
 
 	_deactivate_contents $name $imagefiles
 
-	registry::open_file_map
 	foreach file $imagefiles {
 		registry::unregister_file $file
 	}
 	registry::write_file_map
+	registry::close_file_map
 	
 	registry::property_store $ref active 0
 
@@ -380,6 +377,7 @@
 		lappend files $file
 	}
 	registry::write_file_map
+	registry::close_file_map
 
 	# Sort the list in forward order, removing duplicates.
 	# Since the list is sorted in forward order, we're sure that directories

Modified: trunk/base/src/registry1.0/receipt_flat.tcl
===================================================================
--- trunk/base/src/registry1.0/receipt_flat.tcl	2009-05-18 23:53:42 UTC (rev 51132)
+++ trunk/base/src/registry1.0/receipt_flat.tcl	2009-05-19 00:54:45 UTC (rev 51133)
@@ -296,6 +296,7 @@
 
 	# Save the file_map afterwards
 	write_file_map
+	close_file_map
 	
 	# Save the entry to new format.
 	write_entry $ref $name $version $revision $variants
@@ -723,6 +724,19 @@
 	return 1
 }
 
+##
+# close the file map.
+# important to do this so the lock is released.
+# do not do anything if the file map wasn't open.
+#
+proc close_file_map {args} {
+	variable file_map
+
+	if { [info exists file_map] } {
+		filemap close file_map
+	}
+}
+
 # Dependency Map Code
 proc open_dep_map {args} {
 	global macports::registry.path

Modified: trunk/base/src/registry1.0/registry.tcl
===================================================================
--- trunk/base/src/registry1.0/registry.tcl	2009-05-18 23:53:42 UTC (rev 51132)
+++ trunk/base/src/registry1.0/registry.tcl	2009-05-19 00:54:45 UTC (rev 51133)
@@ -261,6 +261,7 @@
 	open_file_map
         set r [${macports::registry.format}::register_bulk_files $files $port]
 	write_file_map
+	close_file_map
 	return $r
 }
 
@@ -274,6 +275,11 @@
 	return [${macports::registry.format}::write_file_map $args]
 }
 
+proc close_file_map {args} {
+	global macports::registry.format
+	return [${macports::registry.format}::close_file_map $args]
+}
+
 # Dependency Map Code
 proc register_dependencies {deps name} {
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20090518/582e1996/attachment-0001.html>


More information about the macports-changes mailing list