From e2f0c5d0ecb43090a6b6b90cead220f0791155f1 Mon Sep 17 00:00:00 2001 From: Michal Srb Date: Thu, 29 May 2014 12:45:52 +0200 Subject: [PATCH] Backport patches for maven.req - Remove com.sun:tools and sun.jdk:jconsole provides --- ...Add-ability-to-read-parent-s-version.patch | 34 +++++++++ ...if-dependency-is-not-provided-by-sub.patch | 75 +++++++++++++++++++ ...nerate-versioned-deps-on-subpackages.patch | 65 ++++++++++++++++ ...q-Fix-self-dependency-detection-code.patch | 31 ++++++++ 0008-Fix-javapackages-metadata.xml.patch | 26 +++++++ ...enerating-req-from-POM-file-do-not-b.patch | 55 ++++++++++++++ javapackages-tools.spec | 25 +++++-- 7 files changed, 306 insertions(+), 5 deletions(-) create mode 100644 0001-pom-Add-ability-to-read-parent-s-version.patch create mode 100644 0002-maven.req-Check-if-dependency-is-not-provided-by-sub.patch create mode 100644 0004-maven.req-Generate-versioned-deps-on-subpackages.patch create mode 100644 0006-maven.req-Fix-self-dependency-detection-code.patch create mode 100644 0008-Fix-javapackages-metadata.xml.patch create mode 100644 0010-maven.req-When-generating-req-from-POM-file-do-not-b.patch diff --git a/0001-pom-Add-ability-to-read-parent-s-version.patch b/0001-pom-Add-ability-to-read-parent-s-version.patch new file mode 100644 index 0000000..437fe56 --- /dev/null +++ b/0001-pom-Add-ability-to-read-parent-s-version.patch @@ -0,0 +1,34 @@ +From 0870cac2b02aef1e75aada3b4d235f76b0d4ee1e Mon Sep 17 00:00:00 2001 +From: Michal Srb +Date: Thu, 29 May 2014 10:23:07 +0200 +Subject: [PATCH 01/10] [pom] Add ability to read parent's version + +--- + python/javapackages/pom.py | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/python/javapackages/pom.py b/python/javapackages/pom.py +index 604728f..6c15813 100644 +--- a/python/javapackages/pom.py ++++ b/python/javapackages/pom.py +@@ -95,6 +95,17 @@ class POM(object): + return gId.text.strip() + + @property ++ def parentVersion(self): ++ """ ++ version of the parent artifact of None ++ """ ++ ver = self.__find('./pom:parent/pom:version') ++ if ver is None: ++ return None ++ else: ++ return ver.text.strip() ++ ++ @property + def groupId(self): + """ + Effective groupId of the pom Artifact taking into account parent groupId +-- +1.9.3 + diff --git a/0002-maven.req-Check-if-dependency-is-not-provided-by-sub.patch b/0002-maven.req-Check-if-dependency-is-not-provided-by-sub.patch new file mode 100644 index 0000000..bd3e471 --- /dev/null +++ b/0002-maven.req-Check-if-dependency-is-not-provided-by-sub.patch @@ -0,0 +1,75 @@ +From 5224614066cfd01c02112a849fca3c7969202142 Mon Sep 17 00:00:00 2001 +From: Michal Srb +Date: Thu, 29 May 2014 10:24:39 +0200 +Subject: [PATCH 02/10] [maven.req] Check if dependency is not provided by + subpackage + +--- + depgenerators/maven.req | 24 +++++++++++++++++------- + 1 file changed, 17 insertions(+), 7 deletions(-) + +diff --git a/depgenerators/maven.req b/depgenerators/maven.req +index c81437b..eecb055 100755 +--- a/depgenerators/maven.req ++++ b/depgenerators/maven.req +@@ -144,6 +144,15 @@ class TagBuilder(object): + continue + self.print_mvn_requires(path) + ++ def __is_provided_by_subpackage(self, dependency): ++ for provided in self.provided_artifacts: ++ if (provided.groupId == dependency.groupId and ++ provided.artifactId == dependency.artifactId and ++ provided.classifier == dependency.classifier and ++ provided.extension == dependency.extension): ++ return True ++ return False ++ + + def __generate_requires_from_pom(self, pomfile): + pom = POM(pomfile) +@@ -151,6 +160,7 @@ class TagBuilder(object): + extensions = pom.get_extensions() + pgid = pom.parentGroupId + paid = pom.parentArtifactId ++ pver = pom.parentVersion + + unresolvable = [] + +@@ -158,7 +168,7 @@ class TagBuilder(object): + for p in plugins: + # TODO: namespaces + plug = Dependency(p.groupId, p.artifactId, requestedVersion=p.version) +- if resolve_artifact(plug.get_mvn_str()): ++ if resolve_artifact(plug.get_mvn_str()) or self.__is_provided_by_subpackage(plug): + print(plug.get_rpm_str()) + else: + unresolvable.append(plug.get_mvn_str()) +@@ -173,18 +183,18 @@ class TagBuilder(object): + for e in extensions: + # TODO: namespaces + ext = Dependency(e.groupId, e.artifactId, requestedVersion=e.version) +- if resolve_artifact(ext.get_mvn_str()): ++ if resolve_artifact(ext.get_mvn_str()) or self.__is_provided_by_subpackage(ext): + print(ext.get_rpm_str()) + else: + unresolvable.append(plug.get_mvn_str()) + +- if paid: +- parent_mvn_str = "{}:{}:pom:".format(pgid, paid) +- if resolve_artifact(parent_mvn_str): ++ if paid and pver: ++ parent_dep = Dependency(pgid, paid, requestedVersion=pver, extension="pom") ++ if resolve_artifact(parent_dep.get_mvn_str()) or self.__is_provided_by_subpackage(parent_dep): + # TODO: namespaces +- print("mvn({})".format(parent_mvn_str)) ++ print(parent_dep.get_rpm_str()) + else: +- unresolvable.append(parent_mvn_str) ++ unresolvable.append(parent_dep.get_mvn_str()) + + if unresolvable: + raise Exception("Unable to generate requires on unresolvable artifact{}: {}" +-- +1.9.3 + diff --git a/0004-maven.req-Generate-versioned-deps-on-subpackages.patch b/0004-maven.req-Generate-versioned-deps-on-subpackages.patch new file mode 100644 index 0000000..af506ff --- /dev/null +++ b/0004-maven.req-Generate-versioned-deps-on-subpackages.patch @@ -0,0 +1,65 @@ +From 8cd3338ddfeef5965f05d5082695d9d72bcf4629 Mon Sep 17 00:00:00 2001 +From: Michal Srb +Date: Thu, 29 May 2014 11:28:57 +0200 +Subject: [PATCH 04/10] [maven.req] Generate versioned deps on subpackages + +--- + depgenerators/maven.req | 19 ++++++++++++++----- + 1 file changed, 14 insertions(+), 5 deletions(-) + +diff --git a/depgenerators/maven.req b/depgenerators/maven.req +index eecb055..56fd27f 100755 +--- a/depgenerators/maven.req ++++ b/depgenerators/maven.req +@@ -150,8 +150,8 @@ class TagBuilder(object): + provided.artifactId == dependency.artifactId and + provided.classifier == dependency.classifier and + provided.extension == dependency.extension): +- return True +- return False ++ return provided.version ++ return None + + + def __generate_requires_from_pom(self, pomfile): +@@ -168,8 +168,11 @@ class TagBuilder(object): + for p in plugins: + # TODO: namespaces + plug = Dependency(p.groupId, p.artifactId, requestedVersion=p.version) +- if resolve_artifact(plug.get_mvn_str()) or self.__is_provided_by_subpackage(plug): ++ aver = self.__is_provided_by_subpackage(plug) ++ if resolve_artifact(plug.get_mvn_str()): + print(plug.get_rpm_str()) ++ elif aver is not None: ++ print("{rpmstr} = {version}".format(rpmstr=plug.get_rpm_str(), version=aver)) + else: + unresolvable.append(plug.get_mvn_str()) + for pd in p.dependencies: +@@ -183,16 +186,22 @@ class TagBuilder(object): + for e in extensions: + # TODO: namespaces + ext = Dependency(e.groupId, e.artifactId, requestedVersion=e.version) +- if resolve_artifact(ext.get_mvn_str()) or self.__is_provided_by_subpackage(ext): ++ aver = self.__is_provided_by_subpackage(ext) ++ if resolve_artifact(ext.get_mvn_str()): + print(ext.get_rpm_str()) ++ elif aver is not None: ++ print("{rpmstr} = {version}".format(rpmstr=ext.get_rpm_str(), version=aver)) + else: + unresolvable.append(plug.get_mvn_str()) + + if paid and pver: + parent_dep = Dependency(pgid, paid, requestedVersion=pver, extension="pom") +- if resolve_artifact(parent_dep.get_mvn_str()) or self.__is_provided_by_subpackage(parent_dep): ++ aver = self.__is_provided_by_subpackage(parent_dep) ++ if resolve_artifact(parent_dep.get_mvn_str()): + # TODO: namespaces + print(parent_dep.get_rpm_str()) ++ elif aver is not None: ++ print("{rpmstr} = {version}".format(rpmstr=parent_dep.get_rpm_str(), version=aver)) + else: + unresolvable.append(parent_dep.get_mvn_str()) + +-- +1.9.3 + diff --git a/0006-maven.req-Fix-self-dependency-detection-code.patch b/0006-maven.req-Fix-self-dependency-detection-code.patch new file mode 100644 index 0000000..92dc6aa --- /dev/null +++ b/0006-maven.req-Fix-self-dependency-detection-code.patch @@ -0,0 +1,31 @@ +From 424bba5b517fa1c458d7f11b10e577ba59585bd2 Mon Sep 17 00:00:00 2001 +From: Mikolaj Izdebski +Date: Thu, 29 May 2014 13:08:11 +0200 +Subject: [PATCH 06/10] [maven.req] Fix self-dependency detection code + +--- + depgenerators/maven.req | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +diff --git a/depgenerators/maven.req b/depgenerators/maven.req +index 56fd27f..a42162e 100755 +--- a/depgenerators/maven.req ++++ b/depgenerators/maven.req +@@ -242,13 +242,10 @@ class TagBuilder(object): + for compatVer in provided.compatVersions: + if dependency.resolvedVersion == compatVer: + return True +- else: +- return False + elif (not dependency.resolvedVersion and + not provided.is_compat()): + return True +- else: +- return False ++ return False + + + def filter_requires(self, requires): +-- +1.9.3 + diff --git a/0008-Fix-javapackages-metadata.xml.patch b/0008-Fix-javapackages-metadata.xml.patch new file mode 100644 index 0000000..7e06c9f --- /dev/null +++ b/0008-Fix-javapackages-metadata.xml.patch @@ -0,0 +1,26 @@ +From a48fe9f51512fe367d44519e41c94b24ef8af983 Mon Sep 17 00:00:00 2001 +From: Mikolaj Izdebski +Date: Thu, 29 May 2014 13:38:56 +0200 +Subject: [PATCH 08/10] Fix javapackages-metadata.xml + +s/com.jdk:jconsole/sun.jdk:jconsole/ +--- + etc/javapackages-metadata.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/etc/javapackages-metadata.xml b/etc/javapackages-metadata.xml +index 6f6c98e..1126a69 100644 +--- a/etc/javapackages-metadata.xml ++++ b/etc/javapackages-metadata.xml +@@ -9,7 +9,7 @@ + ${JAVA_HOME}/../lib/tools.jar + + +- com.jdk ++ sun.jdk + jconsole + SYSTEM + ${JAVA_HOME}/../lib/jconsole.jar +-- +1.9.3 + diff --git a/0010-maven.req-When-generating-req-from-POM-file-do-not-b.patch b/0010-maven.req-When-generating-req-from-POM-file-do-not-b.patch new file mode 100644 index 0000000..6b9a279 --- /dev/null +++ b/0010-maven.req-When-generating-req-from-POM-file-do-not-b.patch @@ -0,0 +1,55 @@ +From 52525455278ad5801cf89a768b81499229af1f68 Mon Sep 17 00:00:00 2001 +From: Michal Srb +Date: Thu, 29 May 2014 13:45:52 +0200 +Subject: [PATCH 10/10] [maven.req] When generating req from POM file, do not + blindly take first POM file, but iterate over all of them and pick the right + one + +--- + depgenerators/maven.req | 23 ++++++++++++++++++++--- + 1 file changed, 20 insertions(+), 3 deletions(-) + +diff --git a/depgenerators/maven.req b/depgenerators/maven.req +index aea1dd4..dea89d7 100755 +--- a/depgenerators/maven.req ++++ b/depgenerators/maven.req +@@ -137,7 +137,9 @@ class TagBuilder(object): + + if os.path.exists(XMVN_RESOLVE_PATH): + if is_it_pom_only_pkg(paths[0]): +- self.__generate_requires_from_pom(ppaths[0]) ++ poms = self.__find_poms_for_metadata(ppaths, paths[0]) ++ for p in poms: ++ self.__generate_requires_from_pom(p) + + for path in paths: + if path.endswith(".pom"): +@@ -154,8 +156,23 @@ class TagBuilder(object): + return None + + +- def __generate_requires_from_pom(self, pomfile): +- pom = POM(pomfile) ++ # TODO: move functions like this to some POMUtils, or similar module ++ def __find_poms_for_metadata(self, pom_paths, metadata_path): ++ poms = [] ++ depmap = Depmap([metadata_path]) ++ provided = depmap.get_provided_artifacts() ++ for prov in provided: ++ for p in pom_paths: ++ pom = POM(p) ++ if (pom.groupId == prov.groupId and ++ pom.artifactId == prov.artifactId and ++ pom.version == prov.version): ++ ++ poms.append(pom) ++ break ++ return poms ++ ++ def __generate_requires_from_pom(self, pom): + plugins = pom.get_plugins() + extensions = pom.get_extensions() + pgid = pom.parentGroupId +-- +1.9.3 + diff --git a/javapackages-tools.spec b/javapackages-tools.spec index 48a6e0a..c18ca57 100644 --- a/javapackages-tools.spec +++ b/javapackages-tools.spec @@ -1,6 +1,6 @@ Name: javapackages-tools Version: 4.0.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Macros and scripts for Java packaging support @@ -8,6 +8,14 @@ License: BSD URL: https://fedorahosted.org/javapackages/ Source0: https://fedorahosted.org/released/javapackages/javapackages-%{version}.tar.xz +Patch0: 0001-pom-Add-ability-to-read-parent-s-version.patch +Patch1: 0002-maven.req-Check-if-dependency-is-not-provided-by-sub.patch +Patch2: 0004-maven.req-Generate-versioned-deps-on-subpackages.patch +Patch3: 0006-maven.req-Fix-self-dependency-detection-code.patch +Patch4: 0008-Fix-javapackages-metadata.xml.patch +Patch5: 0010-maven.req-When-generating-req-from-POM-file-do-not-b.patch + + BuildArch: noarch BuildRequires: asciidoc @@ -30,10 +38,6 @@ Requires: python-javapackages = %{version}-%{release} Provides: jpackage-utils = %{version}-%{release} Obsoletes: jpackage-utils < %{version}-%{release} -# Workaround for rhbz#1091385 -Provides: mvn(com.sun:tools) -Provides: mvn(sun.jdk:jconsole) - %description This package provides macros and scripts to support Java packaging. @@ -133,6 +137,13 @@ 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 + %build %configure ./build @@ -172,6 +183,10 @@ popd %doc LICENSE %changelog +* Thu May 29 2014 Michal Srb - 4.0.0-2 +- Backport patches for maven.req +- Remove com.sun:tools and sun.jdk:jconsole provides + * Thu May 29 2014 Michal Srb - 4.0.0-1 - Update to 4.0.0