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.
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.
bin/etc-update: Moved the temporary work dir from /tmp/$$ to
${PORTAGE_TMPDIR}/$$.
bin/prepinfo bin/prepman: Reordered the -{min,max}depth and -name arguments
to find so that warnings are not produced.
pym/portage.py: Added support for FreeBSD's ldconfig. Fixed an incorrect
chown of BUILD_PREFIX instead of PORT_LOGDIR.

bin/emake: Made the make command configurable but defaulted to "make".
bin/emerge: Fixed an issue that would cause binary package reinstalls when
IUSE disagreed.
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.
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.

bin/emerge: Made --newuse take priority over --usepkg.
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.
pym/portage.py: Fixed the definition of PYTHONPATH in env_update(). Fixed
the handling of quotes in env_update().

cnf/dispatch-conf.conf bin/dispatch-conf: Removed the pager config option
and made if part of the diff command option.
bin/dodoc: Backported vapier's fix for 0-byte files causing a spurious
"file not found" error.
bin/emerge: Remove --verbose and --tree from options when using --resume as
the combination is currently broken.
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.
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.

pym/portage_syntax.py: Added with_key() method to Atom for creating a new
atom of a different key with the same constraints.
bin/test_target_graph.py pym/portage_dep.py: Added transform_virtuals()
function to just that. Added testing code to show how it is used. Renamed
TargetGraph to StateGraph.

cnf/make.globals: Made CONFIG_PROTECT default to /etc only as packages are
augmenting it via env.d where necessary.
bin/emerge: Reverted deletion of apparently unused code as it was being
used in the case of --noreplace.

pym/portage_syntax.py pym/portage_dep.py: Filled out most of TargetGraph.
Still need to complete support for OR deps. Added a bit some more support
functions to Atom and DependSpec.
bin/test_target_graph.py: Just a script to help test and show the usage of
TargetGraph.

pym/portage.py: Removed debugging information and added a fix for merging a
symlink to a directory over a file.
cnf/make.globals: Added a basic CONFIG_PROTECT setting for those users who
use only binary packages and don't have a portage tree.

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.
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.
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.
bin/repoman: Fixed an off-by-one indexing into a list during scanning for
Manfiest commits.
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.

Added a 3 second delay after a failed Manifest commit. Fixed bug where
files at the category level were being treated as packages.
pym/portage.py portage_util.py portage_db_cpickle.py: Replaced
HIGHEST_PROTOCOL with its equivalent -1 to ensure python-2.2 compatibility.
Added back ChangeLog and metadata.xml to Manifest generation for portage
compatibility.

pym/portage_exec.py: Added checks to see if the sandbox is executable and
disabled when it isn't.
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.
pym/output.py: Reverted the feature to make use of screen titles.
bin/emerge: Made detection of --ask capability use stdin instead of stdout.
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.
Applied patch from #69763 to allow fetching to a read-only distfiles dir.
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.

Moved match_from_list, match_to_* stuff
into portage_dep, and updated references, and fixed a few bugs related to
match_* locations from last check in.
Threw out match_from_list_original func- it's dead code

Cache refactoring is now in use. Eclass_cache is now just
a dict of stacked eclasses, but doesn't track per pkg eclasses.
That is left up to the cache. The cache now ignores/drops INHERITED- this
is replaced by _eclasses_, which is a serialized dict of
{eclass name: (on disk location, long(mtime))}. Note the tuple- returns from the
cache subsystem *should* be tuples, just the same as mtime should be a long.
aux_get *should* return INHERITED, but it should do it dynamically.
Basically, INHERITED is determined on the fly from the cache's _eclasses_ setting.
Beyond that, a sql cache template was added, along with a sqlite example.
flat_list, along with a metadata/cache specific backend, and cache.util.mirror_cache,
for metadata transfers.
Note all existing cache modules/implementations are now invalidated. Sorry. Upgrade em.
Existing cache's on disk are invalidated also, with the exemption of portdir/metadata/cache.

Added a check to make sure the file exists before working with it, when
called with an ebuild path. #84102
Fixed the invalid call to isvalidatom() #84144
Expanded syslist during the unmerge phase so that all packages listed in
system are correctly checked and warned against. #83670

- added manifest_files to USER_CONFIG_PATH+/manifest_excludes. The way it works is to add a file to /etc/portage/manifest_files and this file will be ignore when checking the Manifest. This is mainly only useful when you rsync_exclude a file thats list in the Manifest. (embedded)

portage.py: Fixed the global features usage in the config class and made
sure that any adjustments are propogated back to the env.
chflags.c: Replaced stat call with an lstat call in lhasproblems as the
calling code expects the function to operate directly on symlinks.
make.conf: Added warning with regard to changing PORTDIR and
/etc/make.profile.

release tag/header thingy.
I wish I was an Oscar Mayer Weiner... That is what I truly want to be! And if I was an Oscar Mayer Weiner, everyone would be in love with meeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee! (You may clap. :)

bin/emerge: Added removal of --tree and --changelog upon a restart of
emerge. Added --ask support to emerge metadata.
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.
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-.

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.
etc-update: Removed the unsetting of various options that happens when
using graphical mode.
quickpkg: Added -h and --help options.
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.
portage.py: Fixed a bug with calculations using PRELINK_PATH_MASK where
paths matching those in PRELINK_PATH_MASK were not removed.

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.

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.

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.

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.

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
emerge: Don't update info dirs if noinfo FEATURE is enabled. #76378

bin/emerge: Added class graph_display and moved most of depgraph.display()
into various functions of it. --columns and --resume are not yet supported
with it, so the depgraph.display() has been kept for the time being.
pym/portage.py: Commented the deprecation notice for /etc/portage/virtuals
as it does not yet have a newer counterpart.

Updated to make it more memory efficient- slots based, uses weakref
to handle symlink'd dirs. Still a bit slower, but it's also stat'ing
all directories upto the target directory. That can probably be removed.
Note, there is a bug in it currently- invalidate isn't a valid node method.
Nobody should hit this though, since dcache is only used in treewalk.
I'll correct it in a few days.CVS:
----------------------------------------------------------------------

see changelog. finished moving all filtering logic into listdir, so that the caching method
is strictly that, caching. removed EmptyOnError from listdir, it's not used, and is buggy-
first level files won't return None when EmptyOnError=False, w/ recursive anything beyond 1st level would.
Updated listdir calls to remove emptyonerror reference. It wasn't ever used, if it was (in conjunction with
recursive) it would result in a traceback.

make prelink not cause the cache to be stale for every single merge.
down the line, should store the prelink'd md5, and un-prelink'd md5 (where applicable).
Do this so that we can just md5 it all- if the md5 doesn't match, and we have a prelink --undo'd md5, then we try
that, if it matches, update the prelink'd md5.
Should speed up verification.

Merge of the ebuild-daemon code (ebuild.py), along with massive shifts/cleanup/fixes. At this
point, the env of an ebuild *should* be perfectly preserved, and used. This deprecates
portage.doebuild, in favor of eventually calling an ebuild.py:process_phase. The
code of doebuild now exists as ebuild.py:__adjust_env. That code needs cleanup,
and splitting. Rough stats for the daemonized ebuild processor code is a 33% reduction
in run time for a full regen, with the initial framework laid out to allow parallel
regens on smp systems. Aside from making all of the previous refactorings active
(sync refactoring in emerge, transports refactoring in portage.py and repoman), this
adds the following-
portage.exit_callbacks- append a function to this list, and it'll be exited at shutdown
FEATURES="verify-rdepend"- don't trust the packages stated rdepends, ldd the crap out of
the package to verify it. When severe is on, bail, if unstated rdepends are encountered.
FEATURES="prelink"- do prelinking of binaries after merging.
FEATURES="userpriv_fakeroot"- run the install phase in userpriv'd fakeroot instance, removing
the root requirement for all building phases but setup
FEATURES="confcache"- a implementation of stuart's confcache alg, minus the sandbox
modifications.
FEATURES="parallel-fetch"- bug #1661, fork and fetch while merging. Requires distlocks to be
enabled, and only kicks in when more then one package is being merged. This is based on
portage_exec.spawn_func, and depgraph.__fetch.
Aside from the feature additions, a large amount of code shifting to break the need for
portage_exec.spawn_func, and depgraph.__fetch.
Aside from the feature additions, a large amount of code shifting to break the need for
globals, and try to centralize the code for modularizing (this is the start of it).
A large amount of code cleanup in addition.

Compatability hack to treat USE="selinux" as both a feature, and use. With the
env saving/restoring, it's possible a binpkg is created on a non-selinux system-
the use vars are preserved and reused, so that systems USE="-selinux", merged on a
selinux system results in preinst's selinux code not being executed. No labels.
That's bad.

Env clean ups, fixups. Not compatible
with doebuild at this commit, since it tries to write back via pipes. This will be corrected once ebuild.py and
portage.py are commited. Should a revert occur, define an appropriate speak
function. This commit closes out #52652, #51552, #51370, #46223, potential issues
from installed ebuilds not functioning correctly due to assuming use/has behave a
certain way #40993, ultimately #56408. Essentially, this is all the required
bash modifications to properly save/restore the env, allowing for ebuilds to
be uninstalled despite eclasses/ebuilds no longer existing. Also contains a
fair amount of protective code, since older env savings were incorrect. Additionally,
it properly restores variables attributes- export fex, shopt, etc. This is the basis
of the ebuild-daemon.

Addition of get_timestamp, way of requesting -just- the mtime. Useful for speeding up checking if an entry is stale,
if the mtime differs, no need to read the file in- you know it's stale already. Cuts down on a few syscalls.

Rewrite of Marius Mauch's (genone) sync refactoring code.
Relies on the transport refactoring for snapshots module. This obsoletes
emerge-webrsync. Supports old SYNC format for cvs, and new- new being
SYNC="cvs://[CVS_RSH:]user@host:cvsroot:cvs-module". New is preferred, otherwise
have to assume CVS_RSH=ssh, and cvs-module=gentoo-x86. Example of new-
SYNC="cvs://ssh:ferringb@cvs.gentoo.org:/var/cvsroot:gentoo-x86"
The snapshot uri is a bit odd, possible to rework it I'd think- either
SYNC="snapshot"
which pulls a mirror to use from portage.thirdpartymirrors["gentoo"], or explicitly
SYNC="snapshot-[mirror-uri]". fex
SYNC="snapshot-http://gentoo.chem.wisc.edu/gentoo/snapshots" would use
snapshots from gentoo.chem.wisc.edu. Sync uri for rsync is unchanged.
This is just the requisite code, the conversion to emerge to use it shall follow.
(#35535).

Basically, a rewrite of portions of getbinpkg in httpConnection, and ftpConnection.
Those classes are hidden behind BundledConnection, which has an api that is
the same as fetchcommand.py:CustomConnection- that class abstracts the parsing and
handling of (FETCH|RESUME)COMMAND, and their protocol specific settings into a central
class. Code isn't in use as of this commit, but will be in use once ebd's code is
fully in cvs (portage.py commit essentially). The sync refactoring also uses it.
bug #23327 also is addressed, although it's ancillary- bundledConnection is able
to handle specific user/passwd, although for fetchcommand, we need to add a specific
user/password set of variables.

Transfer of the cacheddir func out of portage.py, and into it's own module.
Current implementation isn't symlink aware, and has other issues (follow_symlinks
fex). This shift of it is intended so replacing it just involves creation and
importation of an alternative caching module.

Code cleanup, moves, and shifting away from
commands.gso to portage_exec.spawn_get_output. Multiple additions to
portage_exec adding fakeroot support, a native collect status output,
and centralized code for killing off a set of pids. Correction to
portage_exec so that the spawned_list is correctly pruned- previously it
was a list of _all_ pids spawned, so portage could try to kill off a pid
that was previous a child, but by chance a new process runs as (depends on
how random the pid selection is). Aside from changes to cleanup, these changes
are mostly standalone.
Additionally, moved selinux context switching into portage_exec post-fork-
just specify the desired selinux_context, and it'll make the switch- if
portage_exec.selinux_capable, it makes the switch. Otherwise, it ignores it.
Finally, new function added, spawn_func. Pass in a python function, it'll fork,
then call the function w/ the args/kwargs passed to it- optionally using an additional
passed in function to interpret the results, and return an appropriate exitcode.
Also, a *large* amount of inline documentation is contained in this commit.

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_dep.py: Added a few more readable optimizations to the
DependencyGraph class along with apprioriate comments.
emerge: Changed all usage of digraph in emerge to use the new
DependencyGraph class.

Added a reimplementation of digraph. Still some work to do (including
comments) in order to support the differences between *DEPEND. Modified
emerge a little to build up both dep graphs for testing purposes.

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.
dispatch-conf: Added usata's fix for mac-os compatibility. #69304
getbinpkg.py: Reversed the logic of ftp passive-mode selection. #69371

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.
dispatch-conf: Added usata's fix for mac-os compatibility. #69304
getbinpkg.py: Reversed the logic of ftp passive-mode selection. #69371

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.

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 a 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 Added python version information to
"emerge info" output.

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

Spork. Yes, that's about it.
Cleaned up the namespace of portage.py more. Digest changes to become
more robust while maintaining compatability. Stuff like that.
y
See... Now using nano for a week or two has me doing vi commands
that I was complaining about. Do you see the tretchery of nano? It
seeps out and starts to eat away the fabric of your being. *sigh*

The tarball script is very nice to me. Because of using tabs in python, I tend to add a lot of weird spacing into the ChangeLog. The nice happy magic in the tarball script makes the ChangeLog turn into the magical, beautiful text thingy it was meant to be. Yay! *cheer*

Lock work to help out NFSv2 and some friendliness for vfat distfiles.
Enhanced concurrency-resillience with locks in db_flat. Extra info
on the outputs so people know what a 'mylines' message is about.
RC2

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)

Fairly simple updates. Name changes in the man pages. A missing Manifest
exception is handled (due to GPG checks). Have I mentioned that I hate
nano? It really makes me insane when I have random ^E and ^D characters
because I try to do escape sequences for vi in it. Worst editor ever.
It's smaller than pico, so it's evenxxA more dense/worse. BLAH see?
:wq

Adjusted perform_checksum to only do a prelink-check when we were doing
merges/unmerges as that's the only time when a binary would/should
matter. Made the exceptions all inherit logically from a major category.
PortageException defines all exceptions thrown by portage with various
subgroups beneath.

closing out #58848; tested it, and had other osx users test it. This effectively kills the dblink.mergeme + static archive issue for macos.
Other arches may suffer this bug also, although this is the first it's popped up in the last x years portage has had this behaviour...

closing out #15990; the snapshots on the mirrors now have md5sum's distributed along side, and this adds the support to emerge-webrsync.
see the changelog for all the specifics, but closes out the complaints in 15990 and makes things a bit friendly to the user.

final tweak to get repoman arch dep checks back to previous use_reduce sanity; *should* be the final issue (I introduced this one), basically archlist was getting actively pruned of keywords, bad thing when repoman is stepping through each arch for dep checks.

noticed this (of course) shortly after pre15's release; basically, if listonly, we're not doing lockfiles.
At some point, moving the src_uri expansion code out of fetch would be wise, since listonly is kind of hackish in it's current place.

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 DESTDIR (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)

removed all which calls, they aren't needed (and break on stage1). commands.getstatusoutput(arg) runs the arg in a shell, the shell automatically does the lookup.
Added, the which binary only looks in $PATH directories, which is what the shell already does. If which is needed, type -p is an option (bash builtin).

corrected repoman w/ checks to see if A) we're commiting, B) it's possible to do the manifest recommit.
Also added better handling of CVS/Root, allows commiting from osx issues.
readline import was removed also. I can't see any reason for it actually being imported.

bugs #57068 and #57356; former is a minor typo in the help output, the latter resulted in ebuild.allmasked returning false positives occasionally.
Basically, after adjusting portage.groups for arch dep checks, it wasn't setting portage.groups to "*" for checking if a version was available for any arch.

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. -- Fixed trivial --inject bug. This should close #41062.

Fixed -ask bug with --changelog. This should close #41293. -- Added help of F flag with emerge --pretend. This should close #28253. -- Fixed ccache dir permission problem with FEATURES="userpriv". This should fix #22125.

Improved timestamp check of rsync. This should close #37403.
Improved regeneration ld.so.cache. This should close #37858.
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)
Modified cpv_expand() to check package.mask. This should close #38592.
Escaped regualar expression for replace entry in fixdbentries().

Portage-2.0.43 release set.
The rest of the symlinks fix. Batched merges were only cleaned properly
at the end, which caused bad symlinks during the rest of the merge.
Should wrap up the symlinks issues. AUTOCLEAN now on by default to clean
packages as they are merged.
General typo fixes.