From 6936f08ac2cb28b92412deaea61af3adb0f136b885228af5564c70943eca114e Mon Sep 17 00:00:00 2001 From: Fridrich Strba Date: Thu, 7 Jul 2022 07:04:41 +0000 Subject: [PATCH] Accepting request 987337 from Java:packages:test 6.1.0 OBS-URL: https://build.opensuse.org/request/show/987337 OBS-URL: https://build.opensuse.org/package/show/Java:packages/javapackages-tools?expand=0&rev=107 --- ....py-generate-metadata-with-dependenc.patch | 81 - ...nstruct-POM-from-maven-coordinate-st.patch | 29 - ...r-the-recent-maven_depmap.py-changes.patch | 136 - ...endency-on-Six-compatibility-library.patch | 473 -- 5.3.1.tar.gz | 3 - 6.1.0.tar.gz | 3 + javapackages-6.1.0-maven-depmap.patch | 4441 +++++++++++++++++ javapackages-tools.changes | 67 + javapackages-tools.spec | 27 +- python-optional.patch | 8 +- suse-use-libdir.patch | 25 +- 11 files changed, 4522 insertions(+), 771 deletions(-) delete mode 100644 0001-Let-maven_depmap.py-generate-metadata-with-dependenc.patch delete mode 100644 0002-Do-not-try-to-construct-POM-from-maven-coordinate-st.patch delete mode 100644 0003-Fix-tests-after-the-recent-maven_depmap.py-changes.patch delete mode 100644 0004-Remove-dependency-on-Six-compatibility-library.patch delete mode 100644 5.3.1.tar.gz create mode 100644 6.1.0.tar.gz create mode 100644 javapackages-6.1.0-maven-depmap.patch diff --git a/0001-Let-maven_depmap.py-generate-metadata-with-dependenc.patch b/0001-Let-maven_depmap.py-generate-metadata-with-dependenc.patch deleted file mode 100644 index 9fd8e29..0000000 --- a/0001-Let-maven_depmap.py-generate-metadata-with-dependenc.patch +++ /dev/null @@ -1,81 +0,0 @@ -From d2db56cd30a48bd2ece7a5112e67c80417406a36 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Fridrich=20=C5=A0trba?= -Date: Fri, 29 Apr 2022 12:08:21 +0200 -Subject: [PATCH 1/3] Let maven_depmap.py generate metadata with dependencies - under certain circumstances - ---- - java-utils/maven_depmap.py | 43 +++++++++++++++++++++++++++++++++++++- - 1 file changed, 42 insertions(+), 1 deletion(-) - -diff --git a/java-utils/maven_depmap.py b/java-utils/maven_depmap.py -index 92e0ff4c..f684a728 100644 ---- a/java-utils/maven_depmap.py -+++ b/java-utils/maven_depmap.py -@@ -49,6 +49,7 @@ from copy import deepcopy - from javapackages.maven.pom import POM - from javapackages.metadata.artifact import MetadataArtifact - from javapackages.metadata.alias import MetadataAlias -+from javapackages.metadata.dependency import MetadataDependency - from javapackages.metadata.metadata import Metadata - - from javapackages.common.exception import JavaPackagesToolsException -@@ -132,6 +133,38 @@ def _make_files_versioned(versions, pom_path, jar_path, pom_base, jar_base): - # return paths to versioned, but regular files (not symlinks) - return ret_pom_path, ret_jar_path - -+def _resolve_deps(pom): -+ deps = [] -+ depm = [] -+ props = {} -+ -+ deps.extend([x for x in pom.dependencies]) -+ depm.extend([x for x in pom.dependencyManagement]) -+ props = pom.properties -+ if pom.groupId: -+ props["project.groupId"] = pom.groupId -+ if pom.artifactId: -+ props["project.artifactId"] = pom.artifactId -+ if pom.version: -+ props["project.version"] = pom.version -+ -+ for d in deps: -+ d.interpolate(props) -+ -+ for dm in depm: -+ dm.interpolate(props) -+ -+ # apply dependencyManagement on deps -+ for d in deps: -+ for dm in depm: -+ if d.compare_to(dm): -+ d.merge_with(dm) -+ break -+ -+ # only deps with scope "compile" or "runtime" are interesting -+ deps = [x for x in deps if x.scope in ["", "compile", "runtime"]] -+ -+ return deps - - # Add a file to a ZIP archive (or JAR, WAR, ...) unless the file - # already exists in the archive. Provided by Tomas Radej. -@@ -279,7 +312,15 @@ def _main(): - if namespace: - artifact.namespace = namespace - -- artifact.properties["xmvn.resolver.disableEffectivePom"] = "true" -+ pom = POM(pom_path) -+ if pom.parent or pom.packaging == "pom": -+ artifact.properties["xmvn.resolver.disableEffectivePom"] = "true" -+ else: -+ deps = [] -+ for d in _resolve_deps(pom): -+ deps.append(MetadataDependency.from_mvn_dependency(d)) -+ if deps: -+ artifact.dependencies = set(deps) - - - buildroot = os.environ.get('RPM_BUILD_ROOT') --- -2.36.0 - diff --git a/0002-Do-not-try-to-construct-POM-from-maven-coordinate-st.patch b/0002-Do-not-try-to-construct-POM-from-maven-coordinate-st.patch deleted file mode 100644 index 4856504..0000000 --- a/0002-Do-not-try-to-construct-POM-from-maven-coordinate-st.patch +++ /dev/null @@ -1,29 +0,0 @@ -From c0a4b557eb9a3b20c36fabe67ffac953ba78d2a5 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Fridrich=20=C5=A0trba?= -Date: Fri, 29 Apr 2022 13:27:10 +0200 -Subject: [PATCH 2/3] Do not try to construct POM from maven coordinate string - ---- - java-utils/maven_depmap.py | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/java-utils/maven_depmap.py b/java-utils/maven_depmap.py -index f684a728..367632e6 100644 ---- a/java-utils/maven_depmap.py -+++ b/java-utils/maven_depmap.py -@@ -312,8 +312,10 @@ def _main(): - if namespace: - artifact.namespace = namespace - -- pom = POM(pom_path) -- if pom.parent or pom.packaging == "pom": -+ pom = None -+ if have_pom: -+ pom = POM(pom_path) -+ if not pom or pom.parent or pom.packaging == "pom": - artifact.properties["xmvn.resolver.disableEffectivePom"] = "true" - else: - deps = [] --- -2.36.0 - diff --git a/0003-Fix-tests-after-the-recent-maven_depmap.py-changes.patch b/0003-Fix-tests-after-the-recent-maven_depmap.py-changes.patch deleted file mode 100644 index b1f856d..0000000 --- a/0003-Fix-tests-after-the-recent-maven_depmap.py-changes.patch +++ /dev/null @@ -1,136 +0,0 @@ -From 527108b4d064417ab41da7abd70a47f58fcf91d6 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Fridrich=20=C5=A0trba?= -Date: Fri, 29 Apr 2022 13:27:33 +0200 -Subject: [PATCH 3/3] Fix tests after the recent maven_depmap.py changes - ---- - test/data/maven_depmap/test_alias_extension-want.xml | 6 ------ - test/data/maven_depmap/test_basic-want.xml | 6 ------ - test/data/maven_depmap/test_buildroot-want.xml | 6 ------ - test/data/maven_depmap/test_versioned_with_pom-want.xml | 6 ------ - test/data/maven_depmap/test_war-want.xml | 6 ------ - 5 files changed, 30 deletions(-) - -diff --git a/test/data/maven_depmap/test_alias_extension-want.xml b/test/data/maven_depmap/test_alias_extension-want.xml -index 6b0d1aee..d502fdf8 100644 ---- a/test/data/maven_depmap/test_alias_extension-want.xml -+++ b/test/data/maven_depmap/test_alias_extension-want.xml -@@ -13,9 +13,6 @@ - - - %s/usr/share/java/commons-io.jar -- -- true -- - - - alias -@@ -30,9 +27,6 @@ - - - %s/JPP-alias.pom -- -- true -- - - - -diff --git a/test/data/maven_depmap/test_basic-want.xml b/test/data/maven_depmap/test_basic-want.xml -index 540f076a..200044bf 100644 ---- a/test/data/maven_depmap/test_basic-want.xml -+++ b/test/data/maven_depmap/test_basic-want.xml -@@ -6,9 +6,6 @@ - bndlib - 1.50.0 - %s/usr/share/java/bndlib.jar -- -- true -- - - - biz.aQute -@@ -16,9 +13,6 @@ - pom - 1.50.0 - %s/JPP-bndlib.pom -- -- true -- - - - -diff --git a/test/data/maven_depmap/test_buildroot-want.xml b/test/data/maven_depmap/test_buildroot-want.xml -index 604046a5..9fa588d4 100644 ---- a/test/data/maven_depmap/test_buildroot-want.xml -+++ b/test/data/maven_depmap/test_buildroot-want.xml -@@ -7,9 +7,6 @@ - 17 - war - %s/usr/share/java/commons-war.war -- -- true -- - - - commons -@@ -17,9 +14,6 @@ - 17 - pom - /usr/share/maven-poms/JPP-commons-war.pom -- -- true -- - - - -diff --git a/test/data/maven_depmap/test_versioned_with_pom-want.xml b/test/data/maven_depmap/test_versioned_with_pom-want.xml -index c2b344e1..8d259ab9 100644 ---- a/test/data/maven_depmap/test_versioned_with_pom-want.xml -+++ b/test/data/maven_depmap/test_versioned_with_pom-want.xml -@@ -9,9 +9,6 @@ - 2013.10 - - %s/usr/share/java/testversioned-2013.10.jar -- -- true -- - - - alias -@@ -22,9 +19,6 @@ - 2013.10 - - %s/JPP-testversioned-2013.10.pom -- -- true -- - - - -diff --git a/test/data/maven_depmap/test_war-want.xml b/test/data/maven_depmap/test_war-want.xml -index cac27a84..e8e2e56b 100644 ---- a/test/data/maven_depmap/test_war-want.xml -+++ b/test/data/maven_depmap/test_war-want.xml -@@ -7,9 +7,6 @@ - 17 - war - %s/usr/share/java/commons-war.war -- -- true -- - - - commons -@@ -17,9 +14,6 @@ - pom - 17 - %s/JPP-commons-war.pom -- -- true -- - - - --- -2.36.0 - diff --git a/0004-Remove-dependency-on-Six-compatibility-library.patch b/0004-Remove-dependency-on-Six-compatibility-library.patch deleted file mode 100644 index a428bd8..0000000 --- a/0004-Remove-dependency-on-Six-compatibility-library.patch +++ /dev/null @@ -1,473 +0,0 @@ -From 06018a8e30d8b781b7b2937fa7c579a5c0758d57 Mon Sep 17 00:00:00 2001 -From: Mikolaj Izdebski -Date: Thu, 23 Jul 2020 10:22:52 +0200 -Subject: [PATCH] Remove dependency on Six compatibility library - -Python 2 support was dropped, so use of Six is no longer needed. ---- - Vagrantfile | 1 - - java-utils/builddep.py | 2 -- - java-utils/mvn_alias.py | 3 --- - java-utils/mvn_artifact.py | 3 --- - java-utils/mvn_build.py | 4 +--- - java-utils/mvn_compat_version.py | 2 -- - java-utils/mvn_config.py | 2 -- - java-utils/mvn_file.py | 2 -- - java-utils/mvn_package.py | 2 -- - java-utils/pom_editor.py | 7 +++---- - javapackages-tools.spec | 2 -- - python/javapackages/common/binding.py | 14 ++++++-------- - python/javapackages/common/util.py | 8 -------- - python/javapackages/maven/artifact.py | 5 ++--- - python/javapackages/metadata/artifact.py | 3 +-- - python/javapackages/metadata/dependency.py | 4 +--- - python/javapackages/xmvn/xmvn_config.py | 5 ++--- - requirements.txt | 1 - - test/maven_depmap_test.py | 5 ++--- - 19 files changed, 18 insertions(+), 57 deletions(-) - -diff --git a/Vagrantfile b/Vagrantfile -index 64235dc9..095d9065 100644 ---- a/Vagrantfile -+++ b/Vagrantfile -@@ -12,7 +12,6 @@ dnf install -y \ - xmlto \ - python{,3} \ - python{,3}-lxml \ -- python{,3}-six \ - python{,3}-nose \ - python{,3}-coverage - SCRIPT -diff --git a/java-utils/builddep.py b/java-utils/builddep.py -index fda36d2d..695e22dc 100644 ---- a/java-utils/builddep.py -+++ b/java-utils/builddep.py -@@ -35,7 +35,6 @@ - - from javapackages.maven.artifact import (Artifact, ArtifactFormatException, - ArtifactValidationException) --from javapackages.common.util import args_to_unicode - from javapackages.common.exception import JavaPackagesToolsException - - from lxml import etree -@@ -53,7 +52,6 @@ def format_epilog(self, formatter): - if __name__ == "__main__": - parser = SaneParser(usage=usage, - epilog=epilog) -- sys.argv = args_to_unicode(sys.argv) - - (options, args) = parser.parse_args() - if len(args) != 1: -diff --git a/java-utils/mvn_alias.py b/java-utils/mvn_alias.py -index 4979a17a..86d527de 100644 ---- a/java-utils/mvn_alias.py -+++ b/java-utils/mvn_alias.py -@@ -36,7 +36,6 @@ - from javapackages.maven.artifact import (Artifact, ArtifactFormatException, - ArtifactValidationException) - from javapackages.xmvn.xmvn_config import XMvnConfig --from javapackages.common.util import args_to_unicode - from javapackages.common.exception import JavaPackagesToolsException - - -@@ -65,8 +64,6 @@ def format_epilog(self, formatter): - parser = SaneParser(usage=usage, - epilog=epilog) - -- sys.argv = args_to_unicode(sys.argv) -- - (options, args) = parser.parse_args() - if len(args) < 2: - parser.error("At least 2 arguments are required") -diff --git a/java-utils/mvn_artifact.py b/java-utils/mvn_artifact.py -index d135adf2..11cd6fb2 100644 ---- a/java-utils/mvn_artifact.py -+++ b/java-utils/mvn_artifact.py -@@ -42,7 +42,6 @@ - - from javapackages.xmvn.xmvn_resolve import (XMvnResolve, ResolutionRequest, - XMvnResolveException) --from javapackages.common.util import args_to_unicode - from javapackages.common.exception import JavaPackagesToolsException - - import sys -@@ -240,8 +239,6 @@ def _main(): - parser.add_option("-D", action="append", type="str", - help="add artifact property", metavar="property=value") - -- sys.argv = args_to_unicode(sys.argv) -- - (options, args) = parser.parse_args() - if len(args) < 1: - parser.error("At least 1 argument is required") -diff --git a/java-utils/mvn_build.py b/java-utils/mvn_build.py -index 720787de..666d791b 100644 ---- a/java-utils/mvn_build.py -+++ b/java-utils/mvn_build.py -@@ -41,7 +41,7 @@ - - from javapackages.maven.artifact import Artifact - from javapackages.xmvn.xmvn_config import XMvnConfig --from javapackages.common.util import args_to_unicode, command_exists -+from javapackages.common.util import command_exists - from javapackages.common.mock import socket_path as mock_socket - - -@@ -102,8 +102,6 @@ def goal_callback(option, opt_str, value, parser): - action="store_true", - help="Use experimental XMvn javadoc MOJO to generate javadocs.") - -- sys.argv = args_to_unicode(sys.argv) -- - (options, args) = parser.parse_args() - xc = XMvnConfig() - -diff --git a/java-utils/mvn_compat_version.py b/java-utils/mvn_compat_version.py -index e4afdbd7..9646bda5 100644 ---- a/java-utils/mvn_compat_version.py -+++ b/java-utils/mvn_compat_version.py -@@ -36,7 +36,6 @@ - from javapackages.maven.artifact import (Artifact, ArtifactFormatException, - ArtifactValidationException) - from javapackages.xmvn.xmvn_config import XMvnConfig --from javapackages.common.util import args_to_unicode - from javapackages.common.exception import JavaPackagesToolsException - - -@@ -64,7 +63,6 @@ def format_epilog(self, formatter): - if __name__ == "__main__": - parser = SaneParser(usage=usage, - epilog=epilog) -- sys.argv = args_to_unicode(sys.argv) - - (options, args) = parser.parse_args() - if len(args) < 2: -diff --git a/java-utils/mvn_config.py b/java-utils/mvn_config.py -index 7597761e..ee6a788d 100644 ---- a/java-utils/mvn_config.py -+++ b/java-utils/mvn_config.py -@@ -34,7 +34,6 @@ - import optparse - - from javapackages.xmvn.xmvn_config import XMvnConfig --from javapackages.common.util import args_to_unicode - from javapackages.common.exception import JavaPackagesToolsException - - -@@ -60,7 +59,6 @@ def format_epilog(self, formatter): - if __name__ == "__main__": - parser = SaneParser(usage=usage, - epilog=epilog) -- sys.argv = args_to_unicode(sys.argv) - - (options, args) = parser.parse_args() - if len(args) != 2: -diff --git a/java-utils/mvn_file.py b/java-utils/mvn_file.py -index 39d1348f..87eab376 100644 ---- a/java-utils/mvn_file.py -+++ b/java-utils/mvn_file.py -@@ -36,7 +36,6 @@ - from javapackages.maven.artifact import (Artifact, ArtifactFormatException, - ArtifactValidationException) - from javapackages.xmvn.xmvn_config import XMvnConfig, XMvnConfigException --from javapackages.common.util import args_to_unicode - from javapackages.common.exception import JavaPackagesToolsException - - -@@ -64,7 +63,6 @@ def format_epilog(self, formatter): - if __name__ == "__main__": - parser = SaneParser(usage=usage, - epilog=epilog) -- sys.argv = args_to_unicode(sys.argv) - - (options, args) = parser.parse_args() - if len(args) < 2: -diff --git a/java-utils/mvn_package.py b/java-utils/mvn_package.py -index b74da128..a016e057 100644 ---- a/java-utils/mvn_package.py -+++ b/java-utils/mvn_package.py -@@ -36,7 +36,6 @@ - from javapackages.maven.artifact import (Artifact, ArtifactFormatException, - ArtifactValidationException) - from javapackages.xmvn.xmvn_config import XMvnConfig --from javapackages.common.util import args_to_unicode - from javapackages.common.exception import JavaPackagesToolsException - - -@@ -64,7 +63,6 @@ def format_epilog(self, formatter): - if __name__ == "__main__": - parser = SaneParser(usage=usage, - epilog=epilog) -- sys.argv = args_to_unicode(sys.argv) - - (options, args) = parser.parse_args() - -diff --git a/java-utils/pom_editor.py b/java-utils/pom_editor.py -index 82a555b8..adae6e90 100644 ---- a/java-utils/pom_editor.py -+++ b/java-utils/pom_editor.py -@@ -5,7 +5,6 @@ - import shutil - import sys - import optparse --import six - import io - - from lxml import etree -@@ -53,7 +52,7 @@ def from_mvn_str(cls, string): - return cls(**values) - - def update(self, artifact): -- for key, value in six.iteritems(artifact.values): -+ for key, value in artifact.values.items(): - if key not in parts: - raise KeyError(key + ' not defined') - if value: -@@ -120,7 +119,7 @@ class AttributeArtifact(Artifact): - @classmethod - def from_xml(cls, element): - values = dict([(key, val) for key, val -- in six.iteritems(element.attrib) if key in parts]) -+ in element.attrib.items() if key in parts]) - return cls(**values) - - def get_xml(self, node='artifact', extra=''): -@@ -355,7 +354,7 @@ def make_path(self, node, elements): - children = node.xpath(elem, namespaces=self.NSMAP) - if not children: - name = elements[0] -- for ns, url in six.iteritems(self.NSMAP): -+ for ns, url in self.NSMAP.items(): - ns_token = ns + ':' - url_token = '{' + url + '}' - name = name.replace(ns_token, url_token) -diff --git a/javapackages-tools.spec b/javapackages-tools.spec -index 65f34274..b221f5ca 100644 ---- a/javapackages-tools.spec -+++ b/javapackages-tools.spec -@@ -45,7 +45,6 @@ BuildRequires: %{python_prefix}-devel - BuildRequires: %{python_prefix}-lxml - BuildRequires: %{python_prefix}-setuptools - BuildRequires: %{python_prefix}-nose --BuildRequires: %{python_prefix}-six - - Requires: %{?scl_prefix}javapackages-filesystem = %{version}-%{release} - Requires: coreutils -@@ -122,7 +121,6 @@ artifact resolution using XMvn resolver. - %package -n %{?scl_prefix}%{python_prefix}-javapackages - Summary: Module for handling various files for Java packaging - Requires: %{python_prefix}-lxml --Requires: %{python_prefix}-six - Obsoletes: %{?scl_prefix}python-javapackages < %{version}-%{release} - - %description -n %{?scl_prefix}%{python_prefix}-javapackages -diff --git a/python/javapackages/common/binding.py b/python/javapackages/common/binding.py -index 550d9f97..f646e229 100644 ---- a/python/javapackages/common/binding.py -+++ b/python/javapackages/common/binding.py -@@ -30,8 +30,6 @@ - # - # Authors: Michael Simacek - --import six -- - from lxml import etree - from copy import deepcopy - -@@ -46,9 +44,9 @@ def _get_item_type(spec): - spec = tuple(spec) - ret = spec[0] - if len(spec) == 1: -- if isinstance(spec[0], six.string_types): -+ if isinstance(spec[0], str): - ret = str -- elif isinstance(spec[0], six.string_types): -+ elif isinstance(spec[0], str): - ret = spec[1] - assert isinstance(ret, type), ret - return ret -@@ -62,12 +60,12 @@ def _get_item_name(spec): - ret = spec[0].element_name - elif len(spec) == 2 and isinstance(spec[0], type): - ret = spec[1] -- assert isinstance(ret, six.string_types), ret -+ assert isinstance(ret, str), ret - return ret - - - def _is_element(node): -- return isinstance(node.tag, six.string_types) -+ return isinstance(node.tag, str) - - def _localname(element): - return etree.QName(element.tag).localname -@@ -86,7 +84,7 @@ def from_element(for_type, element): - if for_type is dict: - new = {} - for child in element: -- if isinstance(child.tag, six.string_types): -+ if isinstance(child.tag, str): - name = _localname(child) - value = from_element(str, child) - new[name] = value -@@ -114,7 +112,7 @@ def _make_element(name, ns=None): - return etree.Element(name) - - def to_element(obj, name=None, type_spec=None, ns=None): -- if isinstance(obj, six.string_types): -+ if isinstance(obj, str): - element = _make_element(name, ns=ns) - element.text = obj - return element -diff --git a/python/javapackages/common/util.py b/python/javapackages/common/util.py -index d9b349a6..4c966687 100644 ---- a/python/javapackages/common/util.py -+++ b/python/javapackages/common/util.py -@@ -34,7 +34,6 @@ - import os - import signal - import sys --import six - import subprocess - import logging - import re -@@ -60,13 +59,6 @@ def kill_parent_process(rpmconf): - sys.exit(1) - - --def args_to_unicode(args): -- if six.PY2: -- for index, arg in enumerate(args): -- args[index] = arg.decode(sys.getfilesystemencoding()) -- return args -- -- - def execute_command(command, input=None): - proc = subprocess.Popen([command], shell=True, - stdout=subprocess.PIPE, stderr=subprocess.PIPE, -diff --git a/python/javapackages/maven/artifact.py b/python/javapackages/maven/artifact.py -index e79cd014..6ba3ee6f 100644 ---- a/python/javapackages/maven/artifact.py -+++ b/python/javapackages/maven/artifact.py -@@ -33,7 +33,6 @@ - # Michal Srb - - import re --import six - - import javapackages.maven.pomreader as POMReader - import javapackages.common.strutils as Printer -@@ -190,7 +189,7 @@ def interpolate(self, properties): - for member in self.__dict__: - if (not member.startswith('_') and - getattr(self, member) and -- isinstance(getattr(self, member), six.string_types)): -+ isinstance(getattr(self, member), str)): - curr_value = getattr(self, member) - prog = re.compile("\$\{([^}]+)\}") - props = prog.findall(curr_value) -@@ -205,7 +204,7 @@ def interpolate(self, properties): - return leftovers - - def __unicode__(self): -- return six.text_type(self.get_mvn_str()) -+ return self.get_mvn_str() - - def __str__(self): - return self.__unicode__() -diff --git a/python/javapackages/metadata/artifact.py b/python/javapackages/metadata/artifact.py -index 3593d76d..72e57e62 100644 ---- a/python/javapackages/metadata/artifact.py -+++ b/python/javapackages/metadata/artifact.py -@@ -42,7 +42,6 @@ - - from javapackages.common.binding import ObjectBinding - --import six - import os - - -@@ -133,7 +132,7 @@ def get_rpm_str(self, namespace=None, pkg_ver=None): - return "\n".join(result) - - def __unicode__(self): -- return six.text_type(self.get_mvn_str()) -+ return self.get_mvn_str() - - def __str__(self): - return self.__unicode__() -diff --git a/python/javapackages/metadata/dependency.py b/python/javapackages/metadata/dependency.py -index 8f843af4..1e553ac3 100644 ---- a/python/javapackages/metadata/dependency.py -+++ b/python/javapackages/metadata/dependency.py -@@ -37,8 +37,6 @@ - - from javapackages.common.binding import ObjectBinding - --import six -- - - class MetadataDependency(ObjectBinding): - element_name = 'dependency' -@@ -100,7 +98,7 @@ def is_skipped(self, skipped_artifacts): - return False - - def __unicode__(self): -- return six.text_type(self.get_mvn_str()) -+ return self.get_mvn_str() - - def __str__(self): - return self.__unicode__() -diff --git a/python/javapackages/xmvn/xmvn_config.py b/python/javapackages/xmvn/xmvn_config.py -index 66d11344..f2aefbe6 100644 ---- a/python/javapackages/xmvn/xmvn_config.py -+++ b/python/javapackages/xmvn/xmvn_config.py -@@ -34,8 +34,7 @@ - import errno - import os - import re --import six --from six import BytesIO -+from io import BytesIO - - from javapackages.maven.artifact import ArtifactValidationException - from javapackages.common.exception import JavaPackagesToolsException -@@ -131,7 +130,7 @@ def __add_config(self, level1, level2, level3=None, content=None): - if level3: - cont_level = SubElement(level2, level3) - -- if isinstance(content, six.string_types): -+ if isinstance(content, str): - cont_level.text = content - elif isinstance(content, list): - for elem in content: -diff --git a/requirements.txt b/requirements.txt -index db272a8d..ab90481d 100644 ---- a/requirements.txt -+++ b/requirements.txt -@@ -1,2 +1 @@ - lxml --six -diff --git a/test/maven_depmap_test.py b/test/maven_depmap_test.py -index 186ceec1..c21f66d4 100644 ---- a/test/maven_depmap_test.py -+++ b/test/maven_depmap_test.py -@@ -1,6 +1,5 @@ - import inspect - from zipfile import ZipFile --import six - import os - import unittest - import shutil -@@ -68,9 +67,9 @@ def read_archive(self, archive, keep_comments=False): - mf_file = archive.open(filename) - try: - if (keep_comments): -- res[six.text_type(filename)] = mf_file.readlines() -+ res[str(filename)] = mf_file.readlines() - else: -- res[six.text_type(filename)] = \ -+ res[str(filename)] = \ - [line for line in mf_file.readlines() - if not line.startswith(b'#')] - finally: diff --git a/5.3.1.tar.gz b/5.3.1.tar.gz deleted file mode 100644 index 47da8bd..0000000 --- a/5.3.1.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3c2cbead4299ae4e4d0303f5f3d132754f06fd7e6d07526cea3cf992af2d15aa -size 155512 diff --git a/6.1.0.tar.gz b/6.1.0.tar.gz new file mode 100644 index 0000000..076247b --- /dev/null +++ b/6.1.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b31e5d858c7a1d62cc6e95450590a4e4526237403ecfad34d1a39a1f496d673 +size 155816 diff --git a/javapackages-6.1.0-maven-depmap.patch b/javapackages-6.1.0-maven-depmap.patch new file mode 100644 index 0000000..1b9155a --- /dev/null +++ b/javapackages-6.1.0-maven-depmap.patch @@ -0,0 +1,4441 @@ +diff --git a/build b/build +index 8e676f2d..e728aeaf 100755 +--- a/build ++++ b/build +@@ -66,6 +66,7 @@ expand etc/java.conf + expand etc/eclipse.conf + expand macros.d/macros.jpackage + expand macros.d/macros.fjava ++expand macros.d/macros.javapackages-compat + expand java-utils/java-functions + expand depgenerators/maven.req + expand depgenerators/maven.prov +diff --git a/install b/install +index e80db4cf..52c714f4 100755 +--- a/install ++++ b/install +@@ -187,6 +187,12 @@ inst_data target/pom_xpath_remove.7 "${mandir}/man7" + inst_data target/pom_xpath_replace.7 "${mandir}/man7" + inst_data target/pom_xpath_set.7 "${mandir}/man7" + ++exec >files-compat ++ ++inst_data java-utils/install_pom.py "${javadir}-utils" ++inst_data java-utils/maven_depmap.py "${javadir}-utils" ++ ++inst_data target/macros.javapackages-compat "${rpmmacrodir}" + + exec >files-extra + +diff --git a/java-utils/install_pom.py b/java-utils/install_pom.py +new file mode 100644 +index 00000000..e0282773 +--- /dev/null ++++ b/java-utils/install_pom.py +@@ -0,0 +1,261 @@ ++# ++# Copyright (c) 2014-2016, Red Hat, Inc. ++# All rights reserved. ++# ++# Redistribution and use in source and binary forms, with or without ++# modification, are permitted provided that the following conditions ++# are met: ++# ++# 1. Redistributions of source code must retain the above copyright ++# notice, this list of conditions and the following disclaimer. ++# 2. Redistributions in binary form must reproduce the above copyright ++# notice, this list of conditions and the following disclaimer in the ++# documentation and/or other materials provided with the ++# distribution. ++# 3. Neither the name of Red Hat nor the names of its ++# contributors may be used to endorse or promote products derived ++# from this software without specific prior written permission. ++# ++# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++# ++# Authors: Michal Srb ++ ++from javapackages.maven.pom import POM, PomLoadingException ++ ++from javapackages.xmvn.xmvn_resolve import (XMvnResolve, ResolutionRequest, ++ XMvnResolveException) ++from javapackages.common.exception import JavaPackagesToolsException ++ ++import sys ++import os ++from xml.etree import ElementTree ++from optparse import OptionParser ++ ++ ++usage = "usage: %prog " ++epilog = """ ++Resolves pom file from its parents and sanitizes its ++dependencies so that it includes only those that have ++compile or runtime scope. ++ ++Source POM: ++Path where POM file is located. ++ ++Output POM: ++Path where the sanitized POM file will be written to. ++""" ++ ++ ++def get_parent_pom(pom): ++ ++ req = ResolutionRequest(pom.groupId, pom.artifactId, ++ extension="pom", version=pom.version) ++ result = XMvnResolve.process_raw_request([req])[0] ++ if not result: ++ raise XMvnResolveException("Unable to resolve parent POM {g}:{a}:{e}:{v}" ++ .format(g=pom.groupId, a=pom.artifactId, ++ e="pom", v=pom.version)) ++ ++ return POM(result.artifactPath) ++ ++ ++def merge_sections(main, update): ++ for upd in update: ++ for curr in main: ++ if curr.compare_to(upd): ++ curr.merge_with(upd) ++ break ++ else: ++ main.append(upd) ++ ++ ++def get_model_variables(pom): ++ props = {} ++ if pom.groupId: ++ props["project.groupId"] = pom.groupId ++ if pom.artifactId: ++ props["project.artifactId"] = pom.artifactId ++ if pom.version: ++ props["project.version"] = pom.version ++ return props ++ ++ ++def expand_props(deps, props): ++ for d in deps: ++ d.interpolate(props) ++ ++def gather_dependencies(pom_path): ++ pom = POM(pom_path) ++ pom_props = get_model_variables(pom) ++ deps, depm, props = _get_dependencies(pom) ++ # expand project model variables ++ expand_props(deps, pom_props) ++ expand_props(depm, pom_props) ++ ++ curr_pom = pom ++ parent = pom.parent ++ while parent: ++ ppom = None ++ if hasattr(parent, "relativePath") and parent.relativePath != "": ++ try: ++ ppom_path = os.path.join(os.path.dirname(curr_pom._path), ++ parent.relativePath) ++ if os.path.isdir(ppom_path): ++ ppom_path = os.path.join(ppom_path, 'pom.xml') ++ ppom = POM(ppom_path) ++ except PomLoadingException: ++ pass ++ else: ++ try: ++ ppom_path = os.path.join(os.path.dirname(curr_pom._path), '..') ++ if os.path.isdir(ppom_path): ++ ppom_path = os.path.join(ppom_path, 'pom.xml') ++ ppom = POM(ppom_path) ++ except PomLoadingException: ++ pass ++ ++ if not ppom: ++ try: ++ ppom = get_parent_pom(parent) ++ except XMvnResolveException: ++ break ++ ++ parent = ppom.parent ++ pom_props = get_model_variables(ppom) ++ pdeps, pdepm, pprops = _get_dependencies(ppom) ++ expand_props(pdeps, pom_props) ++ expand_props(pdepm, pom_props) ++ ++ # merge "dependencies" sections ++ merge_sections(deps, pdeps) ++ # merge "dependencyManagement" sections ++ merge_sections(depm, pdepm) ++ ++ # merge "properties" sections ++ for pkey in pprops: ++ if pkey not in props: ++ props[pkey] = pprops[pkey] ++ ++ curr_pom = ppom ++ ++ for d in deps: ++ d.interpolate(props) ++ ++ for dm in depm: ++ dm.interpolate(props) ++ ++ # apply dependencyManagement on deps ++ for d in deps: ++ for dm in depm: ++ if d.compare_to(dm): ++ d.merge_with(dm) ++ break ++ ++ # only deps with scope "compile" or "runtime" are interesting ++ deps = [x for x in deps if x.scope in ["", "compile", "runtime"]] ++ ++ return deps ++ ++ ++def _get_dependencies(pom): ++ deps = [] ++ depm = [] ++ props = {} ++ ++ for x in pom.dependencies: ++ if hasattr(x, "version") and x.version == "any": ++ x.version = None ++ deps.append(x) ++ depm.extend([x for x in pom.dependencyManagement]) ++ props = pom.properties ++ ++ return deps, depm, props ++ ++ ++def _main(): ++ OptionParser.format_epilog = lambda self, formatter: self.epilog ++ parser = OptionParser(usage=usage, ++ epilog=epilog) ++ ++ (options, args) = parser.parse_args() ++ if len(args) != 2: ++ parser.error("2 argument2 are required") ++ ++ if not os.path.exists(args[0]): ++ message = ("The first argument '{0}' doesn't point to an existing file ").format(args[0]) ++ parser.error(message) ++ ++ if not os.path.exists(os.path.dirname(os.path.abspath(args[1]))): ++ message = ("The path '{0}' doesn't exist ").format(os.path.dirname(args[1])) ++ parser.error(message) ++ ++ if not os.path.isdir(os.path.dirname(os.path.abspath(args[1]))): ++ message = ("The path '{0}' is not a directory ").format(os.path.dirname(args[1])) ++ parser.error(message) ++ ++ if os.path.exists(args[1]): ++ message = ("The path '{0}' exists. Refusing to overwrite ").format(args[1]) ++ parser.error(message) ++ ++ pom_path = args[0] ++ uart = POM(pom_path) ++ ++ tree = None ++ ElementTree.register_namespace('',"http://maven.apache.org/POM/4.0.0") ++ if uart.packaging and uart.packaging.lower() == 'pom': ++ tree = ElementTree.parse(args[0]) ++ else: ++ result_pom = "\n" ++ result_pom += "\n" ++ result_pom += " 4.0.0\n" ++ result_pom += (" {0}\n" ).format(uart.groupId) ++ result_pom += (" {0}\n" ).format(uart.artifactId) ++ result_pom += (" {0}\n").format(uart.version) ++ ++ if hasattr(uart, "packaging") and uart.packaging != 'jar': ++ result_pom += (" {0}\n").format(uart.packaging) ++ if hasattr(uart, "extension") and uart.extension != 'jar': ++ result_pom += (" {0}\n").format(uart.extension) ++ if hasattr(uart, "classifier") and uart.classifiler != '': ++ result_pom += (" {0}\n").format(uart.classifier) ++ ++ mvn_deps = gather_dependencies(pom_path) ++ if mvn_deps: ++ result_pom += " \n" ++ for d in mvn_deps: ++ result_pom += " \n" ++ result_pom += (" {0}\n").format(d.groupId) ++ result_pom += (" {0}\n" ).format(d.artifactId) ++ if hasattr(d, "version"): ++ result_pom += (" {0}\n" ).format(d.version) ++ if hasattr(d, "extension") and d.extension != 'jar': ++ result_pom += (" {0}\n").format(d.extension) ++ if hasattr(d, "classifier") and d.classifier != '': ++ result_pom += (" {0}\n").format(d.classifier) ++ if hasattr(d, "type") and d.type != '': ++ result_pom += (" {0}\n").format(d.type) ++ if hasattr(d, "optional") and d.optional.lower() == "true": ++ result_pom += (" {0}\n").format(d.optional.lower()) ++ result_pom += " \n" ++ result_pom += " \n" ++ ++ result_pom += "\n" ++ tree = ElementTree.ElementTree(ElementTree.XML(result_pom)) ++ tree.write(args[1],encoding="UTF-8",xml_declaration=True) ++ os.chmod(args[1], 0o0644) ++ ++if __name__ == "__main__": ++ try: ++ _main() ++ except JavaPackagesToolsException as e: ++ sys.exit(e) +diff --git a/java-utils/maven_depmap.py b/java-utils/maven_depmap.py +new file mode 100644 +index 00000000..6a0520fa +--- /dev/null ++++ b/java-utils/maven_depmap.py +@@ -0,0 +1,357 @@ ++# ++# Copyright (c) 2014, Red Hat, Inc. ++# All rights reserved. ++# ++# Redistribution and use in source and binary forms, with or without ++# modification, are permitted provided that the following conditions ++# are met: ++# ++# 1. Redistributions of source code must retain the above copyright ++# notice, this list of conditions and the following disclaimer. ++# 2. Redistributions in binary form must reproduce the above copyright ++# notice, this list of conditions and the following disclaimer in the ++# documentation and/or other materials provided with the ++# distribution. ++# 3. Neither the name of Red Hat nor the names of its ++# contributors may be used to endorse or promote products derived ++# from this software without specific prior written permission. ++# ++# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++# ++# Authors: Stanislav Ochotnicky ++# ++# this script is used by add_maven_depmap rpm macro to generate ++# mapping between maven groupId:artifactId and jar file in our local ++# filesystem (i.e. %{_javadir}) ++# rpm macro expects to find this file as %{_javadir}-utils/maven_depmap.py ++ ++ ++from optparse import OptionParser ++import os ++import shutil ++import sys ++ ++from os.path import basename, dirname ++import zipfile ++from time import gmtime, strftime ++from copy import deepcopy ++ ++from javapackages.maven.pom import POM ++from javapackages.metadata.artifact import MetadataArtifact ++from javapackages.metadata.alias import MetadataAlias ++from javapackages.metadata.dependency import MetadataDependency ++from javapackages.metadata.metadata import Metadata ++ ++from javapackages.common.exception import JavaPackagesToolsException ++ ++ ++class PackagingTypeMissingFile(JavaPackagesToolsException): ++ def __init__(self, pom_path): ++ self.args=("Packaging type is not 'pom' and no artifact path has been provided for POM %s" % pom_path,) ++ ++class IncompatibleFilenames(JavaPackagesToolsException): ++ def __init__(self, pom_path, jar_path): ++ self.args=("Filenames of POM %s and JAR %s does not match properly. Check that JAR subdirectories matches '.' in pom name." % (pom_path, jar_path),) ++ ++class ExtensionsDontMatch(JavaPackagesToolsException): ++ def __init__(self, coordinates_ext, file_ext): ++ self.args=("Extensions don't match: '%s' != '%s'" % (coordinates_ext, file_ext),) ++ ++class MissingJarFile(JavaPackagesToolsException): ++ def __init__(self): ++ self.args=("JAR seems to be missing in standard directories. Make sure you have installed it",) ++ ++class UnknownFileExtension(JavaPackagesToolsException): ++ def __init__(self, jar_path): ++ self.args=("Unknown file extension: %s" % (jar_path),) ++ ++ ++def _print_path_with_dirs(path, base): ++ print(path) ++ path = dirname(path) ++ while path != base and path != '/': ++ print("%dir " + path) ++ path = dirname(path) ++ ++ ++def _make_files_versioned(versions, pom_path, jar_path, pom_base, jar_base): ++ """Make pom and jar file versioned""" ++ versions = sorted(set(versions.split(','))) ++ ++ vpom_path = pom_path ++ vjar_path = jar_path ++ ++ ret_pom_path = pom_path ++ ret_jar_path = jar_path ++ ++ # pom ++ if ':' not in vpom_path: ++ root, ext = os.path.splitext(vpom_path) ++ symlink = False ++ for ver in sorted(versions): ++ dest = "%s-%s%s" % (root, ver, ext) ++ if not symlink: ++ shutil.copy(os.path.realpath(vpom_path), dest) ++ symlink = True ++ vpom_path = dest ++ ret_pom_path = dest ++ else: ++ os.symlink(basename(vpom_path), dest) ++ # output file path for file lists ++ _print_path_with_dirs(dest, pom_base) ++ # remove unversioned pom ++ os.remove(pom_path) ++ ++ # jar ++ if vjar_path: ++ root, ext = os.path.splitext(vjar_path) ++ symlink = False ++ for ver in sorted(versions): ++ dest = "%s-%s%s" % (root, ver, ext) ++ if not symlink: ++ shutil.copy(os.path.realpath(vjar_path), dest) ++ symlink = True ++ vjar_path = dest ++ ret_jar_path = dest ++ else: ++ os.symlink(basename(vjar_path), dest) ++ # output file path for file lists ++ _print_path_with_dirs(dest, jar_base) ++ # remove unversioned jar ++ os.remove(jar_path) ++ ++ # return paths to versioned, but regular files (not symlinks) ++ return ret_pom_path, ret_jar_path ++ ++def _resolve_deps(pom): ++ deps = [] ++ depm = [] ++ props = {} ++ ++ deps.extend([x for x in pom.dependencies]) ++ depm.extend([x for x in pom.dependencyManagement]) ++ props = pom.properties ++ if pom.groupId: ++ props["project.groupId"] = pom.groupId ++ if pom.artifactId: ++ props["project.artifactId"] = pom.artifactId ++ if pom.version: ++ props["project.version"] = pom.version ++ ++ for d in deps: ++ d.interpolate(props) ++ ++ for dm in depm: ++ dm.interpolate(props) ++ ++ # apply dependencyManagement on deps ++ for d in deps: ++ for dm in depm: ++ if d.compare_to(dm): ++ d.merge_with(dm) ++ break ++ ++ # only deps with scope "compile" or "runtime" are interesting ++ deps = [x for x in deps if x.scope in ["", "compile", "runtime"]] ++ ++ return deps ++ ++# Add a file to a ZIP archive (or JAR, WAR, ...) unless the file ++# already exists in the archive. Provided by Tomas Radej. ++def append_if_missing(archive_name, file_name, file_contents): ++ archive = zipfile.ZipFile(archive_name, 'a') ++ try: ++ if file_name not in archive.namelist(): ++ archive.writestr(file_name, file_contents) ++ finally: ++ archive.close() ++ ++ ++# Inject pom.properties if JAR doesn't have one. This is necessary to ++# identify the origin of JAR files that are present in the repository. ++def inject_pom_properties(jar_path, artifact): ++ if not zipfile.is_zipfile(jar_path): ++ return ++ props_path = "META-INF/maven/{a.groupId}/{a.artifactId}/pom.properties".format(a=artifact) ++ properties = """#Generated by Java Packages Tools ++version={a.version} ++groupId={a.groupId} ++artifactId={a.artifactId} ++""".format(a=artifact) ++ ++ if artifact.extension: ++ properties = properties + \ ++ "extension={ext}\n".format(ext=artifact.extension) ++ if artifact.classifier: ++ properties = properties + \ ++ "classifier={clas}\n".format(clas=artifact.classifier) ++ ++ append_if_missing(jar_path, props_path, properties) ++ ++ ++def add_compat_versions(artifact, versions): ++ if not versions: ++ return artifact ++ ++ artifact.compatVersions = versions.split(',') ++ return artifact ++ ++ ++def add_aliases(artifact, additions): ++ if not additions: ++ return artifact ++ ++ aliases = additions.split(',') ++ result = list() ++ for a in aliases: ++ alias = MetadataAlias.from_mvn_str(a) ++ alias.extension = artifact.extension ++ result.append(alias) ++ ++ artifact.aliases = result ++ return artifact ++ ++ ++def write_metadata(metadata_file, artifacts): ++ if os.path.exists(metadata_file): ++ metadata = Metadata.create_from_file(metadata_file) ++ else: ++ metadata = Metadata() ++ ++ # pylint:disable=E1103 ++ metadata.artifacts += deepcopy(artifacts) ++ ++ metadata.write_to_file(metadata_file) ++ ++ ++def _main(): ++ usage="usage: %prog [options] metadata_path pom_path| [jar_path]" ++ parser = OptionParser(usage=usage) ++ parser.add_option("-a","--append",type="str", ++ help="Additional depmaps to add (gid:aid) [default: %default]") ++ parser.add_option('-r', '--versions', type="str", ++ help='Additional versions to add for each depmap') ++ parser.add_option('-n', '--namespace', type="str", ++ help='Namespace to use for generated fragments', default="") ++ parser.add_option('--pom-base', type="str", ++ help='Base path under which POM files are installed', default="") ++ parser.add_option('--jar-base', type="str", ++ help='Base path under which JAR files are installed', default="") ++ ++ parser.set_defaults(append=None) ++ ++ (options, args) = parser.parse_args() ++ append_deps = options.append ++ add_versions = options.versions ++ namespace = options.namespace ++ pom_base = options.pom_base ++ jar_base = options.jar_base ++ ++ if len(args) < 2: ++ parser.error("Incorrect number of arguments") ++ # These will fail when incorrect number of arguments is given. ++ metadata_path = args[0].strip() ++ pom_path = args[1].strip() ++ jar_path = None ++ ++ artifact = None ++ have_pom = False ++ ++ if len(args) == 3: ++ jar_path = args[2].strip() ++ if ':' in pom_path: ++ pom_str = pom_path.rsplit('/')[-1] ++ artifact = MetadataArtifact.from_mvn_str(pom_str) ++ artifact_ext = artifact.extension or "jar" ++ file_ext = os.path.splitext(jar_path)[1][1:] ++ if artifact_ext != file_ext: ++ raise ExtensionsDontMatch(artifact_ext, file_ext) ++ ++ if artifact.extension == 'jar': ++ artifact.extension = '' ++ ++ if not artifact.version: ++ parser.error("Artifact definition has to include version") ++ else: ++ artifact = MetadataArtifact.from_pom(pom_path) ++ ext = os.path.splitext(jar_path)[1][1:] ++ if ext != "jar": ++ artifact.extension = ext ++ have_pom = True ++ if artifact: ++ inject_pom_properties(jar_path, artifact) ++ else: ++ # looks like POM only artifact ++ if ':' not in pom_path: ++ artifact = MetadataArtifact.from_pom(pom_path) ++ have_pom = True ++ ++ if POM(pom_path).packaging != "pom": ++ raise PackagingTypeMissingFile(pom_path) ++ else: ++ sys.exit("JAR file path must be specified when using artifact coordinates") ++ ++ ++ # output file path for file lists ++ print(metadata_path) ++ ++ artifact = add_compat_versions(artifact, add_versions) ++ if add_versions: ++ pom_path, jar_path = _make_files_versioned(add_versions, pom_path, jar_path, pom_base, jar_base) ++ ++ if namespace: ++ artifact.namespace = namespace ++ ++ if have_pom: ++ pom = POM(pom_path) ++ if pom.parent or pom.packaging == "pom": ++ artifact.properties["xmvn.resolver.disableEffectivePom"] = "true" ++ else: ++ deps = [] ++ for d in _resolve_deps(pom): ++ deps.append(MetadataDependency.from_mvn_dependency(d)) ++ if deps: ++ artifact.dependencies = set(deps) ++ ++ ++ buildroot = os.environ.get('RPM_BUILD_ROOT') ++ am = [] ++ if jar_path: ++ metadata_jar_path = os.path.abspath(jar_path) ++ artifact.path = metadata_jar_path.replace(buildroot, "") if buildroot else metadata_jar_path ++ artifact = add_aliases(artifact, append_deps) ++ if artifact.extension == "jar": ++ artifact.extension = "" ++ am.append(artifact.copy()) ++ # output file path for file list (if it's not versioned) ++ if not add_versions: ++ _print_path_with_dirs(jar_path, jar_base) ++ if have_pom: ++ metadata_pom_path = os.path.abspath(pom_path) ++ artifact.path = metadata_pom_path.replace(buildroot, "") if buildroot else metadata_pom_path ++ artifact.extension = "pom" ++ artifact.aliases = None ++ artifact = add_aliases(artifact, append_deps) ++ am.append(artifact.copy()) ++ # output file path for file list (if it's not versioned) ++ if not add_versions: ++ _print_path_with_dirs(pom_path, pom_base) ++ ++ write_metadata(metadata_path, am) ++ ++ ++if __name__ == "__main__": ++ try: ++ _main() ++ except JavaPackagesToolsException as e: ++ sys.exit(e) +diff --git a/javapackages-tools.spec b/javapackages-tools.spec +index d2b6a235..65ac4e17 100644 +--- a/javapackages-tools.spec ++++ b/javapackages-tools.spec +@@ -72,6 +72,14 @@ Provides: %{?scl_prefix}eclipse-filesystem = %{version}-%{release} + This package provides some basic directories into which Java packages + install their content. + ++%package -n %{?scl_prefix}javapackages-compat ++Summary: Previously deprecated macros and scripts for Java packaging support ++Requires: %{?scl_prefix}javapackages-local = %{version}-%{release} ++ ++%description -n %{?scl_prefix}javapackages-compat ++This package provides previously deprecated macros and scripts to ++support Java packaging as well as some additions to them. ++ + %package -n %{?scl_prefix}maven-local + Summary: Macros and scripts for Maven packaging support + Requires: %{name} = %{version}-%{release} +@@ -173,6 +181,8 @@ rm -rf %{buildroot}%{_mandir}/man7/gradle_build.7 + + %files -n %{?scl_prefix}javapackages-filesystem -f files-filesystem + ++%files -n %{?scl_prefix}javapackages-compat -f files-compat ++ + %files -n %{?scl_prefix}javapackages-local -f files-local + + %files -n %{?scl_prefix}maven-local +diff --git a/macros.d/macros.javapackages-compat b/macros.d/macros.javapackages-compat +new file mode 100644 +index 00000000..6570156e +--- /dev/null ++++ b/macros.d/macros.javapackages-compat +@@ -0,0 +1,95 @@ ++# Copyright (c) 2012-2016, Red Hat, Inc ++# All rights reserved. ++# ++# Redistribution and use in source and binary forms, with or without ++# modification, are permitted provided that the following conditions ++# are met: ++# ++# 1. Redistributions of source code must retain the above copyright ++# notice, this list of conditions and the following disclaimer. ++# 2. Redistributions in binary form must reproduce the above copyright ++# notice, this list of conditions and the following disclaimer in the ++# documentation and/or other materials provided with the ++# distribution. ++# 3. Neither the name of Red Hat nor the names of its ++# contributors may be used to endorse or promote products derived ++# from this software without specific prior written permission. ++# ++# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++# ++# Authors: Stanislav Ochotnicky ++# Mikolaj Izdebski ++ ++ ++# %mvn_install_pom - Resolve the pom as much as possible and install it ++# ++# Usage: %mvn_install_pom ++# ++%mvn_install_pom @{pyinterpreter} @{javadir}-utils/install_pom.py ++ ++#============================================================================== ++# ++# add_maven_depmap is simplified version of jpackage-style add_to_maven_depmap ++# -f addition to fragment name ++# -a is "g1:a1,g2:a2" formatted string with additional depmaps (groupId:artifactId,...) ++# -v is "v1,v2" formatted string with additional compatibility versions ++# supposed to be provided (jar,pom will be renamed to -%{version} variants ++# and additional symlinks optionally created) ++# %1 is the pom filename relative to mavenpomdir ++# %2 is the path to jar file (when omitted we deal with parent pom file without jar) ++# ++# add_maven_depmap automatically parses pom file and it will fail with incorrect pom ++# or jar filename ++# ++# in the end add_maven_depmap optionally moves jar and pom file to ++# -%{version} variant and can create additional versioned symlinks ++ ++%add_maven_depmap(f:a:v:) \ ++set -e \ ++# default values \ ++%if %# == 0 \ ++ _pompart="JPP-%{name}.pom" \ ++ _jarpart="%{name}.jar" \ ++%else \ ++ _pompart="%1" \ ++ _jarpart="%2" \ ++%endif \ ++_filelist=".mfiles%{-f*:-%{-f*}}" \ ++install -dm 755 %{buildroot}%{_datadir}/maven-metadata \ ++_jbase= \ ++_jpath= \ ++for _dir in %{_jnidir} %{_javadir}; do \ ++ if [ -f %{buildroot}$_dir/$_jarpart ]; then \ ++ _jbase="%{buildroot}$_dir" \ ++ _jpath="$_jbase/$_jarpart" \ ++ fi \ ++done \ ++%if %# != 1 \ ++ [ -z "$_jpath" ] && (echo "%0 error: $_jarpart - file not found" 1>&2; exit 1) \ ++%endif \ ++@{pyinterpreter} @{javadir}-utils/maven_depmap.py %{-a} %{-v*:-r %{-v*}} \\\ ++ --pom-base %{buildroot}%{_mavenpomdir} \\\ ++ --jar-base "$_jbase" \\\ ++ %{buildroot}%{_datadir}/maven-metadata/%{name}%{-f*:-%{-f*}}.xml \\\ ++ %{buildroot}%{_mavenpomdir}/$_pompart \\\ ++%if %# == 2 \ ++ "${_jpath}" \\\ ++%endif \ ++%if %# == 0 \ ++ "${_jpath}" \\\ ++%endif \ ++ >> ${_filelist} \ ++sed -i 's:%{buildroot}::' ${_filelist} \ ++sort -u -o ${_filelist} ${_filelist} \ ++\ ++%{nil} +diff --git a/test/data/install_pom/JPP-apache-commons-io.pom b/test/data/install_pom/JPP-apache-commons-io.pom +new file mode 100644 +index 00000000..9349ebdd +--- /dev/null ++++ b/test/data/install_pom/JPP-apache-commons-io.pom +@@ -0,0 +1,22 @@ ++ ++ ++ org.apache.commons ++ commons-parent ++ 17 ++ ++ 4.0.0 ++ commons-io ++ commons-io ++ 2 ++ Commons Lang ++ pom ++ ++ ++ ++ G ++ G ++ 1000 ++ ++ ++ ++ +diff --git a/test/data/install_pom/JPP-bndlib.pom b/test/data/install_pom/JPP-bndlib.pom +new file mode 100644 +index 00000000..bf1efe5e +--- /dev/null ++++ b/test/data/install_pom/JPP-bndlib.pom +@@ -0,0 +1,72 @@ ++ ++ ++ ++ 4.0.0 ++ ++ ++ biz.aQute ++ ++ ++ bndlib ++ ++ ++ 1.50.0 ++ ++ ++ A Swiss Army Knife for OSGi ++ ++ ++ bnd - Bundle Tool ++ ++ ++ http://www.aQute.biz/Code/Bnd ++ ++ ++ ++ git://github.com/bndtools/bnd.git ++ ++ ++ git://github.com/bndtools/bnd.git ++ ++ ++ git://github.com/bndtools/bnd.git ++ ++ ++ ++ ++ aQute SARL ++ ++ ++ http://www.aQute.biz ++ ++ ++ ++ ++ ++ Peter.Kriens@aQute.biz ++ ++ ++ Peter.Kriens ++ ++ ++ Peter.Kriens@aQute.biz ++ ++ ++ aQute ++ ++ ++ ++ ++ ++ ++ Apache Software License 2.0 ++ ++ ++ http://www.opensource.org/licenses/apache2.0.php ++ ++ ++ repo ++ ++ ++ ++ +\ No newline at end of file +diff --git a/test/data/install_pom/JPP-noversion-pom.pom b/test/data/install_pom/JPP-noversion-pom.pom +new file mode 100644 +index 00000000..a789d1b6 +--- /dev/null ++++ b/test/data/install_pom/JPP-noversion-pom.pom +@@ -0,0 +1,9 @@ ++ ++ 4.0.0 ++ org.apache.commons ++ commons-io ++ commons-io ++ Commons Lang ++ pom ++ ++ +diff --git a/test/data/install_pom/JPP-noversion.pom b/test/data/install_pom/JPP-noversion.pom +new file mode 100644 +index 00000000..bd87edea +--- /dev/null ++++ b/test/data/install_pom/JPP-noversion.pom +@@ -0,0 +1,8 @@ ++ ++ 4.0.0 ++ org.apache.commons ++ commons-io ++ commons-io ++ Commons Lang ++ ++ +diff --git a/test/data/install_pom/JPP-parent-version.pom b/test/data/install_pom/JPP-parent-version.pom +new file mode 100644 +index 00000000..4e40fa2a +--- /dev/null ++++ b/test/data/install_pom/JPP-parent-version.pom +@@ -0,0 +1,9 @@ ++ ++ 4.0.0 ++ a ++ ++ g ++ p ++ 1 ++ ++ +diff --git a/test/data/install_pom/a_binary_file.pom b/test/data/install_pom/a_binary_file.pom +new file mode 100644 +index 00000000..5b3a2335 +Binary files /dev/null and b/test/data/install_pom/a_binary_file.pom differ +diff --git a/test/data/install_pom/cglib/cglib-integration-test/pom.xml b/test/data/install_pom/cglib/cglib-integration-test/pom.xml +new file mode 100644 +index 00000000..1c717477 +--- /dev/null ++++ b/test/data/install_pom/cglib/cglib-integration-test/pom.xml +@@ -0,0 +1,87 @@ ++ ++ ++ 4.0.0 ++ ++ ++ ++ ++ ++ cglib ++ cglib-parent ++ 3.3.0 ++ ++ ++ ++ ++ ++ cglib-integration-test ++ jar ++ ++ ++ ++ ++ ++ ++ ++ org.apache.maven.plugins ++ maven-compiler-plugin ++ ++ ++ org.apache.maven.plugins ++ maven-surefire-plugin ++ ++ ++ org.apache.maven.plugins ++ maven-javadoc-plugin ++ ++ ++ org.apache.maven.plugins ++ maven-failsafe-plugin ++ ++ ++ ++ integration-test ++ verify ++ ++ ++ ++ ++ ++ ++ ++ ++ src/main/resources ++ ++ ++ ${basedir}/.. ++ META-INF ++ ++ LICENSE ++ NOTICE ++ README ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ${project.groupId} ++ cglib ++ ++ ++ ${project.groupId} ++ cglib-sample ++ ++ ++ ++ junit ++ junit ++ ++ ++ ++ +diff --git a/test/data/install_pom/cglib/cglib/pom.xml b/test/data/install_pom/cglib/cglib/pom.xml +new file mode 100644 +index 00000000..4563e67f +--- /dev/null ++++ b/test/data/install_pom/cglib/cglib/pom.xml +@@ -0,0 +1,76 @@ ++ ++ ++ 4.0.0 ++ ++ ++ ++ ++ ++ cglib ++ cglib-parent ++ 3.3.0 ++ ++ ++ ++ ++ ++ cglib ++ jar ++ ++ ++ ++ ++ ++ ++ ++ org.apache.maven.plugins ++ maven-compiler-plugin ++ ++ ++ org.apache.maven.plugins ++ maven-surefire-plugin ++ ++ ++ org.apache.maven.plugins ++ maven-javadoc-plugin ++ ++ ++ ++ ++ ++ src/main/resources ++ ++ ++ ${basedir}/.. ++ META-INF ++ ++ LICENSE ++ NOTICE ++ README ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ org.ow2.asm ++ asm ++ ++ ++ org.apache.ant ++ ant ++ true ++ ++ ++ ++ junit ++ junit ++ ++ ++ ++ +diff --git a/test/data/install_pom/cglib/pom.xml b/test/data/install_pom/cglib/pom.xml +new file mode 100644 +index 00000000..b4468689 +--- /dev/null ++++ b/test/data/install_pom/cglib/pom.xml +@@ -0,0 +1,246 @@ ++ ++ ++ 4.0.0 ++ ++ ++ org.sonatype.oss ++ oss-parent ++ 7 ++ ++ ++ ++ ++ ++ cglib ++ cglib-parent ++ 3.3.0 ++ pom ++ ++ Code Generation Library ++ https://github.com/cglib/cglib ++ cglib is a powerful, high performance and quality Code Generation Library, It is used to extend JAVA classes and implements interfaces at runtime. ++ ++ ++ scm:git:git://github.com/cglib/cglib.git ++ scm:git:ssh://git@github.com/cglib/cglib.git ++ https://github.com/cglib/cglib ++ ++ ++ ++ Github Issues ++ https://github.com/cglib/cglib/issues ++ ++ ++ ++ Travis ++ https://travis-ci.org/cglib/cglib ++ ++ ++ ++ ++ ASF 2.0 ++ http://www.apache.org/licenses/LICENSE-2.0.txt ++ repo ++ ++ ++ ++ ++ ++ ++ ++ UTF-8 ++ UTF-8 ++ ++ 1.5 ++ 1.5 ++ 7.1 ++ 1.10.3 ++ 1.21 ++ 3.7.0 ++ 3.1.0 ++ 3.0.1 ++ 3.1.0 ++ ++ ++ ${java.compiler.argument} ++ true ++ ++ ++ ++ ++ ++ ++ cglib ++ cglib-nodep ++ cglib-sample ++ cglib-integration-test ++ cglib-jmh ++ ++ ++ ++ ++ ++ ++ ++ java8 ++ ++ [1.8,) ++ ++ ++ -parameters ++ ++ ++ ++ java9 ++ ++ [1.9,) ++ ++ ++ 1.6 ++ 1.6 ++ -parameters ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ org.apache.maven.plugins ++ maven-compiler-plugin ++ ${maven-compiler-plugin.version} ++ ++ ${java.version.source} ++ ${java.version.target} ++ ${java.compiler.argument} ++ ${java.specification.version} ++ ${java.specification.version} ++ ${java.test.compiler.argument} ++ ++ ++ ++ org.apache.maven.plugins ++ maven-surefire-plugin ++ 2.21.0 ++ ++ ++ ++ net.sf.cglib.test.stressHashCodes ++ true ++ ++ ++ ++ ++ ++ org.apache.maven.plugins ++ maven-failsafe-plugin ++ 2.21.0 ++ ++ ++ ++ net.sf.cglib.test.stressHashCodes ++ true ++ ++ ++ ++ ++ ++ org.apache.maven.plugins ++ maven-javadoc-plugin ++ ${maven-javadoc-plugin.version} ++ ++ true ++ false ++ false ++ ++ false ++ none ++ ++ ++ org.ow2.asm ++ asm ++ ${asm.version} ++ ++ ++ org.apache.ant ++ ant ++ ${ant.version} ++ ++ ++ ++ ++ ++ attach-javadocs ++ ++ jar ++ ++ ++ ++ ++ ++ org.sonatype.plugins ++ jarjar-maven-plugin ++ 1.9 ++ ++ ++ ++ ++ ++ org.apache.maven.plugins ++ maven-gpg-plugin ++ 1.6 ++ ++ ++ sign-artifacts ++ verify ++ ++ sign ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ${project.groupId} ++ cglib ++ ${project.version} ++ ++ ++ ${project.groupId} ++ cglib-sample ++ ${project.version} ++ ++ ++ ++ org.ow2.asm ++ asm ++ ${asm.version} ++ ++ ++ org.apache.ant ++ ant ++ ${ant.version} ++ ++ ++ ++ junit ++ junit ++ 4.12 ++ test ++ ++ ++ ++ ++ +diff --git a/test/data/install_pom/fakedir b/test/data/install_pom/fakedir +new file mode 100644 +index 00000000..e69de29b +diff --git a/test/data/install_pom/languagetool/languagetool-language-modules/ja/pom.xml b/test/data/install_pom/languagetool/languagetool-language-modules/ja/pom.xml +new file mode 100644 +index 00000000..1df2ead4 +--- /dev/null ++++ b/test/data/install_pom/languagetool/languagetool-language-modules/ja/pom.xml +@@ -0,0 +1,104 @@ ++ ++ 4.0.0 ++ ++ ++ org.languagetool ++ languagetool-parent ++ 4.8 ++ ../../pom.xml ++ ++ ++ language-ja ++ http://www.languagetool.org ++ Japanese module for LanguageTool ++ ++ ++ ++ GNU Lesser General Public License ++ http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt ++ repo ++ The license refers to the source code, resources may be under different licenses ++ ++ ++ ++ jar ++ ++ ++ ++ Daniel Naber ++ Maintainer ++ ++ ++ Marcin Miłkowski ++ Maintainer ++ ++ ++ ++ ++ ++ ++ maven-compiler-plugin ++ ++ ++ maven-surefire-plugin ++ ++ ++ ++ ++ ++ ++ org.languagetool ++ languagetool-core ++ ${languagetool.version} ++ ++ ++ ++ com.github.lucene-gosen ++ lucene-gosen ++ 6.2.1 ++ ipadic ++ ++ ++ org.apache.lucene ++ lucene-core ++ ++ ++ org.apache.solr ++ solr-core ++ ++ ++ org.apache.solr ++ solr-solrj ++ ++ ++ org.apache.lucene ++ lucene-codecs ++ ++ ++ org.apache.lucene ++ lucene-analyzers ++ ++ ++ org.apache.lucene ++ lucene-analyzers-common ++ ++ ++ ++ ++ ++ ++ org.languagetool ++ languagetool-core ++ ${languagetool.version} ++ test-jar ++ test ++ ++ ++ junit ++ junit ++ ${junit.version} ++ test ++ ++ ++ ++ +\ No newline at end of file +diff --git a/test/data/install_pom/languagetool/languagetool-standalone/pom.xml b/test/data/install_pom/languagetool/languagetool-standalone/pom.xml +new file mode 100644 +index 00000000..37c51753 +--- /dev/null ++++ b/test/data/install_pom/languagetool/languagetool-standalone/pom.xml +@@ -0,0 +1,163 @@ ++ ++ 4.0.0 ++ ++ ++ org.languagetool ++ languagetool-parent ++ 4.8 ++ ../pom.xml ++ ++ ++ languagetool-standalone ++ http://www.languagetool.org ++ LanguageTool stand-alone GUI ++ ++ ++ ++ GNU Lesser General Public License ++ http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt ++ repo ++ ++ ++ ++ jar ++ ++ ++ ++ ++ src/main/resources ++ ++ ++ ${basedir} ++ META-INF ++ ++ CHANGES.txt ++ COPYING.txt ++ README.txt ++ ++ ++ ++ ++ ++ maven-compiler-plugin ++ ++ ++ maven-surefire-plugin ++ ++ ++ ++ org.apache.maven.plugins ++ maven-jar-plugin ++ ${maven.jar.plugin} ++ ++ ++ ++ true ++ custom ++ libs/$${artifact.artifactId}$${dashClassifier?}.$${artifact.extension} ++ ++ ++ ++ ./ languagetool-server.jar ++ org.languagetool.gui.Main ++ ${project.version} ++ ${maven.build.timestamp} ++ ++ ++ ++ ++ ++ maven-assembly-plugin ++ ${maven.assemby.plugin} ++ ++ src/main/assembly/zip.xml ++ LanguageTool-${project.version} ++ false ++ ++ ++ true ++ false ++ ++ ++ ++ ++ ++ make-assembly ++ package ++ ++ single ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ org.languagetool ++ languagetool-core ++ ${languagetool.version} ++ ++ ++ org.languagetool ++ languagetool-gui-commons ++ ${languagetool.version} ++ ++ ++ org.languagetool ++ languagetool-commandline ++ ${languagetool.version} ++ ++ ++ org.languagetool ++ languagetool-server ++ ${languagetool.version} ++ ++ ++ ++ org.languagetool ++ language-all ++ ${languagetool.version} ++ ++ ++ ++ org.languagetool ++ languagetool-tools ++ ${languagetool.version} ++ ++ ++ ++ org.apache.commons ++ commons-collections4 ++ 4.1 ++ ++ ++ ++ org.slf4j ++ slf4j-api ++ 1.7.25 ++ ++ ++ ch.qos.logback ++ logback-classic ++ 1.2.3 ++ ++ ++ ++ ++ org.languagetool ++ languagetool-core ++ ${languagetool.version} ++ test-jar ++ ++ ++ junit ++ junit ++ ${junit.version} ++ ++ ++ ++ ++ +diff --git a/test/data/install_pom/languagetool/pom.xml b/test/data/install_pom/languagetool/pom.xml +new file mode 100644 +index 00000000..a47b9b01 +--- /dev/null ++++ b/test/data/install_pom/languagetool/pom.xml +@@ -0,0 +1,233 @@ ++ ++ 4.0.0 ++ ++ ++ 3.04 ++ ++ ++ ++ org.sonatype.oss ++ oss-parent ++ 7 ++ ++ ++ ++ scm:git:git@github.com:languagetool-org/languagetool.git ++ scm:git:git@github.com:languagetool-org/languagetool.git ++ git@github.com:languagetool-org/languagetool.git ++ HEAD ++ ++ ++ org.languagetool ++ languagetool-parent ++ 4.8 ++ pom ++ ++ ++ 4.8 ++ UTF-8 ++ 1.8 ++ 1.8 ++ yyyy-MM-dd HH:mm ++ 2.6 ++ 2.6 ++ 4.12 ++ 2.1.6 ++ 2.9.10 ++ 5.5.5 ++ ++ ++ ++ ++ ++ ++ ++ org.apache.maven.wagon ++ wagon-webdav ++ 1.0-beta-2 ++ ++ ++ ++ ++ ++ ++ ++ ++ org.apache.maven.plugins ++ maven-enforcer-plugin ++ 3.0.0-M2 ++ ++ ++ enforce ++ ++ ++ ++ ++ ++ ++ enforce ++ ++ ++ ++ ++ ++ ++ pl.project13.maven ++ git-commit-id-plugin ++ 2.2.6 ++ ++ ++ get-the-git-infos ++ ++ revision ++ ++ initialize ++ ++ ++ ++ true ++ ${project.build.outputDirectory}/git.properties ++ ++ ++ ++ ++ maven-compiler-plugin ++ 3.8.0 ++ ++ ++ ${maven.compiler.source} ++ ${maven.compiler.target} ++ ++ ++ ++ ++ maven-surefire-plugin ++ 2.22.0 ++ ++ false ++ -Xms256m -Xmx1550m ++ failedfirst ++ ++ **/*ConcurrencyTest.java ++ **/Abstract*.java ++ ++ false ++ ++ ++ ++ ++ org.apache.maven.plugins ++ maven-javadoc-plugin ++ 3.0.1 ++ ++ ++ org.languagetool.dev.conversion* ++ ++ ++ ++ ++ ++ ++ org.codehaus.mojo ++ license-maven-plugin ++ ++ ++ ++ ++ ++ ++ ++ ++ community-release ++ dav:https://repository-languagetool.forge.cloudbees.com/release/ ++ ++ ++ community-snapshot ++ dav:https://repository-languagetool.forge.cloudbees.com/snapshot/ ++ ++ ++ ++ ++ ++ ++ release-sign-artifacts ++ ++ ++ performRelease ++ true ++ ++ ++ ++ ++ ++ org.apache.maven.plugins ++ maven-gpg-plugin ++ 1.6 ++ ++ true ++ ++ ++ ++ sign-artifacts ++ verify ++ ++ sign ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ languagetool-core ++ languagetool-language-modules/en ++ languagetool-language-modules/fa ++ languagetool-language-modules/fr ++ languagetool-language-modules/de ++ languagetool-language-modules/pl ++ languagetool-language-modules/ca ++ languagetool-language-modules/it ++ languagetool-language-modules/br ++ languagetool-language-modules/nl ++ languagetool-language-modules/pt ++ languagetool-language-modules/ru ++ languagetool-language-modules/ast ++ languagetool-language-modules/be ++ languagetool-language-modules/zh ++ languagetool-language-modules/da ++ languagetool-language-modules/eo ++ languagetool-language-modules/gl ++ languagetool-language-modules/el ++ languagetool-language-modules/is ++ languagetool-language-modules/ja ++ languagetool-language-modules/km ++ languagetool-language-modules/lt ++ languagetool-language-modules/ml ++ languagetool-language-modules/ro ++ languagetool-language-modules/sk ++ languagetool-language-modules/sl ++ ++ languagetool-language-modules/es ++ languagetool-language-modules/sv ++ languagetool-language-modules/ta ++ languagetool-language-modules/tl ++ languagetool-language-modules/uk ++ languagetool-language-modules/de-DE-x-simple-language ++ languagetool-language-modules/all ++ languagetool-gui-commons ++ languagetool-commandline ++ languagetool-standalone ++ languagetool-office-extension ++ languagetool-wikipedia ++ languagetool-server ++ languagetool-http-client ++ languagetool-tools ++ languagetool-dev ++ languagetool-rpm-package ++ ++ ++ ++ +diff --git a/test/data/install_pom/test_any_not_final-want.xml b/test/data/install_pom/test_any_not_final-want.xml +new file mode 100644 +index 00000000..0e34c3f9 +--- /dev/null ++++ b/test/data/install_pom/test_any_not_final-want.xml +@@ -0,0 +1,24 @@ ++ ++ ++ 4.0.0 ++ org.fedoraproject.xmvn ++ xmvn-resolve ++ 4.0.0 ++ ++ ++ com.beust ++ jcommander ++ 1.82 ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-api ++ 4.0.0 ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-core ++ 4.0.0 ++ ++ ++ +\ No newline at end of file +diff --git a/test/data/install_pom/test_basic-want.xml b/test/data/install_pom/test_basic-want.xml +new file mode 100644 +index 00000000..2b7ed5cd +--- /dev/null ++++ b/test/data/install_pom/test_basic-want.xml +@@ -0,0 +1,7 @@ ++ ++ ++ 4.0.0 ++ biz.aQute ++ bndlib ++ 1.50.0 ++ +\ No newline at end of file +diff --git a/test/data/install_pom/test_dep_classifier-want.xml b/test/data/install_pom/test_dep_classifier-want.xml +new file mode 100644 +index 00000000..e78f92e6 +--- /dev/null ++++ b/test/data/install_pom/test_dep_classifier-want.xml +@@ -0,0 +1,20 @@ ++ ++ ++ 4.0.0 ++ org.languagetool ++ language-ja ++ 4.8 ++ ++ ++ org.languagetool ++ languagetool-core ++ 4.8 ++ ++ ++ com.github.lucene-gosen ++ lucene-gosen ++ 6.2.1 ++ ipadic ++ ++ ++ +\ No newline at end of file +diff --git a/test/data/install_pom/test_dep_type-want.xml b/test/data/install_pom/test_dep_type-want.xml +new file mode 100644 +index 00000000..0074c18b +--- /dev/null ++++ b/test/data/install_pom/test_dep_type-want.xml +@@ -0,0 +1,65 @@ ++ ++ ++ 4.0.0 ++ org.languagetool ++ languagetool-standalone ++ 4.8 ++ ++ ++ org.languagetool ++ languagetool-core ++ 4.8 ++ ++ ++ org.languagetool ++ languagetool-gui-commons ++ 4.8 ++ ++ ++ org.languagetool ++ languagetool-commandline ++ 4.8 ++ ++ ++ org.languagetool ++ languagetool-server ++ 4.8 ++ ++ ++ org.languagetool ++ language-all ++ 4.8 ++ ++ ++ org.languagetool ++ languagetool-tools ++ 4.8 ++ ++ ++ org.apache.commons ++ commons-collections4 ++ 4.1 ++ ++ ++ org.slf4j ++ slf4j-api ++ 1.7.25 ++ ++ ++ ch.qos.logback ++ logback-classic ++ 1.2.3 ++ ++ ++ org.languagetool ++ languagetool-core ++ 4.8 ++ test-jar ++ ++ ++ junit ++ junit ++ 4.12 ++ ++ ++ +\ No newline at end of file +diff --git a/test/data/install_pom/test_interpolate_from_model-want.xml b/test/data/install_pom/test_interpolate_from_model-want.xml +new file mode 100644 +index 00000000..7dd835c4 +--- /dev/null ++++ b/test/data/install_pom/test_interpolate_from_model-want.xml +@@ -0,0 +1,19 @@ ++ ++ ++ 4.0.0 ++ cglib ++ cglib-integration-test ++ 3.3.0 ++ ++ ++ cglib ++ cglib ++ 3.3.0 ++ ++ ++ cglib ++ cglib-sample ++ 3.3.0 ++ ++ ++ +\ No newline at end of file +diff --git a/test/data/install_pom/test_interpolate_from_parent-want.xml b/test/data/install_pom/test_interpolate_from_parent-want.xml +new file mode 100644 +index 00000000..2f53c963 +--- /dev/null ++++ b/test/data/install_pom/test_interpolate_from_parent-want.xml +@@ -0,0 +1,20 @@ ++ ++ ++ 4.0.0 ++ cglib ++ cglib ++ 3.3.0 ++ ++ ++ org.ow2.asm ++ asm ++ 7.1 ++ ++ ++ org.apache.ant ++ ant ++ 1.10.3 ++ true ++ ++ ++ +\ No newline at end of file +diff --git a/test/data/install_pom/test_packaging_pom-want.xml b/test/data/install_pom/test_packaging_pom-want.xml +new file mode 100644 +index 00000000..79ad0972 +--- /dev/null ++++ b/test/data/install_pom/test_packaging_pom-want.xml +@@ -0,0 +1,23 @@ ++ ++ ++ ++ org.apache.commons ++ commons-parent ++ 17 ++ ++ 4.0.0 ++ commons-io ++ commons-io ++ 2 ++ Commons Lang ++ pom ++ ++ ++ ++ G ++ G ++ 1000 ++ ++ ++ ++ +\ No newline at end of file +diff --git a/test/data/install_pom/test_packaging_pom_missing_version-want.xml b/test/data/install_pom/test_packaging_pom_missing_version-want.xml +new file mode 100644 +index 00000000..f3f66652 +--- /dev/null ++++ b/test/data/install_pom/test_packaging_pom_missing_version-want.xml +@@ -0,0 +1,10 @@ ++ ++ ++ 4.0.0 ++ org.apache.commons ++ commons-io ++ commons-io ++ Commons Lang ++ pom ++ ++ +\ No newline at end of file +diff --git a/test/data/install_pom/test_parent_chain-want.xml b/test/data/install_pom/test_parent_chain-want.xml +new file mode 100644 +index 00000000..3fe9faf2 +--- /dev/null ++++ b/test/data/install_pom/test_parent_chain-want.xml +@@ -0,0 +1,44 @@ ++ ++ ++ 4.0.0 ++ org.fedoraproject.xmvn ++ xmvn-install ++ 4.0.0 ++ ++ ++ com.beust ++ jcommander ++ 1.82 ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-api ++ 4.0.0 ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-core ++ 4.0.0 ++ ++ ++ org.slf4j ++ slf4j-api ++ 2.0.0-alpha7 ++ ++ ++ org.slf4j ++ slf4j-simple ++ 2.0.0-alpha7 ++ ++ ++ org.ow2.asm ++ asm ++ 9.3 ++ ++ ++ org.apache.commons ++ commons-compress ++ 1.21 ++ ++ ++ +\ No newline at end of file +diff --git a/test/data/install_pom/test_parent_install-want.xml b/test/data/install_pom/test_parent_install-want.xml +new file mode 100644 +index 00000000..64931178 +--- /dev/null ++++ b/test/data/install_pom/test_parent_install-want.xml +@@ -0,0 +1,245 @@ ++ ++ ++ 4.0.0 ++ ++ ++ org.sonatype.oss ++ oss-parent ++ 7 ++ ++ ++ ++ ++ ++ cglib ++ cglib-parent ++ 3.3.0 ++ pom ++ ++ Code Generation Library ++ https://github.com/cglib/cglib ++ cglib is a powerful, high performance and quality Code Generation Library, It is used to extend JAVA classes and implements interfaces at runtime. ++ ++ ++ scm:git:git://github.com/cglib/cglib.git ++ scm:git:ssh://git@github.com/cglib/cglib.git ++ https://github.com/cglib/cglib ++ ++ ++ ++ Github Issues ++ https://github.com/cglib/cglib/issues ++ ++ ++ ++ Travis ++ https://travis-ci.org/cglib/cglib ++ ++ ++ ++ ++ ASF 2.0 ++ http://www.apache.org/licenses/LICENSE-2.0.txt ++ repo ++ ++ ++ ++ ++ ++ ++ ++ UTF-8 ++ UTF-8 ++ ++ 1.5 ++ 1.5 ++ 7.1 ++ 1.10.3 ++ 1.21 ++ 3.7.0 ++ 3.1.0 ++ 3.0.1 ++ 3.1.0 ++ ++ ++ ${java.compiler.argument} ++ true ++ ++ ++ ++ ++ ++ ++ cglib ++ cglib-nodep ++ cglib-sample ++ cglib-integration-test ++ cglib-jmh ++ ++ ++ ++ ++ ++ ++ ++ java8 ++ ++ [1.8,) ++ ++ ++ -parameters ++ ++ ++ ++ java9 ++ ++ [1.9,) ++ ++ ++ 1.6 ++ 1.6 ++ -parameters ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ org.apache.maven.plugins ++ maven-compiler-plugin ++ ${maven-compiler-plugin.version} ++ ++ ${java.version.source} ++ ${java.version.target} ++ ${java.compiler.argument} ++ ${java.specification.version} ++ ${java.specification.version} ++ ${java.test.compiler.argument} ++ ++ ++ ++ org.apache.maven.plugins ++ maven-surefire-plugin ++ 2.21.0 ++ ++ ++ ++ net.sf.cglib.test.stressHashCodes ++ true ++ ++ ++ ++ ++ ++ org.apache.maven.plugins ++ maven-failsafe-plugin ++ 2.21.0 ++ ++ ++ ++ net.sf.cglib.test.stressHashCodes ++ true ++ ++ ++ ++ ++ ++ org.apache.maven.plugins ++ maven-javadoc-plugin ++ ${maven-javadoc-plugin.version} ++ ++ true ++ false ++ false ++ ++ false ++ none ++ ++ ++ org.ow2.asm ++ asm ++ ${asm.version} ++ ++ ++ org.apache.ant ++ ant ++ ${ant.version} ++ ++ ++ ++ ++ ++ attach-javadocs ++ ++ jar ++ ++ ++ ++ ++ ++ org.sonatype.plugins ++ jarjar-maven-plugin ++ 1.9 ++ ++ ++ ++ ++ ++ org.apache.maven.plugins ++ maven-gpg-plugin ++ 1.6 ++ ++ ++ sign-artifacts ++ verify ++ ++ sign ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ${project.groupId} ++ cglib ++ ${project.version} ++ ++ ++ ${project.groupId} ++ cglib-sample ++ ${project.version} ++ ++ ++ ++ org.ow2.asm ++ asm ++ ${asm.version} ++ ++ ++ org.apache.ant ++ ant ++ ${ant.version} ++ ++ ++ ++ junit ++ junit ++ 4.12 ++ test ++ ++ ++ ++ ++ +\ No newline at end of file +diff --git a/test/data/install_pom/test_parent_relpath-want.xml b/test/data/install_pom/test_parent_relpath-want.xml +new file mode 100644 +index 00000000..98a5c980 +--- /dev/null ++++ b/test/data/install_pom/test_parent_relpath-want.xml +@@ -0,0 +1,25 @@ ++ ++ ++ 4.0.0 ++ org.fedoraproject.xmvn ++ xmvn-mojo ++ 4.0.0 ++ maven-plugin ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-api ++ 4.0.0 ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-core ++ 4.0.0 ++ ++ ++ org.apache.maven.resolver ++ maven-resolver-util ++ 1.8.1 ++ ++ ++ +\ No newline at end of file +diff --git a/test/data/install_pom/test_parent_version-want.xml b/test/data/install_pom/test_parent_version-want.xml +new file mode 100644 +index 00000000..4f5734e6 +--- /dev/null ++++ b/test/data/install_pom/test_parent_version-want.xml +@@ -0,0 +1,7 @@ ++ ++ ++ 4.0.0 ++ g ++ a ++ 1 ++ +\ No newline at end of file +diff --git a/test/data/install_pom/xmvn/xmvn-mojo/pom.xml b/test/data/install_pom/xmvn/xmvn-mojo/pom.xml +new file mode 100644 +index 00000000..c73f92a7 +--- /dev/null ++++ b/test/data/install_pom/xmvn/xmvn-mojo/pom.xml +@@ -0,0 +1,113 @@ ++ ++ ++ ++ 4.0.0 ++ ++ xmvn-parent ++ org.fedoraproject.xmvn ++ 4.0.0 ++ ../xmvn-parent ++ ++ xmvn-mojo ++ maven-plugin ++ XMvn MOJO ++ ++ XMvn MOJO is a Maven plugin, which consists of several MOJOs. ++ Some goals of these MOJOs are intended to be attached to default ++ Maven lifecycle when building packages, others can be called ++ directly from Maven command line. ++ ++ ++ ++ org.apache.maven ++ maven-core ++ provided ++ ++ ++ org.apache.maven ++ maven-artifact ++ provided ++ ++ ++ org.apache.maven ++ maven-model ++ provided ++ ++ ++ org.apache.maven ++ maven-plugin-api ++ provided ++ ++ ++ org.codehaus.plexus ++ plexus-classworlds ++ provided ++ ++ ++ org.codehaus.plexus ++ plexus-utils ++ provided ++ ++ ++ org.apache.maven.plugin-tools ++ maven-plugin-annotations ++ provided ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-api ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-core ++ runtime ++ ++ ++ org.codehaus.plexus ++ plexus-container-default ++ provided ++ ++ ++ org.apache.maven.resolver ++ maven-resolver-util ++ ++ ++ ++ ++ ++ maven-plugin-plugin ++ ++ ++ mojo-descriptor ++ ++ descriptor ++ ++ ++ ++ ++ true ++ ++ 3.0 ++ ++ ++ ++ ++ ++ +diff --git a/test/data/install_pom/xmvn/xmvn-parent/pom.xml b/test/data/install_pom/xmvn/xmvn-parent/pom.xml +new file mode 100644 +index 00000000..030923f9 +--- /dev/null ++++ b/test/data/install_pom/xmvn/xmvn-parent/pom.xml +@@ -0,0 +1,585 @@ ++ ++ ++ ++ 4.0.0 ++ org.fedoraproject.xmvn ++ xmvn-parent ++ 4.0.0 ++ pom ++ XMvn Parent ++ ++ XMvn Parent is project model from which all other XMvn modules are ++ inheriting. It defines settings common to all XMvn modules. ++ ++ https://fedora-java.github.io/xmvn/ ++ 2012 ++ ++ Red Hat, Inc. ++ http://www.redhat.com/ ++ ++ ++ ++ Apache License Version 2.0 ++ http://www.apache.org/licenses/LICENSE-2.0.txt ++ ++ ++ ++ ++ mizdebsk ++ Mikolaj Izdebski ++ mizdebsk@redhat.com ++ Red Hat, Inc. ++ http://www.redhat.com/ ++ +1 ++ ++ ++ ++ ++ Fedora Java development List ++ java-devel@lists.fedoraproject.org ++ http://lists.fedoraproject.org/pipermail/java-devel/ ++ https://admin.fedoraproject.org/mailman/listinfo/java-devel ++ https://admin.fedoraproject.org/mailman/listinfo/java-devel ++ ++ ++ ++ https://github.com/fedora-java/xmvn ++ scm:git:https://github.com/fedora-java/xmvn.git ++ scm:git:git@github.com:fedora-java/xmvn.git ++ ++ ++ Github ++ https://github.com/fedora-java/xmvn/issues/ ++ ++ ++ ++ ossrh ++ https://oss.sonatype.org/content/repositories/snapshots ++ ++ ++ ++ US-ASCII ++ ++ 9.3 ++ 1.82 ++ 3.2.0 ++ 1.8.1 ++ 3.8.6 ++ 2.6.0 ++ 3.4.2 ++ 3.6.4 ++ 2.0.0-alpha7 ++ 1.21 ++ ++ ++ 1.3.2.GA ++ 3.3.0 ++ 3.3.0 ++ 9.3 ++ 3.1.2 ++ 3.2.0 ++ 3.10.1 ++ 3.3.0 ++ 3.0.0-M2 ++ 4.3 ++ 3.0.1 ++ 3.0.0-M1 ++ 0.8.8 ++ 3.2.2 ++ 3.4.0 ++ 5.8.2 ++ 2.3 ++ 1.0 ++ 2.0.0 ++ 1.6.13 ++ 3.0.1 ++ 3.0.0 ++ 2.1.1 ++ 0.14 ++ 3.2.0 ++ 3.12.0 ++ 3.2.1 ++ 3.0.0-M7 ++ 2.9.0 ++ ++ ++ ++ ++ ++ org.apache.maven ++ maven-artifact ++ ${mavenVersion} ++ ++ ++ org.apache.maven ++ maven-core ++ ${mavenVersion} ++ ++ ++ org.apache.maven ++ maven-model ++ ${mavenVersion} ++ ++ ++ org.apache.maven ++ maven-model-builder ++ ${mavenVersion} ++ ++ ++ org.apache.maven ++ maven-plugin-api ++ ${mavenVersion} ++ ++ ++ org.apache.maven.resolver ++ maven-resolver-api ++ ${mavenResolverVersion} ++ ++ ++ org.apache.maven.resolver ++ maven-resolver-util ++ ${mavenResolverVersion} ++ ++ ++ org.apache.maven.plugin-tools ++ maven-plugin-annotations ++ ${pluginToolsVersion} ++ ++ ++ org.codehaus.plexus ++ plexus-classworlds ++ ${plexusClassworldsVersion} ++ ++ ++ org.codehaus.plexus ++ plexus-utils ++ ${plexusUtilsVersion} ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-api ++ ${project.version} ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-core ++ ${project.version} ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-connector ++ ${project.version} ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-install ++ ${project.version} ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-resolve ++ ${project.version} ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-subst ++ ${project.version} ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-it ++ ${project.version} ++ ++ ++ org.junit.jupiter ++ junit-jupiter ++ ${junitVersion} ++ ++ ++ org.xmlunit ++ xmlunit-assertj3 ++ ${xmlunitVersion} ++ ++ ++ org.easymock ++ easymock ++ ${easymockVersion} ++ ++ ++ com.beust ++ jcommander ++ ${jcommanderVersion} ++ ++ ++ org.apache.maven.shared ++ maven-invoker ++ ${mavenInvokerVersion} ++ ++ ++ org.slf4j ++ slf4j-api ++ ${slf4jVersion} ++ ++ ++ org.slf4j ++ slf4j-simple ++ ${slf4jVersion} ++ ++ ++ org.ow2.asm ++ asm ++ ${asmVersion} ++ ++ ++ org.codehaus.plexus ++ plexus-component-annotations ++ ${plexusVersion} ++ ++ ++ org.codehaus.plexus ++ plexus-container-default ++ ${plexusVersion} ++ ++ ++ org.apache.commons ++ commons-compress ++ ${commonsCompressVersion} ++ ++ ++ ++ ++ ++ org.junit.jupiter ++ junit-jupiter ++ test ++ ++ ++ org.xmlunit ++ xmlunit-assertj3 ++ test ++ ++ ++ org.easymock ++ easymock ++ test ++ ++ ++ org.slf4j ++ slf4j-simple ++ test ++ ++ ++ ++ ++ ++ ++ org.codehaus.mojo ++ build-helper-maven-plugin ++ ${buildHelperPluginVersion} ++ ++ ++ maven-compiler-plugin ++ ${compilerPluginVersion} ++ ++ 1.8 ++ 1.8 ++ ++ ++ ++ maven-site-plugin ++ ${sitePluginVersion} ++ ++ ++ maven-dependency-plugin ++ ${dependencyPluginVersion} ++ ++ ++ maven-plugin-plugin ++ ${pluginToolsVersion} ++ ++ ++ org.codehaus.modello ++ modello-maven-plugin ++ ${modelloVersion} ++ ++ ++ maven-assembly-plugin ++ ${assemblyPluginVersion} ++ ++ ++ maven-clean-plugin ++ ${cleanPluginVersion} ++ ++ ++ maven-deploy-plugin ++ ${deployPluginVersion} ++ ++ ++ maven-install-plugin ++ ${installPluginVersion} ++ ++ ++ maven-jar-plugin ++ ${jarPluginVersion} ++ ++ true ++ ++ ++ ++ maven-resources-plugin ++ ${resourcesPluginVersion} ++ ++ ++ maven-surefire-plugin ++ ${surefireVersion} ++ ++ ++ maven-checkstyle-plugin ++ ${checkstylePluginVersion} ++ ++ ++ com.puppycrawl.tools ++ checkstyle ++ ${checkstyleVersion} ++ ++ ++ ++ ++ src/main/java ++ ++ true ++ ../aux/checkstyle.xml ++ ../aux/checkstyle-suppressions.xml ++ ../aux/license-header.txt ++ **/package-info.java ++ false ++ ++ ++ ++ org.apache.rat ++ apache-rat-plugin ++ ${ratPluginVersion} ++ ++ ++ src/test/resources/** ++ ++ ++ ++ ++ maven-javadoc-plugin ++ ${javadocPluginVersion} ++ ++ ++ none ++ ++ ++ ++ maven-source-plugin ++ ${sourcePluginVersion} ++ ++ ++ maven-gpg-plugin ++ ${gpgPluginVersion} ++ ++ ++ org.sonatype.plugins ++ nexus-staging-maven-plugin ++ ${nexusStagingPluginVersion} ++ ++ ossrh ++ https://oss.sonatype.org/ ++ false ++ ++ ++ ++ org.jacoco ++ jacoco-maven-plugin ++ ${jacocoVersion} ++ ++ ++ org.codehaus.plexus ++ plexus-component-metadata ++ ${plexusVersion} ++ ++ ++ ++ generate-metadata ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ quality ++ ++ true ++ ++ ++ ++ ++ maven-checkstyle-plugin ++ ++ ++ checkstyle-check ++ ++ check ++ ++ ++ ++ ++ ++ org.jacoco ++ jacoco-maven-plugin ++ ++ ++ ++ prepare-agent ++ ++ ++ ++ jacoco-report ++ post-integration-test ++ ++ report ++ ++ ++ ++ ++ ++ ++ ++ ++ release ++ ++ ++ ++ maven-assembly-plugin ++ ++ ++ org.apache.apache.resources ++ apache-source-release-assembly-descriptor ++ 1.0.6 ++ ++ ++ ++ ++ source-release-assembly ++ package ++ ++ single ++ ++ ++ true ++ ++ source-release ++ ++ gnu ++ ++ ++ ++ ++ ++ maven-javadoc-plugin ++ ++ ++ attach-javadoc ++ ++ jar ++ ++ ++ ++ ++ ++ maven-source-plugin ++ ++ ++ attach-sources ++ ++ jar-no-fork ++ ++ ++ ++ ++ ++ maven-gpg-plugin ++ ++ ++ sign-artifacts ++ package ++ ++ sign ++ ++ ++ ++ ++ ++ org.sonatype.plugins ++ nexus-staging-maven-plugin ++ true ++ ++ ++ org.apache.rat ++ apache-rat-plugin ++ ++ ++ rat-check ++ ++ check ++ ++ ++ ++ ++ ++ maven-site-plugin ++ ++ true ++ true ++ ++ ++ ++ ++ ++ ++ jdk9+ ++ ++ [9,) ++ ++ ++ ++ ++ maven-compiler-plugin ++ ++ 8 ++ ++ ++ ++ maven-surefire-plugin ++ ++ --add-opens java.base/java.lang=ALL-UNNAMED ++ ++ ++ ++ ++ ++ ++ +diff --git a/test/data/install_pom/xmvn/xmvn-tools/pom.xml b/test/data/install_pom/xmvn/xmvn-tools/pom.xml +new file mode 100644 +index 00000000..43abc443 +--- /dev/null ++++ b/test/data/install_pom/xmvn/xmvn-tools/pom.xml +@@ -0,0 +1,58 @@ ++ ++ ++ ++ 4.0.0 ++ ++ xmvn-parent ++ org.fedoraproject.xmvn ++ 4.0.0 ++ ../xmvn-parent ++ ++ xmvn-tools ++ pom ++ XMvn Tools ++ ++ XMvn Tools is parent POM for all XMvn tools. It holds ++ configuration common to all XMvn tools. ++ ++ ++ xmvn-resolve ++ xmvn-subst ++ xmvn-install ++ ++ ++ ++ ++ ++ maven-jar-plugin ++ ${jarPluginVersion} ++ ++ ++ ++ true ++ ${mainClass} ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/test/data/install_pom/xmvn/xmvn-tools/xmvn-install/pom.xml b/test/data/install_pom/xmvn/xmvn-tools/xmvn-install/pom.xml +new file mode 100644 +index 00000000..8c423069 +--- /dev/null ++++ b/test/data/install_pom/xmvn/xmvn-tools/xmvn-install/pom.xml +@@ -0,0 +1,69 @@ ++ ++ ++ ++ 4.0.0 ++ ++ org.fedoraproject.xmvn ++ xmvn-tools ++ 4.0.0 ++ ++ xmvn-install ++ XMvn Install ++ ++ XMvn Install is a command-line interface to XMvn installer. The ++ installer reads reactor metadata and performs artifact ++ installation according to specified configuration. ++ ++ ++ org.fedoraproject.xmvn.tools.install.cli.InstallerCli ++ ++ ++ ++ com.beust ++ jcommander ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-api ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-core ++ runtime ++ ++ ++ org.slf4j ++ slf4j-api ++ ++ ++ org.slf4j ++ slf4j-simple ++ runtime ++ ++ ++ org.ow2.asm ++ asm ++ ++ ++ org.apache.commons ++ commons-compress ++ ++ ++ +diff --git a/test/data/install_pom/xmvn/xmvn-tools/xmvn-resolve/pom.xml b/test/data/install_pom/xmvn/xmvn-tools/xmvn-resolve/pom.xml +new file mode 100644 +index 00000000..8cabc13f +--- /dev/null ++++ b/test/data/install_pom/xmvn/xmvn-tools/xmvn-resolve/pom.xml +@@ -0,0 +1,51 @@ ++ ++ ++ 4.0.0 ++ ++ xmvn-tools ++ org.fedoraproject.xmvn ++ 4.0.0 ++ .. ++ ++ xmvn-resolve ++ XMvn Resolver ++ ++ XMvn Resolver is a very simple commald-line tool to resolve Maven ++ artifacts from system repositories. Basically it's just an ++ interface to artifact resolution mechanism implemented by XMvn ++ Core. The primary intended use case of XMvn Resolver is debugging ++ local artifact repositories. ++ ++ ++ org.fedoraproject.xmvn.tools.resolve.ResolverCli ++ ++ ++ ++ com.beust ++ jcommander ++ any ++ ++ org.fedoraproject.xmvn ++ xmvn-api ++ any ++ ++ org.fedoraproject.xmvn ++ xmvn-core ++ runtime ++ any ++ ++ +diff --git a/test/data/maven_depmap/JPP-depmngmnt.pom b/test/data/maven_depmap/JPP-depmngmnt.pom +new file mode 100644 +index 00000000..ec86bb3d +--- /dev/null ++++ b/test/data/maven_depmap/JPP-depmngmnt.pom +@@ -0,0 +1,33 @@ ++ ++ ++ 4.0.0 ++ org.fedoraproject.xmvn ++ 4.0.0 ++ xmvn-subst ++ XMvn Subst ++ ++ XMvn Subst is a tool that can substitute Maven artifact files with ++ symbolic links to corresponding files in artifact repository. ++ ++ ++ 1.82 ++ ++ ++ ++ ++ com.beust ++ jcommander ++ ${jcommanderVersion} ++ ++ ++ ++ ++ ++ com.beust ++ jcommander ++ ++ ++ +diff --git a/test/data/maven_depmap/JPP-modelexpansion.pom b/test/data/maven_depmap/JPP-modelexpansion.pom +new file mode 100644 +index 00000000..3feced96 +--- /dev/null ++++ b/test/data/maven_depmap/JPP-modelexpansion.pom +@@ -0,0 +1,33 @@ ++ ++ ++ 4.0.0 ++ org.fedoraproject.xmvn ++ 4.0.0 ++ xmvn-subst ++ XMvn Subst ++ ++ XMvn Subst is a tool that can substitute Maven artifact files with ++ symbolic links to corresponding files in artifact repository. ++ ++ ++ 1.82 ++ ++ ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-api ++ ${project.version} ++ ++ ++ ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-api ++ ++ ++ +diff --git a/test/data/maven_depmap/test_alias_extension-want.xml b/test/data/maven_depmap/test_alias_extension-want.xml +index 6b0d1aee..d502fdf8 100644 +--- a/test/data/maven_depmap/test_alias_extension-want.xml ++++ b/test/data/maven_depmap/test_alias_extension-want.xml +@@ -13,9 +13,6 @@ + + + %s/usr/share/java/commons-io.jar +- +- true +- + + + alias +@@ -30,9 +27,6 @@ + + + %s/JPP-alias.pom +- +- true +- + + + +diff --git a/test/data/maven_depmap/test_append-want.xml b/test/data/maven_depmap/test_append-want.xml +index 65d420e6..0ca20911 100644 +--- a/test/data/maven_depmap/test_append-want.xml ++++ b/test/data/maven_depmap/test_append-want.xml +@@ -12,9 +12,6 @@ + y + + +- +- true +- + + + +diff --git a/test/data/maven_depmap/test_append_and_namespace-want.xml b/test/data/maven_depmap/test_append_and_namespace-want.xml +index 88b1f816..368863bf 100644 +--- a/test/data/maven_depmap/test_append_and_namespace-want.xml ++++ b/test/data/maven_depmap/test_append_and_namespace-want.xml +@@ -13,9 +13,6 @@ + y + + +- +- true +- + + + +diff --git a/test/data/maven_depmap/test_basic-want.xml b/test/data/maven_depmap/test_basic-want.xml +index 540f076a..200044bf 100644 +--- a/test/data/maven_depmap/test_basic-want.xml ++++ b/test/data/maven_depmap/test_basic-want.xml +@@ -6,9 +6,6 @@ + bndlib + 1.50.0 + %s/usr/share/java/bndlib.jar +- +- true +- + + + biz.aQute +@@ -16,9 +13,6 @@ + pom + 1.50.0 + %s/JPP-bndlib.pom +- +- true +- + + + +diff --git a/test/data/maven_depmap/test_buildroot-want.xml b/test/data/maven_depmap/test_buildroot-want.xml +index 604046a5..9fa588d4 100644 +--- a/test/data/maven_depmap/test_buildroot-want.xml ++++ b/test/data/maven_depmap/test_buildroot-want.xml +@@ -7,9 +7,6 @@ + 17 + war + %s/usr/share/java/commons-war.war +- +- true +- + + + commons +@@ -17,9 +14,6 @@ + 17 + pom + /usr/share/maven-poms/JPP-commons-war.pom +- +- true +- + + + +diff --git a/test/data/maven_depmap/test_classifier-want.xml b/test/data/maven_depmap/test_classifier-want.xml +index 6a6f74ae..8fa90b01 100644 +--- a/test/data/maven_depmap/test_classifier-want.xml ++++ b/test/data/maven_depmap/test_classifier-want.xml +@@ -14,9 +14,6 @@ + c + + +- +- true +- + + + +diff --git a/test/data/maven_depmap/test_expansion-want.xml b/test/data/maven_depmap/test_expansion-want.xml +new file mode 100644 +index 00000000..10c34449 +--- /dev/null ++++ b/test/data/maven_depmap/test_expansion-want.xml +@@ -0,0 +1,35 @@ ++ ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-subst ++ 4.0.0 ++ %s/usr/share/java/depmngmnt.jar ++ ++ ++ com.beust ++ jcommander ++ jar ++ false ++ 1.82 ++ ++ ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-subst ++ pom ++ 4.0.0 ++ %s/JPP-depmngmnt.pom ++ ++ ++ com.beust ++ jcommander ++ jar ++ false ++ 1.82 ++ ++ ++ ++ ++ +diff --git a/test/data/maven_depmap/test_expansion_model-want.xml b/test/data/maven_depmap/test_expansion_model-want.xml +new file mode 100644 +index 00000000..6237358c +--- /dev/null ++++ b/test/data/maven_depmap/test_expansion_model-want.xml +@@ -0,0 +1,35 @@ ++ ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-subst ++ 4.0.0 ++ %s/usr/share/java/depmngmnt.jar ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-api ++ jar ++ false ++ 4.0.0 ++ ++ ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-subst ++ pom ++ 4.0.0 ++ %s/JPP-modelexpansion.pom ++ ++ ++ org.fedoraproject.xmvn ++ xmvn-api ++ jar ++ false ++ 4.0.0 ++ ++ ++ ++ ++ +diff --git a/test/data/maven_depmap/test_mvn_spec-want.xml b/test/data/maven_depmap/test_mvn_spec-want.xml +index d2c03ec7..dd49eb83 100644 +--- a/test/data/maven_depmap/test_mvn_spec-want.xml ++++ b/test/data/maven_depmap/test_mvn_spec-want.xml +@@ -6,9 +6,6 @@ + b + 12 + %s/usr/share/java/commons-io.jar +- +- true +- + + + +diff --git a/test/data/maven_depmap/test_mvn_spec_buildroot-want.xml b/test/data/maven_depmap/test_mvn_spec_buildroot-want.xml +index 0f7dcd5f..0efeddb8 100644 +--- a/test/data/maven_depmap/test_mvn_spec_buildroot-want.xml ++++ b/test/data/maven_depmap/test_mvn_spec_buildroot-want.xml +@@ -7,9 +7,6 @@ + 1 + war + %s/usr/share/java/commons-war.war +- +- true +- + + + +diff --git a/test/data/maven_depmap/test_mvn_spec_war-want.xml b/test/data/maven_depmap/test_mvn_spec_war-want.xml +index deae16ff..1dde1a95 100644 +--- a/test/data/maven_depmap/test_mvn_spec_war-want.xml ++++ b/test/data/maven_depmap/test_mvn_spec_war-want.xml +@@ -7,9 +7,6 @@ + war + 1 + %s/usr/share/java/commons-war.war +- +- true +- + + + +diff --git a/test/data/maven_depmap/test_namespace-want.xml b/test/data/maven_depmap/test_namespace-want.xml +index da36a475..adf5b2cc 100644 +--- a/test/data/maven_depmap/test_namespace-want.xml ++++ b/test/data/maven_depmap/test_namespace-want.xml +@@ -7,9 +7,6 @@ + 12 + %s/usr/share/java/commons-io.jar + myns +- +- true +- + + + +diff --git a/test/data/maven_depmap/test_version-want.xml b/test/data/maven_depmap/test_version-want.xml +index 06e02bc8..297d0ca9 100644 +--- a/test/data/maven_depmap/test_version-want.xml ++++ b/test/data/maven_depmap/test_version-want.xml +@@ -11,9 +11,6 @@ + 2 + 3 + +- +- true +- + + + +diff --git a/test/data/maven_depmap/test_version_append-want.xml b/test/data/maven_depmap/test_version_append-want.xml +index 33e688cd..028ad54f 100644 +--- a/test/data/maven_depmap/test_version_append-want.xml ++++ b/test/data/maven_depmap/test_version_append-want.xml +@@ -17,9 +17,6 @@ + b + + +- +- true +- + + + +diff --git a/test/data/maven_depmap/test_version_namespace-want.xml b/test/data/maven_depmap/test_version_namespace-want.xml +index 65e331a5..958725d2 100644 +--- a/test/data/maven_depmap/test_version_namespace-want.xml ++++ b/test/data/maven_depmap/test_version_namespace-want.xml +@@ -18,9 +18,6 @@ + b + + +- +- true +- + + + +diff --git a/test/data/maven_depmap/test_versioned-want.xml b/test/data/maven_depmap/test_versioned-want.xml +index 8885ff1a..981ba85c 100644 +--- a/test/data/maven_depmap/test_versioned-want.xml ++++ b/test/data/maven_depmap/test_versioned-want.xml +@@ -10,9 +10,6 @@ + 2.0.0 + + %s/usr/share/java/versioned-2.0.0.war +- +- true +- + + + +diff --git a/test/data/maven_depmap/test_versioned2-want.xml b/test/data/maven_depmap/test_versioned2-want.xml +index ea1b24cf..e94fed23 100644 +--- a/test/data/maven_depmap/test_versioned2-want.xml ++++ b/test/data/maven_depmap/test_versioned2-want.xml +@@ -9,9 +9,6 @@ + 1.2 + + %s/usr/share/java/versioned2-1.2.jar +- +- true +- + + + +diff --git a/test/data/maven_depmap/test_versioned_classifier-want.xml b/test/data/maven_depmap/test_versioned_classifier-want.xml +index c3891caa..d2aca331 100644 +--- a/test/data/maven_depmap/test_versioned_classifier-want.xml ++++ b/test/data/maven_depmap/test_versioned_classifier-want.xml +@@ -11,9 +11,6 @@ + 1.2 + + %s/usr/share/java/versioned-3-tests-1.jar +- +- true +- + + + +diff --git a/test/data/maven_depmap/test_versioned_with_pom-want.xml b/test/data/maven_depmap/test_versioned_with_pom-want.xml +index c2b344e1..8d259ab9 100644 +--- a/test/data/maven_depmap/test_versioned_with_pom-want.xml ++++ b/test/data/maven_depmap/test_versioned_with_pom-want.xml +@@ -9,9 +9,6 @@ + 2013.10 + + %s/usr/share/java/testversioned-2013.10.jar +- +- true +- + + + alias +@@ -22,9 +19,6 @@ + 2013.10 + + %s/JPP-testversioned-2013.10.pom +- +- true +- + + + +diff --git a/test/data/maven_depmap/test_war-want.xml b/test/data/maven_depmap/test_war-want.xml +index cac27a84..e8e2e56b 100644 +--- a/test/data/maven_depmap/test_war-want.xml ++++ b/test/data/maven_depmap/test_war-want.xml +@@ -7,9 +7,6 @@ + 17 + war + %s/usr/share/java/commons-war.war +- +- true +- + + + commons +@@ -17,9 +14,6 @@ + pom + 17 + %s/JPP-commons-war.pom +- +- true +- + + + +diff --git a/test/data/maven_depmap/usr/share/java/depmngmnt.jar b/test/data/maven_depmap/usr/share/java/depmngmnt.jar +new file mode 100644 +index 00000000..db960407 +Binary files /dev/null and b/test/data/maven_depmap/usr/share/java/depmngmnt.jar differ +diff --git a/test/install_pom_test.py b/test/install_pom_test.py +new file mode 100644 +index 00000000..c6acc644 +--- /dev/null ++++ b/test/install_pom_test.py +@@ -0,0 +1,166 @@ ++import inspect ++import os ++import unittest ++import shutil ++ ++from test_common import (DIRPATH, install_pom, call_script, assertIn) ++ ++from lxml import etree ++from xml_compare import compare_lxml_etree ++ ++ ++class TestInstallPom(unittest.TestCase): ++ ++ maxDiff = 2048 ++ ++ def setUp(self): ++ try: ++ self.olddir = os.getcwd() ++ self.datadir = os.path.join(DIRPATH, ++ 'data', ++ 'install_pom') ++ self.workdir = os.path.realpath(os.path.join(self.datadir, "..", ++ "install_pom_workdir")) ++ ++ shutil.copytree(self.datadir, self.workdir) ++ os.chdir(self.workdir) ++ except OSError: ++ pass ++ ++ def tearDown(self): ++ try: ++ shutil.rmtree(self.workdir) ++ os.chdir(self.olddir) ++ except OSError: ++ pass ++ ++ def check_result(self, test_name, result): ++ got = etree.parse(result).getroot() ++ want = etree.parse(os.path.join(self.workdir, ++ test_name+"-want.xml")).getroot() ++ report = compare_lxml_etree(got, want) ++ if report: ++ report = '\n' + report ++ return report ++ ++ @install_pom('JPP-bndlib.pom') ++ def test_basic(self, stdout, stderr, return_value, result): ++ self.assertEqual(return_value, 0) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ result) ++ self.assertEqual(report, '', report) ++ ++ @install_pom('JPP-apache-commons-io.pom') ++ def test_packaging_pom(self, stdout, stderr, return_value, result): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ result) ++ self.assertEqual(report, '', report) ++ ++ @install_pom('JPP-noversion.pom') ++ def test_missing_version(self, stdout, stderr, return_value, result): ++ self.assertNotEqual(return_value, 0) ++ ++ @install_pom('JPP-noversion-pom.pom') ++ def test_packaging_pom_missing_version(self, stdout, stderr, return_value, result): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ result) ++ self.assertEqual(report, '', report) ++ ++ @install_pom('JPP-parent-version.pom') ++ def test_parent_version(self, stdout, stderr, return_value, result): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ result) ++ self.assertEqual(report, '', report) ++ ++ @install_pom(os.path.join('cglib', 'pom.xml')) ++ def test_parent_install(self, stdout, stderr, return_value, result): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ result) ++ self.assertEqual(report, '', report) ++ ++ @install_pom(os.path.join('cglib', 'cglib', 'pom.xml')) ++ def test_interpolate_from_parent(self, stdout, stderr, return_value, result): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ result) ++ self.assertEqual(report, '', report) ++ ++ @install_pom(os.path.join('cglib', 'cglib-integration-test', 'pom.xml')) ++ def test_interpolate_from_model(self, stdout, stderr, return_value, result): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ result) ++ self.assertEqual(report, '', report) ++ ++ @install_pom(os.path.join('xmvn', 'xmvn-mojo', 'pom.xml')) ++ def test_parent_relpath(self, stdout, stderr, return_value, result): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ result) ++ self.assertEqual(report, '', report) ++ ++ @install_pom(os.path.join('xmvn', 'xmvn-tools', 'xmvn-install', 'pom.xml')) ++ def test_parent_chain(self, stdout, stderr, return_value, result): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ result) ++ self.assertEqual(report, '', report) ++ ++ @install_pom(os.path.join('xmvn', 'xmvn-tools', 'xmvn-resolve', 'pom.xml')) ++ def test_any_not_final(self, stdout, stderr, return_value, result): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ result) ++ self.assertEqual(report, '', report) ++ ++ @install_pom(os.path.join('languagetool', 'languagetool-standalone', 'pom.xml')) ++ def test_dep_type(self, stdout, stderr, return_value, result): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ result) ++ self.assertEqual(report, '', report) ++ ++ @install_pom(os.path.join('languagetool', 'languagetool-language-modules', 'ja', 'pom.xml')) ++ def test_dep_classifier(self, stdout, stderr, return_value, result): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ result) ++ self.assertEqual(report, '', report) ++ ++ @install_pom('a_binary_file.pom') ++ def test_not_pom(self, stdout, stderr, return_value, result): ++ self.assertNotEqual(return_value, 0) ++ ++ @install_pom('a_file_that_does_not_exist.pom') ++ def test_no_pom(self, stdout, stderr, return_value, result): ++ self.assertNotEqual(return_value, 0) ++ ++ def test_no_args(self): ++ stdout, stderr, return_value = call_script(os.path.join(DIRPATH, '..', ++ 'java-utils', 'install_pom.py'), []) ++ self.assertNotEqual(return_value, 0) ++ ++ def test_no_directory(self): ++ stdout, stderr, return_value = call_script(os.path.join(DIRPATH, '..', ++ 'java-utils', 'install_pom.py'), ++ ['JPP-bndlib.pom', os.path.join('missingdir', 'JPP-bndlib.pom')]) ++ self.assertNotEqual(return_value, 0) ++ ++ def test_not_directory(self): ++ stdout, stderr, return_value = call_script(os.path.join(DIRPATH, '..', ++ 'java-utils', 'install_pom.py'), ++ ['JPP-bndlib.pom', os.path.join('fakedir', 'JPP-bndlib.pom')]) ++ self.assertNotEqual(return_value, 0) ++ ++ def test_no_overwrite(self): ++ stdout, stderr, return_value = call_script(os.path.join(DIRPATH, '..', ++ 'java-utils', 'install_pom.py'), ++ ['JPP-bndlib.pom', 'fakedir']) ++ self.assertNotEqual(return_value, 0) ++ ++if __name__ == '__main__': ++ unittest.main() +diff --git a/test/maven_depmap_test.py b/test/maven_depmap_test.py +new file mode 100644 +index 00000000..41b2c014 +--- /dev/null ++++ b/test/maven_depmap_test.py +@@ -0,0 +1,354 @@ ++import inspect ++from zipfile import ZipFile ++import os ++import unittest ++import shutil ++from test_common import (DIRPATH, mvn_depmap, call_script, ++ prepare_metadata, assertIn) ++from test_rpmbuild import Package ++ ++from lxml import etree ++from xml_compare import compare_lxml_etree ++ ++ ++class TestMavenDepmap(unittest.TestCase): ++ ++ maxDiff = 2048 ++ ++ def setUp(self): ++ try: ++ self.olddir = os.getcwd() ++ self.datadir = os.path.join(DIRPATH, ++ 'data', ++ 'maven_depmap') ++ self.workdir = os.path.realpath(os.path.join(self.datadir, "..", ++ "maven_depmap_workdir")) ++ ++ shutil.copytree(self.datadir, self.workdir) ++ os.chdir(self.workdir) ++ except OSError: ++ pass ++ ++ prepare_metadata(self.workdir) ++ ++ def tearDown(self): ++ try: ++ shutil.rmtree(self.workdir) ++ os.chdir(self.olddir) ++ except OSError: ++ pass ++ ++ def check_result(self, test_name, depmap): ++ got = etree.fromstring(depmap) ++ want = etree.parse(os.path.join(self.workdir, ++ test_name+"-want.xml")).getroot() ++ report = compare_lxml_etree(got, want, unordered=['artifact', 'maven']) ++ if report: ++ report = '\n' + report ++ return report ++ ++ def check_archive(self, test_name, archive_path, keep_comments=False): ++ got = ZipFile(archive_path, 'r') ++ want = ZipFile('{name}-want.{ext}'.format(name=test_name, ++ ext=archive_path.split('.')[-1])) ++ try: ++ if got.testzip() is not None: ++ return ("Not valid zip file", "") ++ got_mf = self.read_archive(got, keep_comments) ++ want_mf = self.read_archive(want, keep_comments) ++ finally: ++ got.close() ++ want.close() ++ return (got_mf, want_mf) ++ ++ def read_archive(self, archive, keep_comments=False): ++ res = {} ++ for filename in archive.namelist(): ++ mf_file = archive.open(filename) ++ try: ++ if (keep_comments): ++ res[str(filename)] = mf_file.readlines() ++ else: ++ res[str(filename)] = \ ++ [line for line in mf_file.readlines() ++ if not line.startswith(b'#')] ++ finally: ++ mf_file.close() ++ return res ++ ++ @mvn_depmap('JPP-bndlib.pom', 'usr/share/java/bndlib.jar') ++ def test_basic(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ depmap) ++ self.assertEqual(report, '', report) ++ ++ @mvn_depmap('JPP-commons-io.pom') ++ def test_missing_jar_arg(self, stdout, stderr, return_value, depmap): ++ self.assertNotEqual(return_value, 0) ++ ++ @mvn_depmap('JPP-apache-commons-io.pom') ++ def test_packaging_pom_no_jar(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ depmap) ++ self.assertEqual(report, '', report) ++ ++ @mvn_depmap('JPP-noversion.pom') ++ def test_missing_version(self, stdout, stderr, return_value, depmap): ++ self.assertNotEqual(return_value, 0) ++ ++ @mvn_depmap('JPP-parent-version.pom') ++ def test_parent_version(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ depmap) ++ self.assertEqual(report, '', report) ++ ++ @mvn_depmap('JPP-commons-war.pom', 'usr/share/java/commons-war.war') ++ def test_war(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ depmap) ++ self.assertEqual(report, '', report) ++ ++ def test_not_pom(self): ++ stdout, stderr, return_value = call_script(os.path.join(DIRPATH, '..', ++ 'java-utils', 'maven_depmap.py'), ++ ['.out', 'usr/share/java/commons-io.jar', ++ 'usr/share/java/commons-io.jar']) ++ self.assertNotEqual(return_value, 0) ++ ++ def test_no_pom(self): ++ stdout, stderr, return_value = call_script(os.path.join(DIRPATH, '..', ++ 'java-utils', 'maven_depmap.py'), ++ ['.out']) ++ self.assertNotEqual(return_value, 0) ++ ++ def test_no_args(self): ++ stdout, stderr, return_value = call_script(os.path.join(DIRPATH, '..', ++ 'java-utils', 'maven_depmap.py'), ++ []) ++ self.assertNotEqual(return_value, 0) ++ ++ @mvn_depmap('a:b:12', 'usr/share/java/commons-io.jar') ++ def test_mvn_spec(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ depmap) ++ self.assertEqual(report, '', report) ++ ++ @mvn_depmap('a:b:war::1', 'usr/share/java/commons-war.war') ++ def test_mvn_spec_war(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ depmap) ++ self.assertEqual(report, '', report) ++ ++ @mvn_depmap('/builddir/build/BUILDROOT/pkg-2.5.2-2.fc21.x86_64/a:b:war::1', ++ 'usr/share/java/commons-war.war') ++ def test_mvn_spec_buildroot(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ depmap) ++ self.assertEqual(report, '', report) ++ ++ @mvn_depmap('builddir/build/BUILDROOT/usr/share/maven-poms/JPP-commons-war.pom', ++ 'usr/share/java/commons-war.war') ++ def test_buildroot(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ depmap) ++ self.assertEqual(report, '', report) ++ ++ @mvn_depmap('a:b:12', 'usr/share/java/commons-io.jar', ['-a', 'x:y']) ++ def test_append(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ depmap) ++ self.assertEqual(report, '', report) ++ ++ # FIXME: aliases cause trouble ++ #@mvn_depmap('a:b:12', 'usr/share/java/commons-io.jar', ['-a', 'x:y,z:w']) ++ #def test_append_multiple(self, stdout, stderr, return_value, depmap): ++ # self.assertEqual(return_value, 0, stderr) ++ # report = self.check_result(inspect.currentframe().f_code.co_name, ++ # depmap) ++ # self.assertEqual(report, '', report) ++ ++ @mvn_depmap('a:b:12', 'usr/share/java/commons-io.jar', ['-n', 'myns']) ++ def test_namespace(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ depmap) ++ self.assertEqual(report, '', report) ++ ++ @mvn_depmap('a:b:12', 'usr/share/java/commons-io.jar', ['--namespace=myns', ++ '--append=x:y']) ++ def test_append_and_namespace(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ depmap) ++ self.assertEqual(report, '', report) ++ ++ @mvn_depmap('a:b:12', 'usr/foo/share/java/compare_jar.jar') ++ def test_compare_jar(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ got, want = self.check_archive(inspect.currentframe().f_code.co_name, ++ 'usr/foo/share/java/compare_jar.jar') ++ self.assertEqual(got, want) ++ ++ #test case for rhbz#1012982 ++ @mvn_depmap('x:y:war:z:0.1', 'usr/foo/share/java/compare_jar_class_ext.war') ++ def test_compare_jar_class_ext(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ got, want = self.check_archive(inspect.currentframe().f_code.co_name, ++ 'usr/foo/share/java/compare_jar_class_ext.war') ++ self.assertEqual(got, want) ++ ++ @mvn_depmap('a:b:12', 'usr/share/java/already-has-pom-properties.jar') ++ def test_compare_jar_unmodified(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ got, want = self.check_archive(inspect.currentframe().f_code.co_name, ++ 'usr/share/java/already-has-pom-properties.jar', keep_comments=True) ++ self.assertEqual(got, want) ++ ++ @mvn_depmap('x:y:0.1', 'usr/share/java/already-has-pom-properties.jar') ++ def test_compare_jar_modified(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ got, want = self.check_archive(inspect.currentframe().f_code.co_name, ++ 'usr/share/java/already-has-pom-properties.jar') ++ self.assertEqual(got, want) ++ ++ @mvn_depmap('/builddir/build/BUILDROOT/pkg-2.5.2-2.fc21.x86_64/x:y:0.1', ++ 'usr/share/java/already-has-pom-properties.jar') ++ def test_rhbz1012245(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ got, want = self.check_archive('test_compare_jar_modified', ++ 'usr/share/java/already-has-pom-properties.jar') ++ self.assertEqual(got, want) ++ ++ @mvn_depmap('x:y:jar:z:0.1', 'usr/share/java/commons-io-z.jar', ++ ['-a', 'a:b:jar:c:12']) ++ def test_classifier(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ depmap) ++ self.assertEqual(report, '', report) ++ ++ @mvn_depmap('x:y:0.1', 'usr/share/java/commons-io.jar', ['-r', '1,2,3']) ++ def test_version(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ depmap) ++ self.assertEqual(report, '', report) ++ ++ @mvn_depmap('JPP/x:y:0.1', 'usr/share/java/commons-io.jar', ++ ['--versions', '1,2,3']) ++ def test_version2(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result('test_version', depmap) ++ self.assertEqual(report, '', report) ++ ++ @mvn_depmap('x:y:0.1', 'usr/share/java/commons-io.jar', ++ ['-r', '1,2,3', '-a', 'a:b:32']) ++ def test_version_append(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ depmap) ++ self.assertEqual(report, '', report) ++ ++ @mvn_depmap('x:y:0.1', 'usr/share/java/commons-io.jar', ++ ['-r', '1,2,3', '-n', 'ns', '-a', 'a:b:32']) ++ def test_version_namespace(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ depmap) ++ self.assertEqual(report, '', report) ++ ++ @mvn_depmap('x:y', 'usr/share/java/commons-io.jar') ++ def test_missing_version2(self, stdout, stderr, return_value, depmap): ++ self.assertNotEqual(return_value, 0) ++ ++ @mvn_depmap('x:y:war:1', 'usr/share/java/commons-io.jar') ++ def test_incorrect_extension(self, stdout, stderr, return_value, depmap): ++ self.assertNotEqual(return_value, 0) ++ ++ @mvn_depmap('evil:', 'usr/share/java/commons-io.jar') ++ def test_incorrect_artifact(self, stdout, stderr, return_value, depmap): ++ self.assertNotEqual(return_value, 0) ++ ++ @mvn_depmap('JPP-cdata.pom') ++ def test_cdata(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ depmap) ++ self.assertEqual(report, '', report) ++ ++ @mvn_depmap('g:a:war:1.2.3', 'usr/share/java/versioned.war', ['-r', '2.0.0']) ++ def test_versioned(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ depmap) ++ self.assertEqual(report, '', report) ++ self.assertEqual(False, os.path.exists('usr/share/java/versioned.war')) ++ self.assertEqual(True, os.path.exists('usr/share/java/versioned-2.0.0.war')) ++ ++ @mvn_depmap('g:a:1.2', 'usr/share/java/versioned2.jar', ['-r', '1.2']) ++ def test_versioned2(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ depmap) ++ self.assertEqual(report, '', report) ++ self.assertEqual(False, os.path.exists('usr/share/java/versioned2.jar')) ++ self.assertEqual(True, os.path.exists('usr/share/java/versioned2-1.2.jar')) ++ ++ @mvn_depmap('g:a:jar:tests:1', 'usr/share/java/versioned-3-tests.jar', ['-r', '1,1.2']) ++ def test_versioned_classifier(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ depmap) ++ self.assertEqual(report, '', report) ++ self.assertEqual(False, os.path.exists('usr/share/java/versioned-3-tests.jar')) ++ self.assertEqual(True, os.path.exists('usr/share/java/versioned-3-tests-1.jar')) ++ self.assertEqual(True, os.path.exists('usr/share/java/versioned-3-tests-1.2.jar')) ++ ++ @mvn_depmap('JPP-testversioned.pom', 'usr/share/java/testversioned.jar', ['-r', '2013.10']) ++ def test_versioned_with_pom(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ depmap) ++ self.assertEqual(report, '', report) ++ self.assertEqual(False, os.path.exists('usr/share/java/testversioned.jar')) ++ self.assertEqual(True, os.path.exists('usr/share/java/testversioned-2013.10.jar')) ++ ++ @mvn_depmap('JPP-alias.pom', 'usr/share/java/commons-io.jar', ['-a', 'a:b']) ++ def test_alias_extension(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ depmap) ++ self.assertEqual(report, '', report) ++ ++ @mvn_depmap('JPP-depmngmnt.pom', 'usr/share/java/depmngmnt.jar') ++ def test_expansion(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ depmap) ++ self.assertEqual(report, '', report) ++ ++ @mvn_depmap('JPP-modelexpansion.pom', 'usr/share/java/depmngmnt.jar') ++ def test_expansion_model(self, stdout, stderr, return_value, depmap): ++ self.assertEqual(return_value, 0, stderr) ++ report = self.check_result(inspect.currentframe().f_code.co_name, ++ depmap) ++ self.assertEqual(report, '', report) ++ ++ def test_missing_jar(self): ++ p = Package('test') ++ p.append_to_prep("%add_maven_depmap g:a:1 this/file/doesnt/exist.jar") ++ _, stderr, return_value = p.run_prep() ++ self.assertEqual(1, return_value, 'bad return value') ++ assertIn(self, 'file not found', stderr) ++ ++if __name__ == '__main__': ++ unittest.main() +diff --git a/test/test_common.py b/test/test_common.py +index d694046a..d3b699f2 100644 +--- a/test/test_common.py ++++ b/test/test_common.py +@@ -266,6 +266,47 @@ def rpmgen_process_args(args, kwargs): + return args, kwargs + + ++def install_pom(pom): ++ def test_decorator(fun): ++ @wraps(fun) ++ def test_decorated(self): ++ os.chdir(self.workdir) ++ buildroot = os.path.join(self.workdir, "builddir/build/BUILDROOT") ++ env = {'RPM_BUILD_ROOT': buildroot} ++ scriptpath = path.join(DIRPATH, '..', 'java-utils', 'install_pom.py') ++ args = [pom, '.result_file'] ++ (stdout, stderr, return_value) = call_script(scriptpath, args, extra_env=env) ++ res_file = None ++ if return_value == 0: ++ res_file = open('.result_file','r') ++ fun(self, stdout, stderr, return_value, result=res_file) ++ if res_file != None: ++ os.remove('.result_file') ++ return test_decorated ++ return test_decorator ++ ++def mvn_depmap(pom, jar=None, fnargs=None): ++ def test_decorator(fun): ++ @wraps(fun) ++ def test_decorated(self): ++ os.chdir(self.workdir) ++ buildroot = os.path.join(self.workdir, "builddir/build/BUILDROOT") ++ env = {'RPM_BUILD_ROOT': buildroot} ++ scriptpath = path.join(DIRPATH, '..', 'java-utils', 'maven_depmap.py') ++ args = ['.fragment_data', pom] ++ if jar: ++ args.append(path.join(os.getcwd(), jar)) ++ args.extend(fnargs or []) ++ (stdout, stderr, return_value) = call_script(scriptpath, args, extra_env=env) ++ frag = None ++ if return_value == 0: ++ with open('.fragment_data','r') as frag_file: ++ frag = frag_file.read() ++ os.remove('.fragment_data') ++ fun(self, stdout, stderr, return_value, depmap=frag) ++ return test_decorated ++ return test_decorator ++ + def mvn_artifact(pom, jar=None): + def test_decorator(fun): + @wraps(fun) diff --git a/javapackages-tools.changes b/javapackages-tools.changes index 1f13ddd..38f4b1e 100644 --- a/javapackages-tools.changes +++ b/javapackages-tools.changes @@ -1,3 +1,70 @@ +------------------------------------------------------------------- +Thu Jul 7 06:50:09 UTC 2022 - Fridrich Strba + +- Update to upstream version 6.1.0 + * Release version 6.1.0 + * Introduce common and extra subpackages + * Update documentation + * Add lua interpreter to check and GH actions + * Remove license headers from wrapper scripts + * Make scripts compatible with rpmlua + * Add more tests, fix behaviour + * Implement separate simple class name matching + * Minor changes + * Modularize Lua scripts + * Add Lua scripts for removing annotations + * Update build status badge in README.md + * Migrate CI from TravisCI to GitHub Actions + * Fix running tests without coverage + * Update ivy-local-classpath + * Release version 6.0.0 + * Fix extra XML handling of pom_change_dep + * Add reproducer for #82 + * Respect %jpb_env RPM macro + * Add bootstrap metadata to XMvn resolver config + * Delete run_tests.py + * Replace nose by pytest + * [install] Make glob pattern work with Python 3.10 + * Adding ppc64le architecture support on travis-ci + * Drop deprecated add_maven_depmap macro + * Drop SCL support + * Fix provides matching + * Fix builddep snippet generation + * [test] Add test for builddep snippet generation + * Add location of java binary used by the java-1.8.0-openjdk + (JRE) package so that setting JAVA_HOME will work correctly + * Use XMvn Javadoc MOJO by default + * Remove explicit import of Python 3 features + * Remove dependency on Six compatibility library + * Fix invalid in XMvn configuration + * [test] Don't try to kill PID 1 during tests + * [travis] Drop Python 2 from test matrix + * Add separate subpackage with RPM generators + * mvn_build: replace inline shell scriptlet with native python + code + * [test] Don't use networking during tests + * Add apache-rat-plugin to skippedPlugins + * Skip execution of various Maven plugins + * Remove Python 3.5 from .travis.yml + * Make generated javadoc package noarch +- Added patch: + * javapackages-6.1.0-maven-depmap.patch + + Bulk patch correspoding to our pull request + https://github.com/fedora-java/javapackages/pull/92 which + brings back some of the removed tools that we depend on + heavily +- Modified patches: + * python-optional.patch + * suse-use-libdir.patch + + Rediff to changed context +- Removed patches: + * 0001-Let-maven_depmap.py-generate-metadata-with-dependenc.patch + * 0002-Do-not-try-to-construct-POM-from-maven-coordinate-st.patch + * 0003-Fix-tests-after-the-recent-maven_depmap.py-changes.patch + + Already part of the above-mentioned bulk patch + * 0004-Remove-dependency-on-Six-compatibility-library.patch + + Upstream patch already integrated in the 6.x code-line + ------------------------------------------------------------------- Sun Jun 5 20:04:33 UTC 2022 - Fridrich Strba diff --git a/javapackages-tools.spec b/javapackages-tools.spec index d1e8290..555b083 100644 --- a/javapackages-tools.spec +++ b/javapackages-tools.spec @@ -30,7 +30,7 @@ Name: javapackages-tools-%{flavor} %else Name: javapackages-tools %endif -Version: 5.3.1 +Version: 6.1.0 Release: 0 Summary: Macros and scripts for Java packaging support License: BSD-3-Clause @@ -46,10 +46,7 @@ Patch1: python-optional.patch # Avoid generating unresolvable requires Patch2: suse-no-epoch.patch #PATCH-FIX-SUSE: Let maven_depmap.py generate metadata with dependencies under certain circumstances -Patch3: 0001-Let-maven_depmap.py-generate-metadata-with-dependenc.patch -Patch4: 0002-Do-not-try-to-construct-POM-from-maven-coordinate-st.patch -Patch5: 0003-Fix-tests-after-the-recent-maven_depmap.py-changes.patch -Patch6: 0004-Remove-dependency-on-Six-compatibility-library.patch +Patch3: javapackages-%{version}-maven-depmap.patch BuildRequires: asciidoc BuildRequires: fdupes BuildRequires: perl @@ -68,8 +65,6 @@ Obsoletes: jpackage-utils < %{version} BuildRequires: %{python_module lxml} %if 0%{?suse_version} > 1320 BuildRequires: %{python_module pytest} -%else -BuildRequires: %{python_module six} %endif BuildRequires: %{python_module setuptools} BuildRequires: python-rpm-macros @@ -124,9 +119,6 @@ allows artifact resolution using XMvn resolver. Summary: Module for handling various files for Java packaging Group: Development/Languages/Java Requires: python-lxml -%if 0%{?suse_version} <= 1320 -Requires: python-six -%endif %description -n python-javapackages Module for handling, querying and manipulating of various files for Java @@ -140,9 +132,6 @@ Group: Development/Languages/Java Requires: python3-lxml Obsoletes: python-javapackages < %{version}-%{release} Provides: python-javapackages = %{version}-%{release} -%if 0%{?suse_version} <= 1320 -Requires: python3-six -%endif %description -n python3-javapackages Module for handling, querying and manipulating of various files for Java @@ -162,15 +151,7 @@ This package provides non-essential macros and scripts to support Java packaging %prep %setup -q -n javapackages-%{version} -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%if 0%{?suse_version} > 1320 -%patch6 -p1 -%endif +%autopatch -p1 # The usr/lib is hardcoded in configuration files too new_dir=$(echo %{_libdir} | sed 's#/##') @@ -264,7 +245,7 @@ popd %else -%files -n javapackages-local -f files-local +%files -n javapackages-local -f files-common -f files-extra -f files-compat -f files-generators %dir %{_datadir}/java-utils %files -n javapackages-gradle -f files-gradle diff --git a/python-optional.patch b/python-optional.patch index 1fa7586..7dfdfc7 100644 --- a/python-optional.patch +++ b/python-optional.patch @@ -19,12 +19,12 @@ Index: javapackages-5.2.0+git20180620.70fa2258/install - -exec >files-python -(cd ./python && "${pyinterpreter}" setup.py install -O1 --skip-build --prefix "${prefix}" --root "${DEST}") >&2 --echo "${prefix}/lib/python?.?/site-packages/javapackages" --echo "${prefix}/lib/python?.?/site-packages/javapackages-*.egg-info" +-echo "${prefix}/lib/python*/site-packages/javapackages" +-echo "${prefix}/lib/python*/site-packages/javapackages-*.egg-info" Index: javapackages-5.2.0+git20180620.70fa2258/configure-base.sh =================================================================== ---- javapackages-5.2.0+git20180620.70fa2258.orig/configure-base.sh -+++ javapackages-5.2.0+git20180620.70fa2258/configure-base.sh +--- javapackages-5.2.0+git20180620.70fa2258.orig/configure ++++ javapackages-5.2.0+git20180620.70fa2258/configure @@ -57,7 +57,6 @@ test -z "${rpmconfigdir}" && rpmconfigdi test -z "${rpmmacrodir}" && rpmmacrodir="${rpmconfigdir}/macros.d" diff --git a/suse-use-libdir.patch b/suse-use-libdir.patch index 01583c8..6d63efa 100644 --- a/suse-use-libdir.patch +++ b/suse-use-libdir.patch @@ -1,5 +1,5 @@ ---- javapackages-5.3.1/configure-base.sh 2019-06-14 12:26:27.000000000 +0200 -+++ javapackages-5.3.1/configure-base.sh 2020-07-16 09:04:37.316453132 +0200 +--- javapackages-5.3.1/configure 2019-06-14 12:26:27.000000000 +0200 ++++ javapackages-5.3.1/configure 2020-07-16 09:04:37.316453132 +0200 @@ -14,6 +14,7 @@ root_sysconfdir rpmconfigdir @@ -44,7 +44,7 @@ diff -urEbwB javapackages-5.3.1/etc/eclipse.conf javapackages-5.3.1/etc/eclipse. --- javapackages-5.3.1/expand.sh 2019-06-14 12:26:27.000000000 +0200 +++ javapackages-5.3.1/expand.sh 2020-07-16 09:04:37.316453132 +0200 @@ -45,6 +45,7 @@ - -e "s|@{scl_suffix}|${scl_suffix}|g" \ + sed \ -e "s|@{bindir}|${bindir}|g" \ -e "s|@{datadir}|${datadir}|g" \ + -e "s|@{libdir}|${libdir}|g" \ @@ -111,22 +111,3 @@ diff -urEbwB javapackages-5.3.1/etc/eclipse.conf javapackages-5.3.1/etc/eclipse. # # Root directory where all javadoc is installed. Also already in RH macros. ---- javapackages-5.3.1/macros.d/macros.scl-java-template 2019-06-14 12:26:27.000000000 +0200 -+++ javapackages-5.3.1/macros.d/macros.scl-java-template 2020-07-16 09:04:37.320453154 +0200 -@@ -50,11 +50,11 @@ - dir "%{_ivyxmldir}" \ - dir "%{_sysconfdir}/ivy" \ - dir "%{_datadir}/maven-metadata" \ -- dir "%{_prefix}/lib/eclipse" \ -- dir "%{_prefix}/lib/eclipse/features" \ -- dir "%{_prefix}/lib/eclipse/plugins" \ -- dir "%{_prefix}/lib/eclipse/dropins" \ -- dir "%{_prefix}/lib/eclipse/droplets" \ -+ dir "%{_libdir}/eclipse" \ -+ dir "%{_libdir}/eclipse/features" \ -+ dir "%{_libdir}/eclipse/plugins" \ -+ dir "%{_libdir}/eclipse/dropins" \ -+ dir "%{_libdir}/eclipse/droplets" \ - dir "%{_datadir}/eclipse" \ - dir "%{_datadir}/eclipse/dropins" \ - dir "%{_datadir}/eclipse/droplets" \