commit: 600cb1fd9daed3b01d8f51b38c29f000376b6513
Author: Thomas Sachau <tommy <AT> gentoo <DOT> org>
AuthorDate: Tue May 5 11:30:56 2015 +0000
Commit: Thomas Sachau <tommy <AT> gentoo <DOT> org>
CommitDate: Tue May 5 11:30:56 2015 +0000
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=600cb1fd
Merge tag 'v2.2.18' into multilib
Portage-2.2.18 release
NEWS | 11 +
RELEASE-NOTES | 69 ++
bin/chpathtool.py | 22 +-
bin/eapi.sh | 114 +-
bin/ebuild | 1 +
bin/ebuild-helpers/dohtml | 4 +
bin/ebuild.sh | 13 +-
bin/egencache | 38 +-
bin/emerge-webrsync | 4 +-
bin/isolated-functions.sh | 21 +-
bin/phase-functions.sh | 13 +-
bin/phase-helpers.sh | 315 +++++-
bin/portageq | 16 +-
bin/regenworld | 4 +-
bin/repoman | 15 +-
bin/save-ebuild-env.sh | 5 +-
bin/socks5-server.py | 227 ++++
cnf/make.conf.example | 2 +-
cnf/repo.postsync.d/example | 51 +
cnf/repos.conf | 1 +
cnf/sets/portage.conf | 12 +-
doc/config/sets.docbook | 47 +-
man/ebuild.5 | 21 +-
man/egencache.1 | 15 +-
man/emaint.1 | 71 +-
man/emerge.1 | 91 +-
man/make.conf.5 | 14 +-
man/portage.5 | 232 ++++-
man/repoman.1 | 2 +-
pym/_emerge/AbstractPollTask.py | 52 +-
pym/_emerge/BinpkgExtractorAsync.py | 25 +-
pym/_emerge/FakeVartree.py | 16 +-
pym/_emerge/Package.py | 58 +-
pym/_emerge/Scheduler.py | 1 +
pym/_emerge/actions.py | 1095 ++------------------
pym/_emerge/create_depgraph_params.py | 22 +
pym/_emerge/create_world_atom.py | 6 +-
pym/_emerge/depgraph.py | 550 +++++++---
pym/_emerge/help.py | 2 +-
pym/_emerge/main.py | 81 +-
pym/_emerge/resolver/DbapiProvidesIndex.py | 101 ++
pym/_emerge/resolver/output.py | 19 +-
pym/_emerge/resolver/output_helpers.py | 19 +-
pym/_emerge/resolver/package_tracker.py | 42 +-
pym/_emerge/resolver/slot_collision.py | 35 +-
pym/_emerge/search.py | 188 ++--
pym/portage/__init__.py | 4 +-
pym/portage/_sets/ProfilePackageSet.py | 34 +
pym/portage/_sets/__init__.py | 19 +-
pym/portage/_sets/files.py | 157 ++-
pym/portage/_sets/profiles.py | 27 +-
pym/portage/cache/index/IndexStreamIterator.py | 27 +
.../sync => portage/cache/index}/__init__.py | 2 +-
pym/portage/cache/index/pkg_desc_index.py | 59 ++
pym/portage/dbapi/DummyTree.py | 16 +
pym/portage/dbapi/IndexedPortdb.py | 171 +++
pym/portage/dbapi/IndexedVardb.py | 114 ++
pym/portage/dbapi/_VdbMetadataDelta.py | 153 +++
pym/portage/dbapi/bintree.py | 38 +-
pym/portage/dbapi/vartree.py | 72 +-
pym/portage/dep/__init__.py | 31 +-
pym/portage/dep/_slot_operator.py | 13 +
pym/portage/dep/dep_check.py | 16 +-
pym/portage/dep/soname/SonameAtom.py | 72 ++
.../resolver => portage/dep/soname}/__init__.py | 2 +-
pym/portage/dep/soname/multilib_category.py | 114 ++
pym/portage/dep/soname/parse.py | 47 +
pym/portage/dispatch_conf.py | 68 +-
pym/portage/eapi.py | 2 +-
pym/portage/emaint/main.py | 33 +-
pym/portage/emaint/modules/merges/merges.py | 15 +-
pym/portage/emaint/modules/sync/__init__.py | 55 +
pym/portage/emaint/modules/sync/sync.py | 289 ++++++
pym/portage/locks.py | 2 +-
pym/portage/metadata.py | 208 ++++
pym/portage/{emaint => }/module.py | 40 +-
pym/portage/news.py | 6 +-
.../package/ebuild/_config/KeywordsManager.py | 6 +-
.../package/ebuild/_config/LocationsManager.py | 37 +-
pym/portage/package/ebuild/_config/MaskManager.py | 12 +-
pym/portage/package/ebuild/_config/UseManager.py | 112 +-
.../package/ebuild/_config/special_env_vars.py | 6 +-
pym/portage/package/ebuild/config.py | 35 +-
pym/portage/package/ebuild/doebuild.py | 165 ++-
pym/portage/package/ebuild/fetch.py | 7 +-
pym/portage/{emaint => }/progress.py | 0
pym/portage/repository/config.py | 121 ++-
pym/portage/sync/__init__.py | 38 +
pym/portage/sync/config_checks.py | 72 ++
pym/portage/sync/controller.py | 321 ++++++
.../sync/getaddrinfo_validate.py | 0
pym/{repoman => portage/sync/modules}/__init__.py | 0
pym/portage/sync/modules/cvs/__init__.py | 45 +
pym/portage/sync/modules/cvs/cvs.py | 67 ++
pym/portage/sync/modules/git/__init__.py | 55 +
pym/portage/sync/modules/git/git.py | 86 ++
pym/portage/sync/modules/rsync/__init__.py | 28 +
pym/portage/sync/modules/rsync/rsync.py | 543 ++++++++++
pym/portage/sync/modules/svn/__init__.py | 31 +
pym/portage/sync/modules/svn/svn.py | 89 ++
pym/portage/sync/modules/webrsync/__init__.py | 49 +
pym/portage/sync/modules/webrsync/webrsync.py | 66 ++
.../sync/old_tree_timestamp.py | 0
pym/portage/sync/syncbase.py | 136 +++
pym/portage/tests/dbapi/test_fakedbapi.py | 11 +-
pym/portage/tests/dbapi/test_portdb_cache.py | 18 +-
pym/portage/tests/glsa/test_security_set.py | 5 +-
pym/portage/tests/lint/metadata.py | 11 +
pym/portage/tests/lint/test_compile_modules.py | 13 +
pym/portage/tests/resolver/ResolverPlayground.py | 11 +-
.../tests/resolver/soname}/__init__.py | 2 +-
.../tests/resolver/soname/__test__.py} | 2 +-
.../tests/resolver/soname/test_autounmask.py | 103 ++
pym/portage/tests/resolver/soname/test_depclean.py | 61 ++
.../tests/resolver/soname/test_downgrade.py | 240 +++++
.../tests/resolver/soname/test_or_choices.py | 92 ++
.../tests/resolver/soname/test_reinstall.py | 87 ++
.../tests/resolver/soname/test_skip_update.py | 86 ++
.../soname/test_slot_conflict_reinstall.py | 342 ++++++
.../resolver/soname/test_slot_conflict_update.py | 117 +++
.../tests/resolver/soname/test_soname_provided.py | 78 ++
.../tests/resolver/soname/test_unsatisfiable.py | 71 ++
.../tests/resolver/soname/test_unsatisfied.py | 87 ++
pym/portage/tests/resolver/test_backtracking.py | 9 +-
pym/portage/tests/resolver/test_changed_deps.py | 120 +++
pym/portage/tests/resolver/test_or_choices.py | 80 +-
pym/portage/tests/resolver/test_package_tracker.py | 4 +-
.../tests/resolver/test_profile_default_eapi.py | 126 +++
.../tests/resolver/test_profile_package_set.py | 123 +++
.../resolver => portage/tests/sync}/__init__.py | 2 +-
pym/portage/tests/sync/test_sync_local.py | 189 ++++
pym/portage/util/__init__.py | 57 +-
pym/portage/util/_dyn_libs/LinkageMapELF.py | 61 +-
pym/portage/util/_dyn_libs/NeededEntry.py | 82 ++
pym/portage/util/_dyn_libs/soname_deps.py | 138 +++
pym/portage/util/compression_probe.py | 79 ++
pym/portage/util/cpuinfo.py | 18 +
.../resolver => portage/util/elf}/__init__.py | 2 +-
pym/portage/util/elf/constants.py | 45 +
pym/portage/util/elf/header.py | 65 ++
.../resolver => portage/util/endian}/__init__.py | 2 +-
pym/portage/util/endian/decode.py | 48 +
pym/portage/util/iterators/MultiIterGroupBy.py | 94 ++
.../util/iterators}/__init__.py | 2 +-
pym/portage/util/socks5.py | 81 ++
pym/repoman/check_missingslot.py | 31 +
pym/repoman/utilities.py | 7 +-
setup.py | 4 +-
148 files changed, 8855 insertions(+), 1847 deletions(-)
diff --cc pym/_emerge/actions.py
index 1385d34,b667537..614144a
--- a/pym/_emerge/actions.py
+++ b/pym/_emerge/actions.py
@@@ -3139,147 -2301,8 +2301,8 @@@ def getportageversion(portdir, _unused
unameout=platform.release()+" "+platform.machine()
return "Portage %s (%s, %s, %s, %s, %s)" % \
- (portage.VERSION, pythonver, profilever, gccver,
",".join(libcver), unameout)
+ (portage.VERSION + "-multilib", pythonver, profilever, gccver,
",".join(libcver), unameout)
- def git_sync_timestamps(portdb, portdir):
- """
- Since git doesn't preserve timestamps, synchronize timestamps between
- entries and ebuilds/eclasses. Assume the cache has the correct timestamp
- for a given file as long as the file in the working tree is not modified
- (relative to HEAD).
- """
-
- cache_db = portdb._pregen_auxdb.get(portdir)
-
- try:
- if cache_db is None:
- # portdbapi does not populate _pregen_auxdb
- # when FEATURES=metadata-transfer is enabled
- cache_db = portdb._create_pregen_cache(portdir)
- except CacheError as e:
- writemsg_level("!!! Unable to instantiate cache: %s\n" % (e,),
- level=logging.ERROR, noiselevel=-1)
- return 1
-
- if cache_db is None:
- return os.EX_OK
-
- if cache_db.validation_chf != 'mtime':
- # newer formats like md5-dict do not require mtime sync
- return os.EX_OK
-
- writemsg_level(">>> Synchronizing timestamps...\n")
-
- ec_dir = os.path.join(portdir, "eclass")
- try:
- ec_names = set(f[:-7] for f in os.listdir(ec_dir) \
- if f.endswith(".eclass"))
- except OSError as e:
- writemsg_level("!!! Unable to list eclasses: %s\n" % (e,),
- level=logging.ERROR, noiselevel=-1)
- return 1
-
- args = [portage.const.BASH_BINARY, "-c",
- "cd %s && git diff-index --name-only --diff-filter=M HEAD" % \
- portage._shell_quote(portdir)]
- proc = subprocess.Popen(args, stdout=subprocess.PIPE)
- modified_files = set(_unicode_decode(l).rstrip("\n") for l in
proc.stdout)
- rval = proc.wait()
- proc.stdout.close()
- if rval != os.EX_OK:
- return rval
-
- modified_eclasses = set(ec for ec in ec_names \
- if os.path.join("eclass", ec + ".eclass") in modified_files)
-
- updated_ec_mtimes = {}
-
- for cpv in cache_db:
- cpv_split = portage.catpkgsplit(cpv)
- if cpv_split is None:
- writemsg_level("!!! Invalid cache entry: %s\n" % (cpv,),
- level=logging.ERROR, noiselevel=-1)
- continue
-
- cat, pn, ver, rev = cpv_split
- cat, pf = portage.catsplit(cpv)
- relative_eb_path = os.path.join(cat, pn, pf + ".ebuild")
- if relative_eb_path in modified_files:
- continue
-
- try:
- cache_entry = cache_db[cpv]
- eb_mtime = cache_entry.get("_mtime_")
- ec_mtimes = cache_entry.get("_eclasses_")
- except KeyError:
- writemsg_level("!!! Missing cache entry: %s\n" % (cpv,),
- level=logging.ERROR, noiselevel=-1)
- continue
- except CacheError as e:
- writemsg_level("!!! Unable to access cache entry: %s
%s\n" % \
- (cpv, e), level=logging.ERROR, noiselevel=-1)
- continue
-
- if eb_mtime is None:
- writemsg_level("!!! Missing ebuild mtime: %s\n" %
(cpv,),
- level=logging.ERROR, noiselevel=-1)
- continue
-
- try:
- eb_mtime = long(eb_mtime)
- except ValueError:
- writemsg_level("!!! Invalid ebuild mtime: %s %s\n" % \
- (cpv, eb_mtime), level=logging.ERROR,
noiselevel=-1)
- continue
-
- if ec_mtimes is None:
- writemsg_level("!!! Missing eclass mtimes: %s\n" %
(cpv,),
- level=logging.ERROR, noiselevel=-1)
- continue
-
- if modified_eclasses.intersection(ec_mtimes):
- continue
-
- missing_eclasses = set(ec_mtimes).difference(ec_names)
- if missing_eclasses:
- writemsg_level("!!! Non-existent eclass(es): %s %s\n" %
\
- (cpv, sorted(missing_eclasses)),
level=logging.ERROR,
- noiselevel=-1)
- continue
-
- eb_path = os.path.join(portdir, relative_eb_path)
- try:
- current_eb_mtime = os.stat(eb_path)
- except OSError:
- writemsg_level("!!! Missing ebuild: %s\n" % \
- (cpv,), level=logging.ERROR, noiselevel=-1)
- continue
-
- inconsistent = False
- for ec, (ec_path, ec_mtime) in ec_mtimes.items():
- updated_mtime = updated_ec_mtimes.get(ec)
- if updated_mtime is not None and updated_mtime !=
ec_mtime:
- writemsg_level("!!! Inconsistent eclass mtime:
%s %s\n" % \
- (cpv, ec), level=logging.ERROR,
noiselevel=-1)
- inconsistent = True
- break
-
- if inconsistent:
- continue
-
- if current_eb_mtime != eb_mtime:
- os.utime(eb_path, (eb_mtime, eb_mtime))
-
- for ec, (ec_path, ec_mtime) in ec_mtimes.items():
- if ec in updated_ec_mtimes:
- continue
- ec_path = os.path.join(ec_dir, ec + ".eclass")
- current_mtime = os.stat(ec_path)[stat.ST_MTIME]
- if current_mtime != ec_mtime:
- os.utime(ec_path, (ec_mtime, ec_mtime))
- updated_ec_mtimes[ec] = ec_mtime
-
- return os.EX_OK
class _emerge_config(SlotObject):