[java-sig-commits] [javapackages] add_maven_depmap: make JARs and POMs versioned in maven_depmap.py, not in macros.fjava

Michal Srb msrb at fedoraproject.org
Thu Sep 26 15:07:50 UTC 2013


commit 7e62e2ed926f297cb4a7f369481dfd9c36bdeab1
Author: Michal Srb <msrb at redhat.com>
Date:   Thu Sep 26 11:20:02 2013 +0200

    add_maven_depmap: make JARs and POMs versioned in maven_depmap.py,
    not in macros.fjava

 etc/macros.fjava           |   26 -------------------
 java-utils/maven_depmap.py |   59 ++++++++++++++++++++++++++++++++++++++++---
 2 files changed, 54 insertions(+), 31 deletions(-)
---
diff --git a/etc/macros.fjava b/etc/macros.fjava
index dfe0845..0b4914a 100644
--- a/etc/macros.fjava
+++ b/etc/macros.fjava
@@ -76,33 +76,7 @@ python -m %{_javadir}-utils/maven_depmap %{-a} %{-v*:-r %{-v*}} \\\
           "${_jpath}" \\\
 %endif \
         >> ${_filelist} \
-# this part only works for jars for now (now war/other compat support) \
-if [[ -n "%{-v}" ]]; then \
-mv %{buildroot}%{_mavenpomdir}/$_pompart \\\
-   %{buildroot}%{_mavenpomdir}/${_pompart/.pom/-%{version}.pom} \
-if [ -f "${_jpath}" ]; then \
-    mv ${_jpath} ${_jpath/.jar/-%{version}.jar} \
-fi \
-for ver in $(echo %{-v*} | tr ',' '\\n');do \
- ln -s ${_pompart/.pom/-%{version}.pom} \\\
-       %{buildroot}%{_mavenpomdir}/${_pompart/.pom/-$ver.pom} \
- echo %{_mavenpomdir}/${_pompart/.pom/-$ver.pom} >>${_filelist} \
- # we can have pom-only artifacts \
- if [ -f "${_jpath/.jar/-%{version}.jar}" ];then \
-       ln -s $(basename ${_jpath/.jar/-%{version}.jar}) \\\
-             ${_jpath/.jar/-$ver.jar} \
-       echo ${_jpath/.jar/-$ver.jar} >>${_filelist} \
- fi \
-done \
-# remove unversioned jar and pom from .mfiles \
-if [[ -n "${_jpath}" ]]; then \
- _jpath="${_jpath#%{buildroot}}" \
- sed -i "s:${_jpath/-%{version}.jar/.jar}::" ${_filelist} \
-fi \
-sed -i "s:%{_mavenpomdir}/${_pompart/-$ver.pom/.pom}::" ${_filelist} \
-fi \
 sed -i 's:%{buildroot}::' ${_filelist} \
-sed -i '/^$/d' ${_filelist} \
 sort -u -o ${_filelist} ${_filelist} \
 \
 %{nil}
diff --git a/java-utils/maven_depmap.py b/java-utils/maven_depmap.py
index 1549f80..bb8c32c 100644
--- a/java-utils/maven_depmap.py
+++ b/java-utils/maven_depmap.py
@@ -39,6 +39,7 @@ from optparse import OptionParser
 import sys
 import os
 import re
+import shutil
 from StringIO import StringIO
 import xml.dom.minidom
 import codecs
@@ -143,6 +144,47 @@ def _get_file_extension(jar_path, artifactId):
     else:
         raise UnknownFileExtension(jar_path)
 
+def _make_files_versioned(versions, pom_path, jar_path):
+    """Make pom and jar file versioned"""
+    versions = set(versions.split(','))
+
+    vpom_path = pom_path
+    vjar_path = jar_path
+
+    # pom
+    if ':' not in vpom_path:
+        root, ext = os.path.splitext(vpom_path)
+        symlink = False
+        for ver in versions:
+            dest = "%s-%s%s" % (root, ver, ext)
+            if not symlink:
+                shutil.copy(os.path.realpath(vpom_path), dest)
+                symlink = True
+                vpom_path = dest
+            else:
+                os.symlink(basename(vpom_path), dest)
+            # output file path for file lists
+            print dest
+        # remove unversioned pom
+        os.remove(pom_path)
+
+    # jar
+    if vjar_path:
+        root, ext = os.path.splitext(vjar_path)
+        symlink = False
+        for ver in versions:
+            dest = "%s-%s%s" % (root, ver, ext)
+            if not symlink:
+                shutil.copy(os.path.realpath(vjar_path), dest)
+                symlink = True
+                vjar_path = dest
+            else:
+                os.symlink(basename(vjar_path), dest)
+            # output file path for file lists
+            print dest
+        # remove unversioned jar
+        os.remove(jar_path)
+
 def get_local_artifact(upstream_artifact, prefix, jar_path=None):
     if not jar_path:
         # does this even make sense? There is no pom, no dependencies...
@@ -330,16 +372,23 @@ if __name__ == "__main__":
     else:
         fragment = parse_pom(pom_path, prefix)
 
-    # output file paths for file lists
+    # output file path for file lists
     print fragment_path
-    if ':' not in pom_path:
-        print pom_path
-    if jar_path:
-        print jar_path
 
     if fragment:
         mappings = create_mappings(fragment, append_deps, namespace)
         output_fragment(fragment_path, fragment, mappings, add_versions)
+
+        if add_versions:
+            add_versions = "%s,%s" % (fragment.upstream_artifact.version, add_versions)
+            _make_files_versioned(add_versions, pom_path, jar_path)
+        else:
+            # output file paths for file lists
+            if ':' not in pom_path:
+                print pom_path
+            if jar_path:
+                print jar_path
+
     else:
         parser.error("Problem parsing POM file. Is it valid maven POM? Send bugreport \
         to https://fedorahosted.org/javapackages/ and attach %s to \


More information about the java-sig-commits mailing list