From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 59B6D138CBF for ; Tue, 5 May 2015 11:29:36 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 14578E0824; Tue, 5 May 2015 11:29:34 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 9DA9BE0824 for ; Tue, 5 May 2015 11:29:33 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 5F9F3340CB1 for ; Tue, 5 May 2015 11:29:32 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id B9B9C98C for ; Tue, 5 May 2015 11:29:28 +0000 (UTC) From: "Thomas Sachau" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Thomas Sachau" Message-ID: <1430825456.600cb1fd9daed3b01d8f51b38c29f000376b6513.tommy@gentoo> Subject: [gentoo-commits] proj/portage:multilib commit in: / X-VCS-Repository: proj/portage X-VCS-Committer: tommy X-VCS-Committer-Name: Thomas Sachau X-VCS-Revision: 600cb1fd9daed3b01d8f51b38c29f000376b6513 X-VCS-Branch: multilib Date: Tue, 5 May 2015 11:29:28 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 0f33c242-b8c4-41db-a62f-4415f70f3def X-Archives-Hash: 7a9bd738c5c100017e9833ea4f9a381e commit: 600cb1fd9daed3b01d8f51b38c29f000376b6513 Author: Thomas Sachau gentoo org> AuthorDate: Tue May 5 11:30:56 2015 +0000 Commit: Thomas Sachau gentoo 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):