public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/portage:master commit in: lib/portage/tests/dep/, lib/portage/repository/, lib/portage/dep/, ...
@ 2021-03-28  9:12 Zac Medico
  0 siblings, 0 replies; only message in thread
From: Zac Medico @ 2021-03-28  9:12 UTC (permalink / raw
  To: gentoo-commits

commit:     9bfff6f0788761e2debd1e158a03970d4057cfcf
Author:     Felix Bier <felix.bier <AT> rohde-schwarz <DOT> com>
AuthorDate: Wed Mar 17 22:42:27 2021 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Sun Mar 28 08:59:19 2021 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=9bfff6f0

Atom: Decouple eapi and allow_repo

This commit changes the Atom constructor such that
allow_repo is only overwritten with the eapi default
if allow_repo is None. If allow_repo is not None, its
value is preserved.

There are currently two deprecated EAPIs which allowed for repo atoms
("4-python" and "5-progress"). The current consensus seems to be that
repo atoms are not wanted in other eapis, and should instead be
implemented via a profile format extension [1]. As a prerequisite,
the allow_repo parameter has to be decoupled from the eapi parameter
as done by this commit, since otherwise if an eapi other than
"4-python" and "5-progress" is passed, this would force allow_repo to
be False. This would prevent implementing a profile format extension
that passes allow_repo=True.

A helper function allow_profile_repo_deps has been added
to initialize allow_repo based on the eapi of a repo before
calling the Atom constructor. This helper function can
be extended later to also take a profile format extension
into account.

All calls to the Atom constructor that pass both allow_repo and eapi
have been adapted to use this helper function, with the following
exceptions:

   update.py, vartree.py, bintree.py call isvalidatom to validate the
   rhs of a "move" command in profile/update [2].
   Before this commit, when using eapi "4-python" or "5-progress",
   this check permitted the rhs to be a repo atom. However, this
   use case seems to be unsupported even for those eapis: The code
   substitutes the lhs with the rhs in the target atom, so if the
   target atom contains further modifiers such as slots or use flags,
   the the substitution would place the ::repo before these modifiers,
   resulting in an invalid atom that is rejected by other parts of the
   code. For this reason, these calls have not been adapted.

[1]: https://bugs.gentoo.org/651208
[2]: https://dev.gentoo.org/~ulm/pms/head/pms.html#x1-360004.4.4

Signed-off-by: Felix Bier <felix.bier <AT> rohde-schwarz.com>
Signed-off-by: Zac Medico <zmedico <AT> gentoo.org>

 lib/portage/_sets/ProfilePackageSet.py             |  9 ++++---
 lib/portage/_sets/profiles.py                      | 10 +++++---
 lib/portage/dep/__init__.py                        |  7 +++---
 .../package/ebuild/_config/KeywordsManager.py      |  7 ++++--
 .../package/ebuild/_config/LocationsManager.py     | 11 ++------
 lib/portage/package/ebuild/_config/MaskManager.py  |  7 +++++-
 lib/portage/package/ebuild/_config/UseManager.py   | 12 ++++++---
 lib/portage/package/ebuild/config.py               | 11 +++++---
 lib/portage/repository/config.py                   | 29 ++++++++++++++++++++--
 lib/portage/tests/dep/test_isvalidatom.py          | 26 ++++++++++++++++---
 repoman/lib/repoman/repos.py                       |  8 ++++--
 11 files changed, 102 insertions(+), 35 deletions(-)

diff --git a/lib/portage/_sets/ProfilePackageSet.py b/lib/portage/_sets/ProfilePackageSet.py
index fec937391..7a304c578 100644
--- a/lib/portage/_sets/ProfilePackageSet.py
+++ b/lib/portage/_sets/ProfilePackageSet.py
@@ -1,7 +1,8 @@
-# Copyright 2014 Gentoo Foundation
+# Copyright 2014-2021 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 from portage import os
+from portage.repository.config import allow_profile_repo_deps
 from portage.util import grabfile_package, stack_lists
 from portage._sets.base import PackageSet
 
@@ -9,7 +10,9 @@ class ProfilePackageSet(PackageSet):
 	_operations = ["merge"]
 
 	def __init__(self, profiles, debug=False):
-		super(ProfilePackageSet, self).__init__()
+		super(ProfilePackageSet, self).__init__(
+			allow_repo=any(allow_profile_repo_deps(y) for y in profiles)
+		)
 		self._profiles = profiles
 		if profiles:
 			desc_profile = profiles[-1]
@@ -24,7 +27,7 @@ class ProfilePackageSet(PackageSet):
 		self._setAtoms(x for x in stack_lists(
 			[grabfile_package(os.path.join(y.location, "packages"),
 			verify_eapi=True, eapi=y.eapi, eapi_default=None,
-			allow_build_id=y.allow_build_id)
+			allow_build_id=y.allow_build_id, allow_repo=allow_profile_repo_deps(y))
 			for y in self._profiles
 			if "profile-set" in y.profile_formats],
 			incremental=1) if x[:1] != "*")

diff --git a/lib/portage/_sets/profiles.py b/lib/portage/_sets/profiles.py
index bccc02e7c..95831f705 100644
--- a/lib/portage/_sets/profiles.py
+++ b/lib/portage/_sets/profiles.py
@@ -1,9 +1,10 @@
-# Copyright 2007-2014 Gentoo Foundation
+# Copyright 2007-2021 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 import logging
 
 from portage import os
+from portage.repository.config import allow_profile_repo_deps
 from portage.util import grabfile_package, stack_lists
 from portage._sets.base import PackageSet
 from portage._sets import get_boolean
@@ -15,7 +16,9 @@ class PackagesSystemSet(PackageSet):
 	_operations = ["merge"]
 
 	def __init__(self, profiles, debug=False):
-		super(PackagesSystemSet, self).__init__()
+		super(PackagesSystemSet, self).__init__(
+			allow_repo=any(allow_profile_repo_deps(x) for x in profiles)
+		)
 		self._profiles = profiles
 		self._debug = debug
 		if profiles:
@@ -35,7 +38,8 @@ class PackagesSystemSet(PackageSet):
 
 		mylist = [grabfile_package(os.path.join(x.location, "packages"),
 			verify_eapi=True, eapi=x.eapi, eapi_default=None,
-			allow_build_id=x.allow_build_id)
+			allow_build_id=x.allow_build_id,
+			allow_repo=allow_profile_repo_deps(x))
 			for x in self._profiles]
 
 		if debug:

diff --git a/lib/portage/dep/__init__.py b/lib/portage/dep/__init__.py
index 3f0ef7ece..e32f01fc0 100644
--- a/lib/portage/dep/__init__.py
+++ b/lib/portage/dep/__init__.py
@@ -1,5 +1,5 @@
 # deps.py -- Portage dependency resolution functions
-# Copyright 2003-2020 Gentoo Authors
+# Copyright 2003-2021 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 __all__ = [
@@ -1259,8 +1259,9 @@ class Atom(str):
 
 		self.__dict__['eapi'] = eapi
 		if eapi is not None:
-			# Ignore allow_repo when eapi is specified.
-			allow_repo = eapi_attrs.repo_deps
+			# If allow_repo is not set, use default from eapi
+			if allow_repo is None:
+				allow_repo = eapi_attrs.repo_deps
 		else:
 			# These parameters have "smart" defaults that are only
 			# applied when the caller does not explicitly pass in a

diff --git a/lib/portage/package/ebuild/_config/KeywordsManager.py b/lib/portage/package/ebuild/_config/KeywordsManager.py
index bf68a88ac..8dcaee0d9 100644
--- a/lib/portage/package/ebuild/_config/KeywordsManager.py
+++ b/lib/portage/package/ebuild/_config/KeywordsManager.py
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Gentoo Authors
+# Copyright 2010-2021 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 __all__ = (
@@ -12,6 +12,7 @@ from portage import os
 from portage.dep import ExtendedAtomDict
 from portage.localization import _
 from portage.package.ebuild._config.helper import ordered_by_atom_specificity
+from portage.repository.config import allow_profile_repo_deps
 from portage.util import grabdict_package, stack_lists
 from portage.versions import _pkg_str
 
@@ -25,6 +26,7 @@ class KeywordsManager:
 			os.path.join(x.location, "package.keywords"),
 			recursive=x.portage1_directories,
 			verify_eapi=True, eapi=x.eapi, eapi_default=None,
+			allow_repo=allow_profile_repo_deps(x),
 			allow_build_id=x.allow_build_id)
 			for x in profiles]
 		for pkeyworddict in rawpkeywords:
@@ -41,7 +43,8 @@ class KeywordsManager:
 		raw_p_accept_keywords = [grabdict_package(
 			os.path.join(x.location, "package.accept_keywords"),
 			recursive=x.portage1_directories,
-			verify_eapi=True, eapi=x.eapi, eapi_default=None)
+			verify_eapi=True, eapi=x.eapi, eapi_default=None,
+			allow_repo=allow_profile_repo_deps(x))
 			for x in profiles]
 		for d in raw_p_accept_keywords:
 			if not d:

diff --git a/lib/portage/package/ebuild/_config/LocationsManager.py b/lib/portage/package/ebuild/_config/LocationsManager.py
index 327400ad6..433232a7a 100644
--- a/lib/portage/package/ebuild/_config/LocationsManager.py
+++ b/lib/portage/package/ebuild/_config/LocationsManager.py
@@ -1,11 +1,10 @@
-# Copyright 2010-2018 Gentoo Foundation
+# Copyright 2010-2021 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 __all__ = (
 	'LocationsManager',
 )
 
-import collections
 import io
 import warnings
 
@@ -20,7 +19,7 @@ from portage.util import ensure_dirs, grabfile, \
 	normalize_path, read_corresponding_eapi_file, shlex_split, writemsg
 from portage.util._path import exists_raise_eaccess, isdir_raise_eaccess
 from portage.repository.config import parse_layout_conf, \
-	_portage1_profiles_allow_directories
+	_portage1_profiles_allow_directories, _profile_node
 
 
 _PORTAGE1_DIRECTORIES = frozenset([
@@ -28,12 +27,6 @@ _PORTAGE1_DIRECTORIES = frozenset([
 	'package.use', 'package.use.mask', 'package.use.force',
 	'use.mask', 'use.force'])
 
-_profile_node = collections.namedtuple('_profile_node',
-	('location', 'portage1_directories', 'user_config',
-	'profile_formats', 'eapi', 'allow_build_id',
-	'show_deprecated_warning',
-))
-
 _allow_parent_colon = frozenset(
 	["portage-2"])
 

diff --git a/lib/portage/package/ebuild/_config/MaskManager.py b/lib/portage/package/ebuild/_config/MaskManager.py
index 7714456e1..b0c2b55da 100644
--- a/lib/portage/package/ebuild/_config/MaskManager.py
+++ b/lib/portage/package/ebuild/_config/MaskManager.py
@@ -1,4 +1,4 @@
-# Copyright 2010-2018 Gentoo Foundation
+# Copyright 2010-2021 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 __all__ = (
@@ -10,6 +10,7 @@ import warnings
 from portage import os
 from portage.dep import ExtendedAtomDict, match_from_list
 from portage.localization import _
+from portage.repository.config import allow_profile_repo_deps
 from portage.util import append_repo, grabfile_package, stack_lists, writemsg
 from portage.versions import _pkg_str
 
@@ -41,6 +42,7 @@ class MaskManager:
 						recursive=repo_config.portage1_profiles,
 						remember_source_file=True, verify_eapi=True,
 						eapi_default=repo_config.eapi,
+						allow_repo=allow_profile_repo_deps(repo_config),
 						allow_build_id=("build-id"
 						in repo_config.profile_formats))
 				if repo_config.portage1_profiles_compat and os.path.isdir(path):
@@ -110,6 +112,7 @@ class MaskManager:
 			repo_lines = grabfile_package(os.path.join(repo.location, "profiles", "package.unmask"), \
 				recursive=1, remember_source_file=True,
 				verify_eapi=True, eapi_default=repo.eapi,
+				allow_repo=allow_profile_repo_deps(repo),
 				allow_build_id=("build-id" in repo.profile_formats))
 			lines = stack_lists([repo_lines], incremental=1, \
 				remember_source_file=True, warn_for_unmatched_removal=True,
@@ -126,6 +129,7 @@ class MaskManager:
 				recursive=x.portage1_directories,
 				remember_source_file=True, verify_eapi=True,
 				eapi=x.eapi, eapi_default=None,
+				allow_repo=allow_profile_repo_deps(x),
 				allow_build_id=x.allow_build_id))
 			if x.portage1_directories:
 				profile_pkgunmasklines.append(grabfile_package(
@@ -133,6 +137,7 @@ class MaskManager:
 					recursive=x.portage1_directories,
 					remember_source_file=True, verify_eapi=True,
 					eapi=x.eapi, eapi_default=None,
+					allow_repo=allow_profile_repo_deps(x),
 					allow_build_id=x.allow_build_id))
 		profile_pkgmasklines = stack_lists(profile_pkgmasklines, incremental=1, \
 			remember_source_file=True, warn_for_unmatched_removal=True,

diff --git a/lib/portage/package/ebuild/_config/UseManager.py b/lib/portage/package/ebuild/_config/UseManager.py
index 882b0efa9..656c6199b 100644
--- a/lib/portage/package/ebuild/_config/UseManager.py
+++ b/lib/portage/package/ebuild/_config/UseManager.py
@@ -1,4 +1,4 @@
-# Copyright 2010-2014 Gentoo Foundation
+# Copyright 2010-2021 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 __all__ = (
@@ -11,6 +11,7 @@ from portage.dep import Atom, dep_getrepo, dep_getslot, ExtendedAtomDict, remove
 from portage.eapi import eapi_has_use_aliases, eapi_supports_stable_use_forcing_and_masking
 from portage.exception import InvalidAtom
 from portage.localization import _
+from portage.repository.config import allow_profile_repo_deps
 from portage.util import grabfile, grabdict, grabdict_package, read_corresponding_eapi_file, stack_lists, writemsg
 from portage.versions import _pkg_str
 
@@ -154,7 +155,7 @@ class UseManager:
 
 	def _parse_file_to_dict(self, file_name, juststrings=False, recursive=True,
 		eapi_filter=None, user_config=False, eapi=None, eapi_default="0",
-		allow_build_id=False):
+		allow_repo=False, allow_build_id=False):
 		"""
 		@param file_name: input file name
 		@type file_name: str
@@ -193,8 +194,9 @@ class UseManager:
 			ret = ExtendedAtomDict(dict)
 		else:
 			ret = {}
+		allow_repo = allow_repo or extended_syntax
 		file_dict = grabdict_package(file_name, recursive=recursive,
-			allow_wildcard=extended_syntax, allow_repo=extended_syntax,
+			allow_wildcard=extended_syntax, allow_repo=allow_repo,
 			verify_eapi=(not extended_syntax), eapi=eapi,
 			eapi_default=eapi_default, allow_build_id=allow_build_id,
 			allow_use=False)
@@ -277,6 +279,7 @@ class UseManager:
 			ret[repo.name] = self._parse_file_to_dict(
 				os.path.join(repo.location, "profiles", file_name),
 				eapi_filter=eapi_filter, eapi_default=repo.eapi,
+				allow_repo=allow_profile_repo_deps(repo),
 				allow_build_id=("build-id" in repo.profile_formats))
 		return ret
 
@@ -294,7 +297,8 @@ class UseManager:
 			os.path.join(profile.location, file_name), juststrings,
 			recursive=profile.portage1_directories, eapi_filter=eapi_filter,
 			user_config=profile.user_config, eapi=profile.eapi,
-			eapi_default=None, allow_build_id=profile.allow_build_id)
+			eapi_default=None, allow_build_id=profile.allow_build_id,
+			allow_repo=allow_profile_repo_deps(profile))
 			for profile in locations)
 
 	def _parse_repository_usealiases(self, repositories):

diff --git a/lib/portage/package/ebuild/config.py b/lib/portage/package/ebuild/config.py
index 690efde9d..0d0b51053 100644
--- a/lib/portage/package/ebuild/config.py
+++ b/lib/portage/package/ebuild/config.py
@@ -1,4 +1,4 @@
-# Copyright 2010-2020 Gentoo Authors
+# Copyright 2010-2021 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 __all__ = [
@@ -42,7 +42,10 @@ from portage.exception import InvalidDependString, PortageException
 from portage.localization import _
 from portage.output import colorize
 from portage.process import fakeroot_capable, sandbox_capable
-from portage.repository.config import load_repository_config
+from portage.repository.config import (
+	allow_profile_repo_deps,
+	load_repository_config,
+)
 from portage.util import ensure_dirs, getconfig, grabdict, \
 	grabdict_package, grabfile, grabfile_package, LazyItemsDict, \
 	normalize_path, shlex_split, stack_dictlist, stack_dicts, stack_lists, \
@@ -593,6 +596,7 @@ class config:
 				packages_list = [grabfile_package(
 					os.path.join(x.location, "packages"),
 					verify_eapi=True, eapi=x.eapi, eapi_default=None,
+					allow_repo=allow_profile_repo_deps(x),
 					allow_build_id=x.allow_build_id)
 					for x in profiles_complex]
 			except EnvironmentError as e:
@@ -812,7 +816,8 @@ class config:
 						portage.dep.ExtendedAtomDict(dict)
 					bashrc = grabdict_package(os.path.join(profile.location,
 						"package.bashrc"), recursive=1, allow_wildcard=True,
-								allow_repo=True, verify_eapi=True,
+								allow_repo=allow_profile_repo_deps(profile),
+								verify_eapi=True,
 								eapi=profile.eapi, eapi_default=None,
 								allow_build_id=profile.allow_build_id)
 					if not bashrc:

diff --git a/lib/portage/repository/config.py b/lib/portage/repository/config.py
index 83e9746d1..c401d10b4 100644
--- a/lib/portage/repository/config.py
+++ b/lib/portage/repository/config.py
@@ -1,16 +1,21 @@
-# Copyright 2010-2020 Gentoo Authors
+# Copyright 2010-2021 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
+import collections
 import io
 import logging
 import warnings
 import re
+import typing
 
 import portage
 from portage import eclass_cache, os
 from portage.checksum import get_valid_checksum_keys
 from portage.const import (PORTAGE_BASE_PATH, REPO_NAME_LOC, USER_CONFIG_PATH)
-from portage.eapi import eapi_allows_directories_on_profile_level_and_repository_level
+from portage.eapi import (
+	eapi_allows_directories_on_profile_level_and_repository_level,
+	eapi_has_repo_deps,
+)
 from portage.env.loaders import KeyValuePairFileLoader
 from portage.util import (normalize_path, read_corresponding_eapi_file, shlex_split,
 	stack_lists, writemsg, writemsg_level, _recursive_file_list)
@@ -25,6 +30,18 @@ from portage import _encodings
 from portage import manifest
 import portage.sync
 
+_profile_node = collections.namedtuple(
+	"_profile_node",
+	(
+		"location",
+		"portage1_directories",
+		"user_config",
+		"profile_formats",
+		"eapi",
+		"allow_build_id",
+		"show_deprecated_warning",
+	),
+)
 
 # Characters prohibited by repoman's file.name check.
 _invalid_path_char_re = re.compile(r'[^a-zA-Z0-9._\-+/]')
@@ -1096,6 +1113,14 @@ class RepoConfigLoader:
 				config_string += "%s = %s\n" % (o, v)
 		return config_string.lstrip("\n")
 
+def allow_profile_repo_deps(
+	repo: typing.Union[RepoConfig, _profile_node],
+) -> bool:
+	if eapi_has_repo_deps(repo.eapi):
+		return True
+
+	return False
+
 def load_repository_config(settings, extra_files=None):
 	repoconfigpaths = []
 	if "PORTAGE_REPOSITORIES" in settings:

diff --git a/lib/portage/tests/dep/test_isvalidatom.py b/lib/portage/tests/dep/test_isvalidatom.py
index 58d999646..4203be07b 100644
--- a/lib/portage/tests/dep/test_isvalidatom.py
+++ b/lib/portage/tests/dep/test_isvalidatom.py
@@ -1,4 +1,4 @@
-# Copyright 2006-2013 Gentoo Foundation
+# Copyright 2006-2021 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 from portage.tests import TestCase
@@ -6,12 +6,13 @@ from portage.dep import isvalidatom
 
 class IsValidAtomTestCase:
 	def __init__(self, atom, expected, allow_wildcard=False,
-		allow_repo=False, allow_build_id=False):
+		allow_repo=False, allow_build_id=False, eapi=None):
 		self.atom = atom
 		self.expected = expected
 		self.allow_wildcard = allow_wildcard
 		self.allow_repo = allow_repo
 		self.allow_build_id = allow_build_id
+		self.eapi = eapi
 
 class IsValidAtom(TestCase):
 
@@ -137,6 +138,24 @@ class IsValidAtom(TestCase):
 			IsValidAtomTestCase("=sys-apps/portage-2.2*:foo::repo[doc?]", False, allow_repo=False),
 			IsValidAtomTestCase("null/portage::repo", False, allow_repo=False),
 
+			# Testing repo atoms with eapi
+
+			# If allow_repo is None, it should be overwritten by eapi
+			IsValidAtomTestCase("sys-apps/portage::repo", True, allow_repo=None),
+			IsValidAtomTestCase("sys-apps/portage::repo", False, allow_repo=None, eapi="5"),
+			IsValidAtomTestCase("sys-apps/portage::repo", True,  allow_repo=None, eapi="5-progress"),
+			IsValidAtomTestCase("sys-apps/portage::repo", False, allow_repo=None, eapi="7"),
+
+			# If allow_repo is not None, it should not be overwritten by eapi
+			IsValidAtomTestCase("sys-apps/portage::repo", False, allow_repo=False),
+			IsValidAtomTestCase("sys-apps/portage::repo", False, allow_repo=False, eapi="5"),
+			IsValidAtomTestCase("sys-apps/portage::repo", False,  allow_repo=False, eapi="5-progress"),
+			IsValidAtomTestCase("sys-apps/portage::repo", False, allow_repo=False, eapi="7"),
+			IsValidAtomTestCase("sys-apps/portage::repo", True, allow_repo=True),
+			IsValidAtomTestCase("sys-apps/portage::repo", True, allow_repo=True, eapi="5"),
+			IsValidAtomTestCase("sys-apps/portage::repo", True,  allow_repo=True, eapi="5-progress"),
+			IsValidAtomTestCase("sys-apps/portage::repo", True, allow_repo=True, eapi="7"),
+
 			IsValidAtomTestCase("virtual/ffmpeg:0/53", True),
 			IsValidAtomTestCase("virtual/ffmpeg:0/53=", True),
 			IsValidAtomTestCase("virtual/ffmpeg:0/53*", False),
@@ -157,6 +176,7 @@ class IsValidAtom(TestCase):
 				atom_type = "invalid"
 			self.assertEqual(bool(isvalidatom(test_case.atom, allow_wildcard=test_case.allow_wildcard,
 				allow_repo=test_case.allow_repo,
-				allow_build_id=test_case.allow_build_id)),
+				allow_build_id=test_case.allow_build_id,
+				eapi=test_case.eapi)),
 				test_case.expected,
 				msg="isvalidatom(%s) != %s" % (test_case.atom, test_case.expected))

diff --git a/repoman/lib/repoman/repos.py b/repoman/lib/repoman/repos.py
index 31cb82caf..6df984a28 100644
--- a/repoman/lib/repoman/repos.py
+++ b/repoman/lib/repoman/repos.py
@@ -14,6 +14,7 @@ from portage import os
 from portage import _encodings
 from portage import _unicode_encode
 from portage.checksum import get_valid_checksum_keys
+from portage.repository.config import allow_profile_repo_deps
 
 # pylint: disable=ungrouped-imports
 from repoman.errors import err
@@ -233,7 +234,9 @@ def repo_metadata(portdb, repoman_settings):
 	profile_list = []
 	global_pmasklines = []
 
-	for path in portdb.porttrees:
+	for repo in portdb.repositories:
+		path = repo.location
+
 		try:
 			liclist.update(os.listdir(os.path.join(path, "licenses")))
 		except OSError:
@@ -265,7 +268,8 @@ def repo_metadata(portdb, repoman_settings):
 		global_pmasklines.append(
 			portage.util.grabfile_package(
 				os.path.join(path, 'profiles', 'package.mask'),
-				recursive=1, verify_eapi=True))
+				recursive=1, verify_eapi=True,
+				allow_repo=allow_profile_repo_deps(repo)))
 
 		desc_path = os.path.join(path, 'profiles', 'profiles.desc')
 		try:


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2021-03-28  9:12 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-03-28  9:12 [gentoo-commits] proj/portage:master commit in: lib/portage/tests/dep/, lib/portage/repository/, lib/portage/dep/, Zac Medico

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox