* [gentoo-commits] proj/pkgcore/pkgcheck:master commit in: src/pkgcheck/checks/, testdata/repos/standalone/stub/stub5/, ...
@ 2025-07-11 19:26 Arthur Zamarin
0 siblings, 0 replies; only message in thread
From: Arthur Zamarin @ 2025-07-11 19:26 UTC (permalink / raw
To: gentoo-commits
commit: 8b0c541f4f0d62c4eeac440b3fdfcde1848ac829
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Jul 9 07:39:55 2025 +0000
Commit: Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Fri Jul 11 19:26:02 2025 +0000
URL: https://gitweb.gentoo.org/proj/pkgcore/pkgcheck.git/commit/?id=8b0c541f
DependencyCheck: extend missing revision checks to `<=` and `>`
Extend missing package revision in dependency check to `<=` and `>`
operators. They are similar to `=` in that it only match specific
revision, while people often expect them to match the whole version.
While at it, extend tests to checking blockers too.
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
Part-of: https://github.com/pkgcore/pkgcheck/pull/743
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>
src/pkgcheck/checks/metadata.py | 27 +++++-----
.../MissingPackageRevision/expected.json | 7 ++-
.../MissingPackageRevision/fix.patch | 57 +++++++++++++++++++---
...0.ebuild => MissingPackageRevision-0-r1.ebuild} | 3 +-
.../MissingPackageRevision-0.ebuild | 3 +-
...0.ebuild => MissingPackageRevision-1-r1.ebuild} | 3 +-
...on-0.ebuild => MissingPackageRevision-1.ebuild} | 3 +-
...0.ebuild => MissingPackageRevision-2-r1.ebuild} | 3 +-
...on-0.ebuild => MissingPackageRevision-2.ebuild} | 3 +-
.../repos/standalone/stub/stub5/stub5-1.ebuild | 4 ++
10 files changed, 89 insertions(+), 24 deletions(-)
diff --git a/src/pkgcheck/checks/metadata.py b/src/pkgcheck/checks/metadata.py
index f20d20e2..429c774f 100644
--- a/src/pkgcheck/checks/metadata.py
+++ b/src/pkgcheck/checks/metadata.py
@@ -745,23 +745,26 @@ class MissingSlotDepCheck(Check):
class MissingPackageRevision(results.VersionResult, results.Warning):
"""Missing package revision in =cat/pkg dependencies.
- The dependency string uses the ``=`` operator without specifying a revision.
- This means that only ``-r0`` of the dependency will be matched, and newer
- revisions of the same ebuild will not be accepted.
-
- If any revision of the package is acceptable, the ``~`` operator should be
- used instead of ``=``. If only the initial revision of the dependency is
- allowed, ``-r0`` should be appended in order to make the intent explicit.
+ The dependency string uses the ``=``, ``<=`` or ``>`` operator without
+ specifying a revision. These operators are frequently misused,
+ with assumptions they apply to all revisions of the given version,
+ while they do only apply to ``-r0``.
+
+ If applying the operator to ``-r0`` only is intentional, then ``-r0``
+ should be appended to make it explicit. Otheriwse, ``~`` can be used
+ instead of ``=``, and ``-r9999`` or next version can be used for other
+ operators.
"""
- def __init__(self, dep, atom, **kwargs):
+ def __init__(self, dep, op, atom, **kwargs):
super().__init__(**kwargs)
self.dep = dep.upper()
+ self.op = op
self.atom = atom
@property
def desc(self):
- return f'"=" operator used without package revision: {self.dep}="{self.atom}"'
+ return f'"{self.op}" operator used without package revision: {self.dep}="{self.atom}"'
class MissingUseDepDefault(results.VersionResult, results.Warning):
@@ -954,8 +957,10 @@ class DependencyCheck(Check):
pkgs = (x.cpvstr for x in sorted(atoms))
yield MissingUseDepDefault(attr, str(atom), use, pkgs, pkg=pkg)
- if atom.op == "=" and not atom.revision:
- yield MissingPackageRevision(attr, str(atom), pkg=pkg)
+ # these operators are most likely to mean "the whole version" rather than r0
+ # blockers also matched intentionally
+ if atom.op in ("=", "<=", ">") and not atom.revision:
+ yield MissingPackageRevision(attr, atom.op, str(atom), pkg=pkg)
if isinstance(atom, transitive_use_atom) and atom.use is not None:
for useflag in atom.use:
diff --git a/testdata/data/repos/standalone/DependencyCheck/MissingPackageRevision/expected.json b/testdata/data/repos/standalone/DependencyCheck/MissingPackageRevision/expected.json
index 12d3f28c..96124dea 100644
--- a/testdata/data/repos/standalone/DependencyCheck/MissingPackageRevision/expected.json
+++ b/testdata/data/repos/standalone/DependencyCheck/MissingPackageRevision/expected.json
@@ -1 +1,6 @@
-{"__class__": "MissingPackageRevision", "category": "DependencyCheck", "package": "MissingPackageRevision", "version": "0", "dep": "RDEPEND", "atom": "=stub/stub1-0"}
+{"__class__": "MissingPackageRevision", "category": "DependencyCheck", "package": "MissingPackageRevision", "version": "0", "dep": "RDEPEND", "op": "=", "atom": "=stub/stub5-1"}
+{"__class__": "MissingPackageRevision", "category": "DependencyCheck", "package": "MissingPackageRevision", "version": "1", "dep": "DEPEND", "op": "<=", "atom": "<=stub/stub5-1"}
+{"__class__": "MissingPackageRevision", "category": "DependencyCheck", "package": "MissingPackageRevision", "version": "2", "dep": "BDEPEND", "op": ">", "atom": ">stub/stub5-0"}
+{"__class__": "MissingPackageRevision", "category": "DependencyCheck", "package": "MissingPackageRevision", "version": "0-r1", "dep": "RDEPEND", "op": "=", "atom": "!=stub/stub5-0"}
+{"__class__": "MissingPackageRevision", "category": "DependencyCheck", "package": "MissingPackageRevision", "version": "1-r1", "dep": "RDEPEND", "op": "<=", "atom": "!<=stub/stub5-0"}
+{"__class__": "MissingPackageRevision", "category": "DependencyCheck", "package": "MissingPackageRevision", "version": "2-r1", "dep": "RDEPEND", "op": ">", "atom": "!>stub/stub5-2"}
diff --git a/testdata/data/repos/standalone/DependencyCheck/MissingPackageRevision/fix.patch b/testdata/data/repos/standalone/DependencyCheck/MissingPackageRevision/fix.patch
index 2a745c6b..fbc0bc8f 100644
--- a/testdata/data/repos/standalone/DependencyCheck/MissingPackageRevision/fix.patch
+++ b/testdata/data/repos/standalone/DependencyCheck/MissingPackageRevision/fix.patch
@@ -1,9 +1,54 @@
-diff -Naur standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild fixed/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild
---- standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild 2019-09-17 11:01:07.112319931 -0600
-+++ fixed/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild 2019-09-17 11:01:44.129474002 -0600
-@@ -2,4 +2,4 @@
+diff '--color=auto' -Naur standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild fixed/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild
+--- standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild 2025-07-11 20:33:18.115300871 +0200
++++ fixed/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild 2025-07-11 20:36:42.713486151 +0200
+@@ -3,4 +3,4 @@
HOMEPAGE="https://github.com/pkgcore/pkgcheck"
LICENSE="BSD"
SLOT="0"
--RDEPEND="=stub/stub1-0"
-+RDEPEND="=stub/stub1-0-r0"
+-RDEPEND="=stub/stub5-1"
++RDEPEND="=stub/stub5-1*"
+diff '--color=auto' -Naur standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0-r1.ebuild fixed/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0-r1.ebuild
+--- standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0-r1.ebuild 2025-07-11 20:33:18.118506850 +0200
++++ fixed/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0-r1.ebuild 2025-07-11 20:36:47.024571459 +0200
+@@ -3,4 +3,4 @@
+ HOMEPAGE="https://github.com/pkgcore/pkgcheck"
+ LICENSE="BSD"
+ SLOT="0"
+-RDEPEND="!=stub/stub5-0"
++RDEPEND="!=stub/stub5-0-r0"
+diff '--color=auto' -Naur standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-1.ebuild fixed/DependencyCheck/MissingPackageRevision/MissingPackageRevision-1.ebuild
+--- standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-1.ebuild 2025-07-11 20:33:18.118620876 +0200
++++ fixed/DependencyCheck/MissingPackageRevision/MissingPackageRevision-1.ebuild 2025-07-11 20:36:47.028861737 +0200
+@@ -3,4 +3,4 @@
+ HOMEPAGE="https://github.com/pkgcore/pkgcheck"
+ LICENSE="BSD"
+ SLOT="0"
+-DEPEND="<=stub/stub5-1"
++DEPEND="<=stub/stub5-1-r0"
+diff '--color=auto' -Naur standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-1-r1.ebuild fixed/DependencyCheck/MissingPackageRevision/MissingPackageRevision-1-r1.ebuild
+--- standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-1-r1.ebuild 2025-07-11 20:33:18.118761613 +0200
++++ fixed/DependencyCheck/MissingPackageRevision/MissingPackageRevision-1-r1.ebuild 2025-07-11 20:36:47.032675190 +0200
+@@ -3,4 +3,4 @@
+ HOMEPAGE="https://github.com/pkgcore/pkgcheck"
+ LICENSE="BSD"
+ SLOT="0"
+-RDEPEND="!<=stub/stub5-0"
++RDEPEND="!<=stub/stub5-0-r0"
+diff '--color=auto' -Naur standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-2.ebuild fixed/DependencyCheck/MissingPackageRevision/MissingPackageRevision-2.ebuild
+--- standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-2.ebuild 2025-07-11 20:33:18.118865451 +0200
++++ fixed/DependencyCheck/MissingPackageRevision/MissingPackageRevision-2.ebuild 2025-07-11 20:36:47.036494443 +0200
+@@ -3,4 +3,4 @@
+ HOMEPAGE="https://github.com/pkgcore/pkgcheck"
+ LICENSE="BSD"
+ SLOT="0"
+-BDEPEND=">stub/stub5-0"
++BDEPEND=">stub/stub5-0-r0"
+diff '--color=auto' -Naur standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-2-r1.ebuild fixed/DependencyCheck/MissingPackageRevision/MissingPackageRevision-2-r1.ebuild
+--- standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-2-r1.ebuild 2025-07-11 20:33:18.118974788 +0200
++++ fixed/DependencyCheck/MissingPackageRevision/MissingPackageRevision-2-r1.ebuild 2025-07-11 20:34:29.433665350 +0200
+@@ -3,4 +3,4 @@
+ HOMEPAGE="https://github.com/pkgcore/pkgcheck"
+ LICENSE="BSD"
+ SLOT="0"
+-RDEPEND="!>stub/stub5-2"
++RDEPEND="!>stub/stub5-2-r0"
diff --git a/testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild b/testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0-r1.ebuild
similarity index 80%
copy from testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild
copy to testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0-r1.ebuild
index ae4a12bd..499ab859 100644
--- a/testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild
+++ b/testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0-r1.ebuild
@@ -1,5 +1,6 @@
+EAPI=8
DESCRIPTION="Ebuild with missing package revision in dependency"
HOMEPAGE="https://github.com/pkgcore/pkgcheck"
LICENSE="BSD"
SLOT="0"
-RDEPEND="=stub/stub1-0"
+RDEPEND="!=stub/stub5-0"
diff --git a/testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild b/testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild
index ae4a12bd..5354db8d 100644
--- a/testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild
+++ b/testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild
@@ -1,5 +1,6 @@
+EAPI=8
DESCRIPTION="Ebuild with missing package revision in dependency"
HOMEPAGE="https://github.com/pkgcore/pkgcheck"
LICENSE="BSD"
SLOT="0"
-RDEPEND="=stub/stub1-0"
+RDEPEND="=stub/stub5-1"
diff --git a/testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild b/testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-1-r1.ebuild
similarity index 80%
copy from testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild
copy to testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-1-r1.ebuild
index ae4a12bd..fe8d65c7 100644
--- a/testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild
+++ b/testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-1-r1.ebuild
@@ -1,5 +1,6 @@
+EAPI=8
DESCRIPTION="Ebuild with missing package revision in dependency"
HOMEPAGE="https://github.com/pkgcore/pkgcheck"
LICENSE="BSD"
SLOT="0"
-RDEPEND="=stub/stub1-0"
+RDEPEND="!<=stub/stub5-0"
diff --git a/testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild b/testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-1.ebuild
similarity index 81%
copy from testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild
copy to testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-1.ebuild
index ae4a12bd..203b4879 100644
--- a/testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild
+++ b/testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-1.ebuild
@@ -1,5 +1,6 @@
+EAPI=8
DESCRIPTION="Ebuild with missing package revision in dependency"
HOMEPAGE="https://github.com/pkgcore/pkgcheck"
LICENSE="BSD"
SLOT="0"
-RDEPEND="=stub/stub1-0"
+DEPEND="<=stub/stub5-1"
diff --git a/testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild b/testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-2-r1.ebuild
similarity index 80%
copy from testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild
copy to testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-2-r1.ebuild
index ae4a12bd..9de8ae58 100644
--- a/testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild
+++ b/testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-2-r1.ebuild
@@ -1,5 +1,6 @@
+EAPI=8
DESCRIPTION="Ebuild with missing package revision in dependency"
HOMEPAGE="https://github.com/pkgcore/pkgcheck"
LICENSE="BSD"
SLOT="0"
-RDEPEND="=stub/stub1-0"
+RDEPEND="!>stub/stub5-2"
diff --git a/testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild b/testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-2.ebuild
similarity index 81%
copy from testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild
copy to testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-2.ebuild
index ae4a12bd..14f5d5c1 100644
--- a/testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-0.ebuild
+++ b/testdata/repos/standalone/DependencyCheck/MissingPackageRevision/MissingPackageRevision-2.ebuild
@@ -1,5 +1,6 @@
+EAPI=8
DESCRIPTION="Ebuild with missing package revision in dependency"
HOMEPAGE="https://github.com/pkgcore/pkgcheck"
LICENSE="BSD"
SLOT="0"
-RDEPEND="=stub/stub1-0"
+BDEPEND=">stub/stub5-0"
diff --git a/testdata/repos/standalone/stub/stub5/stub5-1.ebuild b/testdata/repos/standalone/stub/stub5/stub5-1.ebuild
new file mode 100644
index 00000000..54922dd1
--- /dev/null
+++ b/testdata/repos/standalone/stub/stub5/stub5-1.ebuild
@@ -0,0 +1,4 @@
+DESCRIPTION="Stub ebuild used to suppress other repo-level keyword output"
+HOMEPAGE="https://github.com/pkgcore/pkgcheck"
+LICENSE="BSD"
+SLOT="0"
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2025-07-11 19:26 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-11 19:26 [gentoo-commits] proj/pkgcore/pkgcheck:master commit in: src/pkgcheck/checks/, testdata/repos/standalone/stub/stub5/, Arthur Zamarin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox