# ChangeLog for Portage; the Gentoo Linux ports system 
# Copyright 1999-2005 Gentoo Foundation; Distributed under the GPL v2
# $Id: ChangeLog,v 1.796.2.146 2005/08/20 17:24:30 jstubbs Exp $

  MAJOR CHANGES in 2.0.51:
    1. /var/cache/edb/virtuals is no longer used at all. It's calculated now.
    2. /var/cache/edb/world is now /var/lib/portage/world.
    3. /etc/portage/profile/virtuals is _USER_ configs only.

  01 Oct 2005; Brian Harring <ferringb@gentoo.org> pym/portage.py:
  selinux_enabled tweak, instead of relying on exception thrown on import,
  check the actual enabled value (forward compatibility).

  01 Oct 2005; Brian Harring <ferringb@gentoo.org> bin/repoman:
  Touch ups to file.name check.

  01 Oct 2005; Brian Harring <ferringb@gentoo.org> bin/ebuild, 
  pym/portage.py:
  Fixed ebuild some-ebuild setup unpack so it functions like
  ebuild some-ebuild unpack does (execute just unpack due to 
  env issues, see comments in ebuild clarifying if curious).

  28 Sep 2005; Brian Harring <ferringb@gentoo.org> bin/repoman:
  Fixup of the file.name check so it doesn't catch CVS dirs.

  27 Sep 2005; Brian Harring <ferringb@gentoo.org> bin/ebuild.sh:
  No more portageq in the global scope.
  Instant die.

  27 Sep 2005; Brian Harring <ferringb@gentoo.org> bin/ebuild.sh, 
  pym/portage.py:
  Tweak to make EAPI work for existing vdb entries.

  24 Sep 2005; Brian Harring <ferringb@gentoo.org> pym/portage.py, 
  bin/emerge:
  Final emerge metadata/cache cleanups; emerge --metadata no longer
  requires root (we run searches as non root, which can update the cache,
  so emerge --metadata as root is daft), and silenced auxdb exceptions
  when doing metadata transfers- preparation for when the default backend
  is changed.  If that weren't in, user would see > 20,0000 lines of 
  pointless cruft output.

  24 Sep 2005; Brian Harring <ferringb@gentoo.org> pym/portage.py,
  +pym/portage_db_metadata.py, +pym/portage_db_flat_hash.py, 
  pym/portage_db_flat.py, pym/portage_const.py:
  EAPI awareness, and support for flat_hash metadata/cache.
  Later autodetects if the rsync cache is flat_hash, or flat_list, 
  and interprets accordingly.
  
  Flat_hash is intended to make it such that rsync cache breakages 
  for older portage versions no longer occur; the container format 
  can hold pretty much anything across EAPI versions.
  Additionally... EAPI is intended such that additions to the ebuild 
  env/helpers don't puke if you're running to old of a portage version; 
  it allows us to 'version' the ebuild env/funcs, and do masking dependant
  on that versioning.

  23 Sep 2005; Brian Harring <ferringb@gentoo.org> bin/emerge:
  cleanse_cache cleanups, should kill off all remaining issues 
  in bug #100444 .

  23 Sep 2005; Brian Harring <ferringb@gentoo.org> bin/repoman:
  bug #106544, glep31 enforcement checks.

  20 Sep 2005; Brian Harring <ferringb@gentoo.org> pym/portage.py:
  Cleanup after python, remove module from sys.modules that was a failed import 
  for selinux code- identified by Tudor Alexandru Dragos in bug #106363 .

  18 Sep 2005; Mike Frysinger <vapier@gentoo.org> bin/etc-update:
  Make sure diff works before checking config files #48184.

  08 Sep 2005; Brian Harring <ferringb@gentoo.org> bin/ebuild.sh: Fixed 
  unpack so that it actually works now.  ${tarvars} placement was a bit 
  wrong, which is odd considering it shouldn't have changed.

  08 Sep 2005; Jason Stubbs <jstubbs@gentoo.org> bin/emerge: Only warn on
  removal of system virtuals if there is only one satisfying package.

  21 Aug 2005; Jason Stubbs <jstubbs@gentoo.org> bin/ebuild.sh: Skip protecting
  ownership of symlinks. Patch by truedfx #94199

  14 Aug 2005; Mike Frysinger <vapier@gentoo.org> bin/prepstrip:
  Don't try to strip if `file` failed #102499 by Daniel Drake.

  10 Aug 2005; Mike Frysinger <vapier@gentoo.org> bin/quickpkg:
  Call gawk instead of awk so non-GNU systems work #102050 by Stephen Bennett.
  Also clean up the script a bit.

  08 Aug 2005; Brian Harring <ferringb@gentoo.org> bin/ebuild.sh:
  fixed bug #101035 , basically checking pipestatus during unpack for 
  piped unpacks.

  07 Aug 2005; Mike Frysinger <vapier@gentoo.org> bin/ebuild.sh:
  Add support for unpacking rar archives.

  04 Aug 2005; Brian Harring <ferringb@gentoo.org> bin/emerge: 
  bug 64585, sanity check on cache cleansing.

  04 Aug 2005: Brian Harring <ferringb@gentoo.org> bin/emerge:
  It's not perfect, but a fix for bug #96410.  A better fix would be 
  to get the categories limiter out of settings...

  29 Jul 2005; Mike Frysinger <vapier@gentoo.org> bin/doman:
  Back port from portage HEAD:
  Remove old unused options (-x11/-gnome/-kde/etc...) and cleanup.

  04 Jul 2005; Mike Frysinger <vapier@gentoo.org>
  bin/ebuild-default-functions.sh:
  Fix gnuconfig find expression #93363 by TGL.

  23 Jun 2005; Mike Frysinger <vapier@gentoo.org>
  bin/ebuild-default-functions.sh:
  Update the scanelf RUNPATH check to abort on null paths.

  17 Jun 2005; Mike Frysinger <vapier@gentoo.org> bin/repoman:
  Report exit status if gpg failed to return with 0.

  14 Jun 2005; Marius Mauch <genone@gentoo.org> man/portage.5:
  Remove references to non-existant $PORTDIR/profiles/use.mask and revert
  the "fix" for bug 87173.

  13 Jun 2005; Mike Frysinger <vapier@gentoo.org> bin/ebuild.sh:
  Use the %p output modifier instead of %F so we don't have to update the
  output by removing all the $D references.

  29 May 2005; Jason Stubbs <jstubbs@gentoo.org> bin/ebuild.sh: Made
  /etc/profile.env sourced regardless of USERLAND. Made copying of config.sub
  and config.guess --force'd as they are sometimes u-w. Replaced a if/else of
  chgrp root/wheel with chgrp 0.

  29 May 2005; Jason Stubbs <jstubbs@gentoo.org> bin/emerge: Moved the system
  package unmerge check after slots are checked and removed the countdown for
  when --ask is specified. Added a chdir to the removal of old cache call so
  that there are no errors due to userpriv and being in a non-portage-readable
  directory.

  29 May 2005; Jason Stubbs <jstubbs@gentoo.org> bin/etc-update: Moved the
  temporary work dir from /tmp/$$ to ${PORTAGE_TMPDIR}/$$.

  29 May 2005; Jason Stubbs <jstubbs@gentoo.org> bin/prepinfo bin/prepman:
  Reordered the -{min,max}depth and -name arguments to find so that warnings
  are not produced.

  29 May 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Added support
  for FreeBSD's ldconfig. Fixed an incorrect chown of BUILD_PREFIX instead of
  PORT_LOGDIR.

  29 May 2005; Mike Frysinger <vapier@gentoo.org> bin/ebuild.sh bin/prepstrip:
  Backport scanelf QA checks from HEAD.

  25 May 2005; Brian Harring <ferringb@gentoo.org> bin/ebuild.sh: Bug 93293, 
  die + stat_perms issues.  Tweaked do_stat definition so it's one time instead 
  of ongoing also.

  19 May 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Disabled
  userpriv as a user globally instead of only in fetch.

  19 May 2005; Jason Stubbs <jstubbs@gentoo.org> bin/emake: Made the
  make command configurable but defaulted to "make".

  19 May 2005; Jason Stubbs <jstubbs@gentoo.org> bin/emerge: Fixed an
  issue that would cause binary package reinstalls when IUSE disagreed.

  19 May 2005; Jason Stubbs <jstubbs@gentoo.org> bin/repoman: Fixed an
  issue where the portage version wasn't appended to the commit message
  when specified on the command line. Fixed the detection of files above
  the package level during Manifest generation.

  19 May 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Renamed
  the userpriv FEATURE to userfetch for the fetch() phase and fixed a bug
  where privileges would try to be dropped even as non-root. Fixed a bug
  where files were attempted to be fetched when only a manifest recreation
  is requested.

  17 May 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Stopped
  attempting to fetch files when only the manifest is being generated.

*portage-2.0.51.22 (15 May 2005): Maintainence Release

  15 May 2005; Jason Stubbs <jstubbs@gentoo.org> bin/dodoc: Removed the dodoc
  new testing features from head's version of dodoc.

  15 May 2005; Jason Stubbs <jstubbs@gentoo.org> bin/emerge: Made --newuse
  take priority over --usepkg.

  15 May 2005; Jason Stubbs <jstubbs@gentoo.org> bin/repoman: Added HOMEPAGE
  to the list of vars that must be defined. Restored detection of the
  digest.partial check. Made a commit message required.

  15 May 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Fixed the
  definition of PYTHONPATH in env_update(). Fixed the handling of quotes in
  env_update().

  13 May 2005; Jason Stubbs <jstubbs@gentoo.org> cnf/dispatch-conf.conf
  bin/dispatch-conf: Removed the pager config option and made if part of the
  diff command option.

  13 May 2005; Jason Stubbs <jstubbs@gentoo.org> bin/dodoc: Backported vapier's
  fix for 0-byte files causing a spurious "file not found" error.

  13 May 2005; Jason Stubbs <jstubbs@gentoo.org> bin/emerge: Remove --verbose
  and --tree from options when using --resume as the combination is currently
  broken.

  13 May 2005; Jason Stubbs <jstubbs@gentoo.org> bin/repoman: Added three new
  checks on ebuild's PROVIDEs. Optimized out a lot of unnecessary aux_get()
  calls. Modified to commit an unsigned Manifest before committing the signed
  one to help ensure broken digests don't make it to rsync.

  13 May 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Added SCCS to
  the list of directories to ignore when ignorecvs is set in cacheddir. Drop
  priveleges during fetch when userpriv is set. Added message display when
  changing permissions on ccache dirs.

  06 May 2005; Brian Harring <ferringb@gentoo.org> bin/ebuild: fix portage_util 
  import on osx.

  05 May 2005; Jason Stubbs <jstubbs@gentoo.org> bin/etc-update: Fixed the
  regex and added locale overrides to the use of cut as per bug #91159.

  05 May 2005; Jason Stubbs <jstubbs@gentoo.org> cnf/make.globals: Made
  CONFIG_PROTECT default to /etc only as packages are augmenting it via env.d
  where necessary.

  05 May 2005; Jason Stubbs <jstubbs@gentoo.org> bin/emerge: Reverted deletion
  of apparently unused code as it was being used in the case of --noreplace.

  04 May 2005; Marius Mauch <genone@gentoo.org> bin/g-cpan.pl, man/g-cpan.pl.1:
  removed g-cpan.pl as it's now a standalone tool.

  02 May 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Added back
  support for ~* and * in package.keywords as it got dropped at some point.

*portage-2.0.51.21 (01 May 2005): Maintainence Release

  01 May 2005; Jason Stubbs <jstubbs@gentoo.org> bin/ebuild.sh: Fixed an
  inverse logic bug in the setting of ccache size.

  01 May 2005; Jason Stubbs <jstubbs@gentoo.org>: Removed g-cpan.pl as it
  is now maintained externally. Removed other old and/or unmaintained
  scripts.

  01 May 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Dropped
  confmem from 16 previous files down to 1 previous file so that upgrading
  and downgrading behaves in terms of config files.

  01 May 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Added
  checking of overlays for package.mask, categories and others.

  01 May 2005; Jason Stubbs <jstubbs@gentoo.org> bin/ebuild.sh: Skip testing
  if has already been performed (indicated by .tested)

  01 May 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Removed
  debugging information and added a fix for merging a symlink to a
  directory over a file.

  01 May 2005; Jason Stubbs <jstubbs@gentoo.org> cnf/make.globals: Added
  a basic CONFIG_PROTECT setting for those users who use only binary
  packages and don't have a portage tree.

  29 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> bin/doman: Added Mike's
  patch to broaden the accepted man pages from [1-8n] to [0-9n](|f|p|pm)

  29 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> bin/emerge pym/portage.py:
  Added an implementation for the emerge config action and a supporting
  method findname on the vardbapi class.

  29 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> man/portage.5: Removed
  invalid example from portage.keywords.

  29 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> bin/emerge: Drop privs
  when doing cache cleansing after syncing.

  29 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Fixed
  several issues with userpriv.

  29 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> bin/ebuild.sh: Made the
  autoconfig feature non-optional.

  29 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Removed
  running of depscan.sh from env-update.

  29 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Applied
  solar's patches from bug #90720 that allow most ebuild operations to work
  as any user in the portage group.

  29 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Fixed a bug
  that would cause an empty CBUILD to be defined if CHOST is not defined.

  29 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> cnf/make.globals.*: Removed
  the now deprecated arch-specific make.globals files.

  29 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> bin/dispatch-conf
  pym/dispatch-conf.py: Fixed a typo with the added merge option. Added
  hard-coded default merge option so that dispatch-conf can be used to do
  a line by line of dispatch-conf.conf.

  29 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> bin/ebuild.sh: Updated econf
  to use LOCAL_EXTRA_ECONF rather than EXTRA_ECONF directly, as noted by
  eradicator. Removed the forced resizing of ccache when CCACHE_SIZE is
  undefined.

  29 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> bin/emerge: Fixed bug in
  --info during sorting when two versions have only differing -r component.
  Ported Brian's regen method to --metadata for faster updates.

  29 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> bin/repoman: Fixed an
  off-by-one indexing into a list during scanning for Manfiest commits.

  29 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Fixed a bug
  in the checking of whether sandbox is usable when usersandbox is enabled.
  Combined u+w and g+w mods on ccache dir into the one exec. Added missing g+s
  mods on ccache dir, which was causing mods at each check. Moved mtime check
  in aux_get so that it applies to updating from the metadata cache as well.
  Relocated the fix for mynewcat outside of the loop to prevent needless
  re-calculation. Added debugging code for bug #71787.

  24 Apr 2005; Masatomo Nakano <nakano@gentoo.org> pym/portage.py
  Fixed undefined value causing traceback when moving package in binarytree.

*portage-2.0.51.20 (23 Apr 2005): Maintainence Release

  23 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage_const.py:
  Adjusted sandbox path to match the external sandbox.

  23 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> bin/repoman: Added a 3 second
  delay after a failed Manifest commit. Fixed bug where files at the category
  level were being treated as packages.

  23 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py portage_util.py
  portage_db_cpickle.py: Replaced HIGHEST_PROTOCOL with it's equivalent -1 to
  ensure python-2.2 compatibility. Added back ChangeLog and metadata.xml to
  Manifest generation for portage compatibility.

  21 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Adding
  setting of CBUILD to CHOST if it is not set. Fixed getmaskingstatus to
  choose an arch-based keyword over -*.

  21 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> bin/ebuild.sh: Removed
  stale code from dyn_setup.

  19 Apr 2005; Brian Harring <ferringb@gentoo.org> pym/portage_db_flat.py: 
  Correction for string method name, again, danke to swegener.

  19 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> bin/ebuild: Added a missing
  import of portage_util.

  19 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Fixed my
  assumption that ChangeLog and metadata.xml will exist during digest creation.

  17 Apr 2005; Brian Harring <ferringb@gentoo.org> pym/portage.py: eclass cache
  touche up, mtime wasn't being properly checked (thanks to swegener for catching
  it).

  17 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage_exec.py
  pym/portage.py: Added checks to see if the sandbox is executable and disabled
  when it isn't.

  17 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> bin/dispatch-conf
  cnf/dispatch-conf.conf pym/dispatch-conf.py: Made the merge command
  configurable. Fixed a bug that caused conflicts to make their way into the
  final configuration file. Made the config archive dir automatically created
  if there is nothing in the way.

  17 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> pym/output.py: Reverted the
  feature to make use of screen titles.

  17 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> bin/emerge: Made detection
  of --ask capability use stdin instead of stdout.

  15 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Removed
  ChangeLog and metadata.xml from Manifest creation and checking. Quietened
  failed mtimedb writes. Added patch to allow fetching to read-only DISTDIR.
  Added logic to detect changing between userpriv and non-userpriv and
  update the ccache permissions at each change.

  15 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> cnf/make.globals*: Removed
  vars not directly related to portage. Architecture specific ones are going
  into the relevant profiles. USE_ORDER and CONFIG_PROTECT* will likely be
  going into base.

  14 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Applied
  patch from #69763 to allow fetching to a read-only distfiles dir.

  13 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> bin/repoman: Downgraded
  the nesteddie check to a warning as it sometimes has false positives.

  13 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> cnf/make.conf*: Removed
  size estimation of PORTDIR.

  13 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Added
  verification of package.provided contents. Fixed a bug with an incorrect
  error on binary package category moves. Fixed a small bug that would
  cause a crash on an invalid PRELINK_PATH_MASK. Added signal handling of
  SIGPIPE. Added deep fixing of permissions on CCACHE_DIR when changing
  between userpriv states.

  13 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> bin/emerge: Added sorting to
  versions listed in emerge info output.

  13 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> man/emerge.1: Removed --inject
  documentation.

  12 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> bin/emerge: Added --nocolor
  option courtesy of Jason Cooper on gentoo-user@g.o.

  12 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> bin/repoman: Fixed the date
  parsing of repoman to allow ranged and single years beginning 1999. #85242

  12 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Added
  pusedict optimization. #85786

  12 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> bin/emerge: Fixed emerge to
  always add packages to world unless --oneshot is specified.

  12 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> bin/dispatch-conf:
  Replaced shutil.movefile() calls for python-2.2 compatibility.

  12 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> bin/portageq pym/portage.py:
  Utilized PORTAGE_CALLER to only print profile deprecation noticies when
  emerge first starts up.

  12 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> bin/repoman: 
  Limited digest.assumed and ebuild.allmasked (by default) to scans at
  the package level only. Removed IUSE from required variables. Fixed
  duplicate reporting of required variables. Adjusted size limit of
  files/* to 20480 bytes. Fixed allmasked check. Removed reinitialization
  of each profile at every usage.

  12 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Fixed
  spelling error. Removed code from portdbapi.gvisible that was only
  utilized by repoman's (broken) allmasked check.

  03 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> bin/emerge: Modified to
  ignore blockers when using --buildpkgonly.

  02 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py:
  Made autouse calculated only at import time to ensure that use flags
  from dep calculation are the same as those used at build time.

  02 Apr 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage_dep.py:
  Fixed a bug where a return type was a tuple instead of a list in
  paren_reduce().

  23 Mar 2005; Jason Stubbs <jstubbs@gentoo.org> bin/dispatch-conf:
  Removed the -a argument from all diff usage.

  08 Mar 2005; Brian Harring <ferringb@gentoo.org> pym/portage.py: 
  Tweak to ensure restrict is dumped to the env, with PORTAGE_RESTRICT 
  being dumped also.

  06 Mar 2005; Jason Stubbs <jstubbs@gentoo.org> bin/emerge: Added a check
  to make sure the file exists before working with it, when called with an
  ebuild path. #84102

*portage-2.0.51.19 (04 Mar 2005): Maintainence Release

  02 Feb 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Fixing
  ferringb's fix by adding the full scope of normpath.

  02 Mar 2005; Nicholas Jones <carpaski@gentoo.org> pemerge.py: Add it back
  since I seem to have removed it by changing/refreshing dirs at some point.

  01 Mar 2005; Brian Harring <ferringb@gentoo.org> pym/portage.py: bug 83712,
  a lovely normalized path bug in eclass_cache resulting in false positives on
  eclass cache staleness...

  01 Mar 2005; Brian Harring <ferringb@gentoo.org> bin/prepman: bug 83704, 
  prepman getting stupid about gzip'ing already bzip2'd man pages.

  01 Mar 2005; Jason Stubbs <jstubbs@gentoo.org> bin/emerge: Expanded
  syslist during the unmerge phase so that all packages listed in system
  are correctly checked and warned against.  #83670

*portage-2.0.51.18 (28 Feb 2005): Maintainence Release
  
  28 Feb 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Added a
  -* to updated FEATURES before saving back to the env.  #79566

  27 Feb 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Added back
  sorting of the final list from portdbapi.cp_all() so that emerge regen
  is ordered correctly.

*portage-2.0.51.17 (26 Feb 2005): Maintainence Release

  26 Feb 2005; Nicholas Jones <carpaski@gentoo.org> *: Darwin userland patch
  from Kito (bug 82312). Adjusted a couple bits like the file was installed
  with message and etc-update's USERLAND check per Jason suggestion.

  26 Feb 2005; Nicholas Jones <carpaski@gentoo.org> portage_data.py: Added
  the 'gnu' suffix check for the BSD/GNU people. (bug 80018)

  26 Feb 2005; Nicholas Jones <carpaski@gentoo.org> pym/xpak.py: Added in a
  method to get both the data and index segments for use with the other memory
  based functions.

  21 Feb 2005; Brian Harring <ferringb@gentoo.org> pym/portage.py: So yeah.
  Don't fool with the eclass_cache.porttree ordering unless you understand that
  it -must- match bash's inherit order (where overlays override portdir).

  15 Feb 2005; Jason Stubbs <jstubbs@gentoo.org> emerge: Disabled the cache
  update output when using --quiet.  #81678

  15 Feb 2005; Jason Stubbs <jstubbs@gentoo.org> make.conf*: Added
  warning with regard to changing CHOST.  #81007

  13 Feb 2005; Jason Stubbs <jstubbs@gentoo.org> make.conf*: Added warning
  with regard to changing PORTDIR and /etc/make.profile.

  13 Feb 2005; Jason Stubbs <jstubbs@gentoo.org> portage.py: Fixed the global
  features usage in the config class and made sure that any adjustments are
  propogated back to the env.

  13 Feb 2005; Jason Stubbs <jstubbs@gentoo.org> chflags.c: Replaced stat
  call with an lstat call in lhasproblems as the calling code expects the
  function to operate directly on symlinks.

*portage-2.0.51.16 (06 Feb 2005): Maintainence Release + BSD chflags

  06 Feb 2005; Nicholas Jones <carpaski@gentoo.org> portage.py, src/chflags:
  Addition of BSD chflags support (from spb@gentoo.org). Wrapped all the
  calls within a check for the modules existance so we can reduce any problems
  due to a failing or missing module. Internally renamed it bsd_chflags.

  06 Feb 2005; Jason Stubbs <jstubbs@gentoo.org> bin/ebuild.sh: Completed
  renaming of "maketest" to "test". RESTRICT supports both. #77446

  06 Feb 2005; Jason Stubbs <jstubbs@gentoo.org> pym/output.py: Added checking
  of whether stderr is a tty before changing xterm titles. #73824

  05 Feb 2005; Jason Stubbs <jstubbs@gentoo.org> bin/emerge: Added removal of
  --tree and --changelog upon a restart of emerge. Added --ask support to
  emerge metadata.

  05 Feb 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Removed the
  requisite that a profile must depend on ">=sys-apps/portage-2.0.51" to be
  able to use package.mask.

  05 Feb 2005; Jason Stubbs <jstubbs@gentoo.org> bin/repoman pym/portage.py:
  Removed the disabling of PORTDIR_OVERLAY from portage.py and added code to
  repoman to set PORTDIR to the current directory's repo unless it doesn't
  contain a profiles directory. If that is the case, PORTDIR is kept and
  PORTDIR_OVERLAY is set to the current overlay -only-.

  03 Feb 2005; Brian Harring <ferringb@gentoo.org> pym/portage.py: bug 80506,
  fixed RESTRICT="(no|)userpriv".

  31 Jan 2005; Brian Harring <ferringb@gentoo.org> pym/portage.py: Spanky pointed
  a bug assuming the intermediate directories for WORLD_FILE existed already.

  30 Jan 2005; Brian Harring <ferringb@gentoo.org> bin/ebuild.sh: Update from 
  eradicator, bug #75420.  Multilib stuff. :)

  30 Jan 2005; Brian Harring <ferringb@gentoo.org> bin/prepman: Fixing bug
  #79788.  Some screwy syntax for a find call was screwing up gzip'ing of man
  pages for osx boxes.

  30 Jan 2005; Jason Stubbs <jstubbs@gentoo.org> emerge emerge.1: Added short
  -N option for --newuse. Moved virtuals updating for packages that are about
  to be installed so that the update happens after the virtuals within that
  package's direct dependencies are resolved. Made the blocking message
  slightly easier to understand. Added a suggestion to run emerge with --newuse
  before running depclean.

  30 Jan 2005; Jason Stubbs <jstubbs@gentoo.org> etc-update: Removed the
  unsetting of various options that happens when using graphical mode.

  30 Jan 2005; Jason Stubbs <jstubbs@gentoo.org> quickpkg: Added -h and --help
  options.

  30 Jan 2005; Jason Stubbs <jstubbs@gentoo.org> repoman: Added patch to call
  xmllint directly on metadata.xml rather than piping it. This prevents the
  need (and possible failure) to escape quote characters.

  30 Jan 2005; Jason Stubbs <jstubbs@gentoo.org> portage.py: Fixed a bug with
  calculations using PRELINK_PATH_MASK where paths matching those in
  PRELINK_PATH_MASK were not removed.

  28 Jan 2005; Brian Harring <ferringb@gentoo.org> portage_db_flat.py: removed
  the portage_locks locking that was added, using a different strategy reliant
  on rename.  Basically, for a pull- you open the file.  If that fails, then
  the cache lacks that entry.  If it succeeds, you do your stat calls (to get
  mtime) against the -file handle-, via fstat.  You can read from that inode 
  without issue, but do not assume that that inode is the still accessible via
  another open call (it may've been updated since).  Pushes are accomplished 
  via writing everything to a temp file, then renaming that file to the correct
  name- chmod/chown/utime calls need to be done prior to the rename.
  So, if a pull is ongoing while a push starts up and finishes, the pull still
  is accessing the old cache entry- worst case scenario, it goes and reupdates
  the cache entry.  This is acceptable, since the overhead from using a seperate
  lockfile is much more costly (in some cases, a difference of 3m to 20m).
  Normal cases, roughly 13% improvement.

  24 Jan 2005; Nicholas Jones <carpaski@gentoo.org> portage.py: Fixed the
  fetch/nofetch RESTRICT bug introduced in -r14. Completely disable overlay
  when calling from repoman.

  24 Jan 2005; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Test print out
  fix.

  19 Jan 2005; Brian Harring <ferringb@gentoo.org> ebuild.sh: Quick change to
  features=autoconfig, avoiding an extra subshell.

*portage-2.0.51-r14 (15 Jan 2005): Stable Candidate

  18 Jan 2005; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Unset IFS
  after entering the for loop for bashrc's. The IFS setting applies to the
  source command and messes up the assumptions about bash scripts and IFS.

  18 Jan 2005; Jason Stubbs <jstubbs@gentoo.org> portage.py emerge-webrsync:
  Fixed the bash syntax error in emerge-webrsync as per #77941. Fixed the
  blocking virtuals bug as per #78201. Removed the warning about negations
  and reapplied negations to profile virtuals.

  17 Jan 2005; Nicholas Jones <carpaski@gentoo.org> portage.py: Prevented
  negations from applying in virtuals and provided a warning.

  16 Jan 2005; Nicholas Jones <carpaski@gentoo.org> repoman: Fix to match up
  to the namespace changes in portage.

  16 Jan 2005; Nicholas Jones <carpaski@gentoo.org> portage.py: Patch from a
  bug report on a traceback that occurs when re-digesting a file without any
  distfiles but with a preexisting digest.

  16 Jan 2005; Nicholas Jones <carpaski@gentoo.org> *.py: Added a cvs_id_str
  to each portage module so we can account for them easily. Added printing
  of those versions on a 'emerge -d info'. Cleaned up the * imports in the
  modules so there shouldn't be any namespace pollution left.

*portage-2.0.51-r13 (15 Jan 2005): Testing for virtuals changes

  15 Jan 2005; Nicholas Jones <carpaski@gentoo.org> portage.py: Adjusted the
  virtuals handling into an advanced for of what Jason started using promotion
  instead of blanket settings. Removed the user_profile dir completely when
  using repoman via a new user_profile_dir variable that is stored on creation.
  Split the getvirtuals() call into two pieces so that setinst() can also
  recreate the virtuals properly when modifying the vartree.

  15 Jan 2005; Nicholas Jones <carpaski@gentoo.org> portage_util.py: Modified
  the stack_dictlist function to handle '-*' and do it in the proper order.

  13 Jan 2005; Nicholas Jones <carpaski@gentoo.org> portage.py, emerge:
  Adjusted the version handling for portage so that we can use CVS versions
  and ignore the restarts when using livecvsportage.

  13 Jan 2005; Nicholas Jones <carpaski@gentoo.org> repoman: Added the
  portage/repoman version used to the commit messages.

  13 Jan 2005; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Fixed the
  reverse ordering of profile virtuals before installed virtuals stacking.
  Turn a reference assignment into a copy to fix a bug where digesting would
  not include files that were already fetched previously. Added information
  about which package is causing an error to some aux_get() errors.

*portage-2.0.51-r11 (13 Jan 2005): Cleanup

  13 Jan 2005; Nicholas Jones <carpaski@gentoo.org> cnf/*: Updates for the
  OSUOSL -> distfiles.gentoo.org changeover. Addition of PORTAGE_TMPFS to
  the config files.

  13 Jan 2005; Nicholas Jones <carpaski@gentoo.org> portage.py: Fix for a
  typo in the primaryuri index.

*portage-2.0.51-r10 (11 Jan 2005): Cleanup

  12 Jan 2005; Nicholas Jones <carpaski@gentoo.org> repoman: Fixed the
  namespace collision in the time module and calls.

  11 Jan 2005; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Fixes for the
  libdir patch -- libtool can't handle "usr//lib".

  10 Jan 2005; Nicholas Jones <carpaski@gentoo.org> portage.py: Made maketest
  enable 'test' in features. Marked a couple more negative flags for restrict.
  Made tmpfs checking a little smarter and let us enable /dev/shm by default.

  10 Jan 2005; Nicholas Jones <carpaski@gentoo.org> output.py: Fixed the
  colors and overscore problems. Added a larger section and better code
  for generating colors and effects -- Unused at the moment. Added a patch
  that included screen title handling.

  10 Jan 2005; Nicholas Jones <carpaski@gentoo.org> repoman: Rewrite the
  datetime code to use time.gmtime() instead so python2.2 works still.

  10 Jan 2005; Nicholas Jones <carpaski@gentoo.org> regenworld: Made it work
  with cascade profiles by using the proper system reference.

  10 Jan 2005; Nicholas Jones <carpaski@gentoo.org> emerge: Fix for the gcc
  hardened version printing. Moved the stdin close on rsync down below the
  rsync part to allow --ask to work.

  10 Jan 2005; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Die if unpack
  is not given any files to unpack. Modification for the no_inst stuff to be
  less crazy with the echo redirection stuff.

  08 Dec 2005; Jason Stubbs <jstubbs@gentoo.org> ebuild.sh: Moved the "true" to
  the end of the dyn_clean() function.

  06 Dec 2005; Jason Stubbs <jstubbs@gentoo.org> ebuild.sh: Added eradicator's
  multilib-strict patch, which allows checking and failing if binaries are
  about to be installed into an incorrect directory. The feature is configured
  via the MUTLILIB_STRICT_DIRS and MULTILIB_STRICT_DENY and has no effect if
  either they are not defined or the feature is not enabled.

  04 Dec 2005; Jason Stubbs <jstubbs@gentoo.org> ebuild.sh: Added removal of
  the .packaged and .tested files to the clean stage. Adjusted cleaning of the
  temp dir to include the directory as well, rather than only the files
  therein. Added a check and appropriate removal of the entire scratch dir if
  it is empty at the end of the clean phase.

  04 Dec 2005; Jason Stubbs <jstubbs@gentoo.org> portage.py: Turned the
  primaryuri global counter into separate counters per file, so that urls
  are inserted at the appropriate places.

  04 Dec 2005; Jason Stubbs <jstubbs@gentoo.org> portage.py: Adjusted virtuals
  stacking so that /etc/portage/virtuals is stacked on top of the profile
  virtuals (including the custom /etc/portage/profile), reordered the list
  of installed virtuals to match that of the combined profile virtuals and
  then stacked the installed virtuals on top of those. Also added back the
  deprecation notice.

  04 Dec 2005; Jason Stubbs <jstubbs@gentoo.org> emerge: Added code to
  "emerge info" to summarise variables that aren't set rather than hide them.

  02 Dec 2005; Jason Stubbs <jstubbs@gentoo.org> dolib ebuild.sh preplib:
  Applied eradicator's libdir patch for multilib support. #75420

  02 Dec 2005; Jason Stubbs <jstubbs@gentoo.org> ebuild.sh: Added support for
  INSTALL_MASK. #67190

  02 Dec 2005; Jason Stubbs <jstubbs@gentoo.org> portage.py portage_util.py:
  Added support for the "source" keyword to make.conf. #74842

  02 Dec 2005; Jason Stubbs <jstubbs@gentoo.org> ebuild.sh: Adjusted autoconfig
  to work on ${WORKDIR} instead of ${S} and modified output. #72360
  Added notice on econf failure to include config.log (if it exists) into any
  bug report. #75268  Don't prepend "/" to CONF_LIBDIR if it already begins
  with "/" #75523

  02 Dec 2005; Jason Stubbs <jstubbs@gentoo.org> emerge: Don't update info dirs
  if noinfo FEATURE is enabled. #76378

  02 Dec 2005; Jason Stubbs <jstubbs@gentoo.org> emerge: Set the processing of
  profiles/info_vars to only include those which have been set to some value.
  #75920

  02 Dec 2005; Jason Stubbs <jstubbs@gentoo.org> repoman: Modified header check
  to use the year of the mtime of the ebuild rather than the current year.

  24 Dec 2004; Jason Stubbs <jstubbs@gentoo.org> portage.py: Removed assumption
  that /etc/make.profile/make.defaults must exist for configdict["defaults"] to
  be populated (and thus ARCH prepended to USE).

  23 Dec 2004; Jason Stubbs <jstubbs@gentoo.org> portage.py: Adjusted fetching
  on digest creation such that any preexisting digest entries are used, but
  fetching and digesting occurs for all SRC_URI entries otherwise.

  22 Dec 2004; Jason Stubbs <jstubbs@gentoo.org> portage.py: Removed the
  virtuals deprecation notice as the "preferred" location does not yet
  provide the required behaviour.

  14 Dec 2004; Nicholas Jones <carpaski@gentoo.org> doins: Fix and notices
  for $D handling.

  14 Dec 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: spb's chflags
  adjustment for dyn_clean. stat_perms() overhaul for bsd and ppc.

  14 Dec 2004; Nicholas Jones <carpaski@gentoo.org> webrsync: TMPDIR is
  used properly and a tar-failure fix.

  14 Dec 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: RESTRICT
  changes -- nomirror and mirror are now the same (use 'mirror') -- lmirror
  is a temporary way to sidestep mirror restrictions -- primaryuri makes
  portage attempt to retrieve from the source mirror before falling back to
  other mirrors (corrects behavior some impose for 'mirror').

  14 Dec 2004; Nicholas Jones <carpaski@gentoo.org> portage_db_flat.py: Do
  not fail when we're on a readonly FS and we're only reading (lockfiles).

  09 Dec 2004; Marius Mauch <genone@gentoo.org> bin/ebuild.sh:
  change LDFLAGS to CFLAGS for the setXid check.

  05 Dec 2004; Nicholas Jones <carpaski@gentoo.org> pym/portage.py: swegener
  made quite a find in portdbapi.cpv_exists, the comparison on the tuple
  returned by findname2 always evaluated true.

*portage-2.0.51-r8 (03 Dec 2004): Cleanup

  03 Dec 2004; Nicholas Jones <carpaski@gentoo.org> repoman: A patch to
  handle stray digests.

  03 Dec 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Patches to
  fix the matching bug #73136 and the '-atom' profile bug #73167.

*portage-2.0.51-r7 (01 Dec 2004): Cleanup

  01 Dec 2004; Nicholas Jones <carpaski@gentoo.org> sandbox: updated with
  ferringb's code for the pids file overrun issue.

  01 Dec 2004; Jason Stubbs <jstubbs@gentoo.org> repoman: Reverted repoman
  profile selection to previous behaviour. Kept verbosity, but modified
  messages according to the behaviour.

*portage-2.0.51-r5/6 (30 Nov 2004): Cleanup

  29 Nov 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Added a
  (backport?) missing return to treewalk.

  29 Nov 2004; Nicholas Jones <carpaski@gentoo.org> cnf/*: Removed the
  prozilla references. Adjusted the default mirrors to a gentoo round-
  robin.

  29 Nov 2004; Nicholas Jones <carpaski@gentoo.org> portage_exec.py: Modified
  the magic constants to be os.access calls.

  29 Nov 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: A few XXX
  comments. Removed 'aumtime' from the global space. Removed the virtuals
  code that created an empty and unused virtuals file in /var/cache/edb.

  29 Nov 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Added a few XXX
  comments to bad code/calls. Adjusted emerge info so that it can read more
  variables and atoms to print out from the portage tree.

  29 Nov 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Fixed/Backport
  the changes to stat_perms so that it works. Fixed the read commands.

  10 Nov 2004; Brian Harring <ferringb@gentoo.org> bin/ebuild.sh:
  dyn_install was attempting to be helpful and chown files owned
  by portage, resulting in suid/sgid being stripped. bug #56129.

  07 Nov 2004; Brian Harring <ferringb@gentoo.org> portage.py: buggy
  logic in listdir w/ ignorecvs, rewrote. (#70170).

  07 Nov 2004; Jason Stubbs <jstubbs@gentoo.org> dispatch-conf: Moved back
  to the version of dispatch-conf that was released (due to python-2.2
  compatibility) and fixed a small type in that version. #70282

*portage-2.0.51-r4 (05 Nov 2004): Internal Release

  05 Nov 2004; Jason Stubbs <jstubbs@gentoo.org> doins: Added vapier's fix
  for doins changing existing directory permissions. #69896

  04 Nov 2004; Jason Stubbs <jstubbs@gentoo.org> tbz2tool.c: Added vapier's
  fix for tbz2tool on ia64. #70001

  03 Nov 2004; Brian Harring <ferringb@gentoo.org> portage_dep.py: Bug in
  paren_reduce where it was returning a tuple (supposed to return a list).

  03 Nov 2004; Jason Stubbs <jstubbs@gentoo.org> dispatch-conf: Simplified
  the temp file creation and usage.

  03 Nov 2004; Jason Stubbs <jstubbs@gentoo.org> portage.py: Fixed issues
  with PROVIDE calculation by flattening the dep array. #32114

  02 Nov 2004; Jason Stubbs <jstubbs@gentoo.org> portage.py: Updated
  ExtractKernelVersion() to support 2.6.9's new localversion. #67804
  Reordered a cache update and a return statement so that the cache is
  actually updated in ververify. #69523

  02 Nov 2004; Jason Stubbs <jstubbs@gentoo.org> ebuild.sh: Turned off
  shell option extglob as it interferes with the g++ QA interceptor. #69690

  02 Nov 2004; Jason Stubbs <jstubbs@gentoo.org> portage.py: Fixed a bug
  where a broken symlink blocking the installation of a regular file would
  cause a traceback. #69672

  02 Nov 2004; Jason Stubbs <jstubbs@gentoo.org> quickpkg: Applied vapier's
  fix for processing file names that contain spaces. #36997  Applied
  vapier's fix for parallel quickpkg's writing to a single log file. #37270

  29 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> emerge: Fixed issue where
  emerge adds package to world when --onlydeps is specified. #69260
  Fixed issue where emerge was adding packages to world when --uprade is
  specified even if the package is already installed. #69287 Fixed logic
  in path/to/ebuild check so that symlinks do not cause false positives.

  29 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> dispatch-conf: Added usata's
  fix for mac-os compatibility. #69304

  29 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> getbinpkg.py: Reversed the
  logic of ftp passive-mode selection. #69371

  29 Oct 2004; Brian Harring <ferringb@gentoo.org> portage.py: config.reset
  was pruning vars out of backupenv on each reset call. #69388

  28 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> emergehelp.py: Fixed up
  some incorrect descriptions. Added documentation for new and changed
  functionality. Removed documentation for deprecated options.

  28 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> getbinpkg.py: Added missing
  substitution of ${FILE} in resume command. #69068

  28 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> repoman: Fixed aux_get error
  due to calling getfetchlist() when an ebuild no longer exists. #69051

  28 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> emerge: Removed a duplicate
  loop from the userquery function. #69020

  27 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> dispatch-conf: Moved temp file
  creation into a safe directory under /tmp. Made the log file a configurable
  option that is disabled by default.

  26 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> portage.py:  Added a check to
  portdbapi.fetchcheck to account for a missing digest.

  26 Oct 2004; Brian Harring <ferringb@gentoo.org> portage_exec.py, bin/ebuild:
  bug with the path lookup code (added find_binary func for upcoming additions), 
  and bin/ebuild was bailing due to a missing portage_util import.

  25 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> portage.py: Wrapped entire
  lock-holding section of fetch() in a try-finally to ensure that the lock
  file gets released regardless of exception.

  25 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> etc-update: Added patch
  from #48218 to continue on to next file when answering "no" to the
  interactive replace prompt of menu option -3.

  25 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> emerge: Fixed the space/tab
  usage through the spinner_msgs definition. Removed COMPILER from emerge info
  output.

  25 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> portage.py: Converted
  config.pkeywordsdict from {atom:[keyword]} to {cp:{atom:[keyword]}} to
  prevent a lot of unnecessary calculation.

  24 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> emerge: Added a percentage
  counter to the cache update phase based on patch from #68694

  24 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> portage.py:
  s/macos/ppc-macos/ change.

  24 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> portage_locks.py
  portage_db_flat.py: Fixed a couple of race conditions with regard to
  stating files.

  23 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> portage.py portage_util.py:
  Added syntax checking for package.mask, package.unmask and packages files.

  23 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> dohtml: Reimplemented the
  option processing to remove the dependency on optparse.

  23 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> repoman: Made the invalid
  profile slightly more intelligable and got rid of the duplicate. Moved
  the profile KEYWORDS.invalid failure so that it only occurs if the
  corresponding KEYWORD is valid.

  23 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> portage.py: Added settings
  parameter to dep_virtual as the virtuals can now change during dep graph
  creation. #68220

  23 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> repoman: Changed repoman to
  use the first stable profile found for each arch listed in profiles.desc
  rather than the last profile listed. Added notification on any invalid
  profile in profiles.desc. Made exception into a repoman error where a
  ebuild is using a keyword for which no profile can be found.

  23 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> repoman: Fixed traceback in
  repoman on invalid LICENSE syntax.

  22 Oct 2004; Brian Harring <ferringb@gentoo.org> ebuild.sh: silencing use/has.

  22 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> emerge: Added python version
  to "emerge info" output.

*portage-2.0.51-r2 (20 Oct 2004): Everyone loves finding bugs in stable!

  20 Oct 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Fixed the result
  checking when ebuilds are called -- this removes the continuing-after failure
  big discovered by AMD64 today.

  20 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> emerge: Fixed a bug where
  users were warned against emerging by path when a file/dir exists of the
  same name of the package to be merged. #68372  Added an warning with delay
  when emerging an ebuild that is masked.  Added a check on PORTAGE_GPG_DIR
  which removes "gpg" from FEATURES on an invalid settings. #68387

*portage-2.0.51 (20 Oct 2004): Everyone loves stable!

  19 Oct 2004; Nicholas Jones <carpaski@gentoo.org> portage.5: patch included
  to fix a few typos.

  19 Oct 2004; Nicholas Jones <carpaski@gentoo.org> g-cpan.pl patch included
  that doesn't recreate inherently-created ebuilds.

  20 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> repoman: Added check for
  digest entries that aren't used within the corresponding ebuild's SRC_URI.

  20 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> emerge: Added support for
  EMERGE_WARNING_DELAY defaulting it to 10. Changed all the hardcoded delays
  to use it. Needed for the catalyst guys as it includes a number of unmerges
  of system packages.

  20 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> emerge: Changed the
  /path/to/ebuild warning. Added a check on what ebuild is chosen and
  a failure if it doesn't match what was specified. Added the same for
  /path/to/tbz2.

*portage-2.0.51_rc10 (19 Oct 2004): Potential Final #1.

  19 Oct 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Visual acuity
  enhancements. Fixed all the spaces in the option handling.

  19 Oct 2004; Nicholas Jones <carpaski@gentoo.org> emerge.1: Updated for
  'f' and 'S'.

  19 Oct 2004; Nicholas Jones <carpaski@gentoo.org> getbinpkg.py: Potential
  fix for a missing dict key.

  19 Oct 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Prelink
  tempfile per pid.

  18 Oct 2004; Nicholas Jones <carpaski@gentoo.org> *.py: Added a protocol
  change for cPickles to make them more efficient (binary).

  18 Oct 2004; Nicholas Jones <carpaski@gentoo.org> sandbox: Fixes for some
  incorrect indexes that cause some boxes to have very random issues.

  18 Oct 2004; Nicholas Jones <carpaski@gentoo.org> portage_locks.py: Reverted
  the lock code to the lockf()+hardlock version as the new code has some
  inexplicable incompatibility with NFS.
  
  18 Oct 2004; Nicholas Jones <carpaski@gentoo.org> portage_exception.py: Added
  a couple exceptions pretaining specifically to packages and digests.

  18 Oct 2004; Nicholas Jones <carpaski@gentoo.org> portage_checksum.py: Now
  takes care of missing files better for the partial-digest handling.

  18 Oct 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Fixed up some
  of the output lines to use writemsg instead of print. Adjusted the fetch
  code to handle partial-digests. digestCreate can substitute in old digest
  entries now for missing files -- the assumption is that they are correct.
  Portage no longer downloads all parts when FEATURES=cvs is enabled, but
  does require a complete digest to commit, whether it was created piecewise
  or en masse. Added 'fetch_check' to portdbapi which helps with with emerge's
  pretend output for Fetch-Restriction.

  18 Oct 2004; Nicholas Jones <carpaski@gentoo.org> repoman: Added in support
  for partial-digests -- It complains, downloads, and adjusts. Sorted the QA
  categories to make them easier to scan.

  18 Oct 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Added -F to force
  all URIs to be downloaded. Added in a green, lowercase 'f' when the fetch
  restriction is satisfied for pretend. Added Kevin Quinn's patch for some
  prepstrip sanity and friendliness regarding TEXTRELs.

  18 Oct 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Added a message
  about use/useq/usev. CCACHE_DIR and CCACHE_SIZE are now properly exported.
  
  17 Oct 2004; <genone@gentoo.org> pym/portage.py:
  Added a followSymlinks parameter to listdir() as otherwise it gets stuck in
  an infinite loop when it encounters self-referencing symlinks, this behavior
  was exhibited by the collision-protect feature.

  17 Oct 2004; Brian Harring <ferringb@gentoo.org> portage-locks.py: Tweaked 
  unlockfile, no point in attempting to relock the file for deletion, if you're 
  not deleting the lockfile (basically moved locking w/in if unlinkfile).

  17 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> emerge portage_locks.py:
  Added more information to the --inject deprecation notice. Removed the sleep
  call from unlockfile as it severely affects performance (apparently only
  under some schedulers)

  16 Oct 2004; Brian Harring <ferringb@gentoo.org> portage_locks.py: Corrected 
  a bug involving unlocking + lockf.

  12 Oct 2004; Brian Harring <ferringb@gentoo.org> portage_exec.py: spawn_sandbox
  wasn't passing the opt_name down to spawn, it now does.

  11 Oct 2004; Jason Stubbs; <jstubbs@gentoo.org> emerge: Reverted back to
  previous command line parsing code as --search options were being mishandled.

  11 Oct 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Fix for the
  SHA1 digest slipout and the exec missing/broken binary traceback.

  11 Oct 2004; Nicholas Jones <carpaski@gentoo.org> pym/*: See below.

  11 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> bin/*: Added catching and
  propogating of SystemExit exception to all blanket exception handlers.

  11 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> repoman: Fixed repoman LICENSE
  check to accept || () conditions.

*portage-2.0.51_rc8 (10 Oct 2004): RC + Lock cleanup, Happy RC #4

  10 Oct 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Added in close()
  calls to ensure that control-C gets intercepted by portage instead of the
  children. Added in a re-raise for the SysExit exception inside of the
  regen and metadata targets.
  
  10 Oct 2004; Nicholas Jones <carpaski@gentoo.org> cnf/make.conf*:
  benno@nietvergeten.nl's touchups to make.conf files.

  10 Oct 2004; Nicholas Jones <carpaski@gentoo.org> sandbox/*: Includes one
  of solar's patches to fix up potential holes in sandbox.

  10 Oct 2004; Nicholas Jones <carpaski@gentoo.org> portage_exec.py: Added
  a cleanup routine.

  10 Oct 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: A could cwd
  fixes and removed the compat-writing for digests.

  10 Oct 2004; Nicholas Jones <carpaski@gentoo.org> md5check/mirror: brought
  them more up to date for the digest changes.

  10 Oct 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Moved the imports
  around to ensure that portage.py gives output on failure instead of emerge
  just dying. Added '-1' as a short for oneshot. Added shorter messages for
  the titlebar. Fixed signal handling more -- Emerge sets up a handler that
  calls to portageexit() before quitting normally.

  10 Oct 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Changed around
  the tarvars to make them STAR friendly. Added ECONF_SOURCE as a way to move
  econf out of the source directory and into a new build directory -- it
  defines the path to configure, not the command. Added CTARGET support. Added
  an rm for the infodir entries installed by autoconf so they don't kill what
  portage regens and vice versa.

  10 Oct 2004; Nicholas Jones <carpaski@gentoo.org> doins: Added Spanky's
  recursion patch.

  10 Oct 2004; Nicholas Jones <carpaski@gentoo.org> dolib: Added Spanky's
  symlink fix and condensed dolib*.

  10 Oct 2004; Nicholas Jones <carpaski@gentoo.org> doman: Added Spanky's
  i18n patch.

  08 Oct 2004; Brian Harring <ferringb@gentoo.org> portage_exec.py: Removed 
  the portage_exec.spawn_bash call for tee logging- instead, transferred in 
  some code that does path lookups (closer to the older portage.spawn call).
  Path lookup by default is on, but can be disabled via path_lookup=False.

  08 Oct 2004; Brian Harring <ferringb@gentoo.org> portage_locks.py: Reverted 
  to using flock by default- if it fails (unavailable), -then- use lockf, then
  hardlink.

  07 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> portage.py: Updated
  portdbapi.getfetchsizes function for new digestParseFile return values.

  05 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> quickpkg: Fixed bug whereby
  creating a package from within /var/db/pkg/cat and specifying pkg would
  create a broken package.

  05 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> emerge: Modified output for
  slotted installations. #26139

  05 Oct 2004; Jason Stubbs <jstubbs@gentoo.org> emerge: Refactored argv
  processing a little bit and made "emerge rsync" to emerge rsync with notice
  and "emerge --rsync" to emerge --sync with notice.

  05 Oct 2004; Nicholas Jones <carpaski@gentoo.org> portage_util.py: grabfile
  now handles a compat_level option for comment-based compatability changes --
  This feature is for migration only and is thus transitory.

  05 Oct 2004; Nicholas Jones <carpaski@gentoo.org> portage_exception: Added
  a DigestException which is a SignatureException.

  05 Oct 2004; Nicholas Jones <carpaski@gentoo.org> perform_checksum.py: Added
  a perform_all() and verify_all() functions that handle the new dict of hashes
  that digestParse returns -- It creates hashes for all the listed/known
  formats or verifies them all returning a tuple of ok,reason.

  05 Oct 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Cleared up
  a few system-package import-alls (stat,commands) -- If it breaks something,
  they can fix their code -- They are standard modules. Removed the import
  for select, as it appears nowhere in usage. Changed the portage_data import.
  Added exithandler() back into usage, it was disabled -- Also corrected it's
  handling. Unified the digest-parsing code and made it into an intelligable
  dict instead of the fixed format. Merged digest functions and added SHA1
  (arbitrary) handling in a new COMPAT mode using comments until we get the
  handling transitioned into common usage. digestCreateLines() handles the
  compatibility line values, and grabfile() has a compat-level handler.

  05 Oct 2004; Nicholas Jones <carpaski@gentoo.org> man/*: Random touchups.

  04 Oct 2004; <jstubbs@gentoo.org> pym/portage.py: Added fix for config
  protection failure when destination is a symlink. #13007

  04 Oct 2004; <jstubbs@gentoo.org> bin/repoman: Added detection of multiple
  overlays to repoman.

  04 Oct 2004; <jstubbs@gentoo.org> bin/repoman: Added repoman check
  for DEPEND-syntax following LICENSEs.

  03 Oct 2004; <genone@gentoo.org> pym/emergehelp.py:
  Add --metadata documentation to --help output.

  03 Oct 2004; <genone@gentoo.org> cnf/*, man/emerge.1, man/make.conf.5, 
  man/portage.5, pym/emergehelp.py:
  Changed documentation to use --action instead of action (bug #2365). 
  Also changed ufed references in make.conf to use the correct category.

*portage-2.0.51_rc7 (30 Sep 2004): RC + Lock cleanup, Happy RC #3

  30 Sep 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Rsync fix part 2
  for the distfiles, local, and packages directory unlinks.
  
  30 Sep 2004; Nicholas Jones <carpaski@gentoo.org> emerge-webrsync: Fix for
  the missing md5sum causing failure to download. Fixed up a couple messages.
  Modified the local rsync line.
  
  30 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Make more of
  the chown calls friendly. More output on strange exceptions in aux_get.
  
  30 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage_db_template.py:
  Added some more putput to the corruption message.

  29 Sep 2004; Jason Stubbs <jstubbs@gentoo.org> output.py: Added unicode-rxvt
  to the list of legal term types. #65762

  28 Sep 2004; Jason Stubbs <jstubbs@gentoo.org> etc-update: Added patch to
  use gsed on BSD from bug 60721.

*portage-2.0.51_rc6 (26 Sep 2004): RC + Lock cleanup, Happy RC #2

  26 Sep 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Restart fix for
  the -a into execv code.
  
  26 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage_locks.py: Fixed
  a traceback for Fat32 users.

*portage-2.0.51_rc5 (26 Sep 2004): RC + Lock cleanup, Happy RC #1

  26 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage_data.py: Fixed
  the BSD lchown issues.

  26 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Added the
  selinux secure dirs patch.

  26 Sep 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Modified the
  spinner again, --nospinner provides a basic ticker of one '.' per 100,
  normal spinner is the twirly one, and the FEATURES=candy spinner is a
  scrolly message.
  
  26 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage_locks.py: Fixed it.
  Discovered that the hardlocks were failing due to the creation of the lock
  prior to the link operation which was due to the NFS fcntl lock failure.
  
  26 Sep 2004; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Added
  support for per profile package.mask. Included check of packages file
  to ensure that the profile depends on an adequate portage version.

*portage-2.0.51_rc4 (26 Sep 2004): RC + Lock cleanup

  26 Sep 2004; Nicholas Jones <carpaski@gentoo.org> bin/clean_locks: A new
  tool to aid in the maintainence of hardlock-based locks. It can clean
  all locks from a directory or just the ones pertinent to the running host.

  26 Sep 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Updated the
  spinner.

  26 Sep 2004; Nicholas Jones <carpaski@gentoo.org> cnf/*: Added distlocks
  as a default feature. Added comments on distlocks and maketest and gpg.

  26 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage_locks.py: Lots
  of changes. Corrected the lockfile code to be an IOError. Added some
  helper functions to reduce duplication in the hardlink code. Added a
  callback to a cleanup function registered with atexit to ensure we clean
  locks up on normal terminations. Fixed the code to actually work on most
  NFS systems and hopefully have the fallback (INODE test) working on
  very broken systems. Added a cleanup function that is interfaced through
  the clean_locks script and the registered atexit call.

*portage-2.0.51_rc3 (26 Sep 2004): And we have another Release Candidate!

  26 Sep 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Modified the
  spinner.
  
  26 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage_db_flat.py: Fixed
  a lockfile descriptor leak due to duplicated lock calls.

  26 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage_lock.py: Added
  more cleanup to the lockfile descriptors.

*portage-2.0.51_rc2 (25 Sep 2004): And we have another Release Candidate!

  25 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage_db_flat.py: Fix
  for typos.

  25 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage_locks.py: Changed
  all the calls to lockf which wraps fcntl. Made the chown on the locks
  optional -- if it fails, it'll be annoying, but there's a message. Added
  code to perform the hardlink-shuffle which uses hardlinks as a locking
  mechanism (NFSv2 needs this).

  25 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage_db_flat.py:
  Added locking around the file creation to ensure atomicity.
  
  25 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage_localization.py:
  A little spot to provide the '_' function and examples and future code.

  25 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage_file.py: Added
  the module to contain file/directory functions that are useful. Additional
  function 'makedirs' handles creation of directories with recursive perms.
  
  25 Sep 2004; Nicholas Jones <carpaski@gentoo.org> getbinpkg.py: Fixed the
  exception handling to not traceback.
  
  25 Sep 2004; Nicholas Jones <carpaski@gentoo.org> etc-update: Typo fix.
  
  25 Sep 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Caused the
  binary metadata downloading to be a little more verbose. Fixed the
  sync command's arguments so that it deletes top level files.

  25 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Added
  Cretin's patch for prelink blacklists. Increased the verbosity of the
  'mylines' output to let people know what files are affected with nulls.
  Added a workaround for a race condition that somehow exists inside of
  auxget when there is heavy lockfile contention -- Must be a lockfile
  cleanup issue.

  25 Sep 2004; Jason Stubbs <jstubbs@gentoo.org> emerge: Modified env_update
  to always run ldconfig if makelinks is True, in order to ensure that
  missing symlinks are created. Added logic to treewalk to check if package
  is being downgraded and only run env_update with makelinks=False in that
  case. (#54655)

  24 Sep 2004; Jason Stubbs <jstubbs@gentoo.org> emerge: Added the removal
  of --ask from argv when restarting after an emerge of portage. (#47379)

  21 Sep 2004; Jason Stubbs <jstubbs@gentoo.org> portage_util.py: Changed
  varexpand to convert '\'-prepended newline chars to space rather than '\n'.

  21 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Fixed the
  bintree ebuild locating. Removed the virts_p debug/bug statements.
  
  21 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage_checksum: Added
  a fix for checksum tracebacks that tracebacked.
  
  21 Sep 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Added more
  variables to vardb.

  21 Sep 2004; Jason Stubbs <jstubbs@gentoo.org> emerge: Added (slightly
  modified) patch from bug 64682.

  16 Sep 2004; Jason Stubbs <jstubbs@gentoo.org> portage.py: Modified
  getmaskingstatus() to use settings.prevmaskdict rather than reading packages
  directly in support of cascading profiles.

*portage-2.0.51_rc1 (25 Sep 2004): And we have a Release Candidate!

  15 Sep 2004; Nicholas Jones <carpaski@gentoo.org> ebuild: On merge, disable
  the noauto feature explicitly.

  15 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Fixed the
  'missing ebuild' for uninstalls of packages not in the tree.

  15 Sep 2004; Nicholas Jones <carpaski@gentoo.org> man/*: Started adding
  to the documentation in order to break it an make it look funny. Added a
  couple entries for missing concepts like 'inherit' and 'useq' and 'hasq'.
  Cleared up a few things here and there with usage. Added in the metadata
  target for emerge.

*portage-2.0.51_pre24 (14 Sep 2004): Last _pre before docs and rc/stable.

  14 Sep 2004; Nicholas Jones <carpaski@gentoo.org> repoman: Extra handling
  for weird CVS/Repository info on OSX.

  14 Sep 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Fixed a traceback
  in traceback handling where a value was trying to be extracted from an
  exception. Handled the case where a binary package does not have an ebuild
  in a tree or overlay and the verbose overlay output requires it. Change to
  the CVS checkouts for emerge sync, moved the -P immediately after the co.

  14 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage_exception.py:
  Added in some spacing between related exception groups.

  14 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Changed a bunch
  of lines unnecessarily to start getting the locale strings ready -- I'll
  probably have bugs due to this because I've been doing dumb things like
  that recently. 

  14 Sep 2004; Nicholas Jones <carpaski@gentoo.org> man/*: Fixed ka0ttic's
  email address.

  14 Sep 2004; Brian Harring <ferringb@gentoo.org> bin/ebuild.sh: Removed 
  the ${T}/successful logic, it's no longer needed.  Existed only for the 
  $0 "$@" 2>&1 | tee $PORTAGE_LOG trickery, which is now handled via
  portage_exec.spawn.

  13 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Fix for empty
  categories/portage-tree causing a traceback.
  
*portage-2.0.51_pre23 (11 Sep 2004): Fixes and stuff.

  11 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Another fix
  to the virtuals/use code -- It wasn't using treeVirtuals.

*portage-2.0.51_pre22 (11 Sep 2004): Fixes and stuff.

  11 Sep 2004; Jason Stubbs <jstubbs@gentoo.org> portage.py: Fixed breakage
  in cacheddir changes upon stat'ing a broken symlink.

  11 Sep 2004; Jason Stubbs <jstubbs@gentoo.org> portage.py: Fixed missing
  check in autouse function. Fixed out-of-bounds exception on catpkgsplit
  tuple access in vardbapi.move_ent. Changed to manual stat calls in cacheddir.

  10 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Removed the
  circular deps of vardbapi and config.

*portage-2.0.51_pre21 (09 Sep 2004): Fixes and stuff.

  09 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Possible fix
  for autouse() that will prevent recursion and locks.
  
*portage-2.0.51_pre210 (09 Sep 2004): (pre-pre release for 21)
  
  09 Sep 2004; Nicholas Jones <carpaski@gentoo.org> archive-conf: Added patch
  so that it runs.
  
  09 Sep 2004; Nicholas Jones <carpaski@gentoo.org> dispatch-conf: Added patch
  to die when rcs isn't installed but is required by options.
  
  09 Sep 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Solar's checks
  for suid bind issues.
  
  09 Sep 2004; Nicholas Jones <carpaski@gentoo.org> fixvardbentries: Updated
  to Jason's current script.
  
  09 Sep 2004; Nicholas Jones <carpaski@gentoo.org> g-cpan.pl: Added a fix
  to store the ebuilds in a defined overlay.
  
  09 Sep 2004; Nicholas Jones <carpaski@gentoo.org> output.py: Added all
  xterm* terms to the title-list.
  
  09 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Fixed the
  cascade/stack functions -- use.defaults is fully line-incremental now.
  Removed a lot of cruft commented-code. Added an ebuild-mover into the
  entry move functions.
  
  09 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage_util.py: Placed
  the lex code into a try/except so we can add the filename into the error
  that is passed back from shlex.
  
  08 Sep 2004; Brian Harring <ferringb@gentoo.org> portage.py: Modified
  config.__init__(clone=1) so that profiles list is preserved, allowing for 
  all profile's bashrc's to be sourced.

  06 Sep 2004; Brian Harring <ferringb@gentoo.org> portage.py: Fixed 
  fetch logic for when DISTDIR isn't writable, but the file is fully 
  fetched already (#62985).

  05 Sep 2004; Brian Harring <ferringb@gentoo.org> portage.py ebuild.sh:
  Added use flag support to RESTRICT; usual syntax.

  04 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage_data.py: Added
  FreeBSD as a BSD-type OS and merged the Darwin branch with them.

  04 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage_contents.py: The
  parsing portion of a persistent contents file parser that can return the
  owner of a particular file or directory by parsing (and storing) data from
  the contents files.

  04 Sep 2004; Nicholas Jones <carpaski@gentoo.org> portage_const.py: Added
  LOCALE_DATA_PATH to the constants for future gettext (internal) support.

  04 Sep 2004; Nicholas Jones <carpaski@gentoo.org> output.py: Fixed the
  title changes to no clear the icon title.

  04 Sep 2004; Nicholas Jones <carpaski@gentoo.org> prepman: No longer
  gzip's symlinks -- This needs to gain 'target changed' logic.

  01 Sep 2004; Brian Harring <ferringb@gentoo.org> pym/portage.py:
  Cleaned up the imports, cutting down on from blah import *, instead 
  importing only what is strictly needed for backards compatability.

  01 Sep 2004; Brian Harring <ferringb@gentoo.org> pym/portage_exec.py:
  Nick caught this- changed setgid/setuid order so it works.

  01 Sep 2004; Brian Harring <ferringb@gentoo.org> pym/portage.py:
  Added Michael Stewart's patch correcting optional args being specified 
  via position- bug #61881.

  01 Sep 2004; Brian Harring <ferrignb@gentoo.org> pym/portage.py, 
  pym/portage_exec.py, pym/portage_checksum.py: Restructured spawn
  so that we don't have two versions; all spawn calls trace back to 
  portage_exec.spawn, either through spawn_bash or spawn_sandbox.
  portage_exec.spawn is strictly an os.execve wrapper now, so bash 
  doesn't have to be involved unless desired (if desired use spawn_bash).

  31 Aug 2004; Brian Harring <ferringb@gentoo.org> bin/emerge: Debug
  print statement left in global scope, corrected it.

  31 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage_checksum.py:
  Solar's patch to check if prelink binary exists prior to executing it.

  31 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage_checksum.py:
  Only prelink-check when requested -- This is only valid for merge/unmerge
  operations -- Also happens to fix the access violations in portageq.

  31 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Adjustments
  for the prelink-check changes.

  31 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage_exception.py:
  Made the exceptions more hierarchial. Yes, I'm aware I can't speel.

  30 Aug 2004; Brian Harring <ferringb@gentoo.org> bin/repoman: Added 
  solar's patch to make the file.size check display the size of the 
  offender.

  30 Aug 2004; Brian Harring <ferringb@gentoo.org> pym/portage.py, 
  pym/portage_util.py: Removed -all- duplicate function definitions between 
  portage_util and portage.  This is just -begging- for a bug where 
  portage.py's definitions are fixed, but portage_util isn't.
  If you're moving code out of portage.py (good thing) please yank the def 
  from portage.py.  Especially if you're importing everything from new 
  home of the module.

  30 Aug 2004; Jason Stubbs <jstubbs@gentoo.org> pym/emerge: Added python 2.2
  compatibility fix. (#62128) Added fix to fail nicely on missing
  /etc/gentoo-release. (#62149)

  30 Aug 2004; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Fixed two
  bugs in bindbapi.aux_get() preventing retrieval of information about tbz2s.

  26 Aug 2004; Brian Harring <ferringb@gentoo.org> bin/etc-update: minor 
  tweak to etc-update to support single quotes in /etc/etc-update.conf
  bug (#56785).  Added Mamoru Komachi (usata)'s fix for osx (#60721).

  26 Aug 2004; Brian Harring <ferringb@gentoo.org> pym/portage.py, 
  pym/portage_exec.py, bin/ebuild.sh: Removed the PORT_LOGDIR $0 $* | tee 
  hack, and re-implemented it using spawn.  Spawn has been extended so that 
  fd_pipes can receive a dict of fd # -> fd, and optionally be nonblocking 
  via returnpid.  portage.spawn has support for a logfile optional arg- if 
  specified, spawn logs stdout/stderr via tee -i -a to the specified file.
  Note portage_exec.spawn doesn't currently support this option.

  25 Aug 2004; <genone@gentoo.org> pym/portage.py, +pym/portage_checksum.py, 
  pym/portage_gpg.py, -pym/portage_md5.py:
  renamed portage_md5 to portage_checksum which includes support for sha1.

  24 Aug 2004; Brian Harring <ferringb@gentoo.ogr> bin/ebuild.sh: Tweak to
  dyn_test to check if $S exists prior to cd'ing to it.

  24 Aug 2004; Brian Harring <ferringb@gentoo.org> pym/portage.py: Fixed a 
  traceback issues in dblink.treewalk when collision-protect is active.  
  Also added specific check/complaint for PORT_LOGDIR='' to the config class,
  since it should either not be set, or something non-null- a null 
  PORT_LOGDIR triggers a traceback in doebuild do to an attempted chmod.

  23 Aug 2004; Brian Harring <ferringb@gentoo.org> pym/portage.py: Added a 
  macos ranlib hack; dblink.mergeme by default resets each files mtime, which 
  makes static archives merged to the fs worthless (linker notes the files 
  mtime differs from an internal mtime, and bails).  This closes out bug 
  (#58848), and will be obsoleted when refcounts are used instead of mtime + 
  md5.

  21 Aug 2004; Brian Harring <ferringb@gentoo.org> bin/ebuild.sh: Expanded
  CONF_LIBDIR support, so it honors --prefix set values. (#61060)

  19 Aug 2004; Marius Mauch <genone@gentoo.org> bin/repoman: Added
  FEATURES and USE to the readonly variable check.

  17 Aug 2004; Brian Harring <ferringb@gentoo.org> pym/portage_data.pym:
  Adding missing imports.

  17 Aug 2004; Brian Harring <ferringb@gentoo.org> bin/repoman: Minor 
  tweak to make repoman detect the repolevel correctly in overlays.
  (#60298).

*portage-2.0.51_pre20 (16 Aug 2004): Fixes and Public Readiness & GPG
  
  16 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Fixed the
  imports and new modules so that the API remains constant.

  16 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage_exec.py: Created
  for external operations and calls. Presently contains spawn. Mostly for
  prevention of circular imports.

  16 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage_md5.py: using
  the spawn call from portage_exec.py to avoid the circular import.

  16 Aug 2004; Brian Harring <ferringb@gentoo.org> bin/repoman: Fixed a 
  traceback related to file.size and --fix, added compatability tweaks for
  xmllint.

  16 Aug 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Fixed the lock
  handling and unique_array calls.

*portage-2.0.51_pre19 (16 Aug 2004): Fixes and Public Readiness & GPG
  
  16 Aug 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Add predict
  for gpg verification.

  16 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Fixed the
  lock code to use the external module.

  16 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage_gpg.py: Fixed
  the writing operations and access violations.

  16 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage_locks.py: Fixed
  the code so it acutally works and is used.

  16 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage_md5.py: Fixed
  the lock calls.

*portage-2.0.51_pre18 (16 Aug 2004): Fixes and Public Readiness & GPG
  
  16 Aug 2004; Nicholas Jones <carpaski@gentoo.org> dolib*: Added LV's
  CONF_LIBDIR patch to help out the 32/64 bit lib migrations.
  
  16 Aug 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: CONF_LIBDIR
  patch updates. Added a possible fix for the export issues in environment.

  16 Aug 2004; Nicholas Jones <carpaski@gentoo.org> prepall/lib: CONF_LIBDIR

  16 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Adjusted the
  manifest/gpg code to reduce the output on missing sigs. Changed the GPG
  homedir to the PORTAGE_GPG_DIR instead of using rsync for the keyring --
  This requires manual intervention.

  16 Aug 2004; Nicholas Jones <carpaski@gentoo.org> sandbox: Added the 32/64
  paths in for 32/64 lib migrations.

  16 Aug 2004; Brian Harring <ferringb@gentoo.org> pym/cvstree.py 
  pym/portage.py: Round #2 of ignorecvs, now w/ sane regex goodness and an 
  addition to digest(gen|check) to use the same cvs filter for Manifests.
  (#46070).

  15 Aug 2004; Nicholas Jones <carpaski@gentoo.org> emerge: message fix for
  packages.provided.

  15 Aug 2004; Nicholas Jones <carpaski@gentoo.org> repoman: Made file.size
  a warning for the time being.

  15 Aug 2004; Nicholas Jones <carpaski@gentoo.org> cvstree.py: Removed the
  auto-ignore regex as it is broken AND it breaks Manifests due to excess
  files allowed into them.

  15 Aug 2004; Nicholas Jones <carpaski@gentoo.org> emerge: A couple changes
  to the select_dep exception handling for the signing code.

  15 Aug 2004; Nicholas Jones <carpaski@gentoo.org> env-update.sh: Added
  Spanky's env-update  shell script version.
  
  15 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Moved more
  code into seperate modules. Added support for Manifest verification and
  usage of 'gpg' 'strict' 'severe' to enable various condition responses.
  
  15 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage_const.py: Moved
  all constants to this module. (All uppercase defines)

  15 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage_data.py: Contains
  all calculated information. uid/gid info. system-specific values. All probed
  information should go here.
  
  15 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage_exception.py:
  Added many exceptions for the GPG verification code. Added many general
  exceptions to help differentiate from explicit portage exceptions and
  those issued by python.
  
  15 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage_gpg.py: Handling
  of gpg verification code and keyring management/trust.
  
  15 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage_locks.py: Moved
  the lock code out of portage.py.

  15 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage_md5.py: Moved the
  MD5 calculation code out of portage.py.

  15 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage_util.py: Moved
  writemsg and unique_array into portage_util.

  13 Aug 2004; Brian Harring <ferringb@gentoo.org> bin/ebuild.sh: Added 
  support for ECONF_LIBDIR; if it isn't defined, then --libdir isn't 
  passed to the configure script.  If it is defined, then the configure 
  script gets --libdir=/usr/${ECONF_LIBDIR}.

  13 Aug 2004; Brian Harring <ferringb@gentoo.org> pym/cvstree.py: 
  Added robbat2's patch to ignore files that cvs ignores. (#46070). 

  13 Aug 2004; Brian Harring <ferringb@gentoo.org> bin/ebuild.sh: Shifted 
  the add* sandbox function definitions to before profile.bashrc srcing.
  As bug #60147 demonstrated, profiles occasionally need to adjust 
  SANDBOX_WRITE (current case being for /usr/lib64/{conftest,cf}).

  13 Aug 2004; Brian Harring <ferringb@gentoo.org> bin/emerge: Related to 
  bug #60256, adjusted format_size so that is always returns a string.

  13 Aug 2004; Jason Stubbs <jstubbs@gentoo.org> bin/emerge:
  Relocated blocker checking code to before pkgsettings.setcpv() is called
  on it in depgraph.create()

  13 Aug 2004; Brian Harring <ferringb@gentoo.org> pym/portage.py: 
  Tweaked lockfile, so it attempts a non-blocking lock_ex first, then
  states it's waiting on lock blar, then attempts a blocking lock.  This 
  will be useful for informing the user why portage seems to have hung, 
  and good for debugging.

  13 Aug 2004; Brian Harring <ferringb@gentoo.org> bin/emerge-webrsync:
  Added support for snapshot md5sum's (mirrors now carry them).
  This is used to ensure the fetched snapshot is sane; if it's sane, 
  then we reuse it for sync'ing.  This nulls the -n option, so it's been
  removed. Closes out #15990, but no longer automatically forcing a refetch.
  Refetches are only forced if the md5 is invalid.

  12 Aug 2004; Brian Harring <ferringb@gentoo.org> pym/portage.py: 
  Cleaned up fetch a bit more, saner error messages when unable to 
  write to DISTDIR.

  12 Aug 2004; Jason Stubbs <jstubbs@gentoo.org> bin/emerge:
  Fixed the fix for the earlier traceback on installed package not being
  in PORTDIR to remove duplicate work.

  11 Aug 2004; Brian Harring <ferringb@gentoo.org> bin/ebuild.sh: 
  Added FEATURES="autoconfig" support. (#55476)

  11 Aug 2004; Brian Harring <ferringb@gentoo.org> pym/portage.py: 
  Added check to lockfile and fetch, if file already is owned by 
  portage group, don't try and chown it.  This will close #60079.

  10 Aug 2004; Brian Harring <ferringb@gentoo.org> bin/emerge: Fixed a 
  traceback issue, an ebuild is no longer in the tree, but is installed 
  and needs to be used in the depgraph- the problem was, emerge 
  assumed the ebuild was in porttree's db, when vartree should be used 
  if the package is known to be installed.

  10 Aug 2004; Brian Harring <ferringb@gentoo.org> pym/portage.py:
  Killed a couple of corner cases for non-root fetch and lockfile calls.

  10 Aug 2004; Brian Harring <ferringb@gentoo.org> pym/portage.py
  bin/ebuild.sh: Add check to ensure that install phase has been 
  ran prior to qmerge phase being attempted.  This can happen 
  when the user is using ebuild to step through the phases.
  Corrected bug in listdir where it would return None, rather then 
  []- all callee's expect a returned list, not None.  Same for ftype,
  cause's a tb if you just haphazardly rely on cachedir's return.

  09 Aug 2004; Brian Harring <ferringb@gentoo.org> pym/portage.py: 
  Leave /var/tmp with it's own permissions, chowning/chmoding just 
  /var/tmp/portage (#37521).

  09 Aug 2004; Brian Harring <ferringb@gentoo.org> bin/ebuild.sh 
  pym/portage.py: Corrected bug in profile.bashrc support, added aliases 
  for saving/restoring IFS (remove_path_entry and profile.bashrc loop 
  adjust IFS temporarily).  Closes #59749.

  08 Aug 2004; Brian Harring <ferringb@gentoo.org> dispatch-conf: 
  Converted os.rename calls to shutil.move; the former can't cross fs's,
  the latter can. (#46148)

  07 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Fixed the
  cache updates so that an env-update forces ld updating.
  
  07 Aug 2004; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py
  pym/portage_dep.py: Added a new parameter to use_reduce so that !arch?
  checks can be adhered to even when matchall=1 and arch is not is masklist.

  07 Aug 2004; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py
  pym/portage_dep.py: Added profile masked use flags to repoman check.
  Moved || refactoring to a separate function. Reworked use_reduce logic
  into simpler sections.

  05 Aug 2004; Brian Harring <ferringb@gentoo.org> pym/portage_dep.py:
  What can I say, I can't get enough of bug (#59574).
  I'm operating under the assumption there still is a bug in the 
  use_reduce logic, soo I've left a fairly massive amount of debugging 
  code in place that's currently disabled.  It's *very* useful for 
  tracking exactly what/how use_reduce decides on a operator node.

  05 Aug 2004; Brian Harring <ferringb@gentoo.org> pym/portage.py: 
  I introduced a bug in the previous commit, basically 
  portage.settings.archlist list of arch keywords was being actively 
  pruned by repoman as it stepped through arches for dep checking.
  Basically, needed to make a copy of archlist rather then using the 
  actual archlist object.  Should be the final issue for (#59574).

  05 Aug 2004; Brian Harring <ferringb@gentoo.org> pym/portage.py: Fix 
  in the same area, if use="all" (repoman wants -every use flag- checked),
  it should call use_reduce w/ matchall set appropriately. (#59574)

  05 Aug 2004; Brian Harring <ferringb@gentoo.org> pym/portage.py: And...
  repoman's arch check got hosed again.  The code in dep_check for 
  building a masklist was incorrect, 3 line fix. (#59574)

*portage-2.0.51_pre17 (03 Aug 2004): Fixes and Public Readiness

  03 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage_dep.py: Again
  fixed the || exceptions to understand nested legal || statements.

*portage-2.0.51_pre16 (03 Aug 2004): Fixes and Public Readiness

  04 Aug 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Changed the
  virtual/glibc references to virtual/libc.

  04 Aug 2004; Nicholas Jones <carpaski@gentoo.org> prepman: No longer runs
  gzip on .keep files.

  04 Aug 2004; Nicholas Jones <carpaski@gentoo.org> getbinpkg.py: Added in
  an active/passive option for FTP connections -- Requires the appending of
  an asterisk to the HOST portion of the ftp string to use active connections.

  04 Aug 2004; Nicholas Jones <carpaski@gentoo.org> make.conf*: Updates for
  the active-connection ftp option.

  04 Aug 2004; Nicholas Jones <carpaski@gentoo.org> emergehelp.py: Removed
  the bin/ version and replaced it with a duplicated pym/ version.

  03 Aug 2004; Brian Harring <ferringb@gentoo.org> pym/portage.py: 
  Added check to ensure /var/tmp/portage's permissions were sane. (#56665)

  03 Aug 2004; Brian Harring <ferringb@gentoo.org> bin/repoman: Added 
  explicit check for missing files directory, rather then ignoring it.
  Also added an explicit commit-time check for CVS/Entries being sane.
  (#57141).

  03 Aug 2004; Brian Harring <ferringb@gentoo.org> bin/repoman: reworked 
  the qacats definition so that the type of bug that borked emerge help is 
  no longer possible.

  03 Aug 2004; Brian Harring <ferringb@gentoo.org> pym/portage.py, 
  bin/emerge: Corrected emerge --fetch-all-uri issues, now works.  Basically,
  FEATURES="cvs" emerge -f blar == emerge --fetch-all-uri blar.  The fetch
  option handling in emerge could use some cleanup.

  03 Aug 2004; Brian Harring <ferringb@gentoo.org> pym/portage.py: Ongoing 
  cleanup in emerge -fp; this corrects a minor naggle affecting previous 
  releases, where emerge -fp would still attempt to do md5 checks on files.

  03 Aug 2004; Brian Harring <ferringb@gentoo.org> pym/portage.py: Corrected 
  logic for fetch(..., ..., use_locks=1,listonly=1) attempting to use locks, 
  when fetch is just printing the src_uri's.  (#59394).

  03 Aug 2004; Brian Harring <ferringb@gentoo.org> bin/repoman: Corrected the
  borkage I introduced into repoman's help option- it was throwing a traceback
  due to file.executable's key name being typoed.

  03 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage_dep.py: Enhanced
  the invalid depend string identification for || (and &&) strings.

*portage-2.0.51_pre15 (03 Aug 2003): Fixes and Public Readiness

  03 Aug 2004; Brian Harring <ferringb@gentoo.org> bin/repoman: Corrected 
  typo, trying to remove .backup_metadata.dtd rather then metadata.dtd.

  03 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage_dep.py: Changing
  from dep_opconvert to use_reduce introduced a bug due to how OR'd lists are
  managed by the remaining dep handling functions -- Fixed by emulating the
  format in use_reduce.

  02 Aug 2004; Brian Harring <ferringb@gentoo.org> bin/repoman, pym/portage.py:
  Added local caching of metadata.dtd, to prevent flaky connections from 
  flagging a packages metadata.xml as invalid due to xmllint failing to fetch 
  metadata.dtd.  Simplified version of patch in (#57210).

  02 Aug 2004; Brian Harring <ferringb@gentoo.org> bin/ebuild.sh, 
  pym/portage.py:  Added support for src'ing a profile bashrc.  Fex, if
  /etc/make.profile/profile.bashrc exists, it is sourced prior to ebuild.sh
  defining any of it's functions.  (#58415).

  02 Aug 2004; Brian Harring <ferringb@gentoo.org> bin/emerge-webrsync: General
  cleanup; uses the make.conf defined FETCHCOMMAND for fetching (fixing #57887),
  runs emerge metadata after a successful sync also.

*portage-2.0.51_pre14 (02 Aug 2003): Fixes and Public Readiness

  02 Aug 2004; Nicholas Jones <carpaski@gentoo.org> do*: Added exit calls
  on failures and changed the install to use short options for BSD compat.
  
  02 Aug 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: unset
  GLOBIGNORE added. Echo out the confingure command from econf. Moved the
  maketest code to dyn_preinst so it didn't force-run maketest. Added a
  patch for keyword expansion (requires portage-2.0.51 for use).

  02 Aug 2004; Nicholas Jones <carpaski@gentoo.org> emerge: --fetch-all-uri
  added to force all URIs to be downloaded (works like features=cvs). libc
  version printing enhancements. Fixed the binary package selection in an
  alt ROOT. Headers and libtool added to info. --ask removed on a resume.
  
  02 Aug 2004; Nicholas Jones <carpaski@gentoo.org> prepstrip: Change ewarn
  to echos to stderr with beeps.
  
  02 Aug 2004; Nicholas Jones <carpaski@gentoo.org> repoman: Added to the
  OK message output for issues that fail.

  02 Aug 2004; Nicholas Jones <carpaski@gentoo.org> make.conf: Typo correction
  patch added.
  
  02 Aug 2004; Nicholas Jones <carpaski@gentoo.org> output.py: Added kterm
  to the titlebar terminals.

  02 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Added a message
  regarding the location of the virtuals file (move to /etc/portage/profile).
  Added a invalid-mirror message and a missing URI message for fetching. Added
  the selinux sandbox patch. Removed the old dep_opconvert call as all ?:
  syntax is gone.

  02 Aug 2004; Nicholas Jones <carpaski@gentoo.org> portage_dep.py: Fixed the
  use_reduce code to properly handle negative requirements on masked flags.
  
  02 Aug 2004; Nicholas Jones <carpaski@gentoo.org> tbz2tool.c: Made all the
  comments to C style.

  02 Aug 2004; Nicholas Jones <carpaski@gentoo.org> libsandbox: Code from
  Seth Robertson that tracked down all adjuct flags for read operations that
  did not invoke a write operation.

  01 Aug 2004; Masatomo Nakano <nakano@gentoo.org> bin/emerge: Added
  message about ._cfg* files after emerge sync.

  01 Aug 2004; Masatomo Nakano <nakano@gentoo.org> pym/portage.py: Modified 
  updating /etc/portage/package.* logic to see  CONFIG_PROTECT and 
  CONFIG_PROTECT_MASK.

  01 Aug 2004; Marius Mauch <genone@gentoo.org> bin/emerge:
  Added a warning for `emerge /path/to/ebuild`

  01 Aug 2004; Marius Mauch <genone@gentoo.org> bin/emerge:
  Fixing broken logic for the `emerge rsync` deprecation notice (it only showed
  up on `emerge --rsync`).

  01 Aug 2004; Brian Harring <ferringb@gentoo.org> pym/portage.py bin/emerge:
  Fixed the lockfile/unlockfile functions so that they correctly support having
  an int passed in (the fd #), or having a file object passed in.  Corrected 
  lockfile so that the lock is owned by portage group, with g+w permissions
  (this is needed since sudo emerge blar can bail, leaving a stale lock that 
  non-root usage cannot remove).  Added locking to emerge's emergelog function, 
  preventing log messages from potentially getting mixed together.  Added check 
  to fetch function to complain if unable to write to DISTDIR (previously the 
  fetcher just bailed, stepping through each src_uri).  Added lockfiles for 
  fetching/md5ing of the src- these lockfiles are stored in a subdirectory 
  (locks_in_subdir=".locks") if specified, and locking is controlled via 
  use_locks (defaults to on).  emerge -f no longer requires root/sudo to run 
  (ebuild never had this restriction). (#42969)

  31 Jul 2004; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py bin/emerge:
  Removed USE-based SLOT support. Removed uselist from getslot methods.

  29 Jul 2004; Brian Harring <ferringb@gentoo.org> bin/repoman: Added check for
  files over 20k in a packages files directory.  file.size, repoman treats it 
  as a a failure.  Added the repoman manpage entries for file.size, and 
  file.executable (I missed file.executable earlier).

  28 Jul 2004; Masatomo Nakano <nakano@gentoo.org> pym/portage.py: Fixed a bug
  emerge doesn't pkg_setup() with -k/-K option. (#25152)

  28 Jul 2004; Masatomo Nakano <nakano@gentoo.org> pym/portage.py:
  Added ._cfg* file for updating /etc/portage/packages.* during global
  update.

  28 Jul 2004; Masatomo Nakano <nakano@gentoo.org> bin/emergehelp.py,
  man/emerge.1: Added explanation of --newuse to manpage/help. 
  Added information of --verbose to manpage.

  27 Jul 2004; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py:
  Reversed the order of profile virtuals (dirVirtuals) so that a cascading
  profile's virtuals are stacked in the correct order.

  26 Jul 2004; Brian Harring <ferringb@gentoo.org> bin/emerge:
  Removed the `which blah` calls- A) stage1 lacks which, B) which searches
  $PATH- all sane shells do this already when handed a command that 
  isn't absolute path.  These which calls were used in 
  commands.getstatusoutput() calls, which starts up a shell with
  the arg passed to the shell, so "`which blar` args" isn't needed.

  26 Jul 2004; Brian Harring <ferringb@gentoo.org> bin/repoman:
  Added file.executable check- ebuilds, digests, Manifest, ChangeLog, and
  metadata.xml don't need the executable bit set.  CVS preserves it upon 
  commit, so we do the check prior to commit.  (#55647)

  26 Jul 2004; Brian Harring <ferringb@gentoo.org> bin/emerge:
  Removed the hardcoding of uname for emerge info, using which to find it
  instead.

  26 Jul 2004; Brian Harring <ferringb@gentoo.org> bin/repoman:
  Added check to ensure manifest recommit is at least possible when 
  committing, and corrected handling of CVS/Root files for OSX machines.
  Removed readline import, doesn't seem to be used at all.

  26 Jul 2004; Jason Stubbs <jstubbs@gentoo.org> bin/emerge pym/portage.py:
  Refactored slot code into portage.py to remove usage off portage_dep.

  25 Jul 2004; Brian Harring <ferringb@gentoo.org> bin/dohtml:
  Corrected a bug in dohtml where it was unable to install files with a space 
  in their name (#58258)

  25 Jul 2004; Jason Stubbs <jstubbs@gentoo.org> bin/emerge pym/portage.py:
  Deprecated --inject and added support for package.provided in both the
  profiles and /etc/portage/profile directory.

  24 Jul 2004; Jason Stubbs <jstubbs@gentoo.org> bin/emerge pym/portage.py:
  Added USE flag based SLOT support.

  24 Jul 2004; Jason Stubbs <jstubbs@gentoo.org> bin/emerge pym/portage.py:
  Added USE flag based PROVIDE support. (#32114)

  24 Jul 2004; Jason Stubbs <jstubbs@gentoo.org> src/sandbox-1.1/libsandbox.c:
  Fixed lchown sandbox bug. (#58084)

  23 Jul 2004; Brian Harring <ferringb@gentoo.org> bin/repoman: Corrected a 
  false positive on the ebuild.nesteddie check.  Basically it wasn't looking 
  to see if the line was active or not (fex # (die), bash skips, but repoman 
  caught).  Aside from that, that check is still capable of missing multiline 
  ebuild.nesteddie instances.  (#33011)

  22 Jul 2004; Brian Harring <ferringb@gentoo.org> bin/ebuild.sh: Re-enabled
  binary QA interceptors, with a minor twist- the QA_INTERCEPTORS is used to 
  specify what QA interceptors will be defined.  These functions are no longer
  saved in the ebuild's stored env (exist *only* in depend phase), and have been 
  expanded to identify if it's the ebuild, or eclass that's triggering the QA 
  Notice (#54652).  The interceptors behaviour when the binary is missing has 
  been corrected to correctly output "missing command $bin: args".

  21 Jul 2004; Masatomo Nakano <nakano@gentoo.org> bin/emerge: Fixed bug 
  which blocks a package itself with -U option.

  20 Jul 2004; Masatomo Nakano <nakano@gentoo.org> bin/repoman: Fixed
  profile cache problem. (#43601, #56170)

  20 Jul 2004; Marius Mauch <genone@gentoo.org> bin/ebuild.sh:
  added usev() and hasv() as complement to useq() and hasq().

  18 Jul 2004; Brian Harring <ferringb@gentoo.org> bin/repoman: Corrected 
  ebuild.allmasked check, so that it checks for an available version across all
  arches, rather then the last arch processed.  Typo fixed also- bugs #57356 and
  #57068.

  17 Jul 2004; Jason Stubbs <jstubbs@gentoo.org> bin/repoman: Added patch from
  #49126 that makes repoman check that a USE flag from use.local.desc applies
  to the packages that make use of it.

  14 Jul 2004; Marius Mauch <genone@gentoo.org> bin/emerge:
  added a deprecation warning for --upgradeonly

  14 Jul 2004; Marius Mauch <genone@gentoo.org> bin/etc-update:
  Added a hint to etc-update so people that don't know what to do don't use -3
  or -5 by accident.

  12 Jul 2004; Jason Stubbs <jstubbs@gentoo.org> bin/emerge:
  Adjusted masked binary checking code to exclude --usepkgonly.

  10 Jul 2004; Jason Stubbs <jstubbs@gentoo.org> man/portage.5:
  Adjusted documentation for user use.mask to match implementation.

*portage-2.0.51_pre13 (09 Jul 2004): Fixes and Public Readiness

  21 Jun 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Included
  ferringb's logic fix for the repoman code. Fix that prevents vardb from
  using all files and directories in the vardb as keys instead of only the
  proper ones. Code touchups.

  21 Jun 2004; Nicholas Jones <carpaski@gentoo.org> prepstrip: Fixes that
  result in BSD compat and split the regex -- find doesn't do extended.

  21 Jun 2004; Nicholas Jones <carpaski@gentoo.org> emerge: included a uname
  fix for bsd. Added --fetch-all-uri as a way to get all URIs downloaded for
  a package regardless of conditionals.

  21 Jun 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Moved the
  declaration of ebuild_phase toward the top.

  09 Jul 2004; Jason Stubbs <jstubbs@gentoo.org> bin/emerge:
  Fixed incorrect assignment of depgraph.mydbapi[] objects.

  07 Jul 2004; Marius Mauch <genone@gentoo.org> bin/repoman:
  Solved a big memory problem in repoman where a full scan required several
  gigabytes, caused by apparently unused objects.

  04 Jul 2004; Jason Stubbs <jstubbs@gentoo.org> bin/emerge pym/portage.py:
  Fixed issue that allowed installed virtuals to overide user virtuals.

  03 Jul 2004; Jason Stubbs <jstubbs@gentoo.org> bin/emerge: Added masked
  package removal to binpkg candidates before getting the best. (#55871)

  01 Jul 2004; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py:
  Fixed exception catching on module import.

  27 Jun 2004; Jason Stubbs <jstubbs@gentoo.org> bin/repoman:
  Fixed year (2003 -> 2004) in copyright lines.

  27 Jun 2004; Marius Mauch <genone@gentoo.org> pym/portage.py:
  Added a check for symlinked dirs to the collision-protect code so it doesn't
  double-check files in symlinked dirs with wrong pathnames.

  26 Jun 2004; Masatomo Nakano <nakano@gentoo.org> bin/regenworld: Fixed 
  regenworld. It always failed without -h or --help.

  26 Jun 2004; Masatomo Nakano <nakano@gentoo.org> bin/emerge: Added more
  messages when emerge fails due to masked package.

  26 Jun 2004; Jason Stubbs <jstubbs@gentoo.org> portage.py:
  Added pkgsplit check on values returned by vardbapi.cpv_all()

  26 Jun 2004; Jason Stubbs <jstubbs@gentoo.org> repoman: Removed a stray dot.

  25 Jun 2004; Jason Stubbs <jstubbs@gentoo.org> repoman: Changed CVS
  header regex to "Gentoo Foundation"

*portage-2.0.51_pre12 (21 Jun 2003): Fixes

  21 Jun 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Removed the
  extra spawn of portageq as sandbox handles the python pyo's accesses now.

  21 Jun 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Fixes for
  the HOME issues. Correction of permissions from 6770 to 2770.

  21 Jun 2004; Masatomo Nakano <nakano@gentoo.org> pym/portage.py:
  Fixed problem that 'emerge something' would install all depeneded pkgs 
  even if they are already installed.
  
*portage-2.0.51_pre11 (21 Jun 2004): Fixes

  21 Jun 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Disabled the
  URL encoding for BINHOST as it will take a lot of work to get it right.
  Execve try/except added to handle missing binaries and such. Changed the
  default HOME to be TMPDIR/homedir. Try/except on db close operations. Add
  in missing unlocks. Hacked in the /var/lib/portage in a chroot fix.

  21 Jun 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Added more info
  into the profile for the stacked profiles.

  21 Jun 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: The userland
  fixes for *BSD. QA Notice fix for IUSE verbosity on global scope stuff.
  Missing quote fix for QA intercepters. Return 0 in the use_* functions.
  Removed AA from the readonly list.

  21 Jun 2004; Nicholas Jones <carpaski@gentoo.org> dohtml: Karl's update
  which is mostly a rewrite.

  21 Jun 2004; Jason Stubbs <jstubbs@gentoo.org> bin/emerge:
  Modified emerge to build up a fakedb regardless of 'empty' in params, 
  and to incrementally add any packages added to the dep graph.
  (#1343, #8810, #54608)

  20 Jun 2004; Masatomo Nakano <nakano@gentoo.org> bin/repoman:
  Fixed problem which fails to detect IUSE value. (#21544)

  20 Jun 2004; Masatomo Nakano <nakano@gentoo.org> bin/emerge:
  Added an exception code for broken timestamp.chk. (#54380)

  20 Jun 2004; Jason Stubbs <jstubbs@gentoo.org> pym/ebuild.sh: Adjusted 
  returns for use_with and use_enable to only return 1 on invalid usage.

  20 Jun 2004; Masatomo Nakano <nakano@gentoo.org> pym/portage.py:
  Fixed problems that portage doesn't block with --update option(#52377)
  and fail to block virual packages(#52506).

  20 Jun 2004; Masatomo Nakano <nakano@gentoo.org> pym/portage.py:
  Fixed CONFIG_PROTECT/CONFIG_PROTECT_MASK in /etc/csv.env(#51646).

  20 Jun 2004; Masatomo Nakano <nakano@gentoo.org> bin/ebuild.sh:
  Added error message when pkg_config is not defined. (#51167)

  14 Jun 2004; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py:
  Fixed bug in portdbapi.aux_get where a problem ebuild would cause a lock
  to not be released.

  09 Jun 2004; Marius Mauch <genone@gentoo.org> bin/emerge:
  Changed emerge --info to reflect libc versions other than glibc.  

  08 Jun 2004; Marius Mauch <genone@gentoo.org> pym/portage.py:
  Added the collision-protect feature that prevents packages from
  overwriting files they don't own. Has to be enabled with 
  FEATURES=collision-protect  as it needs more testing before it 
  can be enabled by default (bug #28228).

  05 Jun 2004; Marius Mauch <genone@gentoo.org> bin/ebuild.sh:
  Fix rpm support by changing rpm to rpmbuild (bug #13508).

  05 Jun 2004; Marius Mauch <genone@gentoo.org> bin/regenworld:
  Added a --help message ro regenworld (bug #37539).

  03 Jun 2004; Jason Stubbs <jstubbs@gentoo.org> portage.py: Fixed bug #52720
  and restored patch for a 35% drop in dep calc time.

*portage-2.0.51_pre10 (02 Jun 2003): Fixes

  02 Jun 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Added MANPATH
  to the colon_seperated list -- parsing code NEEDS TO BE FIXED. * and ~*
  matches allowed for package.use for arch-development -- ~* implies *.

  02 Jun 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Fix for a new
  typo in the logger function that prevented emerge.log from being written.

  02 Jun 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: make test
  only occurs when enabled in FEATURES and not in RESTRICT -- defaults OFF.
  Added ferringb's local B_* fix for eclasses. Made db vars readonly via bash
  for non-depend phases after the global scope.
  
  02 Jun 2004; Jason Stubbs <jstubbs@gentoo.org> pym/portage.py: Reverted
  adjusted made to config.setcpv on 18 May 2004 due to bug #52720.

  01 Jun 2004; Marius Mauch <genone@gentoo.org> bin/repoman,bin/regenworld:
  only messages about broken log entries in regenworld when called with
  --debug. Fix signing stuff in repoman.

*portage-2.0.51_pre9 (22 May 2003): Speedups and bug fixes

  22 May 2004; Nicholas Jones <carpaski@gentoo.org> portage_db_template.py:
  Added in last-three caching for db modules. Ensuring that keys are strings.

  22 May 2004; Nicholas Jones <carpaski@gentoo.org> portage_db_cpickle.py: Fix
  that ensures the Unpickler works properly.

  22 May 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Updates for
  environment files ordering in ebuild.sh. Added in normalize_path to handle
  the really annoying "'//' is a legal prefix" issue with os.path.normpath.
  Applied normalize_path to cacheddir() so that the keys match and we have
  more cache hits and better performance. Added statistics to to cacheddir
  available with noise=2. Do not return a blocker when doing a zerolist.
  Fixed the stacking functions to properly order the incrementals and apply
  the removals forward. Changed all string.atoi() to int(). Added in the
  selinux changes for spawning the fetch command. Added a patch that allows
  ebuild.sh to display 'validcommands'. close_caches() added to allow atexit
  to close all the DB connections. close_portdbapi_cache() handles the global
  that has all db instances -- This avoids problems with the API nulling the
  internal links. Adjusted the db handling for sync() calls and removed some
  object duplication db calls.

  22 May 2004; Nicholas Jones <carpaski@gentoo.org> getbinpkg.py: Fix for HTTP
  redirects (301 and 302) so that the redirect opens a new connection to the
  move-location server -- This allows us to redirect to a different machine.

  22 May 2004; Nicholas Jones <carpaski@gentoo.org> emerge: For iuse output we
  now ensure that the correct db is referenced. The worldfile additions do not
  occur when a packages is new and updates are not being performed. Patch to
  add binutils to the emerge info.

  22 May 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Rearranged the
  sourcing of the profiles and the special environment files. Added src_test
  as an optional test method -- Some packages are extremely dumb and need to
  be prevented from using this via RESTRICT.

  18 May 2004; Jason Stubbs <jstubbs@gentoo.org> portage.py: Minor speed
  improvement in config.setcpv preventing a useless regenerate

  18 May 2004; Jason Stubbs <jstubbs@gentoo.org> portage.py: Reversed the
  order of config.getvirtuals' stack_dictlist call for correct ordering.

*portage-2.0.51_pre8 (16 May 2003): Big cleanups & Ebuild QA Stuff.

  16 May 2004; Nicholas Jones <carpaski@gentoo.org> portage_exception.py: New
  file containing portage exceptions. Added 'CorruptionError' for the db code.

  16 May 2004; Nicholas Jones <carpaski@gentoo.org> portage_util.py: New file
  that contains utility functions. Allows db_modules to use portage functions
  without a circular dependency. CODE IS DUPLICATED and needs to be fixed in
  portage.py to use this new module. grab*, getconfig, varexpand, pickle_*,
  ReadOnlyConfig

  16 May 2004; Nicholas Jones <carpaski@gentoo.org> portage_db_*: Modules
  do not have an __init__ any longer -- module_init() is called by the
  template after loading the config and setting the 5 variables inside of
  the class. self.config is a ReadOnlyConfig object which is just a dict
  that you can't write to. Throws CorruptionError when the read functions
  return exceptions. 

  16 May 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Reversed the
  virtuals order so it matches the documented format. When an ebuild does not
  exist, we now raise a KeyError with a useful string. 'couple minutes' changed
  to 'couple of minutes' for Seemant. ;)

  16 May 2004; Nicholas Jones <carpaski@gentoo.org> prepstrip, ebuild.5,
  repoman.1: Typo corrections/text replacements.

  16 May 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Added deprecation
  notice to 'emerge rsync' to favor 'emerge sync'. Modified the emerge.log
  code to not change permissions on the files beyond what is necessary -- NEEDS
  TO BECOME AN ADDITIVE FUNCTION. Produce a warning instead of a traceback
  when an ebuild does not exist for -U.

  16 May 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Touched up the
  logging stuff at the top. Removed extra_functions.sh. src_compile additions
  so that it can run make without having a config file requirement.

  16 May 2004; Nicholas Jones <carpaski@gentoo.org> dobin,dosbin: Removed the
  duplicated stripping from the helper tools.

  09 May 2004; Jason Stubbs <jstubbs@gentoo.org> pym/portage_dep.py:
  fixed bug in use_reduce that caused returned list to be flattened.

  30 Apr 2004; Marius Mauch <genone@gentoo.org> bin/ebuild.sh:
  modified ebuild.sh error message on seemants and roger55s request.

*portage-2.0.51_pre7 (26 Apr 2003): Big cleanups & Ebuild QA Stuff.

  25 Apr 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Fixed masking
  problems due to the new stacking functions and empty-value stripping.

*portage-2.0.51_pre6 (25 Apr 2003): Big cleanups & Ebuild QA Stuff.

  25 Apr 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Dropped selinux
  from the IUSE complainer list.

  25 Apr 2004; Nicholas Jones <carpaski@gentoo.org> repoman: Made it use the
  constants defined in portage.py for the world file.
  
  25 Apr 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Modifications
  so that the virtuals are incremented in the proper order and reversed the
  final values so that the first virtual is the 'best' one. Try to put the
  INHERITED variable back into the environment before calling out to portage.
  This makes the ECLASS QA notices actually valid.

*portage-2.0.51_pre5 (25 Apr 2003): Big cleanups & Ebuild QA Stuff.

  25 Apr 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Fixed name
  of the world file constant. Fixed the virtuals loading and vartree creation
  circular dep with a repitition hack. Fixed the virtuals loading function so
  that it doesn't destroy the virtuals before saving them.

  25 Apr 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Fixed all the
  references to the world file to use portage constants. Made the verbose
  output for use flags call unique array to make sure values aren't duped.

  25 Apr 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Typo fix for
  inherited, and removed the delay.

*portage-2.0.51_pre4 (25 Apr 2003): Big cleanups & Ebuild QA Stuff.

  25 Apr 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Creation of
  a great number of 'constants' that were hard coded in various places and
  now are created in a cascaded style, for the most part. Exception handling
  for the loading of modules added along with verbose messages about the
  exception being handled for user info. PRIVATE_PATH is a new constant that
  points to the new directory we will be using for portage internal data --
  It is a secure directory that only group portage may write, read, and scan.
  PORTAGE_CACHEDIR is deprecated -- The real cache directory is FHS and is a
  constant -- The dep cache is named specifically now as 'PORTAGE_DEPCACHEDIR'.
  
  **Changed the stacking functions** so they are quite a bit more sane -- They
  still need a little help though -- stack_* functions are now used to stack
  specific types instead of using grab_stacked "super functions" -- The naming
  is a little rough but intelligable.
  
  **VIRTUALS modification** The /var/cache/edb/virtuals file is unnecessary
  as portage now loads the provides from the vartree itself. /etc/portage
  may have a virtuals file that stacks on top of the var and profile virtuals.
  This also entails the removal of the virtual-file handling code (yay!).

  25 Apr 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Fix for the name
  change for PORTAGE_CACHEDIR to PORTAGE_DEPCACHEDIR.

  25 Apr 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Added checks
  to ensure that use flags are properly mentioned in IUSE. Adjusted the QA
  Interceptors (function overrides for common app names) to make sure they
  don't interfere in weird cases -- Relying on 'type -p' now. Eclasses are
  checked for illegal inheritance modes (conditional-based). Increased the
  cache lines for an entry -- Added 'PROVIDE' and 8 empties.

  22 Apr 2004; Marius Mauch <genone@gentoo.org> bin/repoman:
  added a CVS Header check to repoman

  20 Apr 2004; Marius Mauch <genone@gentoo.org> pym/portage.py:
  fix for getmaskingreason if the mask isn't in PORTDIR's package.mask (#48447)

  17 Apr 2004; Masatomo Nakano <nakano@gentoo.org> repoman: Fixed for
  python-2.2 compatibility.

*portage-2.0.51_pre3 (13 Apr 2003): Cleanups and small features.

  13 Apr 2004; Nicholas Jones <carpaski@gentoo.org> portage_db_*: Fixed the
  permissions issues regarding the umask problems with DB vars.

  13 Apr 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Fix for the
  import urllib call that was misspelled for PORTAGE_BINHOST. Genone's patch
  that allows FETCHCOMMAND_${PROTOCOL}. getmaskingreadon() from genone's
  package.mask display patch.

  13 Apr 2004; Nicholas Jones <carpaski@gentoo.org> output.py: For some reason
  people have a problem with my bad spelling of semi-common colors, so I added
  in requested changes for the color 'fuchsia'.

  13 Apr 2004; Nicholas Jones <carpaski@gentoo.org> cnf/make.conf: Comment
  fixes for the CHOST line. FEATURES modification.

  13 Apr 2004; Nicholas Jones <carpaski@gentoo.org> dispatch-conf.conf: Removed
  the 'a' option.

  13 Apr 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Catagory searches
  added if search is prefixed with '@'. jstubbs/spider's fix for binary use
  flag passing problems worked in. Genone's patch for package.mask comment
  display. Patch to display warnings when unmerging system packages worked in.

  13 Apr 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Quieted up
  some output for use/has internally. Added a patch for the help output.
  Added functionality to pass down IUSE from eclasses. Made several variables
  readonly inside of ebuilds:
    P PN PV PVR PR A AA D EBUILD EMERGE_FROM O PPID FILESDIR EBUILD_PHASE

*portage-2.0.51_pre2 (11 Apr 2003): Release Fixes

  11 Apr 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Portage can now
  match categories if the search is prefixed with an '@' -- @app-portage will
  list all packages in app-portage... '@portage' will match all in app-portage
  and will match anything with portage in the title -- It's still a regex.

  11 Apr 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: nostrip in
  RESTRICT now enables DEBUGBUILD -- stripping and related functionality
  needs to get cleaned up better.

  11 Apr 2004; Masatomo Nakano <nakano@gentoo.org> etc-update, ebuild.sh:
  Fixed infinity loop in etc-update(#19144). Fixed glob problem in 
  ebuild.sh(#37066). Fixed deleting build-info problem with
  FEATURES="keepwork"(#29044).
  
  10 Apr 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Includes the
  deadlock breaks marked with 'XXX:' to indicate where fixes are needed. Added
  HTTP encoding to PORTAGE_BINHOST with checks and fallbacks. Fallback for
  dbkey settings spawned from ebuild. Exception handling for db classes in
  the case of random corruption. jstubb's fix for the dep code to handle
  empty lists, added a notice about that being rude.

  10 Apr 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Made more QA
  notices and made them slightly more pretty 'QA Notice:'. Made the depend
  phase trap less violent -TERM not -KILL.

  10 Apr 2004; Masatomo Nakano <nakano@gentoo.org> repoman: Added IUSE missings
  a check(#21544).

  10 Apr 2004; Marius Mauch <genone@gentoo.org> tarball.sh, pym/portage.py:
  Fixing broken regexp in fixdbentries() (bug 46096), changing version
  number.

  10 Apr 2004; Masatomo Nakano <nakano@gentoo.org> repoman: Fixed unsafety
  temporary file name(#44455). 

  09 Apr 2004; Masatomo Nakano <nakano@gentoo.org> portage.py: Fixed
  reorder ld.so.conf bug(#44028). Portage should skip not existing DIR
  during unmerge(#25339).

  09 Apr 2004; Masatomo Nakano <nakano@gentoo.org> repoman: Added
  jstubbs's patch to add a check invalid DEPEND format to repoman.
  This should fix #36857.

  09 Apr 2004; Masatomo Nakano <nakano@gentoo.org> emerge, portage.py,
  output.py: Fixed some bugs. See #45164, #24299, #34967.
  
  01 Apr 2004; Masatomo Nakano <nakano@gentoo.org> portage.py: Fixed 
  virtuals in reverse order(jstubbs's patch and my fix).
  This should close #45468.

  20 Mar 2004; Nicholas Jones <carpaski@gentoo.org> portage_db_*: Updated
  all the db modules to be current and correct and updated the testing code
  to make sure everything is working properly.

  20 Mar 2004; Nicholas Jones <carpaski@gentoo.org> ebuild: Fix for traceback
  and incorrent ROOT variable when using an alternate root and hand-merging.

  20 Mar 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Exported the
  sandbox variables so that they work.

  20 Mar 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Enhancements for
  binary downloads -- proper selection for virtuals, etc... Proper slot
  handling for pretend output with binaries.

  20 Mar 2004; Nicholas Jones <carpaski@gentoo.org> prepman: symlink fix.

  20 Mar 2004; Nicholas Jones <carpaski@gentoo.org> prepstrip: Added the
  readelf PIC code for the TEXTREL stuff.

  20 Mar 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Removed some
  functions: evaluate, dep_listcleanup, dep_getjiggy. Made inheritance for
  profiles relative from the profile's directory instead of from the profile's
  base directory. OBSOLETING two functions dep_parenreduce and dep_opreduce in
  favor of the new code in portage_dep paren_reduce and use_reduce. dep_zapdeps
  got an overhaul for much more intelligent selection of packages and virtual
  handling during depgraph generation. Binary tree enhancements and selection
  enhancements. bindbapi created to do aux_get on binaries. isInjected added
  to vardbapi to get injected status. SRC_URI uses the new portage_dep code
  to handle strings now -- nesting should would flawlessly and FEATURES=cvs
  should get _all_ files.

  20 Mar 2004; Nicholas Jones <carpaski@gentoo.org> portage_db_cpickle.py:
  Added pickle loading safety.

  20 Mar 2004; Nicholas Jones <carpaski@gentoo.org> portage_dep: Temp home
  for the dep resolution code that will be moving from portage.py and emerge
  until we get the modular structure set up.

  17 Mar 2004; Masatomo Nakano <nakano@gentoo.org> ebuild.sh, emerge,
  portage.py, portage_db_anydbm.py, portage_db_cpickle.py,
  portage_db_flat.py, portage_db_template.py:
  Improved handling cache files on multi portage trees.
  Fixed 'BAD COUNTER' error when emerge --inject. (#41062)
  Added ferringb's patch to avoid sed command. (#40819)
  
  12 Mar 2004; Marius Mauch <genone@gentoo.org> bin/repoman:
  repoman: Added a readonly-variable-assignment check (#44424)

  06 Mar 2004; Masatomo Nakano <nakano@gentoo.org> repoman, portage.py:
  Fixed some repoman/portage bugs. repoman shouldn't use /etc/portage/*
  files. repoman shouldn't use PORTDIR_OVERLAY(#11335). repoman should use
  each arch profile dir(#43601). portage didn't handle virtual dependency
  with version (>=virtual/package-1.0) in some places.

  05 Mar 2004; Marius Mauch <genone@gentoo.org> bin/emerge:
  Trivial fix for emerge -pv if the download size is a long.

  03 Mar 2004; Marius Mauch <genone@gentoo.org> bin/repoman,
  pym/portage.py:
  Fixing the "letter before endversion" bug (#17172). Replacing
  keywords.desc with arch.list in repoman (#35398). FEATURES=strict
  is now sufficient for Manifest validation (#41292).

  01 Mar 2004; Marius Mauch <genone@gentoo.org> bin/emerge,
  bin/emergehelp.py, man/emerge.1:
  Updated docs for --update and removed the "help" action (wasn't working
  anyway).

  29 Feb 2004; Masatomo Nakano <nakano@gentoo.org> portage.py: Fixed 
  wrong USE in 'emerge info'. This should fix #34260.

  27 Feb 2004; Masatomo Nakano <nakano@gentoo.org> emerge: Fixed info dir
  regeneration produces errors with a non-C locale and misleading error 
  message. This should fix #41872,#24299.

  27 Feb 2004; Masatomo Nakano <nakano@gentoo.org> emerge, emergehelp.py,
  emerge.1: Added genone's patch for man/help of --tree option.

  27 Feb 2004; Masatomo Nakano <nakano@gentoo.org> ebuild.sh: Removed 
  /usr/share directory in ${D} when it's empty. This should close #42312.

  26 Feb 2004; Masatomo Nakano <nakano@gentoo.org> emerge: Added new option
  --newuse. This option is to rebuild a package whose USE has been changed.

  22 Feb 2004; Masatomo Nakano <nakano@gentoo.org> emerge, portage.py: speedup
  when /etc/portage/package.keywords is defined. Moved loading
  /etc/portage/package.* processs to config class. This should fix #41520.

  19 Feb 2004; Masatomo Nakano <nakano@gentoo.org> portage.py:
  Fixed CATEGORY value after preinst phase. This should close #6414. Fixed
  nested dependency problem and cleaned up dep_zapdeps function.
  This bug happened with DEPEND='|| ( cat_a/pkg_a flag? ( cat_b/pkg_b ) )'.
  This should close #41869.

  13 Feb 2004; Masatomo Nakano <nakano@gentoo.org> portage.py: Fixed parsing
  SRC_URI bug when FEATURES="cvs". This should close #16159.

  12 Feb 2004; Masatomo Nakano <nakano@gentoo.org> emerge, pym/portage.py:
  TGL's patch for correction package size when emerge -v. -- Fixed
  use.default bug. It occurs when package in use.default exists in system
  and it's virtual package. This should close #40831. 

  12 Feb 2004; Masatomo Nakano <nakano@gentoo.org> emerge: Fixed 
  --ask bugs. It breaks with "--clean". It also breaks when blocker
  exists.  This should close #39865.

  12 Feb 2004; Masatomo Nakano <nakano@gentoo.org> emerge: Fixed
  --ask bug with --changelog. This should close #41293.

  11 Feb 2004; Masatomo Nakano <nakano@gentoo.org> emergehelp.py: Added
  help of F flag with emerge --pretend. This should close #28253.

  11 Feb 2004; Masatomo Nakano <nakano@gentoo.org> pym/portage.py: Fixed 
  ccache dir permission problem with FEATURES="userpriv".
  This should fix #22125.

*portage-2.0.50-r1 (09 Feb 2003): Release Fixes

  09 Jan 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Fix the config
  code so that it doesn't fail when the profile does not exist -- allows
  sync'ing without a tree like it should. Parser returns an exception with
  the parse error now for getconfig(). TGL's patch for another cache issue
  in class config. Modified the /etc/make.profile message. Fix for the
  "eclass does not exist" messages on sync.

  09 Jan 2004; Nicholas Jones <carpaski@gentoo.org> repoman: Fix the repopath
  so that it cna be run outside of cvs repos. 

  09 Jan 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Add portage's
  pym path to SANDBOX_PREDICT to stunt any further .pyc/.pyo problems. Add
  nofetch to the 'successful' kill list to stop the $T definition woes.

  08 Feb 2004; Masatomo Nakano <nakano@gentoo.org> repoman: repoman should
  read each arch virtual file. This should close #40813.

  08 Feb 2004; Masatomo Nakano <nakano@gentoo.org> emerge: Fixed -s/-S 
  bug. "Latest version installed:" was incorrect. This should fix #40847

  08 Feb 2004; Masatomo Nakano <nakano@gentoo.org> portage.py: Fixed ldconfig
  bug. emerge didn't ldconfig after removing library directory.
  This should fix #40694.

*portage-2.0.50 (06 Feb 2003): Release -- API change, cleanups, speedups

  06 Jan 2004; Nicholas Jones <carpaski@gentoo.org> *: repoman got a quick fix
  from genone. Ed's fix for ask/pretend. Made sure that emerge force-updated
  the eclass cache before trying to update all the metadata. masking type
  patch from Genone. masking info patch and regenworld patch added.

*portage-2.0.50_pre22 (04 Feb 2003): Cleanups and stablizing

  04 Feb 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: TGL's fixes
  for exec/child/wait problems. Unset GREP_OPTIONS GREP_COLOR. has() and use()
  no longer attempt to determine if they are to be quiet or noisy -- They
  default to noisy -- useq() and hasq() are the non-verbose versions.
  EBUILD_PHASE set to add a hack-ish way around global scope calls in
  eclasses -- NOTHING SHOULD BE CALLED IN THE GLOBAL SCOPE. Touchup to the
  inherit() code that should finally allow the removal of the ECLASS and
  INHERITED settings. Removed tty (use/has) calls. Removed dirname calls --
  portage.py handles setting the dbkey filename now.
  
  04 Feb 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Ed Catmur's
  (with a  little TGL added in) patch for --ask. Added a 'metadata' target
  that skips the sync and only updates the cache. FEATURES="getbinpkg" added.
  TGL's exit code fixes. Fixed match code for -S so it doesn't complain about
  specific and double versions. Unmerge via dbpath fix. Rewrote rsync's
  options that supports --verbose and --quiet operation now and can force
  checksumming all files using --debug. Sort the files in the cache update
  so it's a little more predictable. 

  04 Feb 2004; Nicholas Jones <carpaski@gentoo.org> prepstrip: changed 
  --strip-debug to --strip-unneeded.

  04 Feb 2004; Nicholas Jones <carpaski@gentoo.org> getbinpkg.py: Updates to
  enable HTTP/HTTPS authentication.

  04 Feb 04; Nicholas Jones <carpaski@gentoo.org> portage.py: best_from_dict
  added to grab the best entry from set of dicts using a list of the keys for
  priority. jstubb's patch to fix listdir -- splits it into a cache and list
  setup. jstubb's patch for varexpand to handle $VAR better. Latexer's patch
  for KernelVersion code to use Makefiles instead of the version.h. Modules
  are loaded from /etc/portage/modules or defaults, whichever works. Fixed
  the /etc/make.profile-is-missing traceback. Spawn can be given 3 pipes to
  redirect stdin,stdout,stderr to specific outputs, terminals, or files.
  TGL's patch for cache functions in portage.py so that they do not cache at
  inappropriate times. PORTAGE_TMPFS is now used if set as a temporary file
  operation area -- recommended to actually be a ramfs/tmpfs filesystem for
  speed. Genone enhanced the deprecated profile patch.

  31 Jan 2004; Masatomo Nakano <nakano@gentoo.org> emerge: Fixed --skipfirst
  bug. This closes #36880.

  29 Jan 2004; Masatomo Nakano <nakano@gentoo.org> emerge: TGL's patch
  for imporving overlay verbose. This closes #39765.

  27 Jan 2004; Masatomo Nakano <nakano@gentoo.org> portage.py: Fixed
  autouse bug. autouse were ignored.

  21 Jan 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Output failed
  cache updates during emerge sync.

  21 Jan 2004; Nicholas Jones <carpaski@gentoo.org> *: VDB_PATH fixes.

  21 Jan 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Only use
  custom profiles when not called by repoman. ROOT never changes profile
  roots, only custom/system profiles var/cache/edb/virtuals. Sandbox fix
  where sandbox was creating an invalid logfile (not giving a summary)
  due to a '/' in SANDBOX_LOG. Turned down the Lockfile output. Double
  check the INCOMPLETE MERGE identifications as it can be caused by cache.

  24 Jan 2004; <nakano@gentoo.org> emerge: Improved timestamp check 
  when 'emerge sync'. Added catching amiguous error when unmerge.
  This closes #24325.

  23 Jan 2004; <nakano@gentoo.org> emerge, portage.py: Fixed 2 bugs. 
  Portage doesn't read local virtuals file, which happens on only cvs
  version. package is blocked by itself.

  21 Jan 2004; Nicholas Jones <carpaski@gentoo.org> portage.py, emerge:
  Fix from genone for emerge's direct reading of packages and his patch
  that also adds in /etc/portage/profile as a stacked profile.

  21 Jan 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Completed
  inheritence capabilities for portage.config reading some files. Moved a
  copy of the getvirtuals() function into settings to handle multiple
  profiles properly.

*portage-2.0.50_pre17/18/19 (21 Jan 2004): Modules for DBs and quick fixes

  21 Jan 2004; Nicholas Jones <carpaski@gentoo.org> *: Moved all references
  to var/db/pkg to portage.VDB_PATH --- This will change again -- NEED TO
  BE MOVED INTO A PATH/CONSTANTS SETUP.

  21 Jan 2004; Nicholas Jones <carpaski@gentoo.org> dosed: Quick fix for
  the basename missing/misplaced issue.

  21 Jan 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Added
  /dev/console to PREDICT to attempt a workaround for a serial console
  bug. dbkey is now set through portage.py/doebuild to allow for modular
  db code.

  21 Jan 2004; Nicholas Jones <carpaski@gentoo.org> emerge: regen doesn't
  require root anymore. Edited the timestamp check to be a little more
  friendly -- delete the portdir timestamp and it won't use the alternate.
  Fix some permission settings. Added some warnings in for cachedirs that
  are very likely to ruin your system. Cleaned out some of the eclass code
  that isnt valid any longer.

  21 Jan 2004; Nicholas Jones <carpaski@gentoo.org> portageq: Added vdb_path
  as a target to get the db directory. Quickpkg uses this.

  21 Jan 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Added
  load_mod() -- grabs a class/function from a module and passes it back
  without loading the module into the global scope. Added unique_array()
  which eliminates duplicates from an array. grab_stacked() operates like
  the other grab* and getconfig functions, but takes a filename and a set
  of paths that it will apply incrementally or clobbers -- for profile
  inheritance. getconfig no longer exits on non-existance returns None.
  Class config now should be passed a profile path and a set of incremental
  values instead of using the globals -- defaults to using the globals
  presently and print an error message. Adding support for module configs
  as a set of strings 'class.subclass.objectmodule':'module.to.use.object'
  for load_mod and the database modules. Profile inheritance started. Killed
  the eclass() super-function and replaced it with class eclass_cache that
  is visible and conceptually simpler -- Also uses the plugable modules.
  Cleaned out the sync calls for the DBs. MASSIVE simplification of the
  aux_get code -- removed memory-caching in favor of system cache (actually
  faster in all cases so far -- P100 and P4-2.2G). Lockfile usage around the
  cachefile.
  
  21 Jan 2004; Nicholas Jones <carpaski@gentoo.org> portage_db_*: Updated
  the API a little but to have permissions set properly. A little more
  reorganization and removed the keycount checks.

  21 Jan 2004; Masatomo Nakano <nakano@gentoo.org> emerge: download size 
  should not be displayed when the package is nomerge with --tree.

  20 Jan 2004; Masatomo Nakano <nakano@gentoo.org> portage.py: Reverted
  ambiguity package fix in cpv_expand().

  20 Jan 2004; Masatomo Nakano <nakano@gentoo.org> emerge: Moved
  backup timestamp.chk file from portage tree to PORTAGE_TMPDIR.

  20 Jan 2004; Masatomo Nakano <nakano@gentoo.org> emerge: Reverted the 
  backing up the timestamp.chk fix.

  20 Jan 2004; Masatomo Nakano <nakano@gentoo.org> emerge: Improved the
  list of --tree by TGL's patch. This should close #38070.

  20 Jan 2004; Masatomo Nakano <nakano@gentoo.org> emerge: Removed debug
  message without --debug. This should close #23840.

  19 Jan 2004; Masatomo Nakano <nakano@gentoo.org> emerge: Improved
  timestamp check of rsync. This should close #37403.

  19 Jan 2004; Masatomo Nakano <nakano@gentoo.org> portage.py: Improved
  regeneration ld.so.cache. This should close #37858.

  19 Jan 2004; Masatomo Nakano <nakano@gentoo.org> emerge: Fixed bug which
  emerge doesn't block same package but different version.
  (example: DEPEND="!<cat/pkg-1.0.0" in cat/pkg-1.0.0.ebuild)

  19 Jan 2004; Masatomo Nakano <nakano@gentoo.org> portage.py:
  Modified cpv_expand() to check package.mask. This should close #38592.

  19 Jan 2004; Masatomo Nakano <nakano@gentoo.org> portage.py: Escaped
  regualar expression for replace entry in fixdbentries().

  18 Jan 2004; Masatomo Nakano <nakano@gentoo.org> portage.py:
  Fixed AUTOCLEAN delay problem in .50pre* by TGL's patch. This close 
  #38189. Fixed unmerge failture bug when 'ebuild foo-1.0.0 unmerge'.
  These close #38189, #38366

  18 Jan 2004; Masatomo Nakano <nakano@gentoo.org> emerge, portage.py:
  Fixed "ebuild /foo/bar-1.0.0.ebuild unmerge" and "emerge bar-1.0.0 unmerge" 
  problems. This should close #38420.

  17 Jan 2004; Masatomo Nakano <nakano@gentoo.org> portage.py: Fixed
  "!<=" style block problem. Fixed symlink with absolute path 
  problem in treewalk().

*portage-2.0.50_pre16 (13 Jan 2004): Quick Fixes -- ~arch version

  13 Jan 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Removed an
  unnecessary depend call that double eclass-using ebuild's cache regen
  time.

*portage-2.0.50_pre15 (12 Jan 2004): Quick Fixes -- ~arch version

  12 Jan 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Unmerge
  traceback fix.

*portage-2.0.50_pre14 (12 Jan 2004): Quick Fixes -- ~arch version

  12 Jan 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Fix for
  traceback on '-S'.

  12 Jan 2004; Nicholas Jones <carpaski@gentoo.org> repoman: Fix for
  traceback on --help.

  12 Jan 2004; Nicholas Jones <carpaski@gentoo.org> sandbox: Fix for
  sandboxpids.tmp file accesses.

  12 Jan 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Sandbox, as
  above. Catch invalid package names and print a sane message about it.

*portage-2.0.50_pre13 (11 Jan 2004): Fixes

  11 Jan 2004; Nicholas Jones <carpaski@gentoo.org> cnf/*: Updated the
  Advanced masking section to aid the reduction of user complaints and
  requests for unreasable usage of ACCEPT_KEYWORDS.
  
  11 Jan 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: A counter
  fix was fixed to actually check the counters of all CP versions to ensure
  the new counter is higher than all existing ones. Modified the dblink
  class to have class lockfiles for the db and tmpdb dirs as well as lock
  other files before editing. Reorganization of the merge code in dblink
  so that the tmpdb is filled immediately after preinst and prior to the
  actual FS merging -- COUNTER and CONTENTS go directly into the tmpdb
  and not into the infodir.
  
*portage-2.0.50_pre11/12 (09 Dec 2003): repoman/binpkg/exit conditions

  09 Jan 2004; Nicholas Jones <carpaski@gentoo.org> emerge: getbinpkgonly
  fixes for emerge -G world, should behave properly now instead of using
  ebuild masks. Only downloads immediately before a merge -- fetchonly now
  applies to binary packages.

  08 Jan 2004; Masatomo Nakano <nakano@gentoo.org> repoman: Ignore other 
  arches check in repoman when --ignore-other-arches(-I).

*portage-2.0.50_pre10 (06 Dec 2003): API change + enhancements

  06 Jan 2004; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Fix for
  dyn_preinst being called before IMAGE was set -- IMAGE is now valid
  in pkg_preinst. Added suidctl for SELinux.

  06 Jan 2004; Nicholas Jones <carpaski@gentoo.org> emerge: Added -P to
  initial cvs checkout.

  06 Jan 2004; Nicholas Jones <carpaski@gentoo.org> quickpkg: Fix for
  the 'tar up /' problem.

  06 Jan 2004; Nicholas Jones <carpaski@gentoo.org> portage.py: Caught a
  traceback generated by bad depend atoms for repoman. Fixes from genone
  for package.*. Fixed the checks for doebuild calls in treewalk that was
  ignoring exit conditions for ebuilds.

  04 Jan 2004; Masatomo Nakano <nakano@gentoo.org> repoman: Added PDEPEND
  dependency check. This closes #24796

  04 Jan 2004; Masatomo Nakano <nakano@gentoo.org> repoman, portage.py:
  Added new dependency check to repoman. This closes #36887.

  03 Jan 2004; Masatomo Nakano <nakano@gentoo.org> emerge: Modified 
  to specific port number in emerge sync. This closes #36994

  02 Jan 2004; Masatomo Nakano <nakano@gentoo.org> portage.py: Fixed 
  a problem that emerge doesn't block package when it's required.
  It happens in .50_pre*.

  02 Jan 2004; Masatomo Nakano <nakano@gentoo.org> portage.py: Fixed 
  issue with getsize() when --debug.

  02 Jan 2004; Masatomo Nakano <nakano@gentoo.org> portage.py: Fixed 
  issue with virtual. This closes bug #9050, #22225, #29499.

  01 Jan 2004; Masatomo Nakano <nakano@gentoo.org> ebuild, emerge, portage.py:
  Fixed issue with not cleaning up temp directory. This closes bug #34967.

  31 Dec 2003; Masatomo Nakano <nakano@gentoo.org> emerge:
  Fixed 'emerge sync' issue which continuously connects to same host.

  31 Dec 2003; Nicholas Jones <carpaski@gentoo.org> emerge: Found the line
  that was causing the package dir to be printed... It was a spawn call.

  31 Dec 2003; Nicholas Jones <carpaski@gentoo.org> portage.py: Fix for
  the symlink corruption in the db from the movefile() bug.

  29 Dec 2003; Masatomo Nakano <nakano@gentoo.org> portage.py:
  Fixed bug which emerge stops when no denpendencies exist in || ( ) 
  by USE flags. This closes #36568.

  29 Dec 2003; Masatomo Nakano <nakano@gentoo.org> emerge, portage.py:
  Added an ambiguity package check when emerge. This closes bug #22700.

*portage-2.0.50_pre9 (24 Dec 2003): API change + enhancements

  24 Dec 2003; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Added
  PORTAGE_TMPDIR to SANDBOX_READ/WRITE to ensure it works. SpanKY's
  patch for use negation added (use !foo). pkg_setup doesn't die on
  a non-zero exit status.

  24 Dec 2003; Nicholas Jones <carpaski@gentoo.org> emerge: using os.uname
  instead of calling out to uname.

  24 Dec 2003; Nicholas Jones <carpaski@gentoo.org> quickpkg: Added SpanKY's
  patch for delayed exit/error conditions.
  
  24 Dec 2003; Nicholas Jones <carpaski@gentoo.org> xpak.py: chdir's added
  to the getcwd fix for missing dirs.

  24 Dec 2003; Masatomo Nakano <nakano@gentoo.org> emerge: Added OVERLAY
  directories display for --verbose.

*portage-2.0.50_pre8 (24 Dec 2003): API change + enhancements

  22 Dec 2003; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Added
  /proc/self/maps to SANDBOX_PREDICT, and /dev/shm to read/write.
  
  22 Dec 2003; Nicholas Jones <carpaski@gentoo.org> emerge: Added automake
  and autoconf versions to the output of emerge info.

  22 Dec 2003; Nicholas Jones <carpaski@gentoo.org> etc-update: Added
  edit merged file option -- defaults to EDITOR var or "nano -w".

  22 Dec 2003; Nicholas Jones <carpaski@gentoo.org> portage.py: Use
  os.uname instead of calling out to uname which might not exist.

*portage-2.0.50_pre7 (22 Dec 2003): API change + enhancements

  22 Dec 2003; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: patch to
  quote most of the path operators that might involve spaces.

  22 Dec 2003; Nicholas Jones <carpaski@gentoo.org> portage.py: Fix for
  invalid entries in package.keywords. Character chopping on mirrors
  fixed again.

  21 Dec 2003; Masatomo Nakano <nakano@gentoo.org> bin/ebuild, bin/emerge,
  pym/portage.py: Changed to show disabled USE flags from use.mask when
  using emerge -vp. And fixed use.mask issue.

  20 Dec 2003; Nicholas Jones <carpaski@gentoo.org> portage.py: Rewrote
  match_from_list -- Simplified and made pkgcmp and match_from_list
  properly compare package names.

  20 Dec 2003; Nicholas Jones <carpaski@gentoo.org> repoman: Fix for mysigs
  traceback when signing.
  
  20 Dec 2003; Nicholas Jones <carpaski@gentoo.org> portage.py: Added
  PYTHONPATH to the specials list -- created a colon_seperated list.
  Fixed reset() in class config so that you can specify keeping the
  pkg dictionary when resetting the values.

  19 Dec 2003; Masatomo Nakano <nakano@gentoo.org> repoman: Added check 
  whether "ebuild foo.ebuild digest" succeeds.

  19 Dec 2003; Nicholas Jones <carpaski@gentoo.org> portage.py: Fix for
  pkg settings being maintained after an unmerge.

  19 Dec 2003; Nicholas Jones <carpaski@gentoo.org> pym/portage_db_*: Moved
  to using cPickle instead of marshal. More standardization of the API.

  18 Dec 2003; Masatomo Nakano <nakano@gentoo.org> repoman: Added virtual
  dependency check on each arch.

  17 Dec 2003; Nicholas Jones <carpaski@gentoo.org> portage.py: Fixed a
  permission issue involving $T and userpriv. Lockfile touchup.
  
  17  Dec 2003; Nicholas Jones <carpaski@gentoo.org> portage_db_*: Added
  templates and db for cache interfaces. Presently have a anydbm and a
  flat file interface working. See the test for operations.

  15 Dec 2003; Nicholas Jones <carpaski@gentoo.org> emerge: Added a call
  to portageq that causes python to create optimized modules prior to it
  ending up inside the sandbox. Added more output and logging to sync.
  
  15 Dec 2003; Nicholas Jones <carpaski@gentoo.org> prepstrip: 'tree' is not
  the same as 'true'.
  
  15 Dec 2003; Nicholas Jones <carpaski@gentoo.org> portage.py: invalid
  settings in package.keywords caused a traceback -- fixed with error message.
  
*portage-2.0.50_pre1 (12 Dec 2003): API change + enhancements

  10 Dec 2003; Nicholas Jones <carpaski@gentoo.org> chkcontents: Uses portage
  functions to do md5sum calcs.

  10 Dec 2003; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Removed try()
  as it isn't used, and was deprecated for a long while. Genone's fetching
  size display added for --verbose. License display added. Added a little
  debug for IUSE so we can figure out the binary package --verbose IUSE
  issues that are randomly reported. XXXXXXXXXXXXXXXXXXX's 'buildsyspkg'
  patch for building only system packages into tbz2s. Unmerge fix for new
  settings instances. RSYNC_RATELIMIT added.
  
  10 Dec 2003; Nicholas Jones <carpaski@gentoo.org> portage.py: ADA path
  variables added to specials for env_update. Error messaeg correction for
  make.defaults syntax errors. Unmerge now uses the environment file, if it
  exists, to get the complete environment back to perform unmerge operations.
  load_infodir() uses pkg settings completely now. Fixed the passing of
  settings in unmerge and dblink. Fixed an issue regarding unlinking lockfiles
  while inside of a sandbox.
  
  09 Dec 2003; Nicholas Jones <carpaski@gentoo.org> ebuild.sh, *.sh:
  Moved helper scripts into bin/functions and made them sourceable -- they
  now will die in cases where sub-parts fail. dodoc and keepdir are now
  recursive-capable.

  09 Dec 2003; Nicholas Jones <carpaski@gentoo.org> emerge: emerge.log now
  set as portage:portage with 0660 perms. --debug now enables tracebacks
  for dep generation instead of moving code out of the try block.
  
  09 Dec 2003; Nicholas Jones <carpaski@gentoo.org> g-cpan.pl: rac's patch
  to get arch list from portage's list of arches in the profiles.
  
  09 Dec 2003; Nicholas Jones <carpaski@gentoo.org> repoman: Moved a bit of
  the existing gpg code around -- it might work as is, but requires 'sign'
  in features. Fixed a potential for repoman to miss updates that should
  get a new manifest and commit. Fixed digest/manifest generation for
  non-packagedir runs of repoman.
  
  09 Dec 2003; Nicholas Jones <carpaski@gentoo.org> emergehelp.py, make.conf,
  getbinpkg.py:  Message touch ups.
  
  09 Dec 2003; Nicholas Jones <carpaski@gentoo.org> portage.py: load_infodir()
  uses pkg settings now instead of env and backup. Genone's custom mirror
  patch included. Added some missing 'strict' flags for recursion in digest*().
  Refixed the invalidentry stuff that was lost across patch merges. Fix for
  pkg-keywords from genone included. Genone's deprecated profile patch for
  reporting to a user that their current profile is deprecated. Message about
  missing arch.list instead of spouting invalid keywords messages.

  08 Dec 2003; Masatomo Nakano <nakano@gentoo.org> repoman:
  Added all arch dependency check. This closes bug #24160.

  07 Dec 2003; Masatomo Nakano <nakano@gentoo.org> emerge,portage.py:
  Fixed bugs. 1.--debug doesn't work 2.Portage breaks files
  in /var/db/*/*. 3.No stop if dependency problem happens.
  They are only cvs version problems.

  01 Dec 2003; Masatomo Nakano <nakano@gentoo.org> emerge: Fixed bug which 
  always remakes info dir file.

  29 Nov 2003; Masatomo Nakano <nakano@gentoo.org> portage.py: Fixed issue with
  ebuild name rule. Fixed typo with variable name.
  This closes bug #17172,#34666

  29 Nov 2003; Masatomo Nakano <nakano@gentoo.org> emerge: Fixed issue with 
  lacking the "setting" argument for pkgmerge()

  29 Nov 2003; Masatomo Nakano <nakano@gentoo.org> emerge: fixed rsync bug.
  This closes bug #34660.

  28 Nov 2003; Nicholas Jones <carpaski@gentoo.org> portage.py: Migration
  to non-global settings started -- class config has new functionality and
  is locked after portage is finished initializing -- changes cannot be made
  to the global instance of config 'settings' -- reset() is now functional,
  setcpv() loads PKGUSE from /etc/portage/package.use, load_infodir() loads
  all small files (under 4k) from the vardb directory of an installed package
  so that operations have the same post* settings as they had at merge time.
  Begin modifications to spawn() to allow for files/pipes to be used for
  IO instead of using getstatusoutput which does not take an environment
  parameter like execve(). check_config_instance() ensures that the provided
  parameter is a 'class config' instance -- for ensuring that everything is
  being passed properly with the changes. Fix for the local FS mirror issue
  where it removed the first '/' instead of the last one. doebuild() cleanups
  for readability and pkguse enhancements -- also remove getstatusoutput()
  usage for depend so that we don't have to modify the active environment.
  Fix for symlink mtime values returned from movefile. (Nakano) SLOTMOVE
  added to global update functionality to fix some issues where a package
  suddenly must become slotted. portdbapi takes a root parameter instead
  of using settings. Slightly more useful output from depend. binarytree()
  now takes a pkgdir instead of using settings. Portage will now die if
  ebuild.sh exits on a signal.
  
  Moved some functions around and renamed them for general use -- derived
  from match2 in class portagetree:
  match_to_list() find all atoms in a list that match a given package.
  best_match_to_list() determines the most specific match. Needs work.
  match_from_list() find all packages in a list that match a given atom.

  28 Nov 2003; Nicholas Jones <carpaski@gentoo.org> emerge: Fixed an issue
  with searchdesc wanting root permissions if run as non-root. Migrated to
  the non-global config class. EMERGE_FROM added for the dyn_preinst patch
  -- Indicates if a merge is occuring from an ebuild or from a binary. Patch
  for rsync timestamp checking from Nakano.
  
  28 Nov 2003; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: Save PKGUSE.
  Pebeneto's patch for dyn_preinst and SELinux added as a fix for binary
  and ebuild merges. Added a kill for portage during the depend phase so
  that portage will actually die if you control-C.

  28 Nov 2003; Nicholas Jones <carpaski@gentoo.org> *: MASSIVE set of changes
  to start using locally defined 'class config' instances. This allows us to
  start working on some parallelism among other things. Created this way:
  mysettings = portage.config(clone=portage.settings)
  
  The Following functions now take a 'config' parameter:
  spawn(), fetch(), digestgen(), digestcheck(), spawnebuild(), doebuild(),
  merge(), dep_opconvert(), dep_check(), dblink.__init__()
  
  package.keywords is now implemented curtasy of genone/max. PKGUSE was
  rewritten for the global config killing and is also included. X11 man
  pages now found and zipped correctly. SYS.PATH fixes for the python
  migration -- issue actually only shows up on 2.2 systems because of how
  compiled modules are used if found regardless of the original source's
  existance.

  28 Nov 2003; Nicholas Jones <carpaski@gentoo.org> tabcheck.py: An easier
  way to make sure that all the python stuff is correctly using tabs and
  not mixing spaces.

  28 Nov 2003; Nicholas Jones <carpaski@gentoo.org> xpak, xpak.py: Fixes
  to ensure that it works if the current dir is missing and that the python
  path gets set properly.
  
  22 Nov 2003; Daniel Robbins <drobbins@gentoo.org> portage.py: Fixed
  calls in vartree method to invalidentry().... made them call call
  self.dbapi.invalidentry() (there were multiple wrong method calls.)
  
  10 Nov 2003; Nicholas Jones <carpaski@gentoo.org> md5check.py: Checks all
  digests and SRC_URIs for filenames and associated MD5s. Reports collisions
  between versions/packages, missing, and extra lines in digests.

*portage-2.0.49-r17/18 (10 Nov 2003): Fixes

  10 Nov 2003; Nicholas Jones <carpaski@gentoo.org> *: Changed portage to
  be the first path in sys.path for all python scripts. Also enabled
  optimizations from the scripts to ensure everything imported is built
  for speed. ebuild: applied fix for the '//' root breaking the db[].
  prepstrip: etdyn quickfix
  
  10 Nov 2003; Nicholas Jones <carpaski@gentoo.org> portage.py: fix for
  RESTRICT=nouserpriv. GENTOO_MIRRORS can have paths set to take files
  from. Fixes for mishandled cache data regarding *pkgsplit(). Fixes for
  '*' being returned as part of a package split. An 'invalidentry()' fix
  for a traceback. Nakano's fixes for virtual removals not working properly,
  sandbox violations during pkg_nofetch, || depend selection. Genone's
  fixpackages speedup.

  10 Nov 2003; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: PORTAGE_TMPDIR
  fix for distcc. Variable passing bug patch for export_functions. Exit 1
  added for nofetch to stop sandbox violation. Nakano's --tree patch added.
  Improved the unmerge messages to denote what kind of unmerge fails. Info
  pages regex pattern adjusted to allow most any name for a page.

  10 Nov 2003; Nicholas Jones <carpaski@gentoo.org> repoman: genone's xml
  linting additions.

  01 Nov 2003; Robin H. Johnson <robbat2@gentoo.org> pym/cvstree.py:
  fix bug #32071, by properly escaping a string to not be a regex. Checked
  thru entire *.py tree and found this is the only mis-use of strings that
  need to be escaped.

  31 Oct 2003; Daniel Robbins <drobbins@gentoo.org> portage.py: /lib/modules
  now gets "unmerge protection." This is half of the config protection
  functionality. It means that anything in /lib/modules will not be deleted
  when a package is unmerged (often automatically when a user merges a
  kernel module ebuild for a new kernel.) This solves the "my module
  disappeared!" issue. This closes bug #1477.
  
  31 Oct 2003; Daniel Robbins <drobbins@gentoo.org> emerge: Should no longer
  spit out wacky "!!! no match found" warnings when auto-cleaning.
  
  30 Oct 2003; Daniel Robbins <drobbins@gentoo.org> portage.py: Only run
  depscan.sh if it exists on disk. This allows Portage to run inside a stage1
  where /sbin/depscan.sh doesn't exist.
  
  30 Oct 2003; Daniel Robbins <drobbins@gentoo.org> portage.py: Applied fix to
  allow multi-level "use? (   )" in SRC_URI, closing bug #16159.

*portage-2.0.49-r15/16 (21 Oct 2003): Fixes

  21 Oct 2003; Nicholas Jones <carpaski@gentoo.org> fix-db.py: was broken
  for python2.3 -- fixed now.
  
  21 Oct 2003; Nicholas Jones <carpaski@gentoo.org> portage.py: Added
  lockfiles to prelink md5 checks. Fixed caching bug where cache objects
  were passed back as pointers instead of copies. Added 'invalidentry'
  function to handle lockfiles -- It tests/deletes them using unlockfile.
  Added fix-db.py to the 'databases is broken' messages.

  21 Oct 2003; Nicholas Jones <carpaski@gentoo.org> ebuild.sh: added CDPATH
  to unset. SELinux fix for sandbox.
  
