summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKyle Keen <keenerd@gmail.com>2016-05-05 14:05:03 -0400
committerKyle Keen <keenerd@gmail.com>2016-05-05 14:05:03 -0400
commit01c89e047ca020d26c53414baa6a15729ceb7b20 (patch)
tree0f30a1c883dc16c8e2de08dbb1ec54b4a01c2c01
parente385ac93a3544acba464ca9d6ea738c19f7e0fc5 (diff)
downloadnamcap-01c89e047ca020d26c53414baa6a15729ceb7b20.tar.gz
namcap-01c89e047ca020d26c53414baa6a15729ceb7b20.zip
Fix java-runtime handling (FS#24296)
Also fixes cases where "provides" were being ignored. Signed-off-by: Kyle Keen <keenerd@gmail.com>
-rw-r--r--Namcap/depends.py22
-rw-r--r--Namcap/rules/javafiles.py4
-rw-r--r--namcap-tags2
3 files changed, 19 insertions, 9 deletions
diff --git a/Namcap/depends.py b/Namcap/depends.py
index 4409f7d..b17aa26 100644
--- a/Namcap/depends.py
+++ b/Namcap/depends.py
@@ -29,6 +29,11 @@ from Namcap.ruleclass import *
import Namcap.tags
from Namcap import package
+# manual overrides for relationships outside the normal metadata
+implicit_provides = {
+ 'java-environment': ['java-runtime'],
+}
+
def single_covered(depend):
"Returns full coverage tree of one package, with loops broken"
covered = set()
@@ -65,13 +70,15 @@ def getcustom(pkginfo):
def getprovides(depends):
provides = {}
for i in depends:
- provides[i] = []
+ provides[i] = set()
+ if i in implicit_provides:
+ provides[i].update(implicit_provides[i])
pac = package.load_from_db(i)
if pac is None:
continue
if not pac["provides"]:
continue
- provides[i] = pac["provides"]
+ provides[i].update(pac["provides"])
return provides
def analyze_depends(pkginfo):
@@ -100,12 +107,12 @@ def analyze_depends(pkginfo):
# Get the provides so we can reference them later
# smartprovides : depend => (packages provided by depend)
- smartprovides = getprovides(smartdepend)
+ smartprovides = getprovides(smartdepend | explicitdepend)
# The set of all provides for detected dependencies
allprovides = set()
for plist in smartprovides.values():
- allprovides |= set(plist)
+ allprovides |= plist
# Do the actual message outputting stuff
for i in smartdepend:
@@ -116,7 +123,10 @@ def analyze_depends(pkginfo):
if i in pkgbuild_depend:
continue
# if the dependency is pulled as a provider for some explicit dep
- if len(set(smartprovides[i]) & pkgbuild_depend) > 0:
+ if smartprovides[i] & pkgbuild_depend:
+ continue
+ # the dependency is satisfied by a provides
+ if i in allprovides:
continue
# compute dependency reason
reasons = pkginfo.detected_deps[i]
@@ -127,7 +137,7 @@ def analyze_depends(pkginfo):
warnings.append(("dependency-detected-but-optional %s (%s)", (i, reason)))
continue
# maybe, it is pulled as a provider for an optdepend
- if len(set(smartprovides[i]) & optdepend) > 0:
+ if smartprovides[i] & optdepend:
warnings.append(("dependency-detected-but-optional %s (%s)", (i, reason)))
continue
# now i'm pretty sure i didn't find it.
diff --git a/Namcap/rules/javafiles.py b/Namcap/rules/javafiles.py
index 3f93fa3..080174f 100644
--- a/Namcap/rules/javafiles.py
+++ b/Namcap/rules/javafiles.py
@@ -43,7 +43,7 @@ class JavaFiles(TarballRule):
#self.infos.append( ('java-class-file-found %s', entry.name) )
f.close()
if len(javas) > 0:
- reasons = pkginfo.detected_deps.setdefault('java-environment', [])
- reasons.append( ('java-environment-needed %s', ', '.join(javas)) )
+ reasons = pkginfo.detected_deps.setdefault('java-runtime', [])
+ reasons.append( ('java-runtime-needed %s', ', '.join(javas)) )
# vim: set ts=4 sw=4 noet:
diff --git a/namcap-tags b/namcap-tags
index 1a60e88..331bc15 100644
--- a/namcap-tags
+++ b/namcap-tags
@@ -94,6 +94,6 @@ dconf-needed-for-glib-schemas :: needed for glib schemas
glib2-needed-for-gio-modules :: needed for GIO modules
hicolor-icon-theme-needed-for-hicolor-dir :: needed for hicolor theme hierarchy
kdebase-runtime-needed %s :: needed for programs %s
-java-environment-needed %s :: found class files %s
+java-runtime-needed %s :: found class files %s
libraries-needed %s %s :: libraries %s needed in files %s
programs-needed %s %s :: programs %s needed in scripts %s