From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id D30B5158451 for ; Fri, 12 Jan 2024 07:13:19 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 118EBE2A58; Fri, 12 Jan 2024 07:13:19 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id E8114E2A58 for ; Fri, 12 Jan 2024 07:13:18 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 18BA5343154 for ; Fri, 12 Jan 2024 07:13:18 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 4FBFD141 for ; Fri, 12 Jan 2024 07:13:16 +0000 (UTC) From: "Arthur Zamarin" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Arthur Zamarin" Message-ID: <1705043264.f756179726eb700b9d1998d4d1bd16270d8ce1d4.arthurzam@gentoo> Subject: [gentoo-commits] proj/pkgcore/pkgcore:master commit in: src/pkgcore/ebuild/, tests/ebuild/ X-VCS-Repository: proj/pkgcore/pkgcore X-VCS-Files: src/pkgcore/ebuild/repo_objs.py tests/ebuild/test_repository.py X-VCS-Directories: src/pkgcore/ebuild/ tests/ebuild/ X-VCS-Committer: arthurzam X-VCS-Committer-Name: Arthur Zamarin X-VCS-Revision: f756179726eb700b9d1998d4d1bd16270d8ce1d4 X-VCS-Branch: master Date: Fri, 12 Jan 2024 07:13:16 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: d3fb77a8-6ef9-4d2a-8f7c-b5e6e0f9207d X-Archives-Hash: 57c5b99d23386f6dae1218981736d00a commit: f756179726eb700b9d1998d4d1bd16270d8ce1d4 Author: Brian Harring gmail com> AuthorDate: Fri Jan 12 05:43:40 2024 +0000 Commit: Arthur Zamarin gentoo org> CommitDate: Fri Jan 12 07:07:44 2024 +0000 URL: https://gitweb.gentoo.org/proj/pkgcore/pkgcore.git/commit/?id=f7561797 fix: child repository not inheriting license groups when it defines none If the child repository defines no license groups, the previous code would exit out before it integrated the parents license groups. This fixes that, and adds tests for it. Signed-off-by: Brian Harring gmail.com> Closes: https://github.com/pkgcore/pkgcore/pull/424 Signed-off-by: Arthur Zamarin gentoo.org> src/pkgcore/ebuild/repo_objs.py | 8 +++++--- tests/ebuild/test_repository.py | 22 +++++++++++++++++++++- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/pkgcore/ebuild/repo_objs.py b/src/pkgcore/ebuild/repo_objs.py index 3359305bb..47422dc12 100644 --- a/src/pkgcore/ebuild/repo_objs.py +++ b/src/pkgcore/ebuild/repo_objs.py @@ -526,11 +526,13 @@ class Licenses(metaclass=WeakInstMeta): d = read_dict(self.license_groups_path, splitter=" ") for k, v in d.items(): d[k] = set(v.split()) - except EnvironmentError: - return mappings.ImmutableDict() + except EnvironmentError as e: + if e.errno != errno.ENOENT: + logger.error(f"failed reading parsing license_groups: {e}") + d = {} except BashParseError as pe: logger.error(f"failed parsing license_groups: {pe}") - return mappings.ImmutableDict() + d = {} for li in self._license_instances: for k, v in li.groups.items(): if k in d: diff --git a/tests/ebuild/test_repository.py b/tests/ebuild/test_repository.py index 71366ba2e..10c0b93b1 100644 --- a/tests/ebuild/test_repository.py +++ b/tests/ebuild/test_repository.py @@ -296,7 +296,7 @@ class TestSlavedTree(TestUnconfiguredTree): repo = self.mk_tree(slave_repo) assert set(repo.licenses) == set(master_licenses + slave_licenses) - def test_license_groups(self, master_repo, slave_repo): + def test_license_groups(self, master_repo, slave_repo, caplog): master_licenses = ("GPL-2", "BSD") slave_licenses = ("BSD-2", "MIT") @@ -324,6 +324,26 @@ class TestSlavedTree(TestUnconfiguredTree): } assert "BSD" in repo.licenses.groups["MISC-FREE"] + # verify it warns when parsing fails + (slave_repo / "profiles" / "license_groups").write_text('X"') + caplog.clear() + repo = self.mk_tree(slave_repo) + assert set(repo.licenses.groups) == {"FREE", "OSI-APPROVED"} + assert caplog.text + + # verify it warns when the file exists but it can't read it. + (slave_repo / "profiles" / "license_groups").write_text("") + (slave_repo / "profiles" / "license_groups").chmod(000) + caplog.clear() + repo = self.mk_tree(slave_repo) + assert set(repo.licenses.groups) == {"FREE", "OSI-APPROVED"} + assert caplog.text + + # verify it handles a missing license group. + (slave_repo / "profiles" / "license_groups").unlink() + repo = self.mk_tree(slave_repo) + assert set(repo.licenses.groups) == {"FREE", "OSI-APPROVED"} + def test_package_deprecated(self, slave_repo, master_repo): (master_repo / "profiles" / "package.deprecated").write_text( textwrap.dedent(