commit:     835f9725ef5607170071258a678b236f3baf6658
Author:     Louis Chauvet <louis.chauvet <AT> bootlin <DOT> com>
AuthorDate: Wed Dec 17 07:10:12 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Dec 18 01:33:58 2025 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=835f9725

lib/portage/package/ebuild/_config/LicenseManager.py: Use location_manager 
instead of paths

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.

Bug: https://bugs.gentoo.org/686888
Signed-off-by: Louis Chauvet <louis.chauvet <AT> bootlin.com>
Reviewed-by: Sam James <sam <AT> gentoo.org>
Signed-off-by: Sam James <sam <AT> gentoo.org>

 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 90f7742e30..c59fff6ea4 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 4f60a71e70..718f367eb2 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 743b30bfb0..83046a7dc9 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)

Reply via email to