Release Notes; upgrade information mainly.
Features/major bugfixes are listed in NEWS

portage-2.2.28
==================================
* Bug Fixes:
    - Bug 572494 BinpkgFetcher: suppress PORTAGE_SSH_OPTS KeyError message
    - Bug 572476 binarytree: fix PORTAGE_BINHOST KeyError
    - Bug 572826 Fix KeyError for ACCEPT_KEYWORDS and ARCH
    - Bug 540882 repoman: Re-add an if that bypasses the changes scan
    - Bug 573070 Clarify no binary packages error
    - Bug 573056 isolated-functions.sh: Output error message for nofatal die
    - Bug 573386 UserQuery: handle unicode
    - Bug 543706 Make config update tools stand out
    - Bug 527004 Be extra clear on INSTALL_MASK & dirs
    - Bug 574082 repoman: Deprecate games.eclass
    - Bug 576488 portdbapi.aux_get: don't cache in memory unless frozen
    - Bug 573920 eapply_user: allow empty directories
    - Bug 576958 repoman: Make the output quiet when options.quiet=True
* Add sync-git-clone-extra-opts and sync-git-pull-extra-opts
* GLEP 67 portageq updates
* repoman: Fix _here_doc_re for "Unquoted Variable" false positives

portage-2.2.27
==================================
* Bug Fixes:
    - Bug 532224 Fixes commit 28828655da86 @profile pkg set support
    - Bug 566024 Fix logic when deep is True
    - Bug 567932 SyncManager.sync: always return 4-tuple
    - Bug 561686 _dep_check_composite_db._visible: verify that highest_visible
                 matches
    - Bug 567920 Manifest._apply_max_mtime: account for removals and renames
    - Bug 567746 repoman: use metadata.dtd from rsync tree if available
    - Bug 568354 depgraph._resolve: consider unresolved @system atoms fatal
    - Bug 567360 doebuild: Support finding lib* for ccache/distcc/icecc
                 masquerade dir
    - Bug 568054 repoman: Do not check for PATCHES array in EAPI 6 and later.
    - Bug 568934 flat_hash: enable md5 validation for /var/cache/edb/dep
    - Bug 569942 elog/mod_save: fix CATEGORY KeyError
    - Bug 486362 repoman: add clutter to inherit.deprecated
    - Bug 562652 emaint/.../merges: Rename --purge-tracker option
    - Bug 570530 INSTALL_MASK: enable matching of broken symlinks
    - Bug 570672 emerge: Add --autounmask-only parameter
    - Bug 570798 support bsddb3 module



portage-2.2.26
==================================
* Bug Fixes:
    - Bug 566372 enable absolute_import
                 fix python2.7 setlocale ValueError
    - Bug 566414 SpawnProcess: make _cancel kill all processes in cgroup
    - Bug 566420 SpawnProcess: re-check cgroup.procs until empty
    - Bug 566654 einstalldocs: use lazy docinto calls (prevent empty dir)
    - Bug 566132 SyncManager: redirect command stderr to stdout
    - Bug 566704 depgraph: autounmask for conditional USE deps
* other EAPI 6 code changes: eapply_user, several corrections


portage-2.2.25
==================================
* Bug Fixes:
    - Bug 564988 Rsync and Git Sync: skip metadata-transfer when appropriate
    - Bug 565172 repos.conf: support sync-hooks-only-on-change attribute
    - Bug 565540 egencache: parallelize --update-changelogs
    - Bug 565626 egencache: Delay updating Manifests until all other
                 tasks complete
* EAPI 6 final updates and changes.
* locale: Warn when locale does not conform to ASCII rules for case conversions.
          Force sane LC_COLLATE & LC_CTYPE as required in EAPI 6.


portage-2.2.24
==================================
* Bug Fixes:
    - Bug 562964 handle missing cgroup IOError
    - Bug 562808 repoman: Set max DESCRIPTION length to 80
    - Bug 563482 emerge(1): document --oneshot caveats
    - Bug 563740 calc_depclean: fix AttributeError for
                 SonameAtom.unevaluated_atom
    - Bug 563844 calc_depclean: do not abort for broken soname dependencies
    - Bug 563876 BinpkgFetcher._set_returncode: fix ftp _mtime_ handling
    - Bug 563546 repoman: check deps of stable ebuilds for unstable
                 configurations
    - Bug 563836 RepoConfigLoader: allow subsitution of variables like ROOT in
                 repos.conf
    - Bug 564222 vardbapi.aux_get: treat cache as valid if mtime is truncated
    - Bug 561264 AbstractEbuildProcess: validate cgroup release agent
* Egencache changes for the new git tree changelog generation.


portage-2.2.23
==================================
* Bug Fixes:
    - Bug 561474 Add check that we need commit signing
    - Bug 561596 Fix typo in function call
    - Bug 561264 AbstractEbuildProcess: remove cgroup with release_agent
                 SyncRepos.async: group sync and callback as composite task
    - Bug 554084 unpack: use chmod-lite helper
    - Bug 562108 repoman/argparser.py: _unicode_decode the commitmsg
    - Bug 561846 dohtml: handle unicode
    - Bug 534022 scanner.py: Fix options.output_style for column output
* Add icecream feature support


portage-2.2.22
==================================
* Bug Fixes:
    - Bug 559636 repoman: ignore unadded files when possible
    - Bug 510840 repoman: Remove profiles TODO comment
    - Bug 561234 SyncManager.async: initialize attributes before fork
    - Bug 561240 repository/config.py: Fix propogation of module_specific_options
* First release of the repoman re-write code (stage 1)


portage-2.2.21
==================================
* Bug Fixes:
    - Bug 550006 quickpkg: support FEATURES=xattr
    - Bug 550324 Fix missed rename of cleanconfig to cleanconfmem
    - Bug 550898 rename ia to ia64
    - Bug 550886 enable absolute_import for Python 2
    - Bug 550906 handle submodule import in _LazyImportFrom._get_target
    - Bug 552340 Redirect /dev/fd bash test to /dev/null
    - Bug 554084 unpack: avoid useless chmods to improve speed
    - Bug 554108 use mkdtemp to avoid cgroup interference
    - Bug 554578 convert str to Atom for DbapiProvidesIndex
    - Bug 554928 depgraph._want_update_pkg: handle _UNREACHABLE_DEPTH
    - Bug 556172 slot_conflict_handler: suggest --verbose-conflicts
    - Bug 556464 depgraph._select_files: use _iter_match_pkgs for tbz2 arguments
    - Bug 555698 circular_dependency_handler: limit USE combination search
    - Bug 556764 similar_name_search: used indexed repos where appropriate
    - Bug 557426 sync repositories in parallel
    - Bug 557962 Manifest.write: stable/predictable Manifest mtime for rsync
    - Bug 558322 SyncRepos._sync: call postsync.d hooks earlier
    - Bug 557192 egencache: stable use.local.desc mtime for rsync
    - Bug 559044 emerge --search: fix duplication of results
    - Bug 296085 RsyncSync: add sync-rsync-vcs-ignore option
    - Bug 559122 sync: include metadata/layout.conf with profile submodule
    - Bug 560466 match_from_list: restrict =* to match only on version part boundaries
* git sync: Respect PORTAGE_QUIET
* several man page updates
* rsync: per repo repos.conf rsync options via the 'sync-rsync-extra-opts' option


portage-2.2.20.1
==================================
# Note this was a branch release based of the 2.2.20 release
# expressly for the new git based ebuild tree
* Bug Fixes:
    - Bug 550324 Fix missed rename of cleanconfig to cleanconfmem
    - included a few man page updates
    - a couplerepoman changes for the new git based tree


portage-2.2.20
==================================
* Bug Fixes:
    - Bug 539510 make.conf: point people to ccache(1) for cache size details
    - Bug 549666 binarytree.get_pkgindex_uri: handle --gebinpkg=n
    - Bug 549616 egencache --update-pkg-desc-index: handle read-only repo
    - Bug 549826 portage/sync/modules/rsync: Fix UnicodeDecodeError:
    - Bug 534022 bin/repoman: Use pformat and newlines to *DEPEND output
          for clarity


portage-2.2.19
==================================
* New repoman --straight-to-stable, -S option
* Use consistent rules for filenames of ebuils and misc files
* 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.
* Bug Fixes:
    - Bug 542732 WorldSelectedSet: fix load method
    - Bug 501866 dispatch-conf.conf: less-opts --quit-if-one-screen
    - Bug 543818 Fix an AssertionError if the multilib category of an
                 ELF file is not recognized
    - Bug 545252 Fix binpkg-multi-instance _pkg_paths corruption
    - Bug 545270 Fix dispatch-conf unicode handling
    - Bug 544624 ro_checker: skip parents of EPREFIX dir
    - Bug 525376 repoman: fix dependency.unknown to ignore USE deps
    - Bug 546010 repoman: handle removed packages in vcs_files_to_cps
    - Bug 546176 new_protect_filename: fix _unicode_decode TypeError
                 with symlink
    - Bug Fix missed renames of websync to webrsync
    - Bug 547086 _doebuild_path: add fallback for temp PORTAGE_BIN_PATH
    - Bug 546512 UseManager: handle newlines for USE_EXPAND prefixes
    - Bug 547414 Fix postsync hook regression
    - Bug 542796 LinkageMapElf.rebuild: pass error_leader to varexpand
    - Bug 547532 VdbMetadataDelta.applyDelta: remove replaced versions,
                 handle "remove" events properly
    - Bug 547086 ebuild-helpers: avoid exec loops or fork bombs in wrappers
    - Bug 547390 ro_checker: only check nearest parent
    - Bug 325009 Make the USE variable readonly
    - Bug 547736 search: fix addCP so only the specified results are displayed
    - Bug 428098 _unmerge_protected_symlinks: suggest UNINSTALL_IGNORE
    - Bug 547778 dblink: elog failed postinst
                 Scheduler: increase visiblity of postinst failures
    - Bug 548438 gcc_warn_check: filter grep results with uniq
    - Bug 532784 bintree.populate: binhost connection failure triggers TypeError
    - Bug 548516 PORTAGE_XATTR_EXCLUDE: preserve security.capability
    - Bug 548556 varexpand: fix IndexError
    - Bug 548710 Disable SOCKSv5-over-UNIX-socket proxy by default
    - Bug 547732 Bundle a minimalistic derivation of Python's formatter module
    - Bug 488836 repoman: enable copyright date check without vcs
    - Bug portage/sync/modules/webrsync: Fileter out
          uid, gid, groups from kwargs
    - Bug 256376 dispatch-conf: handle file/directory collisions
    - Bug 549072 Allow read-only PKGDIR if no ebuilds will be built
    - Bug 549322 Fix deprecated logging.warn() calls


portage-2.2.18
==================================
* Bug Fixes:
    - Bug 539706 Fix Syncbase _has_bin()
    - Bug 538980 Add early check for broken /dev/s
    - Bug 282639 Generate soname dependency metadata
    - Bug 540882 repoman: skip vcs calls for manifest modes
    - Bug 541188 man/portage.5: document sets.conf
    - Bug 541198 use_reduce: support non-string token_class
    - Bug 541302 actions.py: fix missing localization import
    - Bug 500436 Do not interrupt on SIGCONT
    - Bug 540482 Add man page entries for "emaint merges"
                 and egencache's "--write-timestamp"
    - Bug 511806 make.conf: expand PORTAGE_CONFIGROOT
    - Bug 541754 depgraph: fix 'operation' AttributeError
    - Bug 542052 Don't spawn socks5-server.py for pkg_nofetch


portage-2.2.17
==================================
* Bug Fixes:
    - Bug 539746 WorldSelectedSet: fix breakage
    - Bug 539478 Fix missed self.portdb assignment for
        metadata-transfer feature
    - Bug 539402 fix overlay mask logic


portage-2.2.16
==================================
* New portage plug-in sync system.
* New auto-sync setting for repos.conf repos
* New sync-depth setting for git sync module
* New --sub-submodule option for emaint sync module
* New native portage postsync.d capability
* New native portage repo.postsync.d capability
* New socks5 module to allow builds to escape the network-sandbox
* Tentative EAPI 6 changes for testing
* New search index creation and fast search code for emerge -s, -S
* Bug Fixes:
    - Bug 538512 Deprecate make.conf SYNC variable
    - Bug 538314 handle EINTR
    - Bug 537298 Fix typo in new_protect_filename()
    - Bug 534722 update LOGNAME variable when appropriate
    - Bug 536926 emerge: default --backtrack=3
    - Bug 536392 More >= atoms for autounmask USE changes
    - Bug 492932 TestFakedbapi: override EPREFIX
    - Bug 142579 BinpkgExtractorAsync: xz and gzip decompression
    - Bug 282927 emerge: add --changed-deps/--binpkg-changed-deps
    - Bug 535850 dispatch-conf: avoid symlink "File exists" error
    - Bug 533036 man/emerge.1: clarify --buildpkg-exclude wrt *-backup FEATURES
    - Bug 463266 man pages: note that make.conf can be a directory
    - Bug 533884 emerge --autounmask-write: fix CONFIG_PROTECT for
                 PORTAGE_CONFIGROOT
    - Bug 531656 Solve more slot-operator conflicts
    - Bug 531724 AbstractPollTask._read_buf: read regardless of event flags
    - Bug 534070 Add --sync-submodule <glsa|news|profiles>
    - Bug 532670 Support override of default profile EAPI
    - Bug 532784 bintree.py: fix str() calls for Python 2
    - Bug 532594 faulty variable assignment inside _compute_abi_rebuild_info
    - Bug 525718 search._xmatch: handle aux_get KeyError
    - Bug 532224 Support @profile package set
    - Bug 504116 man/emerge.1: --quiet-build=n overridden by --jobs
    - Bug 412471 Display emerge search results incrementally
    - Bug 531690 bin/ebuild: fix --color=n
    - Bug 531854 dblink._protect: disable config protect for identical files
    - Bug 522032 add a one time only post-sync hook call
    - Bug 471776 Support USE_EXPAND prefixes in package.use and relevant files


portage-2.2.15
==================================
* New option --rage-clean that does --unmerge without delay.
* package.bashrc: per profile, per-package bashrc mechanism
* Introduce eqalog and eqawarnlog functions.
* Introduce eqatag to output proper machine-readable QA logs
* Bug Fixes:
    - Bug 517310 emerge --read-news: prompt only if --ask
    - Bug 433453 Support unprivileged mode
    - Bug 519566 Remove g+w bit from $T for TPE
    - Bug 433453 portage.data._get_global: fix UnboundLocalError
    - Bug 526160 This fixes _dep_check_composite_db to mask packages
                 that aren't the highest visible match, but only if an
                 update is desirable.
    - Bug 523684 This fixes the ConfigProtect class, etc-update, and
                 dispatch-conf to account for non-existent files (rather than
                 directories) that are listed directly in CONFIG_PROTECT.
    - Bug 524964 bin/bashrc-functions.sh: remove portageq function
    - Bug 527636 Add btrfs.* to default PORTAGE_XATTR_EXCLUDE
    - Bug 485598 etc-update & dispatch-conf: symlink and protected
                 symlink support
    - Bug 527636 Remove redundant PORTAGE_XATTR_EXCLUDE defaults
    - Bug 528272 This fixes incorrect behavior of the "fetch" phase
    - Bug 456128 Add support for SUSE based distros in etc-update
    - Bug 528760 man/ebuild.5: document assert fix
    - Bug 525726 _selinux.setexec: improve failure message
    - Bug 529200 portageq: fix eroot parameter
    - Bug 529120 fs_template._ensure_dirs: handle EEXIST
    - Bug 528610 This fixes a case inside _slot_operator_update_probe where
                 it would select an inappropriate replacement_parent of a
                 lower version than desired.
    - Bug 490732 NewsManager.getUnreadItems: handle EROFS
    - Bug 524236 dblink: case insensitive support
    - Bug 515584 dep_zapdeps: avoid use.mask/force changes
    - Bug 490732 check for writable /var/db/pkg
    - Bug 520652 Add emerge --with-test-deps option
    - Bug 490732 check for writable PKGDIR
    - Bug 529660 Memoize the results of use_reduce calls inside
                 _slot_operator_update_probe, in order to improve performance.
    - Bug 530010 Implement selective invalidation of cache for the
                 depgraph._select_pkg_highest_available method...
    - Bug 530982 fix UnicodeDecodeError
    - Bug 531112 _pkg_use_enabled: return frozenset
    - Bug 387059 emerge: warn about @installed, don't deprecate
    - Bug 528274 ebuild.sh: force fresh env for pkg_setup
    - Bug 527996 emerge --info: show /bin/sh provider
    - Bug 527486 portage/util/writeable_check.py: Fix IndexError:
    - Bug 525552 Use a new _eintr_func_wrapper class to wrap waitpid calls and
                 handle EINTR by calling the function as many times as necessary
                 (until it returns without raising EINTR).


portage-2.2.14
==================================
* Bug Fixes:
    - Bug # 508364 Tweak the previous patch commit for the comma warning.
    - Bug # 524964 $PORTAGE_BIN_PATH/portageq no longer exists, which breaks
        bin/ebuild-helpers/portageq.
    - Bug # 524328 Use nonblocking write instead of a fork for writing to
            the fifo.
    - Bug # 523684 If a CONFIG_PROTECTed file was installed but no longer
        exists in the file system, then it may have been deleted or renamed
        by the admin.
    - Bug # 506192 This fixes the sync_local function so that it doesn't
        prematurely remove the whole TMPDIR when tarsync is not installed.
    - Bug # <no number> setup.py: Fix typo in logrotatedir path.


portage-2.2.14_rc1
==================================
* Bug Fixes:
    - Bug # 508364 Update gcc warning checks.
    - Bug # 523182 Rewrite default ebuild phase setting code
    - Bug # 517310 Offer to read news while calcing deps
    - Bug # 481578 emerge: --autounmask-write if --ask
    - Bug # 523494 Use PATH instead of PORTAGE_BIN_PATH to locate emerge.
    - Bug # 523532 This fixes depth increment to handle _UNREACHABLE_DEPTH.
    - Bug # 523152 This fixes the unmerge-backup and downgrade-backup features
        to be compatible with the new setup.py quickpkg install location...
    - Bug # 522084 Fix _solve_non_slot_operator_slot_conflicts to add all
        parents to the conflict_graph...
    - Bug # 523048 This fixes _backtrack_depgraph to immediately report
        necessary REQUIRED_USE changes instead of discarding the graph.
    - Bug # 521990 Since self._dynamic_config._slot_operator_deps only contains
        deps for packages added to the graph, it doesn't contain potentially
        relevant deps of installed packages that have not been added to the graph.


portage-2.2.13
==================================
* Bug Fixes:
    - Bug # 438976 Remove DESCRIPTION.punctuation check from repoman
    - Bug # 520542 Replace .append() with .add() for set variables
    - Bug # 515230 package_tracker.match: account for unevaluated_atom
    - Bug # 508762 _slot_operator_update_probe: This fixes the
        check_reverse_dependencies function.
    - Bug # 522362 Fix config.setcpv to regenerate USE settings in order to
        account for package.env USE settings from the previous package
        instance.
    - Bug # 507482 Run distcc-pump server throughout src_configure()
        to src_install()
    - Bug # 520950 This handles a case which occurs when
        _solve_non_slot_operator_slot_conflicts calls _create_graph.
    - Bug # 520752 Make email date, timestamp RFC-compliant
    - Bug # 520378 Fix hard-coded emerge-fetch.log locations
    - Bug # 522652 For cases such as || ( X <A-2 ), where X is unsatisfiable
        and A-1 is installed, fix dep_zapdeps to make the correct choice.
    - Bug # 510270 This fixes an IndexError in
        _solve_non_slot_operator_slot_conflicts which occurs when none of the
        conflict packages matched a particular atom.
* No longer include a Changelog with release tarball.
    For a complete log of the Changes please refer to the git log viewable
        online at https://github.com/gentoo/portage/commits/master


portage-2.2.12
==================================
* Bug Fixes:
    - Bug # 519074 fix invalid locale setting
    - Repoman: fix atom.blocker checks
    - Bug # 519124 properly decode formatted number for localized_size()
    - Revert an incorrect test fix from 2.2.11 which broke mime type detection
    - Bug # 518968 Fix and incorrect userquery change
    - QA systemd warning check for using /etc/conf.d
    - QA Use pngfix to find broken PNG files
    - Bug # 512578 Prepend '=' to unmerge atoms
    - Repoman: Do not report DESCRIPTION.punctuation warning for "etc."
    - Fix a py2/py3 discrepency involing integer division causing number output
      to be inconsistent
    - Fix an unicode-decode error in a gettaddrinfo() error message
* 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.11
==================================
* Bug Fixes:
    - Remove some broken old style virtual code
    - Bug # 505428 RO only filesystem check
    - Bug # 506186 TaskSequence starting bug.
    - Sort repoman check output
    - Remove obsolete repoman eclass checks
    - Bug # 505944 Improve mismatch checking
    - Bug # 488820 fix @security crash
    - Bug # 438976 Add DESCRIPTION.punctuation check to repoman
    - Add ruby18 warning for deprecated ruby target to repoman
    - Add Python version to Portage version line
    - Prevent rebuild code from performing unwanted repository changes
    - Include "::repository" more consistently in output
    - Make the slot conflict handler output more debug information
    - Bug # 487074 Don't split suggested commands when printing them
    - Handle 'mkdir -p /etc/portage/make.profile/packages' gracefully
      -- i.e. produce an error instead of crashing with a traceback
    - Implement --alert
    - Bug # 516428 Make repoman warn if non-virtuals depend on
      perl-core
    - Prefer install-xattr to install.py as a wrapper to coreutils'
    /usr/bin/install to preserve file system extended attribute.


portage-2.2.10
==================================
* Bug Fixes:
    - Fix broken --moo output
    - Bug # 505422 depgraph: "remove pkg" logic fix

portage-2.2.9
==================================
* Bug Fixes:
    - Bug # 450372 Russian translation update.
    - Bug #497238: Fix unnecessary rebuild caused by equal versions
      in different repositories.
    - Bug #501360 Only use Atoms with package_tracker.match
    - For a complete list of bug fixes, changes, See the Changelog installed at
      /usr/share/doc/portage-2.2.9/ChangeLog.bz2

portage-2.2.8
==================================
* Bug Fixes:
    - Bug 488972 - sys-apps/portage-2.2.7:
      "egencache --update --rsync" does not create metadata/timestamp.chk
    - For a complete list of bug fixes, changes, See the Changelog installed at
      /usr/share/doc/portage-2.2.8/ChangeLog.bz2

portage-2.2
==================================

* Portage now warns if an ebuild repository does not have a name, as several
  new features in 2.2 make use of or require named repositories. The repository
  name is stored in profiles/repo_name in each repository.

portage-2.1.13
==================================

* FEATURES=userpriv and usersandbox are enabled by default.
* FEATURES=usersync is enabled by default.
* New sync-cvs-repo, sync-type and sync-uri attributes in repos.conf replace
  SYNC variable.

portage-2.1.12
==================================

* FEATURES=preserve-libs is enabled by default.
* ACCEPT_RESTRICT variable may be used to mask packages based on RESTRICT.

portage-2.1.11
==================================
* User-defined package sets can now be created by placing files in the
  /etc/portage/sets/ directory. Refer to the emerge(1) and portage(5) man
  pages for more information.
* The "selected" package set, which includes packages listed in
  /var/lib/portage/world, has been extended to include nested sets that may
  be listed /var/lib/portage/world_sets.

portage-2.1.10.61
==================================
* FEATURES=config-protect-if-modified is now enabled by default. This causes
  the CONFIG_PROTECT behavior to be skipped for files that have not been
  modified since they were installed.

portage-2.1.10.27
==================================
* FEATURES=fixpackages is now enabled unconditionally. Set --package-moves=n
  in EMERGE_DEFAULT_OPTS if you need to temporarily avoid package moves for
  some reason.

portage-2.1.10
==================================
* The emerge --autounmask option is now enabled by default. The
  --autounmask-write option can be used to have config changes automatically
  written to the appropriate files (respecting --ask and CONFIG_PROTECT). If
  --autounmask behavior is not desired as the default behavior, then it can
  be disabled by adding --autounmask=n to the EMERGE_DEFAULT_OPTS variable in
  make.conf. Refer to the emerge(1) man page for more information.

portage-2.1.9
==================================
* The emerge "world" set now includes separate "selected" and "system" sets,
  where the "selected" set includes packages listed in /var/lib/portage/world.
* Package set names in emerge arguments have to be prefixed with @ (exceptions:
  'world' and 'system' can be used without the prefix).
* Configuration files now support atoms with wildcards inside the category and
  package name parts of the atoms.
* The functionality of the autounmask program is emulated by the new emerge
  --autounmask option, which outputs required configuration changes for
  package.accept_keywords and package.use.
* The new emerge --exclude option allows packages to be excluded from the
  dependency resolution. Doing so might result in a fatal error. See the
  emerge(1) man page for details.
* Per-package environment variables can be set with the new package.env
  configuration file in /etc/portage/. See the portage(5) man page for details.
* Support for per-package bashrc files in /etc/portage/env. See the portage(5)
  man page for details.
* The package.keywords configuration file in /etc/portage/ is now deprecated.
  Instead use the package.accept_keywords file which has the same format and
  behavior. See the portage(5) man page for details.
* FEATURES="fixlafiles" (enabled by default): Rewrites newly installed .la
  files in the same way dev-util/lafilefixer does. Note that this won't fix
  your installed .la files.

portage-2.1.8
==================================
* The new --rebuilt-binaries option will replace installed packages with binary
  packages that have been rebuilt. Rebuilds are detected by comparison of
  BUILD_TIME package metadata. This option is enabled automatically when using
  binary packages (--usepkgonly or --getbinpkgonly) together with --update and
  --deep.

portage-2.1.7
==================================
* Default behavior for emerge commands has changed so that packages are only
  updated when necessary. In order to ensure that all packages are updated
  when possible, you must now specify the -u/--update option. See bug #275945
  for the rationale behind this change.
* If using python3, you may notice that some types of program output which
  require a tty device (like the wget progress bar) will be disabled. This
  is due to an upstream python issue: http://bugs.python.org/issue5380. See
  bug #287648 for more information.
* Licenses in the @EULA license group are now masked by the default
  ACCEPT_LICENSE setting. You can unmask all licenses by setting
  ACCEPT_LICENSE="*" in /etc/make.conf. See the make.conf(5) man page for
  more information about ACCEPT_LICENSE.

portage-2.1.6.12
==================================
* If you want overlay eclasses to override eclasses from other repos then see
  the portage(5) man page for information about the new layout.conf and
  repos.conf configuration files.

portage-2.1.6
==================================

* The default behavior has changed for `emerge world` and `emerge system`
  commands. These commands will reinstall all packages from the given set
  unless an option such as --noreplace, --update, or --newuse is specified.
* FEATURES=fixpackages is now enabled by default via make.globals. Set
  FEATURES="-fixpackages" in make.conf if you'd like to disable it.
* File collision protection is now enabled by default via make.globals with
  FEATURES=protect-owned. In order to protect files from be overwritten or
  removed a inappropriate times, it is recommended to leave protect-owned
  (or the similar collision-protect feature) enabled at all times. If you
  want to disable collision protection completely (not recommended), then
  you need to ensure that neither protect-owned nor collision-protect are
  enabled.
* The python namespace for portage has been sanitized, all portage related code
  is now contained within the portage namespace. External script should be
  updated accordingly, though links exist for backward compability.
* -* support in package.keywords was changed as it was inconsistent with
  ACCEPT_KEYWORDS behavior (also see
  http://dev.gentoo.org/~genone/docs/KEYWORDS.stupid).
  Previously having -* in package.keywords matched packages with KEYWORDS="-*",
  now it resets the ACCEPT_KEYWORDS list for the given atom like it does when
  used in ACCEPT_KEYWORDS.
  For packages that don't specify any other KEYWORDS you can use the new **
  token as documented in portage(5) to disable KEYWORDS filtering completely.
* When generating manifests, existing distfiles digests will not be updated
  in cases when the current file in $DISTDIR does not match. In order to
  force digests to be updated, run `ebuild --force <ebuild file> manifest`.
  This is a safety measure which protects valid distfiles digests from being
  accidentally replaced by invalid digests.
* If you have overridden FETCHCOMMAND or RESUMECOMMAND variables, for
  compatibility with EAPI 2, you must ensure that these variables are written
  such that the downloaded file will be placed at \"\${DISTDIR}/\${FILE}\".
  Refer to make.conf(5) for information about FETCHCOMMAND and RESUMECOMMAND.

portage-2.1.5
==================================

* The pkg_postinst phase is now called after the previous version of a
  package has been removed. As a consequence, it is no longer possible
  to call has_version in pkg_postinst to detect whether the current
  install operation is an upgrade or downgrade. If this information is
  needed during the pkg_postinst phase, do the has_version call in an
  earlier phase (such as pkg_preinst) and store the result in a global
  variable to be accessed by pkg_postinst when it is called. Bug #226505
  tracks all issues related to this phase execution order change.
* The metadata-transfer feature is now disabled by default. This disables the
  "Updating Portage cache" routine that used to run at the tail end of each
  `emerge --sync` operation. If you use something like the sqlite module and
  want to keep all metadata in that format alone (useful for querying), enable
  FEATURES="metadata-transfer" in make.conf. You should also enable
  FEATURES="metadata-transfer" if you have any eclasses from PORTDIR_OVERLAY
  that override eclasses from PORTDIR (in this case, you may have disabled
  a relevant warning message by setting PORTAGE_ECLASS_WARNING_ENABLE="0" in
  make.conf).
* The parallel-fetch feature is now enabled by default. It is optimized
  to avoid doing redundant checksums for previously downloaded files that have
  the correct size. Run `tail -f /var/log/emerge-fetch.log` in a
  terminal to view parallel-fetch progress. Add FEATURES="-parallel-fetch"
  to /etc/make.conf if you want to disable this feature.

portage-2.1.4.1
==================================

* If you have an overlay then you should remove **/files/digest-*
  files (Manifest1) because they are no longer supported.
* If earlier versions of portage will be used to generate manifests
  for your overlay then you should add a file named manifest1_obsolete
  to the root of the repository in order to disable generation of the
  Manifest1 digest files.

portage-2.1.4
==================================

* Visibility filtering is now supported for binary packages, so masking behavior
  is essentially equivalent to that of ebuilds.
* There is no need to have a complete portage tree available when installing binary
  packages or uninstalling packages, but a warning message will still be displayed if
  it appears that a valid profile is not available.

portage-2.1.3
==================================

* Portage now requires >=python-2.4, but doesn't need pycrypto anymore if
  >=python-2.5 is installed and openssl supports the rmd160 hash.
* The "save_summary" and "echo" elog modules are now enabled by default. Setting
  PORTAGE_ELOG_SYSTEM in make.conf will override this, so if you don't want elog
  set PORTAGE_ELOG_SYSTEM="" in make.conf
* The unmerge process will remove any file that is not claimed by another
  package in the same slot and is not protected by CONFIG_PROTECT, even if the
  modification time or checksum differs from the file that was originally
  installed.  The old behavior is still available by adding -unmerge-orphans
  to FEATURES.
* The world file now supports slot atoms such as 'sys-devel/gcc:3.4'. In some
  cases, emerge --depclean may remove slots that it would not have removed
  in the past. The emerge --noreplace command can be used to add an atom to the
  world file and prevent matching packages from being removed.  A slot atom
  will be recorded in the world file for any atom that is precise enough to
  identify a specific slot.
* For safer operation, emerge --prune will not unmerge packages that have
  reverse dependencies. Use --verbose to display reverse dependencies. Use
  --nodeps to completely ignore dependencies.
* emerge --depclean now accepts atoms and will unmerge only the specified
  packages if nothing depends on them. Use --verbose to display reverse
  dependencies.

portage-2.1.2
==================================

* Depending on the number of packages installed, users may notice a difference
  in the time taken for dependency calculations.  This performance penalty is
  due to the addition of important new features which include the ability to
  detect reverse blockers, the building of a complete dependency graph, and the
  ability to use installed packages to satisify dependencies even after their
  ebuilds have been removed from the portage tree.
* emerge does not necessarily update build time dependencies that are not
  strictly required.  See the --with-bdeps option in the emerge(1) man page.

portage-2.1.1
==================================

* emerge --search doesn't use regular expressions now anymore by default, so
  emerge --search dvd+rw-tools now works as expected. Regular expressions can be enabled
  by prefixing the search string with %.
* emerge --depclean algorithm is much safer than the old one.
* emerge --newuse detects changes in IUSE that previously went undetected.

portage-2.1
==================================

* new cache framework, breaking all old cache modules.
  If you're having problems with portage_db_cdb, this is likely the cause.
* USE flag output ordering has changed.  The old ordering is now an option
  by the name of --alphabetical.  Adding the option to EMERGE_DEFAULT_OPTS
  in make.conf will restore the old behaviour permanently.
* The deprecated --inject has been removed, use /etc/portage/profile/package.provided
* The deprecated --upgradeonly has been removed, use /etc/portage/package.*
  instead.
* 'emerge sync' has been deprecated, use 'emerge --sync' instead (same
  for other actions)
* Tools that call emerge should override the EMERGE_DEFAULT_OPTS environment
  variable or use the emerge --ignore-default-opts option.
* rsync option handling has been redesigned, instead of RSYNC_* variables
  use PORTAGE_RSYNC_EXTRA_OPTS from now on.
* autouse (use.defaults) has been deprecated by specifying USE_ORDER in make.defaults
  Users may still turn this back on by specifying USE_ORDER="env:pkg:conf:auto:defaults"
  in make.conf.  Interested in figuring out what use flags were turned off?  Check out
  /usr/portage/profiles/base/use.defaults and other use.defaults files that correspond
  to your profile.

