commit:     3c689a5900519c178b860bfefbb93967231785df
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Fri Jan 27 15:07:09 2017 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Fri Jan 27 15:07:09 2017 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=3c689a59

Merge remote-tracking branch 'overlays-gentoo-org/master' into prefix

 .gitignore                                         |   2 +
 .travis.yml                                        |  14 +-
 MANIFEST.in                                        |   1 -
 NEWS                                               |  26 +
 README                                             |  19 +
 RELEASE-NOTES                                      |  97 ++-
 bin/chpathtool.py                                  |   2 +-
 bin/dispatch-conf                                  |  15 +-
 bin/eapi.sh                                        |   4 -
 bin/ebuild                                         |  25 +-
 bin/ebuild.sh                                      |  41 +-
 bin/egencache                                      |  87 +--
 bin/glsa-check                                     |  19 +-
 bin/helper-functions.sh                            |   9 +-
 bin/install-qa-check.d/10executable-issues         |  24 +-
 bin/install-qa-check.d/60openrc                    |   8 +-
 bin/install-qa-check.d/80libraries                 |   2 +-
 bin/install-qa-check.d/90gcc-warnings              |  14 +-
 bin/phase-functions.sh                             |   8 +-
 bin/phase-helpers.sh                               |  18 +-
 bin/portageq                                       |  13 +-
 bin/save-ebuild-env.sh                             |   2 +-
 bin/socks5-server.py                               |   5 +
 cnf/make.conf.example                              |  20 +-
 cnf/make.conf.example.alpha.diff                   |   2 +-
 cnf/make.conf.example.amd64-fbsd.diff              |   2 +-
 cnf/make.conf.example.amd64.diff                   |   2 +-
 cnf/make.conf.example.arm.diff                     |   4 +-
 cnf/make.conf.example.hppa.diff                    |   2 +-
 cnf/make.conf.example.ia64.diff                    |   2 +-
 cnf/make.conf.example.m68k.diff                    |   2 +-
 cnf/make.conf.example.mips.diff                    |   2 +-
 cnf/make.conf.example.ppc.diff                     |   2 +-
 cnf/make.conf.example.ppc64.diff                   |   2 +-
 cnf/make.conf.example.s390.diff                    |   2 +-
 cnf/make.conf.example.sh.diff                      |   4 +-
 cnf/make.conf.example.sparc-fbsd.diff              |   2 +-
 cnf/make.conf.example.sparc.diff                   |   8 +-
 cnf/make.conf.example.x86-fbsd.diff                |   2 +-
 cnf/make.conf.example.x86.diff                     |   2 +-
 cnf/make.globals                                   |   4 +-
 cnf/metadata.dtd                                   | 102 ---
 doc/config/sets.docbook                            |   4 +-
 doc/package/ebuild/eapi/4-python.docbook           |   2 +-
 doc/package/ebuild/eapi/5-progress.docbook         |   2 +-
 doc/qa.docbook                                     |  12 +-
 man/color.map.5                                    |   2 +-
 man/dispatch-conf.1                                |   2 +-
 man/ebuild.1                                       |   2 +-
 man/ebuild.5                                       |  10 +-
 man/egencache.1                                    |   2 +-
 man/emaint.1                                       |  10 +-
 man/emerge.1                                       |  32 +-
 man/emirrordist.1                                  |   2 +-
 man/env-update.1                                   |   2 +-
 man/etc-update.1                                   |   2 +-
 man/fixpackages.1                                  |   2 +-
 man/make.conf.5                                    |  20 +-
 man/portage.5                                      |  23 +-
 man/quickpkg.1                                     |   2 +-
 man/ru/color.map.5                                 |   2 +-
 man/ru/dispatch-conf.1                             |   2 +-
 man/ru/ebuild.1                                    |   2 +-
 man/ru/env-update.1                                |   2 +-
 man/ru/etc-update.1                                |   2 +-
 man/ru/fixpackages.1                               |   2 +-
 pym/_emerge/EbuildBuild.py                         |  22 +-
 pym/_emerge/EbuildPhase.py                         |   2 +-
 pym/_emerge/MiscFunctionsProcess.py                |   3 +-
 pym/_emerge/Scheduler.py                           |  24 +-
 pym/_emerge/actions.py                             |  51 +-
 pym/_emerge/depgraph.py                            | 178 +++--
 pym/_emerge/main.py                                |  41 +-
 pym/_emerge/post_emerge.py                         |   6 +-
 pym/_emerge/resolver/output.py                     |   5 +-
 pym/_emerge/resolver/output_helpers.py             |  11 +
 pym/_emerge/resolver/slot_collision.py             |  37 +-
 pym/_emerge/search.py                              |  26 +-
 pym/portage/__init__.py                            |  23 +-
 pym/portage/_emirrordist/FetchTask.py              |   2 +-
 pym/portage/_selinux.py                            |  24 +-
 pym/portage/_sets/__init__.py                      |  37 +-
 pym/portage/cache/anydbm.py                        |   4 +-
 pym/portage/cache/ebuild_xattr.py                  |   2 +-
 pym/portage/cache/flat_hash.py                     |  53 +-
 pym/portage/cache/fs_template.py                   |   2 +-
 pym/portage/cache/mappings.py                      |   4 +-
 pym/portage/cache/sqlite.py                        |   4 +-
 pym/portage/cache/template.py                      |  36 +-
 pym/portage/const.py                               |   2 +-
 pym/portage/data.py                                |   2 +-
 pym/portage/dbapi/_SyncfsProcess.py                |   2 +-
 pym/portage/dbapi/bintree.py                       |  40 +-
 pym/portage/dbapi/porttree.py                      |   4 +-
 pym/portage/dbapi/vartree.py                       | 135 +++-
 pym/portage/dep/__init__.py                        |  16 +-
 pym/portage/dep/dep_check.py                       |  41 +-
 pym/portage/dispatch_conf.py                       |   2 +-
 pym/portage/emaint/main.py                         |  12 +-
 pym/portage/emaint/modules/binhost/__init__.py     |   1 +
 pym/portage/emaint/modules/binhost/binhost.py      |   6 +-
 pym/portage/emaint/modules/config/__init__.py      |   1 +
 pym/portage/emaint/modules/config/config.py        |   6 +-
 pym/portage/emaint/modules/logs/__init__.py        |   1 +
 pym/portage/emaint/modules/logs/logs.py            |  27 +-
 pym/portage/emaint/modules/merges/__init__.py      |   1 +
 pym/portage/emaint/modules/merges/merges.py        |  18 +-
 pym/portage/emaint/modules/move/__init__.py        |   2 +
 pym/portage/emaint/modules/move/move.py            |   9 +-
 pym/portage/emaint/modules/resume/__init__.py      |   1 +
 pym/portage/emaint/modules/resume/resume.py        |   3 +-
 pym/portage/emaint/modules/sync/__init__.py        |   1 +
 pym/portage/emaint/modules/sync/sync.py            |  19 +-
 pym/portage/emaint/modules/world/__init__.py       |   1 +
 pym/portage/emaint/modules/world/world.py          |   8 +-
 pym/portage/glsa.py                                |   8 +-
 pym/portage/localization.py                        |   6 +-
 pym/portage/locks.py                               |  59 +-
 pym/portage/manifest.py                            |  23 +-
 pym/portage/metadata.py                            |   2 +-
 pym/portage/module.py                              |  15 +-
 pym/portage/news.py                                |  79 ++-
 pym/portage/output.py                              |   2 +-
 pym/portage/package/ebuild/config.py               |  25 +-
 pym/portage/package/ebuild/digestcheck.py          |   2 +-
 pym/portage/package/ebuild/doebuild.py             |  28 +-
 pym/portage/package/ebuild/prepare_build_dirs.py   |   6 -
 pym/portage/process.py                             |   4 +
 pym/portage/repository/config.py                   |  65 +-
 pym/portage/sync/modules/cvs/__init__.py           |   1 +
 pym/portage/sync/modules/cvs/cvs.py                |   4 +-
 pym/portage/sync/modules/git/__init__.py           |   1 +
 pym/portage/sync/modules/git/git.py                |   4 +-
 pym/portage/sync/modules/rsync/__init__.py         |   1 +
 pym/portage/sync/modules/rsync/rsync.py            |   4 +-
 pym/portage/sync/modules/svn/__init__.py           |   1 +
 pym/portage/sync/modules/svn/svn.py                |   6 +-
 pym/portage/sync/modules/webrsync/__init__.py      |   1 +
 pym/portage/sync/modules/webrsync/webrsync.py      |   2 +-
 .../tests/ebuild/test_array_fromfile_eof.py        |   2 +-
 pym/portage/tests/ebuild/test_ipc_daemon.py        |  23 +-
 ...bi.py => test_emerge_blocker_file_collision.py} | 101 ++-
 pym/portage/tests/emerge/test_simple.py            |  18 +-
 pym/portage/tests/news/test_NewsItem.py            |   1 +
 pym/portage/tests/process/test_poll.py             |   2 +-
 pym/portage/tests/resolver/ResolverPlayground.py   |  24 +-
 .../soname/test_slot_conflict_reinstall.py         |   1 +
 .../resolver/test_imagemagick_graphicsmagick.py    | 104 +++
 .../resolver/test_runtime_cycle_merge_order.py     |  72 ++
 .../tests/resolver/test_slot_conflict_rebuild.py   |   2 +-
 .../resolver/test_slot_operator_reverse_deps.py    | 113 +++
 pym/portage/tests/util/test_getconfig.py           |   4 +-
 pym/portage/util/__init__.py                       |   8 +-
 pym/portage/util/_desktop_entry.py                 |  27 +-
 pym/portage/util/_dyn_libs/LinkageMapELF.py        |  38 +-
 pym/portage/util/_dyn_libs/LinkageMapMachO.py      |   4 +-
 pym/portage/util/_eventloop/EventLoop.py           |  17 +-
 pym/portage/util/changelog.py                      |  69 ++
 pym/portage/util/configparser.py                   |  76 +++
 pym/portage/util/env_update.py                     |   6 +-
 pym/{repoman => portage/util/futures}/__init__.py  |   0
 pym/portage/util/futures/extendedfutures.py        |  73 ++
 pym/portage/util/futures/futures.py                | 118 ++++
 pym/portage/util/locale.py                         |  20 +-
 pym/portage/util/writeable_check.py                |  28 +-
 pym/portage/versions.py                            |  31 +-
 pym/portage/xml/metadata.py                        |  89 ++-
 pym/portage/xpak.py                                |   2 +-
 pym/repoman/_xml.py                                | 106 ---
 pym/repoman/checks/ebuilds/eclasses/live.py        |  39 --
 pym/repoman/checks/ebuilds/isebuild.py             |  71 --
 pym/repoman/checks/ebuilds/manifests.py            | 102 ---
 pym/repoman/checks/ebuilds/misc.py                 |  57 --
 pym/repoman/checks/ebuilds/pkgmetadata.py          | 177 -----
 pym/repoman/checks/ebuilds/thirdpartymirrors.py    |  39 --
 pym/repoman/checks/ebuilds/variables/eapi.py       |  44 --
 pym/repoman/checks/ebuilds/variables/license.py    |  47 --
 pym/repoman/checks/herds/__init__.py               |   0
 pym/repoman/ebuild.py                              |  29 -
 pym/repoman/metadata.py                            | 153 -----
 pym/repoman/modules/__init__.py                    |   0
 pym/repoman/modules/commit/__init__.py             |   0
 pym/repoman/modules/fix/__init__.py                |   0
 pym/repoman/modules/full/__init__.py               |   0
 pym/repoman/modules/manifest/__init__.py           |   0
 pym/repoman/modules/scan/__init__.py               |   0
 pym/repoman/scan.py                                | 172 -----
 pym/repoman/scanner.py                             | 755 ---------------------
 pym/repoman/vcs/__init__.py                        |   0
 pym/repoman/vcs/vcs.py                             | 287 --------
 pym/repoman/vcs/vcsstatus.py                       | 114 ----
 .../__test__.py => repoman/.repoman_not_installed  |   0
 repoman/MANIFEST.in                                |   3 +
 repoman/NEWS                                       |   9 +
 README => repoman/README                           |   9 -
 repoman/RELEASE-NOTES                              |  39 ++
 TEST-NOTES => repoman/TEST-NOTES                   |   0
 {bin => repoman/bin}/repoman                       |  11 +-
 repoman/cnf/metadata.xsd                           | 548 +++++++++++++++
 {man => repoman/man}/repoman.1                     |  13 +-
 repoman/pym/repoman/__init__.py                    |  79 +++
 {pym => repoman/pym}/repoman/_portage.py           |   0
 {pym => repoman/pym}/repoman/_subprocess.py        |   4 +-
 {pym => repoman/pym}/repoman/actions.py            | 471 +++----------
 {pym => repoman/pym}/repoman/argparser.py          |   0
 {pym => repoman/pym}/repoman/check_missingslot.py  |   0
 {pym => repoman/pym}/repoman/checks/__init__.py    |   0
 .../pym/repoman/checks/herds}/__init__.py          |   0
 .../pym}/repoman/checks/herds/herdbase.py          |   2 +-
 .../pym}/repoman/checks/herds/metadata.py          |   0
 {pym => repoman/pym}/repoman/copyrights.py         |   0
 {pym => repoman/pym}/repoman/errors.py             |   0
 {pym => repoman/pym}/repoman/gpg.py                |   2 +-
 {pym => repoman/pym}/repoman/main.py               |  49 +-
 repoman/pym/repoman/metadata.py                    | 128 ++++
 .../pym/repoman/modules}/__init__.py               |   0
 .../pym/repoman/modules/commit}/__init__.py        |   0
 repoman/pym/repoman/modules/commit/manifest.py     | 115 ++++
 .../pym}/repoman/modules/commit/repochecks.py      |   4 +-
 .../pym/repoman/modules/scan}/__init__.py          |   0
 .../pym/repoman/modules/scan/depend/__init__.py    |  32 +
 .../repoman/modules/scan/depend/_depend_checks.py  | 194 ++++++
 .../pym/repoman/modules/scan/depend/_gen_arches.py |  57 ++
 repoman/pym/repoman/modules/scan/depend/profile.py | 256 +++++++
 .../repoman/modules/scan/directories/__init__.py   |  48 ++
 .../pym/repoman/modules/scan}/directories/files.py |  43 +-
 .../pym/repoman/modules/scan/directories/mtime.py  |  30 +
 repoman/pym/repoman/modules/scan/eapi/__init__.py  |  29 +
 repoman/pym/repoman/modules/scan/eapi/eapi.py      |  49 ++
 .../pym/repoman/modules/scan/ebuild/__init__.py    |  58 ++
 .../pym/repoman/modules/scan/ebuild}/checks.py     |   8 +-
 repoman/pym/repoman/modules/scan/ebuild/ebuild.py  | 238 +++++++
 .../pym/repoman/modules/scan/ebuild}/errors.py     |   0
 .../pym/repoman/modules/scan/ebuild/multicheck.py  |  56 ++
 .../pym/repoman/modules/scan/eclasses/__init__.py  |  47 ++
 repoman/pym/repoman/modules/scan/eclasses/live.py  |  76 +++
 .../pym/repoman/modules/scan}/eclasses/ruby.py     |  26 +-
 repoman/pym/repoman/modules/scan/fetch/__init__.py |  33 +
 .../pym/repoman/modules/scan/fetch}/fetches.py     | 103 ++-
 .../pym/repoman/modules/scan/keywords/__init__.py  |  33 +
 .../pym/repoman/modules/scan/keywords}/keywords.py |  95 +--
 .../pym/repoman/modules/scan/manifest/__init__.py  |  30 +
 .../pym/repoman/modules/scan/manifest/manifests.py |  56 ++
 .../pym/repoman/modules/scan/metadata/__init__.py  |  85 +++
 .../repoman/modules/scan/metadata}/description.py  |  23 +-
 .../modules/scan/metadata/ebuild_metadata.py       |  84 +++
 .../repoman/modules/scan/metadata/pkgmetadata.py   | 198 ++++++
 .../pym/repoman/modules/scan/metadata}/restrict.py |  32 +-
 .../repoman/modules/scan/metadata}/use_flags.py    |  28 +-
 .../pym/repoman/modules/scan/options/__init__.py   |  28 +
 .../pym/repoman/modules/scan/options/options.py    |  29 +
 repoman/pym/repoman/modules/scan/scan.py           |  66 ++
 repoman/pym/repoman/modules/scan/scanbase.py       |  79 +++
 repoman/pym/repoman/modules/vcs/None/__init__.py   |  34 +
 repoman/pym/repoman/modules/vcs/None/changes.py    |  50 ++
 repoman/pym/repoman/modules/vcs/None/status.py     |  53 ++
 repoman/pym/repoman/modules/vcs/__init__.py        |  14 +
 repoman/pym/repoman/modules/vcs/bzr/__init__.py    |  34 +
 repoman/pym/repoman/modules/vcs/bzr/changes.py     |  68 ++
 repoman/pym/repoman/modules/vcs/bzr/status.py      |  70 ++
 repoman/pym/repoman/modules/vcs/changes.py         | 169 +++++
 repoman/pym/repoman/modules/vcs/cvs/__init__.py    |  34 +
 repoman/pym/repoman/modules/vcs/cvs/changes.py     | 118 ++++
 repoman/pym/repoman/modules/vcs/cvs/status.py      | 131 ++++
 repoman/pym/repoman/modules/vcs/git/__init__.py    |  34 +
 repoman/pym/repoman/modules/vcs/git/changes.py     | 120 ++++
 repoman/pym/repoman/modules/vcs/git/status.py      |  79 +++
 repoman/pym/repoman/modules/vcs/hg/__init__.py     |  34 +
 repoman/pym/repoman/modules/vcs/hg/changes.py      | 105 +++
 repoman/pym/repoman/modules/vcs/hg/status.py       |  65 ++
 repoman/pym/repoman/modules/vcs/settings.py        | 108 +++
 repoman/pym/repoman/modules/vcs/svn/__init__.py    |  34 +
 repoman/pym/repoman/modules/vcs/svn/changes.py     | 142 ++++
 repoman/pym/repoman/modules/vcs/svn/status.py      | 150 ++++
 repoman/pym/repoman/modules/vcs/vcs.py             | 161 +++++
 {pym => repoman/pym}/repoman/profile.py            |   0
 {pym => repoman/pym}/repoman/qa_data.py            |   9 +-
 {pym => repoman/pym}/repoman/qa_tracker.py         |   0
 {pym => repoman/pym}/repoman/repos.py              |  13 +-
 repoman/pym/repoman/scanner.py                     | 436 ++++++++++++
 .../pym/repoman}/tests/__init__.py                 |  17 +-
 .../bin => repoman/pym/repoman/tests}/__test__.py  |   0
 .../pym/repoman/tests/changelog}/__init__.py       |   0
 .../repoman/tests/changelog}/test_echangelog.py    |   0
 .../pym/repoman}/tests/runTests.py                 |  24 +-
 .../pym/repoman/tests/simple}/__init__.py          |   0
 repoman/pym/repoman/tests/simple/__test__.py       |   1 +
 .../pym/repoman/tests/simple}/test_simple.py       |  25 +-
 {pym => repoman/pym}/repoman/utilities.py          |   7 -
 runtests => repoman/runtests                       |  22 +-
 setup.py => repoman/setup.py                       | 205 +-----
 runtests                                           |  16 +-
 setup.py                                           |  42 +-
 src/portage_util_libc.c                            |  68 ++
 testpath                                           |   9 +-
 295 files changed, 7876 insertions(+), 3900 deletions(-)

diff --cc bin/dispatch-conf
index 4215e5b,fdf564e..befc8dc
--- a/bin/dispatch-conf
+++ b/bin/dispatch-conf
@@@ -1,5 -1,5 +1,5 @@@
 -#!/usr/bin/python -bO
 +#!@PREFIX_PORTAGE_PYTHON@ -bO
- # Copyright 1999-2014 Gentoo Foundation
+ # Copyright 1999-2016 Gentoo Foundation
  # Distributed under the terms of the GNU General Public License v2
  
  #
diff --cc bin/egencache
index cf503a3,e994b4a..bb7e7a9
--- a/bin/egencache
+++ b/bin/egencache
@@@ -59,10 -58,10 +58,11 @@@ from portage.util._async.AsyncFunction 
  from portage.util._async.run_main_scheduler import run_main_scheduler
  from portage.util._async.TaskScheduler import TaskScheduler
  from portage.util._eventloop.global_event_loop import global_event_loop
+ from portage.util.changelog import ChangeLogTypeSort
  from portage import cpv_getkey
  from portage.dep import Atom, isjustname
- from portage.versions import pkgsplit, vercmp, _pkg_str
+ from portage.versions import vercmp
 +from portage.const import EPREFIX
  
  try:
        from xml.etree import ElementTree
diff --cc bin/portageq
index ef2c7fb,06c8e0e..616aee0
--- a/bin/portageq
+++ b/bin/portageq
@@@ -1,5 -1,5 +1,5 @@@
 -#!/usr/bin/python -bO
 +#!@PREFIX_PORTAGE_PYTHON@ -bO
- # Copyright 1999-2015 Gentoo Foundation
+ # Copyright 1999-2016 Gentoo Foundation
  # Distributed under the terms of the GNU General Public License v2
  
  from __future__ import print_function, unicode_literals
diff --cc cnf/make.conf.example
index 85a851d,04f3a02..6de7a90
--- a/cnf/make.conf.example
+++ b/cnf/make.conf.example
@@@ -141,9 -141,9 +141,9 @@@
  # PORTDIR_OVERLAY is a directory where local ebuilds may be stored without
  #     concern that they will be deleted by rsync updates. Default is not
  #     defined.
 -#PORTDIR_OVERLAY=/usr/local/portage
 +#PORTDIR_OVERLAY=@PORTAGE_EPREFIX@/usr/local/portage
  
- # Fetching files 
+ # Fetching files
  # ==============
  #
  # If you need to set a proxy for wget or lukemftp, add the appropriate "export
@@@ -215,12 -215,8 +215,12 @@@
  #     one of them sync from the rotations above. The other boxes can then 
rsync
  #     from the local rsync server, reducing the load on the mirrors.
  #     Instructions for setting up a local rsync server are available here:
- #     http://www.gentoo.org/doc/en/rsync.xml
+ #     https://wiki.gentoo.org/wiki/Local_Mirror
  #
 +# For Gentoo Prefix, use the following URL:
 +#
 +#   Default:       "rsync://rsync.prefix.bitzolder.nl/gentoo-portage-prefix
 +#
  #SYNC="rsync://rsync.gentoo.org/gentoo-portage"
  #
  # PORTAGE_RSYNC_RETRIES sets the number of times portage will attempt to 
retrieve
diff --cc pym/portage/util/_dyn_libs/LinkageMapELF.py
index b32ee81,a063621..54a25e0
--- a/pym/portage/util/_dyn_libs/LinkageMapELF.py
+++ b/pym/portage/util/_dyn_libs/LinkageMapELF.py
@@@ -19,8 -22,13 +22,14 @@@ from portage.util import normalize_pat
  from portage.util import varexpand
  from portage.util import writemsg_level
  from portage.util._dyn_libs.NeededEntry import NeededEntry
+ from portage.util.elf.header import ELFHeader
 +from portage.const import EPREFIX
  
+ if sys.hexversion >= 0x3000000:
+       _unicode = str
+ else:
+       _unicode = unicode
+ 
  # Map ELF e_machine values from NEEDED.ELF.2 to approximate multilib
  # categories. This approximation will produce incorrect results on x32
  # and mips systems, but the result is not worse than using the raw
diff --cc pym/portage/util/_dyn_libs/LinkageMapMachO.py
index 7cfb18e,a063621..5cfbadb
--- a/pym/portage/util/_dyn_libs/LinkageMapMachO.py
+++ b/pym/portage/util/_dyn_libs/LinkageMapMachO.py
@@@ -1,4 -1,4 +1,4 @@@
- # Copyright 1998-2011 Gentoo Foundation
 -# Copyright 1998-2016 Gentoo Foundation
++# Copyright 1998-2017 Gentoo Foundation
  # Distributed under the terms of the GNU General Public License v2
  
  import errno
@@@ -231,7 -268,7 +231,7 @@@ class LinkageMapMachO(object)
                                        continue
                                plibs.update((x, cpv) for x in items)
                if plibs:
-                       args = [EPREFIX + "/usr/bin/scanmacho", "-qF", 
"%a;%F;%S;%n"]
 -                      args = [os.path.join(EPREFIX or "/", 
"usr/bin/scanelf"), "-qF", "%a;%F;%S;%r;%n"]
++                      args = [os.path.join(EPREFIX or "/", 
"usr/bin/scanmacho"), "-qF", "%a;%F;%S;%n"]
                        args.extend(os.path.join(root, x.lstrip("." + os.sep)) \
                                for x in plibs)
                        try:
diff --cc pym/portage/versions.py
index fc7af27,adfb1c3..fb49967
--- a/pym/portage/versions.py
+++ b/pym/portage/versions.py
@@@ -257,42 -256,18 +257,42 @@@ def vercmp(ver1, ver2, silent=1)
                        if rval:
                                return rval
  
 -      # the suffix part is equal to, so finally check the revision
 +      # The suffix part is equal too, so finally check the revision
 +      # PREFIX hack: a revision starting with 0 is an 'inter-revision',
 +      # which means that it is possible to create revisions on revisions.
 +      # An example is -r01.1 which is the first revision of -r1.  Note
 +      # that a period (.) is used to separate the real revision and the
 +      # secondary revision number.  This trick is in use to allow revision
 +      # bumps in ebuilds synced from the main tree for Prefix changes,
 +      # while still staying in the main tree versioning scheme.
        if match1.group(10):
 -              r1 = int(match1.group(10))
 +              if match1.group(10)[0] == '0' and '.' in match1.group(10):
 +                      t = match1.group(10)[1:].split(".")
 +                      r1 = int(t[0])
 +                      r3 = int(t[1])
 +              else:
 +                      r1 = int(match1.group(10))
 +                      r3 = 0
        else:
                r1 = 0
 +              r3 = 0
        if match2.group(10):
 -              r2 = int(match2.group(10))
 +              if match2.group(10)[0] == '0' and '.' in match2.group(10):
 +                      t = match2.group(10)[1:].split(".")
 +                      r2 = int(t[0])
 +                      r4 = int(t[1])
 +              else:
 +                      r2 = int(match2.group(10))
 +                      r4 = 0
        else:
                r2 = 0
 +              r4 = 0
 +      if r1 == r2 and (r3 != 0 or r4 != 0):
 +              r1 = r3
 +              r2 = r4
        rval = (r1 > r2) - (r1 < r2)
        return rval
-       
+ 
  def pkgcmp(pkg1, pkg2):
        """
        Compare 2 package versions created in pkgsplit format.

Reply via email to