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):
  

Reply via email to