public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [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