Gentoo Archives: gentoo-commits

From: Thomas Sachau <tommy@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:multilib commit in: /
Date: Wed, 23 May 2018 12:23:26
Message-Id: 1527078147.b74e878839a2b1e8d6148776d5a44019d8fffbc1.tommy@gentoo
1 commit: b74e878839a2b1e8d6148776d5a44019d8fffbc1
2 Author: Thomas Sachau <tommy <AT> gentoo <DOT> org>
3 AuthorDate: Wed May 23 12:22:27 2018 +0000
4 Commit: Thomas Sachau <tommy <AT> gentoo <DOT> org>
5 CommitDate: Wed May 23 12:22:27 2018 +0000
6 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=b74e8788
7
8 Merge portage-2.3.38
9
10 .travis.yml | 2 +
11 NEWS | 9 +
12 RELEASE-NOTES | 92 +++
13 bin/eapi.sh | 18 +-
14 bin/ebuild | 8 +-
15 bin/ebuild-helpers/ecompressdir | 4 +-
16 bin/ebuild-ipc.py | 55 +-
17 bin/ebuild.sh | 3 +
18 bin/egencache | 5 +-
19 bin/emaint | 3 +
20 bin/emerge | 5 +
21 bin/emirrordist | 6 +-
22 bin/estrip | 3 +-
23 bin/etc-update | 31 +-
24 bin/install-qa-check.d/10ignored-flags | 2 +-
25 bin/misc-functions.sh | 2 +-
26 bin/phase-functions.sh | 9 +
27 bin/phase-helpers.sh | 159 ++---
28 bin/portageq | 6 +-
29 bin/quickpkg | 14 +-
30 cnf/repos.conf | 3 +-
31 man/ebuild.5 | 6 +
32 man/emerge.1 | 38 +-
33 man/portage.5 | 10 +-
34 pym/_emerge/AbstractEbuildProcess.py | 97 ++-
35 pym/_emerge/AbstractPollTask.py | 87 +--
36 pym/_emerge/AsynchronousLock.py | 76 +--
37 pym/_emerge/AsynchronousTask.py | 60 +-
38 pym/_emerge/Binpkg.py | 78 ++-
39 pym/_emerge/BinpkgExtractorAsync.py | 16 +-
40 pym/_emerge/BinpkgFetcher.py | 104 ++-
41 pym/_emerge/CompositeTask.py | 46 +-
42 pym/_emerge/EbuildBuild.py | 99 ++-
43 pym/_emerge/EbuildBuildDir.py | 172 +++--
44 pym/_emerge/EbuildFetcher.py | 135 +++-
45 pym/_emerge/EbuildIpcDaemon.py | 28 +-
46 pym/_emerge/EbuildMerge.py | 26 +-
47 pym/_emerge/EbuildMetadataPhase.py | 55 +-
48 pym/_emerge/EbuildPhase.py | 22 +-
49 pym/_emerge/FifoIpcDaemon.py | 32 +-
50 pym/_emerge/MetadataRegen.py | 14 +-
51 pym/_emerge/Package.py | 54 +-
52 pym/_emerge/PackageUninstall.py | 37 +-
53 pym/_emerge/PipeReader.py | 42 +-
54 pym/_emerge/Scheduler.py | 106 ++--
55 pym/_emerge/SpawnProcess.py | 23 +-
56 pym/_emerge/SubProcess.py | 123 +---
57 pym/_emerge/actions.py | 53 +-
58 pym/_emerge/create_world_atom.py | 6 +-
59 pym/_emerge/depgraph.py | 33 +-
60 pym/_emerge/main.py | 13 +-
61 pym/_emerge/resolver/DbapiProvidesIndex.py | 3 +-
62 pym/portage/__init__.py | 8 +-
63 pym/portage/_emirrordist/FetchIterator.py | 323 ++++++----
64 pym/portage/_emirrordist/FetchTask.py | 2 +-
65 pym/portage/_emirrordist/MirrorDistTask.py | 27 +-
66 pym/portage/_legacy_globals.py | 3 +-
67 pym/portage/const.py | 2 +-
68 pym/portage/dbapi/IndexedVardb.py | 2 +-
69 pym/portage/dbapi/_MergeProcess.py | 47 +-
70 pym/portage/dbapi/__init__.py | 44 +-
71 pym/portage/dbapi/bintree.py | 89 ++-
72 pym/portage/dbapi/porttree.py | 153 ++++-
73 pym/portage/dbapi/vartree.py | 10 +-
74 pym/portage/dbapi/virtual.py | 4 +-
75 pym/portage/eapi.py | 16 +-
76 pym/portage/emaint/modules/binhost/binhost.py | 1 +
77 pym/portage/exception.py | 3 +
78 .../package/ebuild/_config/LocationsManager.py | 25 +-
79 .../package/ebuild/_config/special_env_vars.py | 8 +-
80 pym/portage/package/ebuild/_ipc/QueryCommand.py | 4 +-
81 .../ebuild/_parallel_manifest/ManifestScheduler.py | 25 +-
82 .../ebuild/_parallel_manifest/ManifestTask.py | 24 +-
83 pym/portage/package/ebuild/config.py | 44 +-
84 pym/portage/package/ebuild/doebuild.py | 30 +-
85 pym/portage/package/ebuild/profile_iuse.py | 32 +
86 pym/portage/process.py | 10 +
87 pym/portage/sync/modules/rsync/rsync.py | 42 +-
88 pym/portage/tests/__init__.py | 20 +-
89 pym/portage/tests/dbapi/test_portdb_cache.py | 3 +-
90 pym/portage/tests/ebuild/test_ipc_daemon.py | 6 +-
91 pym/portage/tests/emerge/test_simple.py | 51 +-
92 pym/portage/tests/locks/test_asynchronous_lock.py | 22 +-
93 pym/portage/tests/resolver/ResolverPlayground.py | 10 +
94 pym/portage/tests/resolver/test_autounmask.py | 48 +-
95 pym/portage/tests/resolver/test_eapi.py | 2 +-
96 pym/portage/tests/resolver/test_required_use.py | 6 +-
97 pym/portage/tests/resolver/test_slot_collisions.py | 20 +-
98 .../tests/resolver/test_slot_operator_rebuild.py | 45 +-
99 pym/portage/tests/runTests.py | 6 +-
100 .../util/futures/asyncio}/__init__.py | 0
101 .../{bin => util/futures/asyncio}/__test__.py | 0
102 .../util/futures/asyncio/test_child_watcher.py | 50 ++
103 .../futures/asyncio/test_event_loop_in_fork.py | 65 ++
104 .../tests/util/futures/asyncio/test_pipe_closed.py | 151 +++++
105 .../asyncio/test_policy_wrapper_recursion.py | 29 +
106 .../futures/asyncio/test_run_until_complete.py | 34 +
107 .../util/futures/asyncio/test_subprocess_exec.py | 236 +++++++
108 .../tests/util/futures/test_iter_completed.py | 40 +-
109 pym/portage/tests/util/futures/test_retry.py | 177 ++++--
110 pym/portage/util/SlotObject.py | 9 +-
111 pym/portage/util/_async/AsyncFunction.py | 7 +-
112 pym/portage/util/_async/AsyncScheduler.py | 49 +-
113 pym/portage/util/_async/AsyncTaskFuture.py | 4 +-
114 pym/portage/util/_async/FileDigester.py | 7 +-
115 pym/portage/util/_async/ForkProcess.py | 10 +
116 pym/portage/util/_async/PipeLogger.py | 32 +-
117 pym/portage/util/_async/PipeReaderBlockingIO.py | 16 +-
118 pym/portage/util/_async/PopenProcess.py | 17 +-
119 pym/portage/util/_async/SchedulerInterface.py | 34 +-
120 pym/portage/util/_eventloop/EventLoop.py | 374 +++++++++--
121 pym/portage/util/_eventloop/GlibEventLoop.py | 23 -
122 pym/portage/util/_eventloop/asyncio_event_loop.py | 85 +++
123 pym/portage/util/_eventloop/global_event_loop.py | 11 +-
124 pym/portage/util/elf/constants.py | 4 +-
125 pym/portage/util/futures/__init__.py | 8 +
126 pym/portage/util/futures/_asyncio/__init__.py | 185 ++++++
127 .../util/futures/{wait.py => _asyncio/tasks.py} | 19 +-
128 pym/portage/util/futures/events.py | 191 ++++++
129 pym/portage/util/futures/executor/fork.py | 6 +-
130 pym/portage/util/futures/futures.py | 9 +-
131 pym/portage/util/futures/iter_completed.py | 138 +++-
132 pym/portage/util/futures/retry.py | 13 +-
133 pym/portage/util/futures/transports.py | 90 +++
134 pym/portage/util/futures/unix_events.py | 705 +++++++++++++++++++++
135 pym/portage/versions.py | 6 +-
136 repoman/bin/repoman | 3 +
137 repoman/cnf/qa_data/qa_data.yaml | 2 +-
138 repoman/man/repoman.1 | 2 +-
139 .../modules/linechecks/assignment/assignment.py | 9 +-
140 .../modules/linechecks/deprecated/inherit.py | 3 +
141 .../repoman/modules/linechecks/quotes/quotes.py | 3 +-
142 repoman/pym/repoman/modules/scan/fetch/fetches.py | 2 +-
143 repoman/pym/repoman/modules/scan/module.py | 2 +-
144 repoman/pym/repoman/tests/__init__.py | 3 +
145 repoman/pym/repoman/tests/runTests.py | 6 +-
146 repoman/setup.py | 3 +-
147 setup.py | 5 +-
148 138 files changed, 4789 insertions(+), 1438 deletions(-)
149
150 diff --cc pym/_emerge/Package.py
151 index 5d86c9635,a7ce00bc9..2be526471
152 --- a/pym/_emerge/Package.py
153 +++ b/pym/_emerge/Package.py
154 @@@ -82,24 -93,10 +93,16 @@@ class Package(Task)
155 # sync metadata with validated repo (may be UNKNOWN_REPO)
156 self._metadata['repository'] = self.cpv.repo
157
158 - if eapi_attrs.iuse_effective:
159 - implicit_match = self.root_config.settings._iuse_effective_match
160 - if self.built:
161 - implicit_match = functools.partial(
162 - self._built_iuse_effective_match,
163 - implicit_match, frozenset(self._metadata['USE'].split()))
164 - else:
165 - implicit_match = self.root_config.settings._iuse_implicit_match
166 - iuse = self._metadata["IUSE"]
167 + implicit_match = db._iuse_implicit_cnstr(self.cpv, self._metadata)
168 + if 'force-multilib' in self.root_config.settings.features:
169 + if self.built is False:
170 + for multilib_abis in self.root_config.settings.get("MULTILIB_ABIS", '').split():
171 + iuse += " multilib_abi_" + multilib_abis
172 + iuse += " abiwrapper"
173 + self._metadata["IUSE"] = iuse
174 usealiases = self.root_config.settings._use_manager.getUseAliases(self)
175 - self.iuse = self._iuse(self, iuse.split(), implicit_match,
176 - usealiases, self.eapi)
177 + self.iuse = self._iuse(self, self._metadata["IUSE"].split(),
178 + implicit_match, usealiases, self.eapi)
179
180 if (self.iuse.enabled or self.iuse.disabled) and \
181 not eapi_attrs.iuse_defaults:
182 diff --cc pym/_emerge/actions.py
183 index 966b4421b,70fb8d3b4..f53c33b46
184 --- a/pym/_emerge/actions.py
185 +++ b/pym/_emerge/actions.py
186 @@@ -2868,16 -2882,29 +2882,36 @@@ def run_action(emerge_config)
187 "--usepkg", "--usepkgonly"):
188 emerge_config.opts.pop(opt, None)
189
190 + # Populate the bintree with current --getbinpkg setting.
191 + # This needs to happen before:
192 + # * expand_set_arguments, in case any sets use the bintree
193 + # * adjust_configs and profile_check, in order to propagate settings
194 + # implicit IUSE and USE_EXPAND settings from the binhost(s)
195 + if (emerge_config.action in ('search', None) and
196 + '--usepkg' in emerge_config.opts):
197 + for mytrees in emerge_config.trees.values():
198 + try:
199 + mytrees['bintree'].populate(
200 + getbinpkgs='--getbinpkg' in emerge_config.opts)
201 + except ParseError as e:
202 + writemsg('\n\n!!!%s.\nSee make.conf(5) for more info.\n'
203 + % (e,), noiselevel=-1)
204 + return 1
205 +
206 adjust_configs(emerge_config.opts, emerge_config.trees)
207 +
208 + if profile_check(emerge_config.trees, emerge_config.action) != os.EX_OK:
209 + return 1
210 +
211 apply_priorities(emerge_config.target_config.settings)
212
213 + if 'force-multilib' in emerge_config.target_config.settings.features:
214 + if emerge_config.target_config.settings.get("NO_AUTO_FLAG", "") is "":
215 + writemsg_level(bad("!!! Failed to find vars from extra profile") + "\n",level=logging.ERROR, noiselevel=-1)
216 + writemsg_level(bad("!!! Please make sure that you did follow the instructions and included the extra profile\n"),level=logging.ERROR, noiselevel=-1)
217 + 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)
218 + writemsg_level(bad("!!! has some basic instructions for the setup\n"),level=logging.ERROR, noiselevel=-1)
219 + return 1
220 if ("--autounmask-continue" in emerge_config.opts and
221 emerge_config.opts.get("--autounmask") == "n"):
222 writemsg_level(