Revision history for Perl extension FreeBSD::Portindex::Port. 1.0 Mon Nov 1 11:23:10 2004 - original version; created by h2xs 1.23 with options -X -A -v 1.0 -n FreeBSD::Portindex::Port 1.1 Fri Nov 5 14:32:00 2004 - Add MAKEFILE_LIST processing: do a cache update for a port when any included Makefile is updated - Add warnings about /etc/make.conf or /usr/ports/Mk/bsd.port.mk being more recently updated than the cache -- time to reinitialise the cache? - Document reasons for doing cache-init rather than cache-update - When run as root, only load the /usr/local/etc/portindex.cfg configuration file. 1.2 Sun Jan 16 13:47:00 2005 - Respect $PORTSDIR, add '-p' or '--ports-dir' option to select PortsDir to cache-update, cache-init and find-updated. Change cache-update's '-p' (propagation delay) to '-P'. Requested by Renato Botelho - Don't emit the cache-update warnings about /etc/make.conf etc. being updated when in quiet mode. - Add '--ubiquitous-makefiles' and '--endemic-makefiles' options: For cache-update, UbiquitousMakefiles contains the list of makefiles to check for updates and suggest that it is time for a new cache-init run. '--endemic-makefiles' is a similar list, but they don't get any timestamp comparision -- the idea being that changes to the endemic makefiles wouldn't affect the final outcome. Neither cache-init or cache-update will record any makefile from these lists in the cache as a trigger for re-checking any port. 1.3 Fri Jan 21 21:55:00 2005 - Fix dumb programming error that stopped cache-update's cvsup-checkouts mode working. 1.4 Sat Feb 19 10:35:00 2005 - Allow cache-updates to process the output from cvsup(1)'s cvs mode, as well as checkout mode. Patch from SANETO Takanori . - Fix a run-away recursion problem reported by Alaine <2a (at) deuza.net> 1.5 Sun Jan 29 13:52:30 - Stop cache-init falling over while processing a category directory with no ports in it yet. Bug reported by Will Wainwright 1.6 Sun Jun 25 15:22:00 2006 - Incorporate local ports/categories into the INDEX by scanning Makefile.local for additions to $SUBDIR. Mentioned on freebsd-ports@freebsd.org by Rong-En Fan - Clean up error messages, and factor out common progress counter code. - Add a new Category object type, and cope better with changes to categories (ie. ports being hooked up / unhooked from the tree). Problem pointed out by Colin Percival - Instead of calling perl to compile exactly the same bit of perl code from /usr/ports/Mk/bsd.ports.mk about 15,000 times (ie once per port) as a consequence of actually running 'make describe', just call perl once, use make to print out the basic variables from the port and replicate the processing done ourselves. 1.7 Tue Jul 18 19:45:00 2006 - Following some useful e-mail discussions with Mark Linimon and Dan Langille, switch to using the MASTER_PORT variable to detect master/slave relationships between ports. MASTER_PORT will be set in every slave port whereas MASTERDIR doesn't have to be. Here a slave port is one defined as using port metadata from some other port, and doesn't have to go as far as requiring both master and slave to use the same Makefile and other ports infrastructure. 1.7 Sat Jul 22 20:13:00 2006 - Keep track of the version of the software used to create the cache, and prompt for a cache rebuild if the software has been upgraded since. A cache rebuild is definitely required for the 1.6 -> 1.7 update. 1.7 Sun Jul 23 10:56:00 2006 - Don't quit on errors parsing make variables at the cache-init or cache-update stage. Print copious error messages, but carry on processing. Entries for ports that fail at this stage will not be created in the cache. 1.8 Sun Sep 17 12:34:00 2006 - In the spirit of always plugging on and generating the best INDEX file possible, catch port errors that lead to dependencies showing some random part of the filesystem as the port to install to fulfil themselves. Instead of falling over, complain bitterly and omit the broken dependency from the output INDEX. 2.0 Thu Jul 19 10:36:00 2007 - Update documentation. Remove references specific to FreeBSD 4.x (should still work on that platform though) - Preliminary work to support OPTIONS processing. Make 'cvsup-output,options' the default input format for cache-update. - new CrunchWhitespace option - new PortsDBDir option - Numerous small changes to make the output more compatible with what make index generates. 2.0 Fri Jul 20 23:09:00 2007 - Finish OPTIONS processing. As a side effect of this, we are storing in the cache a timestamp of the last time the cache entry was updated. This enables a number of other nifty changes: the whole find-updated program can just compare against the cache. cvsup-checkouts mode also. - Internally, cache any port/category object unfrozen from the cache for quick reference later. Remove the '%allports' hash from the top level in portindex as that data is held in the Tree object now. - Internally only the get(), insert() and delete() methods of Tree affect the on disk cache. They also maintain in parallel a hash of live objects for quick reference. - Internally don't iterate over the tied BDB hash by 'each %{ $self->{PORTS} }' -- instead use a foreach loop over 'keys %{ $self->{PORTS} }' and call the get() method to access each port/category object. 2.0 Sat Jul 21 22:37:00 2007 - Tidied up all of the error and warning messages, hopefully making it clearer what is going on. 2.0 Tue Jul 24 22:58:00 2007 - Open the BerkeleyDB environment with DB_INIT_CDB -- which is a pre-canned configuration for multiple concurrent access to a Berkeley DB, as described in file:///usr/local/share/doc/db44/ref/cam/intro.html Requires a complete cache reinit, unfortunately, but should mean it is possible to have multiple processes concurrently updating the same DB file. 2.0 Thu Aug 2 13:16:00 2007 - Back out the multiple concurrent access changes. It didn't provide any speed advantage, and it never managed to create a cache with all required entries unless there was only one worker process. After much experimentation, have concluded the problem area is actually invoking make thousands and thousands of times. 2.0 Sun Aug 5 15:14:00 2007 - Implement our own serialization (freeze, thaw) procedures. Trivial results are that this has reduced the size of the cache to 22MiB (~12% reduction) and removed the code dependency on Storable.pm. More importantly this will help with future efforts at parallelizing the cache building process.