Gentoo Archives: gentoo-portage-dev

From: Matt Turner <mattst88@g.o>
To: gentoo-portage-dev@l.g.o
Cc: Matt Turner <mattst88@g.o>
Subject: [gentoo-portage-dev] [PATCH 2/2] Eliminate now-dead code from EAPIs 4-python and 5-progress
Date: Mon, 21 Feb 2022 22:27:15
Message-Id: 20220221222701.2511747-2-mattst88@gentoo.org
In Reply to: [gentoo-portage-dev] [PATCH 1/2] Remove support for EAPIs "4-python" and "5-progress" by Matt Turner
1 Signed-off-by: Matt Turner <mattst88@g.o>
2 ---
3 bin/eapi.sh | 32 ----
4 bin/ebuild.sh | 9 -
5 bin/phase-helpers.sh | 166 ------------------
6 bin/portageq | 5 +-
7 bin/save-ebuild-env.sh | 7 -
8 lib/_emerge/EbuildMetadataPhase.py | 17 --
9 lib/_emerge/Package.py | 15 +-
10 lib/portage/dep/__init__.py | 138 +++------------
11 lib/portage/eapi.py | 29 +--
12 .../package/ebuild/_config/UseManager.py | 3 +-
13 .../ebuild/_config/unpack_dependencies.py | 55 ------
14 .../package/ebuild/_ipc/QueryCommand.py | 6 +-
15 lib/portage/package/ebuild/config.py | 8 -
16 lib/portage/package/ebuild/doebuild.py | 9 -
17 lib/portage/repository/config.py | 4 -
18 .../tests/resolver/ResolverPlayground.py | 1 -
19 lib/portage/versions.py | 66 ++-----
20 17 files changed, 50 insertions(+), 520 deletions(-)
21 delete mode 100644 lib/portage/package/ebuild/_config/unpack_dependencies.py
22
23 diff --git a/bin/eapi.sh b/bin/eapi.sh
24 index b6d2e07f1..a39513b1c 100644
25 --- a/bin/eapi.sh
26 +++ b/bin/eapi.sh
27 @@ -144,34 +144,6 @@ ___eapi_has_useq() {
28 [[ ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-slot-abi|5|6|7)$ ]]
29 }
30
31 -___eapi_has_master_repositories() {
32 - [[ ${1-${EAPI-0}} =~ ^$ ]]
33 -}
34 -
35 -___eapi_has_repository_path() {
36 - [[ ${1-${EAPI-0}} =~ ^$ ]]
37 -}
38 -
39 -___eapi_has_available_eclasses() {
40 - [[ ${1-${EAPI-0}} =~ ^$ ]]
41 -}
42 -
43 -___eapi_has_eclass_path() {
44 - [[ ${1-${EAPI-0}} =~ ^$ ]]
45 -}
46 -
47 -___eapi_has_license_path() {
48 - [[ ${1-${EAPI-0}} =~ ^$ ]]
49 -}
50 -
51 -___eapi_has_package_manager_build_user() {
52 - [[ ${1-${EAPI-0}} =~ ^$ ]]
53 -}
54 -
55 -___eapi_has_package_manager_build_group() {
56 - [[ ${1-${EAPI-0}} =~ ^$ ]]
57 -}
58 -
59 # HELPERS BEHAVIOR
60
61 ___eapi_best_version_and_has_version_support_--host-root() {
62 @@ -296,10 +268,6 @@ ___eapi_enables_failglob_in_global_scope() {
63 [[ ! ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-slot-abi|5)$ ]]
64 }
65
66 -___eapi_enables_globstar() {
67 - [[ ${1-${EAPI-0}} =~ ^$ ]]
68 -}
69 -
70 ___eapi_bash_3_2() {
71 [[ ${1-${EAPI-0}} =~ ^(0|1|2|3|4|4-slot-abi|5)$ ]]
72 }
73 diff --git a/bin/ebuild.sh b/bin/ebuild.sh
74 index 5b0b79585..628d7eb80 100755
75 --- a/bin/ebuild.sh
76 +++ b/bin/ebuild.sh
77 @@ -73,11 +73,6 @@ else
78 # These functions die because calls to them during the "depend" phase
79 # are considered to be severe QA violations.
80 funcs+=" best_version has_version portageq"
81 - ___eapi_has_master_repositories && funcs+=" master_repositories"
82 - ___eapi_has_repository_path && funcs+=" repository_path"
83 - ___eapi_has_available_eclasses && funcs+=" available_eclasses"
84 - ___eapi_has_eclass_path && funcs+=" eclass_path"
85 - ___eapi_has_license_path && funcs+=" license_path"
86 for x in ${funcs} ; do
87 eval "${x}() { die \"\${FUNCNAME}() calls are not allowed in global scope\"; }"
88 done
89 @@ -573,10 +568,6 @@ if ! has "$EBUILD_PHASE" clean cleanrm depend && \
90 [[ -n $EAPI ]] || EAPI=0
91 fi
92
93 -if ___eapi_enables_globstar; then
94 - shopt -s globstar
95 -fi
96 -
97 # Convert quoted paths to array.
98 eval "PORTAGE_ECLASS_LOCATIONS=(${PORTAGE_ECLASS_LOCATIONS})"
99
100 diff --git a/bin/phase-helpers.sh b/bin/phase-helpers.sh
101 index a6aaa7926..0a3bc5cb7 100644
102 --- a/bin/phase-helpers.sh
103 +++ b/bin/phase-helpers.sh
104 @@ -1210,169 +1210,3 @@ if ___eapi_has_in_iuse; then
105 has "${use}" "${liuse[@]#[+-]}"
106 }
107 fi
108 -
109 -if ___eapi_has_master_repositories; then
110 - master_repositories() {
111 - local output repository=$1 retval
112 - shift
113 - [[ $# -gt 0 ]] && die "${FUNCNAME[0]}: unused argument(s): $*"
114 -
115 - if [[ -n ${PORTAGE_IPC_DAEMON} ]]; then
116 - "${PORTAGE_BIN_PATH}/ebuild-ipc" master_repositories "${EROOT}" "${repository}"
117 - else
118 - output=$("${PORTAGE_BIN_PATH}/ebuild-helpers/portageq" master_repositories "${EROOT}" "${repository}")
119 - fi
120 - retval=$?
121 - [[ -n ${output} ]] && echo "${output}"
122 - case "${retval}" in
123 - 0|1)
124 - return ${retval}
125 - ;;
126 - 2)
127 - die "${FUNCNAME[0]}: invalid repository: ${repository}"
128 - ;;
129 - *)
130 - if [[ -n ${PORTAGE_IPC_DAEMON} ]]; then
131 - die "${FUNCNAME[0]}: unexpected ebuild-ipc exit code: ${retval}"
132 - else
133 - die "${FUNCNAME[0]}: unexpected portageq exit code: ${retval}"
134 - fi
135 - ;;
136 - esac
137 - }
138 -fi
139 -
140 -if ___eapi_has_repository_path; then
141 - repository_path() {
142 - local output repository=$1 retval
143 - shift
144 - [[ $# -gt 0 ]] && die "${FUNCNAME[0]}: unused argument(s): $*"
145 -
146 - if [[ -n ${PORTAGE_IPC_DAEMON} ]]; then
147 - "${PORTAGE_BIN_PATH}/ebuild-ipc" repository_path "${EROOT}" "${repository}"
148 - else
149 - output=$("${PORTAGE_BIN_PATH}/ebuild-helpers/portageq" get_repo_path "${EROOT}" "${repository}")
150 - fi
151 - retval=$?
152 - [[ -n ${output} ]] && echo "${output}"
153 - case "${retval}" in
154 - 0|1)
155 - return ${retval}
156 - ;;
157 - 2)
158 - die "${FUNCNAME[0]}: invalid repository: ${repository}"
159 - ;;
160 - *)
161 - if [[ -n ${PORTAGE_IPC_DAEMON} ]]; then
162 - die "${FUNCNAME[0]}: unexpected ebuild-ipc exit code: ${retval}"
163 - else
164 - die "${FUNCNAME[0]}: unexpected portageq exit code: ${retval}"
165 - fi
166 - ;;
167 - esac
168 - }
169 -fi
170 -
171 -if ___eapi_has_available_eclasses; then
172 - available_eclasses() {
173 - local output repository=${PORTAGE_REPO_NAME} retval
174 - [[ $# -gt 0 ]] && die "${FUNCNAME[0]}: unused argument(s): $*"
175 -
176 - if [[ -n ${PORTAGE_IPC_DAEMON} ]]; then
177 - "${PORTAGE_BIN_PATH}/ebuild-ipc" available_eclasses "${EROOT}" "${repository}"
178 - else
179 - output=$("${PORTAGE_BIN_PATH}/ebuild-helpers/portageq" available_eclasses "${EROOT}" "${repository}")
180 - fi
181 - retval=$?
182 - [[ -n ${output} ]] && echo "${output}"
183 - case "${retval}" in
184 - 0|1)
185 - return ${retval}
186 - ;;
187 - 2)
188 - die "${FUNCNAME[0]}: invalid repository: ${repository}"
189 - ;;
190 - *)
191 - if [[ -n ${PORTAGE_IPC_DAEMON} ]]; then
192 - die "${FUNCNAME[0]}: unexpected ebuild-ipc exit code: ${retval}"
193 - else
194 - die "${FUNCNAME[0]}: unexpected portageq exit code: ${retval}"
195 - fi
196 - ;;
197 - esac
198 - }
199 -fi
200 -
201 -if ___eapi_has_eclass_path; then
202 - eclass_path() {
203 - local eclass=$1 output repository=${PORTAGE_REPO_NAME} retval
204 - shift
205 - [[ $# -gt 0 ]] && die "${FUNCNAME[0]}: unused argument(s): $*"
206 -
207 - if [[ -n ${PORTAGE_IPC_DAEMON} ]]; then
208 - "${PORTAGE_BIN_PATH}/ebuild-ipc" eclass_path "${EROOT}" "${repository}" "${eclass}"
209 - else
210 - output=$("${PORTAGE_BIN_PATH}/ebuild-helpers/portageq" eclass_path "${EROOT}" "${repository}" "${eclass}")
211 - fi
212 - retval=$?
213 - [[ -n ${output} ]] && echo "${output}"
214 - case "${retval}" in
215 - 0|1)
216 - return ${retval}
217 - ;;
218 - 2)
219 - die "${FUNCNAME[0]}: invalid repository: ${repository}"
220 - ;;
221 - *)
222 - if [[ -n ${PORTAGE_IPC_DAEMON} ]]; then
223 - die "${FUNCNAME[0]}: unexpected ebuild-ipc exit code: ${retval}"
224 - else
225 - die "${FUNCNAME[0]}: unexpected portageq exit code: ${retval}"
226 - fi
227 - ;;
228 - esac
229 - }
230 -fi
231 -
232 -if ___eapi_has_license_path; then
233 - license_path() {
234 - local license=$1 output repository=${PORTAGE_REPO_NAME} retval
235 - shift
236 - [[ $# -gt 0 ]] && die "${FUNCNAME[0]}: unused argument(s): $*"
237 -
238 - if [[ -n ${PORTAGE_IPC_DAEMON} ]]; then
239 - "${PORTAGE_BIN_PATH}/ebuild-ipc" license_path "${EROOT}" "${repository}" "${license}"
240 - else
241 - output=$("${PORTAGE_BIN_PATH}/ebuild-helpers/portageq" license_path "${EROOT}" "${repository}" "${license}")
242 - fi
243 - retval=$?
244 - [[ -n ${output} ]] && echo "${output}"
245 - case "${retval}" in
246 - 0|1)
247 - return ${retval}
248 - ;;
249 - 2)
250 - die "${FUNCNAME[0]}: invalid repository: ${repository}"
251 - ;;
252 - *)
253 - if [[ -n ${PORTAGE_IPC_DAEMON} ]]; then
254 - die "${FUNCNAME[0]}: unexpected ebuild-ipc exit code: ${retval}"
255 - else
256 - die "${FUNCNAME[0]}: unexpected portageq exit code: ${retval}"
257 - fi
258 - ;;
259 - esac
260 - }
261 -fi
262 -
263 -if ___eapi_has_package_manager_build_user; then
264 - package_manager_build_user() {
265 - echo "${PORTAGE_BUILD_USER}"
266 - }
267 -fi
268 -
269 -if ___eapi_has_package_manager_build_group; then
270 - package_manager_build_group() {
271 - echo "${PORTAGE_BUILD_GROUP}"
272 - }
273 -fi
274 diff --git a/bin/portageq b/bin/portageq
275 index 8338d4e14..eaf56755b 100755
276 --- a/bin/portageq
277 +++ b/bin/portageq
278 @@ -55,7 +55,6 @@ import portage
279
280 portage._internal_caller = True
281 from portage import os
282 -from portage.eapi import eapi_has_repo_deps
283 from portage.util import writemsg, writemsg_stdout
284
285 portage.proxy.lazyimport.lazyimport(
286 @@ -125,7 +124,7 @@ def has_version(argv):
287
288 warnings = []
289
290 - allow_repo = atom_validate_strict is False or eapi_has_repo_deps(eapi)
291 + allow_repo = atom_validate_strict is False
292 try:
293 atom = portage.dep.Atom(argv[1], allow_repo=allow_repo)
294 except portage.exception.InvalidAtom:
295 @@ -174,7 +173,7 @@ def best_version(argv):
296
297 warnings = []
298
299 - allow_repo = atom_validate_strict is False or eapi_has_repo_deps(eapi)
300 + allow_repo = atom_validate_strict is False
301 try:
302 atom = portage.dep.Atom(argv[1], allow_repo=allow_repo)
303 except portage.exception.InvalidAtom:
304 diff --git a/bin/save-ebuild-env.sh b/bin/save-ebuild-env.sh
305 index 98808814b..17e4b1b3e 100644
306 --- a/bin/save-ebuild-env.sh
307 +++ b/bin/save-ebuild-env.sh
308 @@ -81,13 +81,6 @@ __save_ebuild_env() {
309 ${QA_INTERCEPTORS}
310
311 ___eapi_has_usex && unset -f usex
312 - ___eapi_has_master_repositories && unset -f master_repositories
313 - ___eapi_has_repository_path && unset -f repository_path
314 - ___eapi_has_available_eclasses && unset -f available_eclasses
315 - ___eapi_has_eclass_path && unset -f eclass_path
316 - ___eapi_has_license_path && unset -f license_path
317 - ___eapi_has_package_manager_build_user && unset -f package_manager_build_user
318 - ___eapi_has_package_manager_build_group && unset -f package_manager_build_group
319
320 # Clear out the triple underscore namespace as it is reserved by the PM.
321 unset -f $(compgen -A function ___)
322 diff --git a/lib/_emerge/EbuildMetadataPhase.py b/lib/_emerge/EbuildMetadataPhase.py
323 index e85b3f707..4b6add973 100644
324 --- a/lib/_emerge/EbuildMetadataPhase.py
325 +++ b/lib/_emerge/EbuildMetadataPhase.py
326 @@ -14,8 +14,6 @@ from portage import os
327 from portage import _encodings
328 from portage import _unicode_decode
329 from portage import _unicode_encode
330 -from portage.dep import extract_unpack_dependencies
331 -from portage.eapi import eapi_has_automatic_unpack_dependencies
332
333 import fcntl
334 import io
335 @@ -216,21 +214,6 @@ class EbuildMetadataPhase(SubProcess):
336 metadata["_eclasses_"] = {}
337 metadata.pop("INHERITED", None)
338
339 - if eapi_has_automatic_unpack_dependencies(metadata["EAPI"]):
340 - repo = self.portdb.repositories.get_name_for_location(
341 - self.repo_path
342 - )
343 - unpackers = self.settings.unpack_dependencies.get(repo, {}).get(
344 - metadata["EAPI"], {}
345 - )
346 - unpack_dependencies = extract_unpack_dependencies(
347 - metadata["SRC_URI"], unpackers
348 - )
349 - if unpack_dependencies:
350 - metadata["DEPEND"] += (
351 - " " if metadata["DEPEND"] else ""
352 - ) + unpack_dependencies
353 -
354 # If called by egencache, this cache write is
355 # undesirable when metadata-transfer is disabled.
356 if self.write_auxdb is not False:
357 diff --git a/lib/_emerge/Package.py b/lib/_emerge/Package.py
358 index cc2cb07e1..7c4997aab 100644
359 --- a/lib/_emerge/Package.py
360 +++ b/lib/_emerge/Package.py
361 @@ -17,7 +17,7 @@ from portage.dep import (
362 )
363 from portage.dep.soname.parse import parse_soname_deps
364 from portage.versions import _pkg_str, _unknown_repo
365 -from portage.eapi import _get_eapi_attrs, eapi_has_use_aliases
366 +from portage.eapi import _get_eapi_attrs
367 from portage.exception import InvalidData, InvalidDependString
368 from portage.localization import _
369 from _emerge.Task import Task
370 @@ -628,9 +628,6 @@ class Package(Task):
371 self._expand_hidden = None
372 self._force = None
373 self._mask = None
374 - if eapi_has_use_aliases(pkg.eapi):
375 - for enabled_flag in enabled_flags:
376 - enabled_flags.extend(pkg.iuse.alias_mapping.get(enabled_flag, []))
377 self.enabled = frozenset(enabled_flags)
378 if pkg.built:
379 # Use IUSE to validate USE settings for built packages,
380 @@ -756,25 +753,15 @@ class Package(Task):
381 enabled_aliases = []
382 disabled_aliases = []
383 other_aliases = []
384 - aliases_supported = eapi_has_use_aliases(eapi)
385 self.alias_mapping = {}
386 for x in tokens:
387 prefix = x[:1]
388 if prefix == "+":
389 enabled.append(x[1:])
390 - if aliases_supported:
391 - self.alias_mapping[x[1:]] = aliases.get(x[1:], [])
392 - enabled_aliases.extend(self.alias_mapping[x[1:]])
393 elif prefix == "-":
394 disabled.append(x[1:])
395 - if aliases_supported:
396 - self.alias_mapping[x[1:]] = aliases.get(x[1:], [])
397 - disabled_aliases.extend(self.alias_mapping[x[1:]])
398 else:
399 other.append(x)
400 - if aliases_supported:
401 - self.alias_mapping[x] = aliases.get(x, [])
402 - other_aliases.extend(self.alias_mapping[x])
403 self.enabled = frozenset(chain(enabled, enabled_aliases))
404 self.disabled = frozenset(chain(disabled, disabled_aliases))
405 self.all = frozenset(chain(enabled, disabled, other))
406 diff --git a/lib/portage/dep/__init__.py b/lib/portage/dep/__init__.py
407 index 3b3577025..1ca0c3b8b 100644
408 --- a/lib/portage/dep/__init__.py
409 +++ b/lib/portage/dep/__init__.py
410 @@ -106,23 +106,18 @@ def _match_slot(atom, pkg):
411 return False
412
413
414 -_atom_re_cache = {}
415 +_atom_re = None
416
417
418 def _get_atom_re(eapi_attrs):
419 - cache_key = eapi_attrs.dots_in_PN
420 - atom_re = _atom_re_cache.get(cache_key)
421 - if atom_re is not None:
422 - return atom_re
423 -
424 - if eapi_attrs.dots_in_PN:
425 - cp_re = _cp["dots_allowed_in_PN"]
426 - cpv_re = _cpv["dots_allowed_in_PN"]
427 - else:
428 - cp_re = _cp["dots_disallowed_in_PN"]
429 - cpv_re = _cpv["dots_disallowed_in_PN"]
430 + global _atom_re
431 + if _atom_re is not None:
432 + return _atom_re
433 +
434 + cp_re = _cp
435 + cpv_re = _cpv
436
437 - atom_re = re.compile(
438 + _atom_re = re.compile(
439 "^(?P<without_use>(?:"
440 + "(?P<op>"
441 + _op
442 @@ -144,26 +139,20 @@ def _get_atom_re(eapi_attrs):
443 + ")?$",
444 re.VERBOSE | re.UNICODE,
445 )
446 + return _atom_re
447
448 - _atom_re_cache[cache_key] = atom_re
449 - return atom_re
450
451 -
452 -_atom_wildcard_re_cache = {}
453 +_atom_wildcard_re = None
454
455
456 def _get_atom_wildcard_re(eapi_attrs):
457 - cache_key = eapi_attrs.dots_in_PN
458 - atom_re = _atom_wildcard_re_cache.get(cache_key)
459 - if atom_re is not None:
460 - return atom_re
461 + global _atom_wildcard_re
462 + if _atom_wildcard_re is not None:
463 + return _atom_wildcard_re
464
465 - if eapi_attrs.dots_in_PN:
466 - pkg_re = r"[\w+*][\w+.*-]*?"
467 - else:
468 - pkg_re = r"[\w+*][\w+*-]*?"
469 + pkg_re = r"[\w+*][\w+*-]*?"
470
471 - atom_re = re.compile(
472 + _atom_wildcard_re = re.compile(
473 r"((?P<simple>("
474 + _extended_cat
475 + r")/("
476 @@ -185,12 +174,10 @@ def _get_atom_wildcard_re(eapi_attrs):
477 + r"))?$",
478 re.UNICODE,
479 )
480 + return _atom_wildcard_re
481
482 - _atom_wildcard_re_cache[cache_key] = atom_re
483 - return atom_re
484
485 -
486 -_usedep_re_cache = {}
487 +_usedep_re = None
488
489
490 def _get_usedep_re(eapi_attrs):
491 @@ -201,27 +188,19 @@ def _get_usedep_re(eapi_attrs):
492 @return: A regular expression object that matches valid USE deps for the
493 given eapi.
494 """
495 - cache_key = eapi_attrs.dots_in_use_flags
496 - usedep_re = _usedep_re_cache.get(cache_key)
497 - if usedep_re is not None:
498 - return usedep_re
499 -
500 - if eapi_attrs.dots_in_use_flags:
501 - _flag_re = r"[A-Za-z0-9][A-Za-z0-9+_@.-]*"
502 - else:
503 - _flag_re = r"[A-Za-z0-9][A-Za-z0-9+_@-]*"
504 + global _usedep_re
505 + if _usedep_re is not None:
506 + return _usedep_re
507
508 - usedep_re = re.compile(
509 + _usedep_re = re.compile(
510 r"^(?P<prefix>[!-]?)(?P<flag>"
511 - + _flag_re
512 + + r"[A-Za-z0-9][A-Za-z0-9+_@-]*"
513 + r")(?P<default>(\(\+\)|\(\-\))?)(?P<suffix>[?=]?)$"
514 )
515 + return _usedep_re
516
517 - _usedep_re_cache[cache_key] = usedep_re
518 - return usedep_re
519
520 -
521 -_useflag_re_cache = {}
522 +_useflag_re = None
523
524
525 def _get_useflag_re(eapi):
526 @@ -234,21 +213,12 @@ def _get_useflag_re(eapi):
527 @return: A regular expression object that matches valid USE flags for the
528 given eapi.
529 """
530 - eapi_attrs = _get_eapi_attrs(eapi)
531 - cache_key = eapi_attrs.dots_in_use_flags
532 - useflag_re = _useflag_re_cache.get(cache_key)
533 - if useflag_re is not None:
534 - return useflag_re
535 -
536 - if eapi_attrs.dots_in_use_flags:
537 - flag_re = r"[A-Za-z0-9][A-Za-z0-9+_@.-]*"
538 - else:
539 - flag_re = r"[A-Za-z0-9][A-Za-z0-9+_@-]*"
540 -
541 - useflag_re = re.compile(r"^" + flag_re + r"$")
542 + global _useflag_re
543 + if _useflag_re is not None:
544 + return _useflag_re
545
546 - _useflag_re_cache[cache_key] = useflag_re
547 - return useflag_re
548 + _useflag_re = re.compile(r"^[A-Za-z0-9][A-Za-z0-9+_@-]*$")
549 + return _useflag_re
550
551
552 def cpvequal(cpv1, cpv2):
553 @@ -3239,53 +3209,3 @@ def extract_affecting_use(mystr, atom, eapi=None):
554 raise InvalidDependString(_("malformed syntax: '%s'") % mystr)
555
556 return affecting_use
557 -
558 -
559 -def extract_unpack_dependencies(src_uri, unpackers):
560 - """
561 - Return unpack dependencies string for given SRC_URI string.
562 -
563 - @param src_uri: SRC_URI string
564 - @type src_uri: String
565 - @param unpackers: Dictionary mapping archive suffixes to dependency strings
566 - @type unpackers: Dictionary
567 - @rtype: String
568 - @return: Dependency string specifying packages required to unpack archives.
569 - """
570 - src_uri = src_uri.split()
571 -
572 - depend = []
573 - for i in range(len(src_uri)):
574 - if src_uri[i][-1] == "?" or src_uri[i] in ("(", ")"):
575 - depend.append(src_uri[i])
576 - elif (i + 1 < len(src_uri) and src_uri[i + 1] == "->") or src_uri[i] == "->":
577 - continue
578 - else:
579 - for suffix in sorted(unpackers, key=lambda x: len(x), reverse=True):
580 - suffix = suffix.lower()
581 - if src_uri[i].lower().endswith(suffix):
582 - depend.append(unpackers[suffix])
583 - break
584 -
585 - while True:
586 - cleaned_depend = depend[:]
587 - for i in range(len(cleaned_depend)):
588 - if cleaned_depend[i] is None:
589 - continue
590 - elif cleaned_depend[i] == "(" and cleaned_depend[i + 1] == ")":
591 - cleaned_depend[i] = None
592 - cleaned_depend[i + 1] = None
593 - elif (
594 - cleaned_depend[i][-1] == "?"
595 - and cleaned_depend[i + 1] == "("
596 - and cleaned_depend[i + 2] == ")"
597 - ):
598 - cleaned_depend[i] = None
599 - cleaned_depend[i + 1] = None
600 - cleaned_depend[i + 2] = None
601 - if depend == cleaned_depend:
602 - break
603 - else:
604 - depend = [x for x in cleaned_depend if x is not None]
605 -
606 - return " ".join(depend)
607 diff --git a/lib/portage/eapi.py b/lib/portage/eapi.py
608 index 56d87b7ce..c23d03c9a 100644
609 --- a/lib/portage/eapi.py
610 +++ b/lib/portage/eapi.py
611 @@ -104,10 +104,6 @@ def eapi_exports_ECLASSDIR(eapi):
612 )
613
614
615 -def eapi_exports_REPOSITORY(eapi):
616 - return False
617 -
618 -
619 def eapi_has_pkg_pretend(eapi):
620 return eapi not in ("0", "1", "2", "3")
621
622 @@ -144,18 +140,6 @@ def eapi_requires_posixish_locale(eapi):
623 )
624
625
626 -def eapi_has_repo_deps(eapi):
627 - return False
628 -
629 -
630 -def eapi_allows_dots_in_PN(eapi):
631 - return False
632 -
633 -
634 -def eapi_allows_dots_in_use_flags(eapi):
635 - return False
636 -
637 -
638 def eapi_supports_stable_use_forcing_and_masking(eapi):
639 return eapi not in ("0", "1", "2", "3", "4", "4-slot-abi")
640
641 @@ -164,14 +148,6 @@ def eapi_allows_directories_on_profile_level_and_repository_level(eapi):
642 return eapi not in ("0", "1", "2", "3", "4", "4-slot-abi", "5", "6")
643
644
645 -def eapi_has_use_aliases(eapi):
646 - return False
647 -
648 -
649 -def eapi_has_automatic_unpack_dependencies(eapi):
650 - return False
651 -
652 -
653 def eapi_allows_package_provided(eapi):
654 return eapi in (
655 "0",
656 @@ -269,7 +245,6 @@ _eapi_attrs = collections.namedtuple(
657 "allows_package_provided "
658 "bdepend "
659 "broot "
660 - "dots_in_PN dots_in_use_flags "
661 "exports_AA "
662 "exports_EBUILD_PHASE_FUNC "
663 "exports_ECLASSDIR "
664 @@ -356,8 +331,6 @@ def _get_eapi_attrs(eapi):
665 ),
666 bdepend=(eapi is not None and eapi_has_bdepend.func(eapi)),
667 broot=(eapi is None or eapi_has_broot.func(eapi)),
668 - dots_in_PN=(eapi is None or eapi_allows_dots_in_PN.func(eapi)),
669 - dots_in_use_flags=(eapi is None or eapi_allows_dots_in_use_flags.func(eapi)),
670 empty_groups_always_true=(
671 eapi is not None and eapi_empty_groups_always_true.func(eapi)
672 ),
673 @@ -379,7 +352,7 @@ def _get_eapi_attrs(eapi):
674 ),
675 posixish_locale=(eapi is not None and eapi_requires_posixish_locale.func(eapi)),
676 prefix=(eapi is None or eapi_supports_prefix.func(eapi)),
677 - repo_deps=(eapi is None or eapi_has_repo_deps.func(eapi)),
678 + repo_deps=(eapi is None),
679 required_use=(eapi is None or eapi_has_required_use.func(eapi)),
680 required_use_at_most_one_of=(
681 eapi is None or eapi_has_required_use_at_most_one_of.func(eapi)
682 diff --git a/lib/portage/package/ebuild/_config/UseManager.py b/lib/portage/package/ebuild/_config/UseManager.py
683 index a0fb0254a..ea5ba1b42 100644
684 --- a/lib/portage/package/ebuild/_config/UseManager.py
685 +++ b/lib/portage/package/ebuild/_config/UseManager.py
686 @@ -15,7 +15,6 @@ from portage.dep import (
687 _repo_separator,
688 )
689 from portage.eapi import (
690 - eapi_has_use_aliases,
691 eapi_supports_stable_use_forcing_and_masking,
692 )
693 from portage.exception import InvalidAtom
694 @@ -651,7 +650,7 @@ class UseManager:
695 return frozenset(stack_lists(useforce, incremental=True))
696
697 def getUseAliases(self, pkg):
698 - if hasattr(pkg, "eapi") and not eapi_has_use_aliases(pkg.eapi):
699 + if hasattr(pkg, "eapi"):
700 return {}
701
702 cp = getattr(pkg, "cp", None)
703 diff --git a/lib/portage/package/ebuild/_config/unpack_dependencies.py b/lib/portage/package/ebuild/_config/unpack_dependencies.py
704 deleted file mode 100644
705 index 58b2fb16e..000000000
706 --- a/lib/portage/package/ebuild/_config/unpack_dependencies.py
707 +++ /dev/null
708 @@ -1,55 +0,0 @@
709 -# Copyright 2012 Gentoo Foundation
710 -# Distributed under the terms of the GNU General Public License v2
711 -
712 -from portage import os, _supported_eapis
713 -from portage.dep import use_reduce
714 -from portage.eapi import eapi_has_automatic_unpack_dependencies
715 -from portage.exception import InvalidDependString
716 -from portage.localization import _
717 -from portage.util import grabfile, writemsg
718 -
719 -
720 -def load_unpack_dependencies_configuration(repositories):
721 - repo_dict = {}
722 - for repo in repositories.repos_with_profiles():
723 - for eapi in _supported_eapis:
724 - if eapi_has_automatic_unpack_dependencies(eapi):
725 - file_name = os.path.join(
726 - repo.location, "profiles", "unpack_dependencies", eapi
727 - )
728 - lines = grabfile(file_name, recursive=True)
729 - for line in lines:
730 - elements = line.split()
731 - suffix = elements[0].lower()
732 - if len(elements) == 1:
733 - writemsg(
734 - _(
735 - "--- Missing unpack dependencies for '%s' suffix in '%s'\n"
736 - )
737 - % (suffix, file_name)
738 - )
739 - depend = " ".join(elements[1:])
740 - try:
741 - use_reduce(depend, eapi=eapi)
742 - except InvalidDependString as e:
743 - writemsg(
744 - _(
745 - "--- Invalid unpack dependencies for '%s' suffix in '%s': '%s'\n"
746 - % (suffix, file_name, e)
747 - )
748 - )
749 - else:
750 - repo_dict.setdefault(repo.name, {}).setdefault(eapi, {})[
751 - suffix
752 - ] = depend
753 -
754 - ret = {}
755 - for repo in repositories.repos_with_profiles():
756 - for repo_name in [x.name for x in repo.masters] + [repo.name]:
757 - for eapi in repo_dict.get(repo_name, {}):
758 - for suffix, depend in (
759 - repo_dict.get(repo_name, {}).get(eapi, {}).items()
760 - ):
761 - ret.setdefault(repo.name, {}).setdefault(eapi, {})[suffix] = depend
762 -
763 - return ret
764 diff --git a/lib/portage/package/ebuild/_ipc/QueryCommand.py b/lib/portage/package/ebuild/_ipc/QueryCommand.py
765 index f8f464516..8b8549e3a 100644
766 --- a/lib/portage/package/ebuild/_ipc/QueryCommand.py
767 +++ b/lib/portage/package/ebuild/_ipc/QueryCommand.py
768 @@ -6,7 +6,6 @@ import io
769 import portage
770 from portage import os
771 from portage.dep import Atom, _repo_name_re
772 -from portage.eapi import eapi_has_repo_deps
773 from portage.elog import messages as elog_messages
774 from portage.exception import InvalidAtom
775 from portage.package.ebuild._ipc.IpcCommand import IpcCommand
776 @@ -59,14 +58,13 @@ class QueryCommand(IpcCommand):
777 vardb = db[root]["vartree"].dbapi
778
779 if cmd in ("best_version", "has_version"):
780 - allow_repo = eapi_has_repo_deps(eapi)
781 try:
782 - atom = Atom(args[0], allow_repo=allow_repo)
783 + atom = Atom(args[0])
784 except InvalidAtom:
785 return ("", "%s: Invalid atom: %s\n" % (cmd, args[0]), 2)
786
787 try:
788 - atom = Atom(args[0], allow_repo=allow_repo, eapi=eapi)
789 + atom = Atom(args[0], eapi=eapi)
790 except InvalidAtom as e:
791 warnings.append("QA Notice: %s: %s" % (cmd, e))
792
793 diff --git a/lib/portage/package/ebuild/config.py b/lib/portage/package/ebuild/config.py
794 index 99fd2c31e..5d9d5ce48 100644
795 --- a/lib/portage/package/ebuild/config.py
796 +++ b/lib/portage/package/ebuild/config.py
797 @@ -105,9 +105,6 @@ from portage.package.ebuild._config.helper import (
798 ordered_by_atom_specificity,
799 prune_incremental,
800 )
801 -from portage.package.ebuild._config.unpack_dependencies import (
802 - load_unpack_dependencies_configuration,
803 -)
804
805
806 _feature_flags_cache = {}
807 @@ -335,7 +332,6 @@ class config:
808 self.profiles = clone.profiles
809 self.packages = clone.packages
810 self.repositories = clone.repositories
811 - self.unpack_dependencies = clone.unpack_dependencies
812 self._default_features_use = clone._default_features_use
813 self._iuse_effective = clone._iuse_effective
814 self._iuse_implicit_match = clone._iuse_implicit_match
815 @@ -730,10 +726,6 @@ class config:
816 x = Atom(x.lstrip("*"))
817 self.prevmaskdict.setdefault(x.cp, []).append(x)
818
819 - self.unpack_dependencies = load_unpack_dependencies_configuration(
820 - self.repositories
821 - )
822 -
823 mygcfg = {}
824 if profiles_complex:
825 mygcfg_dlists = []
826 diff --git a/lib/portage/package/ebuild/doebuild.py b/lib/portage/package/ebuild/doebuild.py
827 index eb719b1ea..2251cdb8d 100644
828 --- a/lib/portage/package/ebuild/doebuild.py
829 +++ b/lib/portage/package/ebuild/doebuild.py
830 @@ -81,7 +81,6 @@ from portage.eapi import (
831 eapi_exports_KV,
832 eapi_exports_merge_type,
833 eapi_exports_replace_vars,
834 - eapi_exports_REPOSITORY,
835 eapi_has_required_use,
836 eapi_has_src_prepare_and_src_configure,
837 eapi_has_pkg_pretend,
838 @@ -539,14 +538,6 @@ def doebuild_environment(
839 if not eapi_is_supported(eapi):
840 raise UnsupportedAPIException(mycpv, eapi)
841
842 - if (
843 - eapi_exports_REPOSITORY(eapi)
844 - and "PORTAGE_REPO_NAME" in mysettings.configdict["pkg"]
845 - ):
846 - mysettings.configdict["pkg"]["REPOSITORY"] = mysettings.configdict["pkg"][
847 - "PORTAGE_REPO_NAME"
848 - ]
849 -
850 if mydo != "depend":
851 if hasattr(mydbapi, "getFetchMap") and (
852 "A" not in mysettings.configdict["pkg"]
853 diff --git a/lib/portage/repository/config.py b/lib/portage/repository/config.py
854 index 0b591d94f..411ccb110 100644
855 --- a/lib/portage/repository/config.py
856 +++ b/lib/portage/repository/config.py
857 @@ -14,7 +14,6 @@ from portage.checksum import get_valid_checksum_keys
858 from portage.const import PORTAGE_BASE_PATH, REPO_NAME_LOC, USER_CONFIG_PATH
859 from portage.eapi import (
860 eapi_allows_directories_on_profile_level_and_repository_level,
861 - eapi_has_repo_deps,
862 )
863 from portage.env.loaders import KeyValuePairFileLoader
864 from portage.util import (
865 @@ -1285,9 +1284,6 @@ class RepoConfigLoader:
866 def allow_profile_repo_deps(
867 repo: typing.Union[RepoConfig, _profile_node],
868 ) -> bool:
869 - if eapi_has_repo_deps(repo.eapi):
870 - return True
871 -
872 if "profile-repo-deps" in repo.profile_formats:
873 return True
874
875 diff --git a/lib/portage/tests/resolver/ResolverPlayground.py b/lib/portage/tests/resolver/ResolverPlayground.py
876 index 6805ca601..7852d0aaf 100644
877 --- a/lib/portage/tests/resolver/ResolverPlayground.py
878 +++ b/lib/portage/tests/resolver/ResolverPlayground.py
879 @@ -69,7 +69,6 @@ class ResolverPlayground:
880 "package.use.stable.force",
881 "package.use.stable.mask",
882 "soname.provided",
883 - "unpack_dependencies",
884 "use.aliases",
885 "use.force",
886 "use.mask",
887 diff --git a/lib/portage/versions.py b/lib/portage/versions.py
888 index 086ada555..3d8694a0e 100644
889 --- a/lib/portage/versions.py
890 +++ b/lib/portage/versions.py
891 @@ -47,48 +47,17 @@ _cat = r"[\w+][\w+.-]*"
892 # 2.1.2 A package name may contain any of the characters [A-Za-z0-9+_-].
893 # It must not begin with a hyphen,
894 # and must not end in a hyphen followed by one or more digits.
895 -_pkg = {
896 - "dots_disallowed_in_PN": r"[\w+][\w+-]*?",
897 - "dots_allowed_in_PN": r"[\w+][\w+.-]*?",
898 -}
899 +_pkg = r"[\w+][\w+-]*?"
900
901 _v = r"(\d+)((\.\d+)*)([a-z]?)((_(pre|p|beta|alpha|rc)\d*)*)"
902 _rev = r"\d+"
903 _vr = _v + "(-r(" + _rev + "))?"
904
905 -_cp = {
906 - "dots_disallowed_in_PN": "("
907 - + _cat
908 - + "/"
909 - + _pkg["dots_disallowed_in_PN"]
910 - + "(-"
911 - + _vr
912 - + ")?)",
913 - "dots_allowed_in_PN": "("
914 - + _cat
915 - + "/"
916 - + _pkg["dots_allowed_in_PN"]
917 - + "(-"
918 - + _vr
919 - + ")?)",
920 -}
921 -_cpv = {
922 - "dots_disallowed_in_PN": "(" + _cp["dots_disallowed_in_PN"] + "-" + _vr + ")",
923 - "dots_allowed_in_PN": "(" + _cp["dots_allowed_in_PN"] + "-" + _vr + ")",
924 -}
925 -_pv = {
926 - "dots_disallowed_in_PN": "(?P<pn>"
927 - + _pkg["dots_disallowed_in_PN"]
928 - + "(?P<pn_inval>-"
929 - + _vr
930 - + ")?)"
931 - + "-(?P<ver>"
932 - + _v
933 - + ")(-r(?P<rev>"
934 - + _rev
935 - + "))?",
936 - "dots_allowed_in_PN": "(?P<pn>"
937 - + _pkg["dots_allowed_in_PN"]
938 +_cp = "(" + _cat + "/" + _pkg + "(-" + _vr + ")?)"
939 +_cpv = "(" + _cp + "-" + _vr + ")"
940 +_pv = (
941 + "(?P<pn>"
942 + + _pkg
943 + "(?P<pn_inval>-"
944 + _vr
945 + ")?)"
946 @@ -96,8 +65,8 @@ _pv = {
947 + _v
948 + ")(-r(?P<rev>"
949 + _rev
950 - + "))?",
951 -}
952 + + "))?"
953 +)
954
955 ver_regexp = re.compile("^" + _vr + "$")
956 suffix_regexp = re.compile("^(alpha|beta|rc|pre|p)(\\d*)$")
957 @@ -124,24 +93,17 @@ def _get_slot_re(eapi_attrs):
958 return slot_re
959
960
961 -_pv_re_cache = {}
962 +_pv_re = None
963
964
965 def _get_pv_re(eapi_attrs):
966 - cache_key = eapi_attrs.dots_in_PN
967 - pv_re = _pv_re_cache.get(cache_key)
968 - if pv_re is not None:
969 - return pv_re
970 -
971 - if eapi_attrs.dots_in_PN:
972 - pv_re = _pv["dots_allowed_in_PN"]
973 - else:
974 - pv_re = _pv["dots_disallowed_in_PN"]
975 + global _pv_re
976 + if _pv_re is not None:
977 + return _pv_re
978
979 - pv_re = re.compile(r"^" + pv_re + r"$", re.VERBOSE | re.UNICODE)
980 + _pv_re = re.compile(r"^" + _pv + r"$", re.VERBOSE | re.UNICODE)
981
982 - _pv_re_cache[cache_key] = pv_re
983 - return pv_re
984 + return _pv_re
985
986
987 def ververify(myver, silent=1):
988 --
989 2.34.1