Skip to content

Commit 5b385dd

Browse files
committed
ProfilesCheck: handle incremental make.defaults values
Signed-off-by: Arthur Zamarin <arthurzam@gentoo.org>
1 parent 033277b commit 5b385dd

5 files changed

Lines changed: 18 additions & 7 deletions

File tree

‎NEWS.rst‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ pkgcheck 0.10.47 (unreleased)
2929
- InvalidCommitTag: report ``Fixes`` and ``Reverts`` naming a blob or tree
3030
instead of crashing (Arthur Zamarin)
3131

32+
- UnknownProfileUse, UnknownProfileUseExpand, UnknownProfileUseExpandValue:
33+
accept ``-*`` and negated values in ``make.defaults`` (Arthur Zamarin)
34+
3235
-----------------------------
3336
pkgcheck 0.10.46 (2026-09-26)
3437
-----------------------------

‎src/pkgcheck/checks/profiles.py‎

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,11 @@ class ProfileError(results.ProfilesResult, results.LogError):
208208
_make_defaults_assign_re = re.compile(r"^[a-zA-Z][a-zA-Z0-9_]*=(?P<value>.*)$")
209209

210210

211+
def _incremental_values(value: str) -> set[str]:
212+
"""Values named by an incremental variable, without negations or resets."""
213+
return {x.removeprefix("-") for x in value.split() if x != "-*"}
214+
215+
211216
# mapping of profile log levels to result classes
212217
_logmap = (
213218
base.LogMap("pkgcore.log.logger.warning", ProfileWarning),
@@ -405,11 +410,8 @@ def _make_defaults(self, filename: str, node: sources.ProfileNode, vals: dict[st
405410
if len(value) < 2 or value[0] != '"' or value[-1] != '"':
406411
yield MakeDefaultsUnquoted(pjoin(node.name, filename), lineno, line)
407412
if (
408-
use_flags := {
409-
use.removeprefix("-")
410-
for use_group in ("USE", "IUSE_IMPLICIT")
411-
for use in vals.get(use_group, "").split()
412-
}
413+
use_flags := _incremental_values(vals.get("USE", ""))
414+
| _incremental_values(vals.get("IUSE_IMPLICIT", ""))
413415
) and (unknown := use_flags - self.available_iuse):
414416
yield UnknownProfileUse(pjoin(node.name, filename), unknown)
415417
implicit_use_expands = set(vals.get("USE_EXPAND_IMPLICIT", "").split())
@@ -418,7 +420,7 @@ def _make_defaults(self, filename: str, node: sources.ProfileNode, vals: dict[st
418420
"USE_EXPAND_HIDDEN",
419421
"USE_EXPAND_UNPREFIXED",
420422
):
421-
values = {use.removeprefix("-") for use in vals.get(use_group, "").split()}
423+
values = _incremental_values(vals.get(use_group, ""))
422424
if unknown := values - self.use_expand_groups.keys() - implicit_use_expands:
423425
yield UnknownProfileUseExpand(pjoin(node.name, filename), use_group, unknown)
424426
for key, val in vals.items():
@@ -432,7 +434,7 @@ def _make_defaults(self, filename: str, node: sources.ProfileNode, vals: dict[st
432434
else:
433435
yield UnknownProfileUseExpand(pjoin(node.name, filename), key, [use_group])
434436
for key in vals.keys() & self.use_expand_groups.keys():
435-
if unknown := set(vals.get(key, "").split()) - self.use_expand_groups[key]:
437+
if unknown := _incremental_values(vals[key]) - self.use_expand_groups[key]:
436438
yield UnknownProfileUseExpandValue(pjoin(node.name, filename), key, unknown)
437439
if missing_values := {
438440
use_group
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
7
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
USE="-* used -used"
2+
IUSE_IMPLICIT="-* used"
3+
USE_EXPAND="-* PYTHON_TARGETS"
4+
PYTHON_TARGETS="-* -python3_10 python3_11"

‎testdata/repos/profiledir/profiles/profiles.desc‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ amd64 unknown_kwds exp
88
amd64 unmatched_unmasks exp
99
amd64 unknown_arch exp
1010
amd64 unquoted_make_defaults exp
11+
amd64 incremental_use exp
1112

1213
amd64 unknown_use exp
1314
amd64 unknown_use/unknown_stable_use exp

0 commit comments

Comments
 (0)