[java-sig-commits] [javapackages/0.2.x] Make sure to verify correct naming of jar/pom files

Stanislav Ochotnicky sochotni at fedoraproject.org
Tue Nov 29 14:08:11 UTC 2011


commit 9d78b7d4af48a741ffdbf1839aa472f5fda316bc
Author: Stanislav Ochotnicky <sochotnicky at redhat.com>
Date:   Tue Nov 29 15:06:40 2011 +0100

    Make sure to verify correct naming of jar/pom files
    
    This used to pass without throwing error:
    %add_maven_depmap JPP-%{name}.pom ant/%{name}.jar

 scripts/maven_depmap.py |   26 +++++++++++++++++++++++---
 1 files changed, 23 insertions(+), 3 deletions(-)
---
diff --git a/scripts/maven_depmap.py b/scripts/maven_depmap.py
index 43ecc84..cdc467a 100644
--- a/scripts/maven_depmap.py
+++ b/scripts/maven_depmap.py
@@ -57,6 +57,10 @@ class IncompatibleFilenames(Exception):
     def __init__(self, pom_path, jar_path):
         self.args=("Filenames of pom %s and jar %s does not match properly. Check that jar subdirectories match '.' in pom name." % (pom_path, jar_path),)
 
+class MissingJarFile(Exception):
+    def __init__(self):
+        self.args=("Jar seems to be missing in standard directories. Make sure you have installed it")
+
 def _get_tag_under_parent(dom, parent, tag):
     """get first xml tag under parent tag within dom"""
     tags = dom.getElementsByTagName(tag)
@@ -73,19 +77,35 @@ def _get_jpp_from_filename(pom_path, jar_path = None):
     is "xbean-main". Therefore for jar name to be compatible it has be
     in %{_javadir}/xbean/xbean-main.jar
     """
+    # this is not nice, because macros can change but handling these
+    # in rpm macros is ugly as hell
+    javadirs=["/usr/share/java", "/usr/share/java-jni", "/usr/lib/java",
+              "/usr/lib64/java"]
     pomname = basename(pom_path)
     if jar_path:
         if not os.path.isfile(jar_path):
             raise IOError("Jar path doesn't exist")
+        jarpart = None
+        for jdir in javadirs:
+            if jdir in jar_path:
+                javadir_re = re.compile(".*%s/" % jdir)
+                jarpart = re.sub(javadir_re, "", jar_path)
+        if not jarpart:
+            raise MissingJarFile()
+
         if pomname[3] == '.':
-            jpp_gid = "JPP/%s" % basename(dirname(jar_path))
-            jpp_aid = basename(jar_path)[:-4]
+            if '/' not in jarpart:
+                raise IncompatibleFilenames(pom_path, jar_path)
+            jpp_gid = "JPP/%s" % dirname(jarpart)
+            jpp_aid = basename(jarpart)[:-4]
             # we assert that jar and pom parts match
             if not pomname == "JPP.%s-%s.pom" % (jpp_gid[4:], jpp_aid):
                 raise IncompatibleFilenames(pom_path, jar_path)
         else:
+            if '/' in jarpart:
+                raise IncompatibleFilenames(pom_path, jar_path)
             jpp_gid = "JPP"
-            jpp_aid = basename(jar_path)[:-4]
+            jpp_aid = basename(jarpart)[:-4]
             # we assert that jar and pom parts match
             if not pomname == "JPP-%s.pom" % jpp_aid:
                 raise IncompatibleFilenames(pom_path, jar_path)


More information about the java-sig-commits mailing list