News (mainly features/major bug fixes)

portage-2.3.53
--------------
* Renamed PORT_LOGDIR and PORT_LOGDIR_CLEAN variables to
  PORTAGE_LOGDIR and PORTAGE_LOGDIR_CLEAN to match other existing
  similar variables
* Enable FEATURES={ipc,network,pid}-sandbox by default

portage-2.3.42
----------------
* Sync with rsync quarantines data prior to verification, using the
  rsync --link-dest option (can be disabled by setting
  "sync-allow-hardlinks = no" in repos.conf).
* Sync with git quarantines data prior to verification, see
  https://wiki.gentoo.org/wiki/Portage_Security#git-mirror_repo.
* Sync with shallow git pull is supported, by "setting sync-depth = 1"
  in repos.conf.

portage-2.3.32
----------------
* EAPI 7 support.

portage-2.3.29
----------------
* Portage API consumers can use asyncio with portage's internal event
  loop, see portage.util.futures.unix_events.DefaultEventLoopPolicy.

portage-2.3.25
----------------
* Experimental support for EAPI 7_pre1.

portage-2.3.20
----------------
* Support RESTRICT=network-sandbox in ebuilds.

portage-2.3.17
----------------
* The doins ebuild helper has been rewritten in python for performance, and
  it does in-kernel file copying on Linux.

portage-2.3.14
----------------
* Repository metadata/layout.conf supports manifest-required-hashes
  attribute (default value is SHA512).

portage-2.3.12
----------------
* better_cache implemented to use less expensive os.listdir() instead of
  os.stat() operations to scan for ebuilds. Avoids exhaustively scanning
  overlays for all ebuilds which allows Portage to not slow down significantly
  with lots of overlays enabled. (Daniel Robbins)

portage-2.3.7
-----------------
* eapply_user combines patch basenames from all matched directories into a
  list, and applies them in POSIX sorted order. This allows patches in
  more-specific directories to override patches of the same basename found
  in less-specific directories. An empty patch (or /dev/null symlink) negates
  a patch with the same basename found in a less-specific directory.
* FEATURES=multilib-strict no longer recurses into subdirectories, in order
  to avoid false-positives. The MULTILIB_STRICT_EXEMPT variable only served
  to filter false-positives that were triggered by recursion, so it will no
  longer be needed.
* New emerge --autounmask-keep-keywords and --onlydeps-with-rdeps=<y|n>
  options.
* Set compression method for binpackages via BINPKG_COMPRESS variable
* Support for environment variables for git cmd in repos.conf via sync-git-env


portage-2.3.5
-----------------
* Numerous patches updating checksums code and python module imports for them
  including new checksum methods
* New linux in kernel movefile support via a new "C" extension module


portage-2.3.3
-----------------
* Reverted commits:
    - Bug 552814 Revert "GitSync.update: respect sync-depth
                 (Shallow fetch is not a practical default at this time,
                  given performance issues introduced by `git update-index`
                  and `git prune` (see bug 599008).
                 )


portage-2.3.1
-----------------
* Support News-Item-Format 2.0
* emerge: add --fuzzy-search and --search-similarity
* Add emerge --autounmask-continue option

portage-2.3.0
-----------------
* Final release
* Includes numerous bugfixes

portage-2.3.0_rc1
-----------------
* New split release for the repoman Q/A tool
* Includes the stage2 rewite of the repoman code base


portage-2.2.26
--------------
* EAPI 6 stable portage release


portage-2.2.25
--------------
* EAPI 6 final fully implemented.


portage-2.2.22
-------------
* Stage 1 of the repoman re-write code merged in to master branch
  This is the first release of the new code base.


portage-2.2.19
-------------
* The squashdelta sync module was removed for separate installation
  and development work


portage-2.2.19
-------------
* websync module now fully renamed to webrsync
* New squashdelta sync module for downloading full or updates for a squasfs tree
  requires dev-util/squashmerge be installed
* New binpkg-multi-instance feature allows for multiple variations
    (USE settings) to be saved in the pkgdir and index.


portage-2.2.16
-------------
* New portage plug-in sync system.
    Read the news anouncement for more details of the changes in config
    settings and operation.
* New native portage postsync.d capability
* New native portage repo.postsync.d capability
* New native indexed search capability for decent search speed
* Tentative EAPI 6 patches for additional testing


portage-2.2.14
-------------
* Remaining bugs in build/install system should be fixed.


portge-2.2.14_rc1
-------------
* Many new build/installation system errors fixed.


portage-2.2.13
-------------
* New setup.py build system and distutils-r1 ebuild at EAPI 5
* PORTAGE_{BIN,PYM}_PATH variables. If you want to call internal portage tools,
    you need to query PORTAGE_BIN_PATH and PORTAGE_PYM_PATH, use them
    and re-export them.
* New @changed-deps set to update packages which need dependecy change updates.


portage-2.2.12
-------------
* New emaint module "merges"  for finding and fixing failed merges
  If a pkg fails to merge to the live filesystem correctly, that pkg may
  not work correctly if at all.  This module scans the installed pkg database
  for those failures and can re-emerge those packages.

portage-2.2.1
-------------

* Add cgroups, ipc-sandbox, and network-sandbox FEATURES.

portage-2.2
-------------

* Add extended set configuration via /etc/portage/sets.conf. See
  /usr/share/portage/config/sets/portage.conf for examples.

portage-2.1.11.20
-------------
* Add support for EAPI 5. Refer to the PMS EAPI Cheat Sheet, portage's html
  docs installed with USE=doc, or `man 5 ebuild` for more info about EAPI 5.
* Add support for FEATURES=preserve-libs which preserves libraries when the
  sonames change during upgrade or downgrade, and the @preserved-rebuild
  package set which rebuilds consumers of preserved libraries.
* Add link level dependency awareness to emerge --depclean and --prune actions
  in order to protect against uninstallation of required libraries. Refer to
  the --depclean-lib-check option in the emerge(1) man page.

portage-2.1.11
-------------

* Add support for experimental EAPI "4-slot-abi". Refer to the corresponding
  html documentation that is installed with USE=doc, and also to the emerge(1)
  man page for information about the related --ignore-built-slot-operator-deps and
  --rebuild-if-new-slot options.

portage-2.1.10
-------------

* Improve handling of repositories/overlays for cases in which the same ebuild
  is provided by multiple repositories but with different masking status, and
  support for repository constraints on atoms (atom::repo) in configuration
  files.
* Add emerge --rebuild-if-* options that trigger rebuilds of reverse
  dependencies when packages are rebuilt or updated. Related --rebuild-exclude
  and --rebuild-ignore options can be used to avoid rebuilds for specific
  packages.
* Add emerge --reinstall-atoms, --useoldpkg-atoms, and --usepkg-exclude options
  which can be used to alter selection rules for specific packages.
* Add FEATURES=parallel-install and ebuild-locks, allowing for greater
  parallelization when installing packages (by using finer-grained locks).

portage-2.1.9.27
-------------

* Add support for EAPI 4. Refer to the PMS EAPI Cheat Sheet, portage's html
  docs installed with USE=doc, or `man 5 ebuild` for more info about EAPI 4.
  Bug #273620 tracks EAPI 4 implementation in portage.

portage-2.1.9
-------------

* There is a new ipc (inter-process communication) USE flag which is enabled
  by default. This allows portage to communicate with running ebuild processes,
  for things like best_version, has_version, and die calls in nested processes.
  This flag should remain enabled unless it is found to be incompatible with a
  specific profile or environment. When enabled, it fixes bug #278895,
  bug #315615, and makes subshell die support more robust (so that repoman's
  ebuild.nesteddie check is irrelevant).

portage-2.1.8
-------------
* The top-level __init__.py for the portage python package has been split into
  many smaller python modules, making the code easier to navigate and allowing
  small parts of the portage api to be imported with less overhead.

portage-2.1.7.17
-------------
* Add support for EAPI 3. This adds support for installation prefix, including
  new EPREFIX, ED, and EROOT variables which are used by econf and einstall
  helpers. Also, EAPI 3 adds xz extension support to the unpack helper.

portage-2.1.7
-------------

* Add license visibility filtering (GLEP 23)
* Add --accept-properties option for emerge which allows you to use
  --accept-properties=-interactive in order to temporarily exclude
  interactive updates.
* Add support for Python 3.0. At least Python 2.6 is now required in order to
  support the new syntax which is used by Python 3.0.

portage-2.1.6
-------------

* Add support for a new EAPI="2" value. For more information about new EAPI
  features, refer to the "Ebuild" chapter of the html documentation that is
  installed with portage.
* Add PORTAGE_IONICE_COMMAND setting for make.conf which is called to adjust
  IO priority on portage and it's subprocesses.
* Add emerge --jobs and --load-average options which specify behavior
  for building packages in parallel or for generating metadata in parallel
  with emerge --regen.
* Add emerge --keep-going option to continue as much as possible after
  an error. When an error occurs, dependencies are recalculated for
  remaining packages and any with unsatisfied dependencies are
  automatically dropped. The --skipfirst option automatically drops
  packages in the same way, and also drops any masked packages.
* Add git and subversion support for repoman.
* It is now possible to use `emerge <file>` to reinstall the package that
  installed a particular file. Package contents entries are indexed to
  improve performance. A command such as `emerge /lib/modules` can serve
  as a decent substitute for module-rebuild.
* Namespace sanitizing: move all portage related code into portage.* namespace,
  rename portage_foo modules to portage.foo (but keep symlinks for compability)
* Add support for news items (GLEP 42)
* Add FEATURES=protect-owned which is identical to the collision-protect
  feature except that files may be overwritten if they are not explicitly
  listed in the contents of a currently installed package.

portage-2.1.5
-------------

* For extra careful dependency handling, emerge has a new --complete-graph
  option that causes it to consider the deep dependencies of all packages from
  the system and world sets. With this option enabled, emerge will bail out
  if it determines that the given operation will break any dependencies of
  the packages that have been added to the graph. Unlike the --deep option,
  the --complete-graph option does not cause any more packages to be updated
  than would have otherwise been updated with the option disabled.
* Blockers are now resolved automatically in many more cases
  than before.  When it's safe, blocked packages are uninstalled
  automatically so that users are no longer inconvenienced with the
  task. Automatically uninstalled packages are displayed in the merge
  list, marked "uninstall" and highlighted in red. With the --tree
  option enabled, it's possible to see which package(s) caused other
  ones to be automatically uninstalled.
* The dependency resolver now has a feedback mechanism that helps make atom
  selections more consistent with previous selections that have been added to
  the graph. This solves some common cases of bug #1343.

portage-2.1.4
-------------

* After the initial setup phase, the original ebuild and eclasses are no
  longer needed because the same ebuild environment is reused for the
  entire lifecycle of the package, including uninstallation.
* The emerge --search action supports searching of both installed and binary packages
  The --usepkg and --usepkgonly options control which repositories are searched.

portage-2.1.3
-------------

* Allow per-module setting of PORTAGE_ELOG_CLASSES
* Add new elog module "echo" to simply display messages when emerge exits
* Add ** as new token for package.keywords to bypass the keyword visibility layer
* USE_EXPAND variables such as LINGUAS support a * wildcard that will enable
  all of the corresponding flags that are listed in IUSE for a given package.
  USE_EXPAND wildcards such as linguas_* are supported in USE and package.use.
* The merge process preserves the modification timestamp of files that it
  installs. The unmerge process will not uninstall files that are claimed by
  another package in the same slot.
* PDEPEND is now installed as soon as possible so that it behaves more like
  RDEPEND.  This makes PDEPEND more useful for breaking the dependency cycles
  that are sometimes triggered by RDEPEND and DEPEND.
* Enable "echo" and "save_summary" elog modules by default
* Fix -* handling in package.keywords to work as intended (reset the accepted
  keywords list), also see RELEASE-NOTES.
* Make elog functionality available to python code

portage-2.1.2
-------------

* Ebuilds support default USE flags via +flag in IUSE.
* New-style virtuals are now usable for packages that depend on themselves for
  bootstrap.
* Profiles support multiple inheritance and package.use.
* CONFIG_PROTECT and CONFIG_PROTECT_MASK both support files (not just
  directories).
* Collision protection handles symlinks properly.
* Dependencies can be satisfied by installed packages that do not have matching
  ebuilds in the portage tree or overlay.
* Emerge automatically ignores blockers that are made irrelevant by an upgrade.
* Emerge supports "reverse blocker detection" which means that the blockers of
  installed packages will always be respected.
* Emerge builds a complete dependency graph in order to ensure correct merge
  order and detection of circular dependencies.
* The world and system sets allow automatic update of all installed slots.
* DEPEND atoms support SLOT dependencies of the form ${CATEGORY}/${PN}:${SLOT}.
* Development: Extend PYTHONPATH support to allow overriding the hardcoded
  /usr/lib/portage/pym for development/testing purposes
* New "finalize" hook for elog modules enabling modules to perform actions on
  shutdown (like dispatching collected messages).
* New elog modules mail_summary and save_summary that act like the mail/save
  modules except that they merge messages from multiple packages in a single
  file/mail.
* New QA loglevel and matching eqawarn function
* `ebuild foo test` now always runs src_test if available
* If DOC_SYMLINK_DIR is set portage installs symlinks to html documention there
* FEATURES="test" automatically implies USE="test".

portage-2.1.1
-------------

* Profiles support use.force, package.use.force, and package.use.mask files.

portage-2.1 (ongoing via pre releases)
------------

* FEATURES="confcache" integration; global caching to speed up configure calls,
  requires dev-util/confcache
* elog framework and accompanying modules for logging ebuild warnings, errors
  and general notices. Collects eerror/ewarn/elog/einfo messages.
* New elog function (should replace einfo in many cases)
* version syntax enhancements allowing multiple suffixes and a new 'cvs'
  version prefix for denoting "live sources" ebuilds.
* config files as directories enabling more flexible settings management.
* Addition of an register_die_hook method that allows ebuild/eclasses to
  register functions to be called for better debugging on errors.
* Addition of pre and post user hookable functions for each ebuild phase, accessible
  via portage bashrc.  Example would be pre_src_unpack .
* cache refactoring- runtime improvement from 35% -> 65%.
* Intelligently handle and display USE_EXPAND-based IUSE variables.
* FEATURES="parallel-fetch".  Download in parallel to compilation.
* Include a "changed or new" USE flag output when --verbose isn't specified.
* Support for splitting out debug information into separate files in
  /usr/lib{,32,64}.
* exec subsystem refactoring (now with less bugs!)
* Added sha256 and rmd160 hashes for digests/manifests
* Make --emptytree only apply to ${ROOT} rather than always including /.
* Allow packages to be upgraded that are only depended on via a
  "|| ( =cat/pkg-1* =cat/pkg-2* )" construct.
* Ebuild output is no longer cut off early when using PORTAGE_LOGDIR.
* Distfiles indirection- $DISTFILES access goes through a tmp dir to fail
  access to files not listed in SRC_URI.
* Emerge now uses --resume to restart itself after portage upgrade.
* Atomic file updates via the new atomic_ofstream class.
* Global updates and fixpackages performance optimizations.
* Tests show that file locking is now more reliable.
* A bash call stack is printed when an ebuild dies in ebuild.sh.
* New rsync option handling by using a generic PORTAGE_RSYNC_EXTRA_OPTS variable
* Manifest2 support that will allow digest-* files to be eliminated from the tree.
