Re: [PATCH RESEND 1/4] lib/portage/package/ebuild/_config/LicenseManager.py: Use location_manager instead of paths

Sam James <[email protected]> Thu, 18 Dec 2025 01:26:56 +0000
Newsgroups gmane.linux.gentoo.portage.devel
Organization Gentoo
Message-ID <[email protected]>
Louis Chauvet <[email protected]> writes:

> Currently LicenseManager only get the list of all profile locations. This
> is enough for reading all license groups, but not for parsing
> profile-specific package.license.
>
> Directly pass the LocationsManager so LicenseManager can read
> LicenseManager.profiles and read package.license.
>

Reviewed-by: Sam James <[email protected]>

> Signed-off-by: Louis Chauvet <[email protected]>
> ---
>  lib/portage/package/ebuild/_config/LicenseManager.py | 7 ++++---
>  lib/portage/package/ebuild/config.py                 | 3 +--
>  lib/portage/tests/ebuild/test_config.py              | 9 +++------
>  3 files changed, 8 insertions(+), 11 deletions(-)
>
> diff --git a/lib/portage/package/ebuild/_config/LicenseManager.py b/lib/portage/package/ebuild/_config/LicenseManager.py
> index 90f7742e301c..c59fff6ea4f2 100644
> --- a/lib/portage/package/ebuild/_config/LicenseManager.py
> +++ b/lib/portage/package/ebuild/_config/LicenseManager.py
> @@ -14,20 +14,21 @@ from portage.package.ebuild._config.helper import ordered_by_atom_specificity
>  
>  
>  class LicenseManager:
> -    def __init__(self, license_group_locations, abs_user_config, user_config=True):
> +    def __init__(self, locations_manager, user_config=True):
>          self._accept_license_str = None
>          self._accept_license = None
>          self._license_groups = {}
>          self._plicensedict = ExtendedAtomDict(dict)
>          self._undef_lic_groups = set()
>  
> +        license_group_locations = list(locations_manager.profile_locations)
>          if user_config:
> -            license_group_locations = list(license_group_locations) + [abs_user_config]
> +            license_group_locations.append(locations_manager.abs_user_config)
>  
>          self._read_license_groups(license_group_locations)
>  
>          if user_config:
> -            self._read_user_config(abs_user_config)
> +            self._read_user_config(locations_manager.abs_user_config)
>  
>      def _read_user_config(self, abs_user_config):
>          licdict = grabdict_package(
> diff --git a/lib/portage/package/ebuild/config.py b/lib/portage/package/ebuild/config.py
> index 4f60a71e7011..718f367eb2ed 100644
> --- a/lib/portage/package/ebuild/config.py
> +++ b/lib/portage/package/ebuild/config.py
> @@ -847,8 +847,7 @@ class config:
>  
>              # Read license_groups and optionally license_groups and package.license from user config
>              self._license_manager = LicenseManager(
> -                locations_manager.profile_locations,
> -                abs_user_config,
> +                locations_manager,
>                  user_config=local_config,
>              )
>              # Extract '*/*' entries from package.license
> diff --git a/lib/portage/tests/ebuild/test_config.py b/lib/portage/tests/ebuild/test_config.py
> index 743b30bfb0d6..83046a7dc97b 100644
> --- a/lib/portage/tests/ebuild/test_config.py
> +++ b/lib/portage/tests/ebuild/test_config.py
> @@ -7,6 +7,7 @@ import portage
>  from portage import os, shutil, _encodings
>  from portage.const import USER_CONFIG_PATH
>  from portage.dep import Atom
> +from portage.package.ebuild._config.LocationsManager import LocationsManager
>  from portage.package.ebuild.config import config
>  from portage.package.ebuild._config.LicenseManager import LicenseManager
>  from portage.tests import TestCase
> @@ -95,17 +96,13 @@ class ConfigTestCase(TestCase):
>          }
>  
>          playground = ResolverPlayground(user_config=user_config)
> +        settings = config(clone=playground.settings)
>          try:
>              portage.util.noiselimit = -2
>  
> -            license_group_locations = (
> -                os.path.join(
> -                    playground.settings.repositories["test_repo"].location, "profiles"
> -                ),
> -            )
>              pkg_license = os.path.join(playground.eroot, "etc", "portage")
>  
> -            lic_man = LicenseManager(license_group_locations, pkg_license)
> +            lic_man = LicenseManager(settings._locations_manager, pkg_license)
>  
>              self.assertEqual(lic_man._accept_license_str, None)
>              self.assertEqual(lic_man._accept_license, None)