diff options
author | Kyle Keen <keenerd@gmail.com> | 2016-05-05 14:05:03 -0400 |
---|---|---|
committer | Kyle Keen <keenerd@gmail.com> | 2016-05-05 14:05:03 -0400 |
commit | 01c89e047ca020d26c53414baa6a15729ceb7b20 (patch) | |
tree | 0f30a1c883dc16c8e2de08dbb1ec54b4a01c2c01 | |
parent | e385ac93a3544acba464ca9d6ea738c19f7e0fc5 (diff) | |
download | namcap-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.py | 22 | ||||
-rw-r--r-- | Namcap/rules/javafiles.py | 4 | ||||
-rw-r--r-- | namcap-tags | 2 |
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 |