[java-sig-commits] [javapackages] Generate maven provides from fragments instead of poms

Stanislav Ochotnicky sochotni at fedoraproject.org
Tue Mar 6 13:30:58 UTC 2012


commit c6fe42f05478dafee2de51cbfb9e002a81479f03
Author: Stanislav Ochotnicky <sochotnicky at redhat.com>
Date:   Tue Mar 6 14:26:32 2012 +0100

    Generate maven provides from fragments instead of poms
    
    This means we will finally have complete information in provides.
    Before this change a use of
      add_maven_depmap ... -a "x:y"
    Would not generate "mvn(x:y)" rpm provides. Now it does

 depgenerators/fileattrs/maven.attr |    2 +-
 depgenerators/maven.prov           |   37 ++++++++++++++++++-----------------
 2 files changed, 20 insertions(+), 19 deletions(-)
---
diff --git a/depgenerators/fileattrs/maven.attr b/depgenerators/fileattrs/maven.attr
index b8753a0..526fd45 100644
--- a/depgenerators/fileattrs/maven.attr
+++ b/depgenerators/fileattrs/maven.attr
@@ -1,4 +1,4 @@
 %__maven_provides	%{_rpmconfigdir}/maven.prov
 #%__maven_requires	%{_rpmconfigdir}/maven.req
-%__maven_path	^%{_datadir}/maven-poms/.*\.pom
+%__maven_path	^%{_datadir}/maven-fragments/.*
 
diff --git a/depgenerators/maven.prov b/depgenerators/maven.prov
index d9ea469..5c53e7b 100644
--- a/depgenerators/maven.prov
+++ b/depgenerators/maven.prov
@@ -28,36 +28,37 @@
 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #
 # Authors: Alexander Kurtakov <akurtako at redhat.com>
+#          Stanislav Ochotnicky <sochotnicky at redhat.com>
 
 import sys
-import xml.etree.ElementTree as ET
+from xml.etree.ElementTree import fromstring
+from StringIO import StringIO
 
 class TagBuilder:
     mavenns = "{http://maven.apache.org/POM/4.0.0}"
-    
+
     def __init__ (self, filelist=None):
         if filelist == None:
             filelist = sys.stdin
         paths = map (lambda x: x.rstrip (), filelist.readlines ())
         for path in paths:
 	        self.get_mvn_provide (path)
-	  
+
     def get_mvn_provide (self, path):
-        doc = ET.parse(path)
-        artifactId = doc.getroot().findtext("%sartifactId"%(self.mavenns))
-        if artifactId is None:
-            artifactId = doc.getroot().findtext("artifactId")
-        if artifactId is None:
-            return
-        groupId = doc.getroot().findtext("%sgroupId"%(self.mavenns))
-        if groupId is None:
-            groupId = doc.getroot().findtext("groupId")
-        if groupId is None:
-            groupId = doc.getroot().findtext("%sparent/%sgroupId"%(self.mavenns, self.mavenns))
-        if groupId is None:
-            groupId = doc.getroot().findtext("parent/groupId")
-        if groupId is not None:
-            print "mvn(%s:%s)" %(groupId, artifactId)
+        buf = StringIO()
+        buf.write('<fragments>\n')
+        with open(path) as f:
+            buf.write(f.read())
+        buf.write('</fragments>')
+        fragments = buf.getvalue()
+        doc = fromstring(fragments)
+
+        for depmap in doc.getchildren():
+            for dep_part in depmap.getchildren():
+                if dep_part.tag == 'maven':
+                    groupId = dep_part.findtext("groupId")
+                    artifactId = dep_part.findtext("artifactId")
+                    print "mvn(%s:%s)" %(groupId, artifactId)
 
 if __name__ == "__main__":
     builder = TagBuilder ()


More information about the java-sig-commits mailing list