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 <renato (at)
          galle.com.br>

        - 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 <sanewo (at) ba2.so-net.ne.jp>.

        - 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 <survive (at) masterrave.com>


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 <rafan (at)
          infor.org>

        - 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 <cperciva (at)
          freebsd.org>

        - 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.

2.1 Mon Apr  7 20:41:00 2008

        - Process 'plain' input analogously to 'cvsup-output' or
          'cvsup-checkouts', plus tweak things so that it can read the
          output of a 'portsnap update' command.

2.2 Sun May  3 19:17:00 2009

        - Switch from ExtUtils::MakeMaker to Module::Install for
	  generating Makefile etc.

2.2 Sun Aug  9 16:30:00 2009

        - Implement a '-L' switch to portindex to generate an
          alternative SHLIBS index

        - Make objects to be serialiazed and stored in the cache all
	  inherit from a generic 'TreeObject' type.

	- RELEASE_2_2

2.3 Sun Mar 19 19:00:00 2011

        - New script 'portdepends' to print out dependency tree
          for a port

        - Update EndemicMakefiles setting

        - RELEASE_2_3

2.4 Sun Aug 27 18:26:00 2011

        - Allow shortening 'portdepends' output.  Printing out the 
          entire graph can result in literally millions of lines of
          output for complicated dependency trees.

	- Bugfix: RUN_DEPENDS column was missing many
          dependencies. Append LIB_DEPENDS to BUILD_DEPENDS and
          RUN_DEPENDS at cache-init / cache-update time, rather than
          while running portindex.  Reported by Doug Barton.

        - Bump VERSION and CACHE_VERSION to 2.4 

2.5 Fri Oct 07 21:00:00 2011

         - Accessor methods for array valued items now mostly return
           arrays rather than array references.  This makes quite a
           lot of code a lot clearer.

         - Add GraphViz output mode to portdepends(1).  Pretty
	   pictures of port dependency trees.

         - Remove TODO file as (a) most of the items were done and (b)
           most recent changes weren't listed in there.

         - Minor docco tweak to portindex reflecting currently
           supported FreeBSD major versions.

         - Bump VERSION and CACHE_VERSION to 2.5

2.6 Wed Oct 26 08:58:52 2011

    	 - Fix test on _chase_deps that object can(PKGNAME) rather
	   than using defined.  This could cause portindex to abort
	   without generating an INDEX.

2.6 Wed Nov 02 21:31:45 2011

    	- Fixup plain input to cache-update so now it should cope
          with any file or directory in the ports tree, and
          directories need not have trailing '/' appended.  Assumes
          two level ports heirarchy.

	- 'use warnings' means '-w' is redundant

	- Documentation improvements

2.6 Sun Nov 06 17:00:08 2011

        - Match WWW: tags in pkg-descr even if they have leading
          whitespace

	- Fix dependency accumulation /again!/

	- Don't bail-out when encountering 'dependency on something
          not a port' -- instead, carry on recursing for all other
          dependencies of that port.

	- Docco improvements suggested by bartsch (at) dssgmbh.de

2.6 Mon Nov 07 15:35:27 2011

        - Make the %Config array a package global in
          FreeBSD::Portindex::Config, and export it from there as
          required.  No need to say '$::Config{FooBar}' in
          .portindexrc (although that still worlks).  Plain
          $Config{FooBar} now preferred.

	- Improved handling of some port errors.  Setting
          eg. JAVA_VENDOR in the make environment will result in
          certain ports producing bogus dependency data.  Detect this
          and emit warning messages at cache-{init,update} time.

	- Regularize paths in the pkg-descr (5th) field of the
          generated INDEX.  No more '../..'

2.7 Mon Nov 07 16:17:13 2011

        - RELEASE_2_7

2.7 Thu Nov 10 10:31:40 2011

        - Recognise more things as 'not ports' when updating cache

	- Allow portdepends arguments to be fully qualified paths or
          relative to $Config{PortsDir}.  Do less work adding and
          removing this text during processing.

2.7 Sun Dec 11 14:43:43 2011

        - Use the %Config value for PortDBDir instead of hardwired
          /var/db/ports when loading and updating the cache.

2.8 Sat Feb 25 13:28:00 2012

        - Release 2.8

        - Radical changes to the cache: now stores a record for every
          file that could affect the generated INDEX, which ports
          those files belong to and the timestamp of the file.

	- Default update mechanism is now to compare timestamps with
          what is in the cache.  Doesn't need to parse the output of
          any update mechanism (although you can still do that.)

	- Added new make-readmes command to create a tree of README.html
	  files.
