commit:     b74e878839a2b1e8d6148776d5a44019d8fffbc1
Author:     Thomas Sachau <tommy <AT> gentoo <DOT> org>
AuthorDate: Wed May 23 12:22:27 2018 +0000
Commit:     Thomas Sachau <tommy <AT> gentoo <DOT> org>
CommitDate: Wed May 23 12:22:27 2018 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=b74e8788

Merge portage-2.3.38

 .travis.yml                                        |   2 +
 NEWS                                               |   9 +
 RELEASE-NOTES                                      |  92 +++
 bin/eapi.sh                                        |  18 +-
 bin/ebuild                                         |   8 +-
 bin/ebuild-helpers/ecompressdir                    |   4 +-
 bin/ebuild-ipc.py                                  |  55 +-
 bin/ebuild.sh                                      |   3 +
 bin/egencache                                      |   5 +-
 bin/emaint                                         |   3 +
 bin/emerge                                         |   5 +
 bin/emirrordist                                    |   6 +-
 bin/estrip                                         |   3 +-
 bin/etc-update                                     |  31 +-
 bin/install-qa-check.d/10ignored-flags             |   2 +-
 bin/misc-functions.sh                              |   2 +-
 bin/phase-functions.sh                             |   9 +
 bin/phase-helpers.sh                               | 159 ++---
 bin/portageq                                       |   6 +-
 bin/quickpkg                                       |  14 +-
 cnf/repos.conf                                     |   3 +-
 man/ebuild.5                                       |   6 +
 man/emerge.1                                       |  38 +-
 man/portage.5                                      |  10 +-
 pym/_emerge/AbstractEbuildProcess.py               |  97 ++-
 pym/_emerge/AbstractPollTask.py                    |  87 +--
 pym/_emerge/AsynchronousLock.py                    |  76 +--
 pym/_emerge/AsynchronousTask.py                    |  60 +-
 pym/_emerge/Binpkg.py                              |  78 ++-
 pym/_emerge/BinpkgExtractorAsync.py                |  16 +-
 pym/_emerge/BinpkgFetcher.py                       | 104 ++-
 pym/_emerge/CompositeTask.py                       |  46 +-
 pym/_emerge/EbuildBuild.py                         |  99 ++-
 pym/_emerge/EbuildBuildDir.py                      | 172 +++--
 pym/_emerge/EbuildFetcher.py                       | 135 +++-
 pym/_emerge/EbuildIpcDaemon.py                     |  28 +-
 pym/_emerge/EbuildMerge.py                         |  26 +-
 pym/_emerge/EbuildMetadataPhase.py                 |  55 +-
 pym/_emerge/EbuildPhase.py                         |  22 +-
 pym/_emerge/FifoIpcDaemon.py                       |  32 +-
 pym/_emerge/MetadataRegen.py                       |  14 +-
 pym/_emerge/Package.py                             |  54 +-
 pym/_emerge/PackageUninstall.py                    |  37 +-
 pym/_emerge/PipeReader.py                          |  42 +-
 pym/_emerge/Scheduler.py                           | 106 ++--
 pym/_emerge/SpawnProcess.py                        |  23 +-
 pym/_emerge/SubProcess.py                          | 123 +---
 pym/_emerge/actions.py                             |  53 +-
 pym/_emerge/create_world_atom.py                   |   6 +-
 pym/_emerge/depgraph.py                            |  33 +-
 pym/_emerge/main.py                                |  13 +-
 pym/_emerge/resolver/DbapiProvidesIndex.py         |   3 +-
 pym/portage/__init__.py                            |   8 +-
 pym/portage/_emirrordist/FetchIterator.py          | 323 ++++++----
 pym/portage/_emirrordist/FetchTask.py              |   2 +-
 pym/portage/_emirrordist/MirrorDistTask.py         |  27 +-
 pym/portage/_legacy_globals.py                     |   3 +-
 pym/portage/const.py                               |   2 +-
 pym/portage/dbapi/IndexedVardb.py                  |   2 +-
 pym/portage/dbapi/_MergeProcess.py                 |  47 +-
 pym/portage/dbapi/__init__.py                      |  44 +-
 pym/portage/dbapi/bintree.py                       |  89 ++-
 pym/portage/dbapi/porttree.py                      | 153 ++++-
 pym/portage/dbapi/vartree.py                       |  10 +-
 pym/portage/dbapi/virtual.py                       |   4 +-
 pym/portage/eapi.py                                |  16 +-
 pym/portage/emaint/modules/binhost/binhost.py      |   1 +
 pym/portage/exception.py                           |   3 +
 .../package/ebuild/_config/LocationsManager.py     |  25 +-
 .../package/ebuild/_config/special_env_vars.py     |   8 +-
 pym/portage/package/ebuild/_ipc/QueryCommand.py    |   4 +-
 .../ebuild/_parallel_manifest/ManifestScheduler.py |  25 +-
 .../ebuild/_parallel_manifest/ManifestTask.py      |  24 +-
 pym/portage/package/ebuild/config.py               |  44 +-
 pym/portage/package/ebuild/doebuild.py             |  30 +-
 pym/portage/package/ebuild/profile_iuse.py         |  32 +
 pym/portage/process.py                             |  10 +
 pym/portage/sync/modules/rsync/rsync.py            |  42 +-
 pym/portage/tests/__init__.py                      |  20 +-
 pym/portage/tests/dbapi/test_portdb_cache.py       |   3 +-
 pym/portage/tests/ebuild/test_ipc_daemon.py        |   6 +-
 pym/portage/tests/emerge/test_simple.py            |  51 +-
 pym/portage/tests/locks/test_asynchronous_lock.py  |  22 +-
 pym/portage/tests/resolver/ResolverPlayground.py   |  10 +
 pym/portage/tests/resolver/test_autounmask.py      |  48 +-
 pym/portage/tests/resolver/test_eapi.py            |   2 +-
 pym/portage/tests/resolver/test_required_use.py    |   6 +-
 pym/portage/tests/resolver/test_slot_collisions.py |  20 +-
 .../tests/resolver/test_slot_operator_rebuild.py   |  45 +-
 pym/portage/tests/runTests.py                      |   6 +-
 .../util/futures/asyncio}/__init__.py              |   0
 .../{bin => util/futures/asyncio}/__test__.py      |   0
 .../util/futures/asyncio/test_child_watcher.py     |  50 ++
 .../futures/asyncio/test_event_loop_in_fork.py     |  65 ++
 .../tests/util/futures/asyncio/test_pipe_closed.py | 151 +++++
 .../asyncio/test_policy_wrapper_recursion.py       |  29 +
 .../futures/asyncio/test_run_until_complete.py     |  34 +
 .../util/futures/asyncio/test_subprocess_exec.py   | 236 +++++++
 .../tests/util/futures/test_iter_completed.py      |  40 +-
 pym/portage/tests/util/futures/test_retry.py       | 177 ++++--
 pym/portage/util/SlotObject.py                     |   9 +-
 pym/portage/util/_async/AsyncFunction.py           |   7 +-
 pym/portage/util/_async/AsyncScheduler.py          |  49 +-
 pym/portage/util/_async/AsyncTaskFuture.py         |   4 +-
 pym/portage/util/_async/FileDigester.py            |   7 +-
 pym/portage/util/_async/ForkProcess.py             |  10 +
 pym/portage/util/_async/PipeLogger.py              |  32 +-
 pym/portage/util/_async/PipeReaderBlockingIO.py    |  16 +-
 pym/portage/util/_async/PopenProcess.py            |  17 +-
 pym/portage/util/_async/SchedulerInterface.py      |  34 +-
 pym/portage/util/_eventloop/EventLoop.py           | 374 +++++++++--
 pym/portage/util/_eventloop/GlibEventLoop.py       |  23 -
 pym/portage/util/_eventloop/asyncio_event_loop.py  |  85 +++
 pym/portage/util/_eventloop/global_event_loop.py   |  11 +-
 pym/portage/util/elf/constants.py                  |   4 +-
 pym/portage/util/futures/__init__.py               |   8 +
 pym/portage/util/futures/_asyncio/__init__.py      | 185 ++++++
 .../util/futures/{wait.py => _asyncio/tasks.py}    |  19 +-
 pym/portage/util/futures/events.py                 | 191 ++++++
 pym/portage/util/futures/executor/fork.py          |   6 +-
 pym/portage/util/futures/futures.py                |   9 +-
 pym/portage/util/futures/iter_completed.py         | 138 +++-
 pym/portage/util/futures/retry.py                  |  13 +-
 pym/portage/util/futures/transports.py             |  90 +++
 pym/portage/util/futures/unix_events.py            | 705 +++++++++++++++++++++
 pym/portage/versions.py                            |   6 +-
 repoman/bin/repoman                                |   3 +
 repoman/cnf/qa_data/qa_data.yaml                   |   2 +-
 repoman/man/repoman.1                              |   2 +-
 .../modules/linechecks/assignment/assignment.py    |   9 +-
 .../modules/linechecks/deprecated/inherit.py       |   3 +
 .../repoman/modules/linechecks/quotes/quotes.py    |   3 +-
 repoman/pym/repoman/modules/scan/fetch/fetches.py  |   2 +-
 repoman/pym/repoman/modules/scan/module.py         |   2 +-
 repoman/pym/repoman/tests/__init__.py              |   3 +
 repoman/pym/repoman/tests/runTests.py              |   6 +-
 repoman/setup.py                                   |   3 +-
 setup.py                                           |   5 +-
 138 files changed, 4789 insertions(+), 1438 deletions(-)

diff --cc pym/_emerge/Package.py
index 5d86c9635,a7ce00bc9..2be526471
--- a/pym/_emerge/Package.py
+++ b/pym/_emerge/Package.py
@@@ -82,24 -93,10 +93,16 @@@ class Package(Task)
                # sync metadata with validated repo (may be UNKNOWN_REPO)
                self._metadata['repository'] = self.cpv.repo
  
-               if eapi_attrs.iuse_effective:
-                       implicit_match = 
self.root_config.settings._iuse_effective_match
-                       if self.built:
-                               implicit_match = functools.partial(
-                                       self._built_iuse_effective_match,
-                                       implicit_match, 
frozenset(self._metadata['USE'].split()))
-               else:
-                       implicit_match = 
self.root_config.settings._iuse_implicit_match
-               iuse = self._metadata["IUSE"]
+               implicit_match = db._iuse_implicit_cnstr(self.cpv, 
self._metadata)
 +              if 'force-multilib' in self.root_config.settings.features:
 +                      if self.built is False:
 +                              for multilib_abis in 
self.root_config.settings.get("MULTILIB_ABIS", '').split():
 +                                      iuse += " multilib_abi_" + multilib_abis
 +                              iuse += " abiwrapper"
 +                              self._metadata["IUSE"] = iuse
                usealiases = 
self.root_config.settings._use_manager.getUseAliases(self)
-               self.iuse = self._iuse(self, iuse.split(), implicit_match,
-                       usealiases, self.eapi)
+               self.iuse = self._iuse(self, self._metadata["IUSE"].split(),
+                       implicit_match, usealiases, self.eapi)
  
                if (self.iuse.enabled or self.iuse.disabled) and \
                        not eapi_attrs.iuse_defaults:
diff --cc pym/_emerge/actions.py
index 966b4421b,70fb8d3b4..f53c33b46
--- a/pym/_emerge/actions.py
+++ b/pym/_emerge/actions.py
@@@ -2868,16 -2882,29 +2882,36 @@@ def run_action(emerge_config)
                        "--usepkg", "--usepkgonly"):
                        emerge_config.opts.pop(opt, None)
  
+       # Populate the bintree with current --getbinpkg setting.
+       # This needs to happen before:
+       # * expand_set_arguments, in case any sets use the bintree
+       # * adjust_configs and profile_check, in order to propagate settings
+       #   implicit IUSE and USE_EXPAND settings from the binhost(s)
+       if (emerge_config.action in ('search', None) and
+               '--usepkg' in emerge_config.opts):
+               for mytrees in emerge_config.trees.values():
+                       try:
+                               mytrees['bintree'].populate(
+                                       getbinpkgs='--getbinpkg' in 
emerge_config.opts)
+                       except ParseError as e:
+                               writemsg('\n\n!!!%s.\nSee make.conf(5) for more 
info.\n'
+                                                % (e,), noiselevel=-1)
+                               return 1
+ 
        adjust_configs(emerge_config.opts, emerge_config.trees)
+ 
+       if profile_check(emerge_config.trees, emerge_config.action) != os.EX_OK:
+               return 1
+ 
        apply_priorities(emerge_config.target_config.settings)
  
 +      if 'force-multilib' in emerge_config.target_config.settings.features:
 +              if emerge_config.target_config.settings.get("NO_AUTO_FLAG", "") 
is "":
 +                      writemsg_level(bad("!!! Failed to find vars from extra 
profile") + "\n",level=logging.ERROR, noiselevel=-1)
 +                      writemsg_level(bad("!!! Please make sure that you did 
follow the instructions and included the extra profile\n"),level=logging.ERROR, 
noiselevel=-1)
 +                      writemsg_level(bad("!!! 
http://git.overlays.gentoo.org/gitweb/?p=proj/multilib-portage.git;a=blob;f=doc/portage-multilib-instructions\n";),level=logging.ERROR,
 noiselevel=-1)
 +                      writemsg_level(bad("!!! has some basic instructions for 
the setup\n"),level=logging.ERROR, noiselevel=-1)
 +                      return 1
        if ("--autounmask-continue" in emerge_config.opts and
                emerge_config.opts.get("--autounmask") == "n"):
                writemsg_level(

Reply via email to