From ff29133648de518523b2987556a49c1295a92101 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Thu, 29 Nov 2018 12:42:46 +0000 Subject: [PATCH 01/42] Expand conditionals --- xmvn.spec | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/xmvn.spec b/xmvn.spec index 0e69a6a..bbacaf7 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -2,11 +2,6 @@ # any additional bundles. %global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^osgi\\($ -# Integration tests are disabled by default, but you can run them by -# adding "--with its" to rpmbuild or mock invocation. -%bcond_with its - -%bcond_without gradle Name: xmvn Version: 3.0.0 @@ -46,9 +41,6 @@ BuildRequires: maven-invoker BuildRequires: plexus-containers-container-default BuildRequires: plexus-containers-component-annotations BuildRequires: plexus-containers-component-metadata -%if %{with gradle} -BuildRequires: gradle >= 4.3.1 -%endif Requires: %{name}-minimal = %{version}-%{release} Requires: maven >= 3.4.0 @@ -121,15 +113,6 @@ provides integration of Maven Resolver with XMvn. It provides an adapter which allows XMvn resolver to be used as Maven workspace reader. -%if %{with gradle} -%package connector-gradle -Summary: XMvn Connector for Gradle - -%description connector-gradle -This package provides XMvn Connector for Gradle, which provides -integration of Gradle with XMvn. It provides an adapter which allows -XMvn resolver to be used as Gradle resolver. -%endif %package connector-ivy Summary: XMvn Connector for Apache Ivy @@ -228,9 +211,7 @@ find -name ResolverIntegrationTest.java -delete %mvn_package ":xmvn{,-it}" __noinstall -%if %{without gradle} %pom_disable_module xmvn-connector-gradle -%endif # Upstream code quality checks, not relevant when building RPMs %pom_remove_plugin -r :apache-rat-plugin @@ -254,11 +235,7 @@ mkdir -p target/dependency/ cp -aL ${maven_home} target/dependency/apache-maven-$mver %build -%if %{with its} -%mvn_build -s -j -- -Prun-its -%else %mvn_build -s -j -%endif tar --delay-directory-restore -xvf target/*tar.bz2 chmod -R +rwX %{name}-%{version}* @@ -338,9 +315,6 @@ cp -P ${maven_home}/bin/m2.conf %{buildroot}%{_datadir}/%{name}/bin/ %files connector-aether -f .mfiles-xmvn-connector-aether -%if %{with gradle} -%files connector-gradle -f .mfiles-xmvn-connector-gradle -%endif %files connector-ivy -f .mfiles-xmvn-connector-ivy From 1f5d1921003e562baaf514ebffc0a8a1053be6be Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Thu, 29 Nov 2018 12:55:39 +0000 Subject: [PATCH 02/42] Remove Obsoletes --- xmvn.spec | 1 - 1 file changed, 1 deletion(-) diff --git a/xmvn.spec b/xmvn.spec index bbacaf7..48cbe62 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -90,7 +90,6 @@ This package provides XMvn parent POM. %package api Summary: XMvn API -Obsoletes: %{name}-launcher < 3.0.0 %description api This package provides XMvn API module which contains public interface From a0afd4d5615075b116f3692d261f8381c5d2f491 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Sat, 13 Apr 2019 19:11:23 +0200 Subject: [PATCH 03/42] Switch to Maven 3.6.1 and non-compat Guava --- xmvn.spec | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/xmvn.spec b/xmvn.spec index 48cbe62..5e60850 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -5,7 +5,7 @@ Name: xmvn Version: 3.0.0 -Release: 21%{?dist} +Release: 22%{?dist} Summary: Local Extensions for Apache Maven License: ASL 2.0 URL: https://fedora-java.github.io/xmvn/ @@ -43,7 +43,7 @@ BuildRequires: plexus-containers-component-annotations BuildRequires: plexus-containers-component-metadata Requires: %{name}-minimal = %{version}-%{release} -Requires: maven >= 3.4.0 +Requires: maven >= 3.6.1 %description This package provides extensions for Apache Maven that can be used to @@ -61,7 +61,7 @@ Requires: apache-commons-cli Requires: apache-commons-lang3 Requires: atinject Requires: google-guice -Requires: guava20 +Requires: guava Requires: maven-lib Requires: maven-resolver-api Requires: maven-resolver-impl @@ -337,6 +337,9 @@ cp -P ${maven_home}/bin/m2.conf %{buildroot}%{_datadir}/%{name}/bin/ %doc LICENSE NOTICE %changelog +* Sat Apr 13 2019 Mikolaj Izdebski - 3.0.0-22 +- Switch to Maven 3.6.1 and non-compat Guava + * Wed Aug 01 2018 Severin Gehwolf - 3.0.0-21 - Add requirement on javapackages-tools since scripts use java-functions. From dabf665953b9a6e9056afe441f1e5414b8b23f8c Mon Sep 17 00:00:00 2001 From: Marian Koncek Date: Fri, 19 Apr 2019 10:16:10 +0200 Subject: [PATCH 04/42] Port to Xmlunit 2.6.2 --- 0001-Port-to-Xmlunit-2.6.2.patch | 86 +++++ ...amespace-in-installer-test-resources.patch | 311 ++++++++++++++++++ xmvn.spec | 11 +- 3 files changed, 406 insertions(+), 2 deletions(-) create mode 100644 0001-Port-to-Xmlunit-2.6.2.patch create mode 100644 0001-test-Fix-XML-namespace-in-installer-test-resources.patch diff --git a/0001-Port-to-Xmlunit-2.6.2.patch b/0001-Port-to-Xmlunit-2.6.2.patch new file mode 100644 index 0000000..d72380a --- /dev/null +++ b/0001-Port-to-Xmlunit-2.6.2.patch @@ -0,0 +1,86 @@ +From 7049d71ed85851fb5ca25b88c5e33b51cf3a5dac Mon Sep 17 00:00:00 2001 +From: Marian Koncek +Date: Fri, 19 Apr 2019 09:32:40 +0200 +Subject: [PATCH] Port to Xmlunit 2.6.2 + +--- + xmvn-parent/pom.xml | 10 +++++----- + .../xmvn/tools/install/impl/InstallerTest.java | 6 ++---- + 2 files changed, 7 insertions(+), 9 deletions(-) + +diff --git a/xmvn-parent/pom.xml b/xmvn-parent/pom.xml +index d4f9dda..5c21cfa 100644 +--- a/xmvn-parent/pom.xml ++++ b/xmvn-parent/pom.xml +@@ -122,7 +122,7 @@ + 3.6 + 3.0.1 + 2.19.1 +- 1.6 ++ 2.6.2 + + + +@@ -228,8 +228,8 @@ + ${junitVersion} + + +- xmlunit +- xmlunit ++ org.xmlunit ++ xmlunit-assertj + ${xmlunitVersion} + + +@@ -336,8 +336,8 @@ + test + + +- xmlunit +- xmlunit ++ org.xmlunit ++ xmlunit-assertj + test + + +diff --git a/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/InstallerTest.java b/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/InstallerTest.java +index 9fb7d90..bece0b2 100644 +--- a/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/InstallerTest.java ++++ b/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/InstallerTest.java +@@ -15,8 +15,6 @@ + */ + package org.fedoraproject.xmvn.tools.install.impl; + +-import static org.custommonkey.xmlunit.XMLAssert.assertXMLEqual; +-import static org.custommonkey.xmlunit.XMLUnit.setIgnoreWhitespace; + import static org.easymock.EasyMock.expect; + import static org.easymock.EasyMock.replay; + import static org.easymock.EasyMock.verify; +@@ -40,6 +38,7 @@ import org.junit.runner.RunWith; + import org.w3c.dom.Document; + import org.w3c.dom.Node; + import org.w3c.dom.NodeList; ++import org.xmlunit.assertj.XmlAssert; + + import org.fedoraproject.xmvn.artifact.DefaultArtifact; + import org.fedoraproject.xmvn.config.Artifact; +@@ -188,7 +187,6 @@ public class InstallerTest + protected void assertMetadataEqual( Path expected, Path actual ) + throws Exception + { +- setIgnoreWhitespace( true ); + assertTrue( Files.isRegularFile( actual ) ); + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = factory.newDocumentBuilder(); +@@ -208,7 +206,7 @@ public class InstallerTest + unifyUuids( expectedXml.getElementsByTagName( "uuid" ) ); + unifyUuids( actualXml.getElementsByTagName( "uuid" ) ); + +- assertXMLEqual( expectedXml, actualXml ); ++ XmlAssert.assertThat( expectedXml ).and( actualXml ).ignoreWhitespace().areSimilar(); + } + + @Test +-- +2.20.1 + diff --git a/0001-test-Fix-XML-namespace-in-installer-test-resources.patch b/0001-test-Fix-XML-namespace-in-installer-test-resources.patch new file mode 100644 index 0000000..56af48f --- /dev/null +++ b/0001-test-Fix-XML-namespace-in-installer-test-resources.patch @@ -0,0 +1,311 @@ +From c35be2b2b90741aa4f7c260fa4954cd5d3c2e6a8 Mon Sep 17 00:00:00 2001 +From: Mikolaj Izdebski +Date: Wed, 17 Apr 2019 16:12:22 +0200 +Subject: [PATCH] [test] Fix XML namespace in installer test resources + +--- + xmvn-tools/xmvn-install/src/test/resources/alias.xml | 2 +- + xmvn-tools/xmvn-install/src/test/resources/compat.xml | 2 +- + xmvn-tools/xmvn-install/src/test/resources/metadata-uuid.xml | 2 +- + xmvn-tools/xmvn-install/src/test/resources/namespace-dep.xml | 2 +- + xmvn-tools/xmvn-install/src/test/resources/namespace.xml | 2 +- + xmvn-tools/xmvn-install/src/test/resources/no-aid-dep.xml | 2 +- + xmvn-tools/xmvn-install/src/test/resources/no-aid-excl.xml | 2 +- + xmvn-tools/xmvn-install/src/test/resources/no-aid.xml | 2 +- + xmvn-tools/xmvn-install/src/test/resources/no-file.xml | 2 +- + xmvn-tools/xmvn-install/src/test/resources/no-gid-dep.xml | 2 +- + xmvn-tools/xmvn-install/src/test/resources/no-gid-excl.xml | 2 +- + xmvn-tools/xmvn-install/src/test/resources/no-gid.xml | 2 +- + xmvn-tools/xmvn-install/src/test/resources/no-version-dep.xml | 2 +- + xmvn-tools/xmvn-install/src/test/resources/no-version.xml | 2 +- + xmvn-tools/xmvn-install/src/test/resources/nonexistent-file.xml | 2 +- + xmvn-tools/xmvn-install/src/test/resources/nonreadable-file.xml | 2 +- + xmvn-tools/xmvn-install/src/test/resources/nonregular-file.xml | 2 +- + xmvn-tools/xmvn-install/src/test/resources/resolved-version.xml | 2 +- + xmvn-tools/xmvn-install/src/test/resources/skipped.xml | 2 +- + xmvn-tools/xmvn-install/src/test/resources/test-pkg-main.xml | 2 +- + .../xmvn-install/src/test/resources/test-pkg-resolved.xml | 2 +- + xmvn-tools/xmvn-install/src/test/resources/test-pkg-sub.xml | 2 +- + xmvn-tools/xmvn-install/src/test/resources/test-pkg.xml | 2 +- + xmvn-tools/xmvn-install/src/test/resources/uuid.xml | 2 +- + xmvn-tools/xmvn-install/src/test/resources/valid.xml | 2 +- + 27 files changed, 27 insertions(+), 27 deletions(-) + +diff --git a/xmvn-tools/xmvn-install/src/test/resources/alias.xml b/xmvn-tools/xmvn-install/src/test/resources/alias.xml +index 6e33a2a0..a86d73e9 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/alias.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/alias.xml +@@ -1,5 +1,5 @@ + +- ++ + + + com.example +diff --git a/xmvn-tools/xmvn-install/src/test/resources/compat.xml b/xmvn-tools/xmvn-install/src/test/resources/compat.xml +index 1cd57df9..428177cb 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/compat.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/compat.xml +@@ -1,5 +1,5 @@ + +- ++ + + + com.example +diff --git a/xmvn-tools/xmvn-install/src/test/resources/metadata-uuid.xml b/xmvn-tools/xmvn-install/src/test/resources/metadata-uuid.xml +index cb3fae4e..8f0898c6 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/metadata-uuid.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/metadata-uuid.xml +@@ -1,5 +1,5 @@ + +- ++ + test-uuid + + +diff --git a/xmvn-tools/xmvn-install/src/test/resources/namespace-dep.xml b/xmvn-tools/xmvn-install/src/test/resources/namespace-dep.xml +index d80cf352..59e6767b 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/namespace-dep.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/namespace-dep.xml +@@ -1,5 +1,5 @@ + +- ++ + + + com.example +diff --git a/xmvn-tools/xmvn-install/src/test/resources/namespace.xml b/xmvn-tools/xmvn-install/src/test/resources/namespace.xml +index 7b0b7ada..d4a62f68 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/namespace.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/namespace.xml +@@ -1,5 +1,5 @@ + +- ++ + + + com.example +diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-aid-dep.xml b/xmvn-tools/xmvn-install/src/test/resources/no-aid-dep.xml +index 36548f94..44ec6a89 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/no-aid-dep.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/no-aid-dep.xml +@@ -1,5 +1,5 @@ + +- ++ + + + com.example +diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-aid-excl.xml b/xmvn-tools/xmvn-install/src/test/resources/no-aid-excl.xml +index 5b1c77f1..9aec70fb 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/no-aid-excl.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/no-aid-excl.xml +@@ -1,5 +1,5 @@ + +- ++ + + + com.example +diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-aid.xml b/xmvn-tools/xmvn-install/src/test/resources/no-aid.xml +index b8b33a99..9dd5b97f 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/no-aid.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/no-aid.xml +@@ -1,5 +1,5 @@ + +- ++ + + + com.example +diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-file.xml b/xmvn-tools/xmvn-install/src/test/resources/no-file.xml +index 710567ee..a77dd6cc 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/no-file.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/no-file.xml +@@ -1,5 +1,5 @@ + +- ++ + + + com.example +diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-gid-dep.xml b/xmvn-tools/xmvn-install/src/test/resources/no-gid-dep.xml +index 0fdfec96..53b829ad 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/no-gid-dep.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/no-gid-dep.xml +@@ -1,5 +1,5 @@ + +- ++ + + + com.example +diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-gid-excl.xml b/xmvn-tools/xmvn-install/src/test/resources/no-gid-excl.xml +index 3c135126..c8e3e6c8 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/no-gid-excl.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/no-gid-excl.xml +@@ -1,5 +1,5 @@ + +- ++ + + + com.example +diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-gid.xml b/xmvn-tools/xmvn-install/src/test/resources/no-gid.xml +index 40386690..ba36e50e 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/no-gid.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/no-gid.xml +@@ -1,5 +1,5 @@ + +- ++ + + + com.example +diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-version-dep.xml b/xmvn-tools/xmvn-install/src/test/resources/no-version-dep.xml +index 08587264..49fe2922 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/no-version-dep.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/no-version-dep.xml +@@ -1,5 +1,5 @@ + +- ++ + + + com.example +diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-version.xml b/xmvn-tools/xmvn-install/src/test/resources/no-version.xml +index 480bc8e4..2a8322ab 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/no-version.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/no-version.xml +@@ -1,5 +1,5 @@ + +- ++ + + + com.example +diff --git a/xmvn-tools/xmvn-install/src/test/resources/nonexistent-file.xml b/xmvn-tools/xmvn-install/src/test/resources/nonexistent-file.xml +index 385822b6..400bf234 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/nonexistent-file.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/nonexistent-file.xml +@@ -1,5 +1,5 @@ + +- ++ + + + com.example +diff --git a/xmvn-tools/xmvn-install/src/test/resources/nonreadable-file.xml b/xmvn-tools/xmvn-install/src/test/resources/nonreadable-file.xml +index eb23aba7..cff22643 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/nonreadable-file.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/nonreadable-file.xml +@@ -1,5 +1,5 @@ + +- ++ + + + com.example +diff --git a/xmvn-tools/xmvn-install/src/test/resources/nonregular-file.xml b/xmvn-tools/xmvn-install/src/test/resources/nonregular-file.xml +index 3cd66465..76c34bc9 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/nonregular-file.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/nonregular-file.xml +@@ -1,5 +1,5 @@ + +- ++ + + + com.example +diff --git a/xmvn-tools/xmvn-install/src/test/resources/resolved-version.xml b/xmvn-tools/xmvn-install/src/test/resources/resolved-version.xml +index 9099ec28..9279d896 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/resolved-version.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/resolved-version.xml +@@ -1,5 +1,5 @@ + +- ++ + + + com.example +diff --git a/xmvn-tools/xmvn-install/src/test/resources/skipped.xml b/xmvn-tools/xmvn-install/src/test/resources/skipped.xml +index 66bef3d8..b08836a1 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/skipped.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/skipped.xml +@@ -1,5 +1,5 @@ + +- ++ + + + com.example +diff --git a/xmvn-tools/xmvn-install/src/test/resources/test-pkg-main.xml b/xmvn-tools/xmvn-install/src/test/resources/test-pkg-main.xml +index 0bcdce1d..0bd964fc 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/test-pkg-main.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/test-pkg-main.xml +@@ -1,5 +1,5 @@ + +- ++ + 1e5b4990-c4e3-42b4-9145-5b7783ab91a2 + + +diff --git a/xmvn-tools/xmvn-install/src/test/resources/test-pkg-resolved.xml b/xmvn-tools/xmvn-install/src/test/resources/test-pkg-resolved.xml +index c9053bbd..9d3bbb67 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/test-pkg-resolved.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/test-pkg-resolved.xml +@@ -1,5 +1,5 @@ + +- ++ + 1e5b4990-c4e3-42b4-9145-5b7783ab91a2 + + +diff --git a/xmvn-tools/xmvn-install/src/test/resources/test-pkg-sub.xml b/xmvn-tools/xmvn-install/src/test/resources/test-pkg-sub.xml +index 32e72e63..068f17f6 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/test-pkg-sub.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/test-pkg-sub.xml +@@ -1,5 +1,5 @@ + +- ++ + 1e5b4990-c4e3-42b4-9145-5b7783ab91a2 + + +diff --git a/xmvn-tools/xmvn-install/src/test/resources/test-pkg.xml b/xmvn-tools/xmvn-install/src/test/resources/test-pkg.xml +index 3364d985..8b0d6223 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/test-pkg.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/test-pkg.xml +@@ -1,5 +1,5 @@ + +- ++ + 1e5b4990-c4e3-42b4-9145-5b7783ab91a2 + + +diff --git a/xmvn-tools/xmvn-install/src/test/resources/uuid.xml b/xmvn-tools/xmvn-install/src/test/resources/uuid.xml +index 9bf862fa..b57b9584 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/uuid.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/uuid.xml +@@ -1,5 +1,5 @@ + +- ++ + + + com.example +diff --git a/xmvn-tools/xmvn-install/src/test/resources/valid.xml b/xmvn-tools/xmvn-install/src/test/resources/valid.xml +index c9a2be8d..f2fa0c24 100644 +--- a/xmvn-tools/xmvn-install/src/test/resources/valid.xml ++++ b/xmvn-tools/xmvn-install/src/test/resources/valid.xml +@@ -1,5 +1,5 @@ + +- ++ + + + com.example +-- +2.20.1 + diff --git a/xmvn.spec b/xmvn.spec index 5e60850..700f098 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -5,7 +5,7 @@ Name: xmvn Version: 3.0.0 -Release: 22%{?dist} +Release: 23%{?dist} Summary: Local Extensions for Apache Maven License: ASL 2.0 URL: https://fedora-java.github.io/xmvn/ @@ -20,6 +20,8 @@ Patch3: 0001-Support-setting-Xdoclint-none-in-m-javadoc-p-3.0.0.patch Patch4: 0001-Fix-configuration-of-aliased-plugins.patch Patch5: 0001-Don-t-use-JAXB-for-converting-bytes-to-hex-string.patch Patch6: 0001-Use-apache-commons-compress-for-manifest-injection-a.patch +Patch7: 0001-test-Fix-XML-namespace-in-installer-test-resources.patch +Patch8: 0001-Port-to-Xmlunit-2.6.2.patch BuildRequires: maven >= 3.5.0 BuildRequires: maven-local @@ -33,7 +35,7 @@ BuildRequires: maven-install-plugin BuildRequires: maven-plugin-plugin BuildRequires: objectweb-asm BuildRequires: modello -BuildRequires: xmlunit +BuildRequires: xmlunit-assertj BuildRequires: apache-ivy BuildRequires: junit BuildRequires: easymock @@ -197,6 +199,8 @@ This package provides %{summary}. %patch4 -p1 %patch5 -p1 %patch6 -p1 +%patch7 -p1 +%patch8 -p1 # Bisect IT has no chances of working in local, offline mode, without # network access - it needs to access remote repositories. @@ -337,6 +341,9 @@ cp -P ${maven_home}/bin/m2.conf %{buildroot}%{_datadir}/%{name}/bin/ %doc LICENSE NOTICE %changelog +* Fri Apr 19 2019 Marian Koncek - 3.0.0-23 +- Port to Xmlunit 2.6.2 + * Sat Apr 13 2019 Mikolaj Izdebski - 3.0.0-22 - Switch to Maven 3.6.1 and non-compat Guava From 85768a3ce03d7e826013f7b234842c83cdbe086f Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Fri, 24 May 2019 17:01:49 +0200 Subject: [PATCH 05/42] Mass rebuild for javapackages-tools 201901 --- xmvn.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xmvn.spec b/xmvn.spec index 700f098..709caf7 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -5,7 +5,7 @@ Name: xmvn Version: 3.0.0 -Release: 23%{?dist} +Release: 24%{?dist} Summary: Local Extensions for Apache Maven License: ASL 2.0 URL: https://fedora-java.github.io/xmvn/ @@ -341,6 +341,9 @@ cp -P ${maven_home}/bin/m2.conf %{buildroot}%{_datadir}/%{name}/bin/ %doc LICENSE NOTICE %changelog +* Fri May 24 2019 Mikolaj Izdebski - 3.0.0-24 +- Mass rebuild for javapackages-tools 201901 + * Fri Apr 19 2019 Marian Koncek - 3.0.0-23 - Port to Xmlunit 2.6.2 From 5060d60cc3fd8a7a5af46fd9a39e1b8cf067a95d Mon Sep 17 00:00:00 2001 From: Marian Koncek Date: Thu, 30 May 2019 11:03:06 +0200 Subject: [PATCH 06/42] Update maven-invoker to version 3.0.1 --- ...pdate-maven-invoker-to-version-3.0.1.patch | 115 ++++++++++++++++++ xmvn.spec | 7 +- 2 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 0001-Update-maven-invoker-to-version-3.0.1.patch diff --git a/0001-Update-maven-invoker-to-version-3.0.1.patch b/0001-Update-maven-invoker-to-version-3.0.1.patch new file mode 100644 index 0000000..0eeeadb --- /dev/null +++ b/0001-Update-maven-invoker-to-version-3.0.1.patch @@ -0,0 +1,115 @@ +From 5d8219051b8419aeb33f15f6a5e38084f1782572 Mon Sep 17 00:00:00 2001 +From: Marian Koncek +Date: Wed, 29 May 2019 16:55:20 +0200 +Subject: [PATCH] Update maven-invoker to version 3.0.1 + +--- + xmvn-parent/pom.xml | 2 +- + xmvn-tools/xmvn-bisect/pom.xml | 4 ++ + .../xmvn/tools/bisect/BisectCliRequest.java | 38 ++++++++++++++++--- + 3 files changed, 37 insertions(+), 7 deletions(-) + +diff --git a/xmvn-parent/pom.xml b/xmvn-parent/pom.xml +index 5c21cfa..edf6cbd 100644 +--- a/xmvn-parent/pom.xml ++++ b/xmvn-parent/pom.xml +@@ -86,7 +86,7 @@ + 1.64 + 4.3.1 + 2.4.10 +- 2.2 ++ 3.0.1 + 1.0.3 + 3.5.0 + 3.0.24 +diff --git a/xmvn-tools/xmvn-bisect/pom.xml b/xmvn-tools/xmvn-bisect/pom.xml +index ce592ad..1410022 100644 +--- a/xmvn-tools/xmvn-bisect/pom.xml ++++ b/xmvn-tools/xmvn-bisect/pom.xml +@@ -49,5 +49,9 @@ + + + ++ ++ org.codehaus.plexus ++ plexus-utils ++ + + +diff --git a/xmvn-tools/xmvn-bisect/src/main/java/org/fedoraproject/xmvn/tools/bisect/BisectCliRequest.java b/xmvn-tools/xmvn-bisect/src/main/java/org/fedoraproject/xmvn/tools/bisect/BisectCliRequest.java +index 795bfd9..1f0fcf5 100644 +--- a/xmvn-tools/xmvn-bisect/src/main/java/org/fedoraproject/xmvn/tools/bisect/BisectCliRequest.java ++++ b/xmvn-tools/xmvn-bisect/src/main/java/org/fedoraproject/xmvn/tools/bisect/BisectCliRequest.java +@@ -29,6 +29,8 @@ import com.beust.jcommander.Parameter; + import com.beust.jcommander.ParameterException; + import org.apache.maven.shared.invoker.DefaultInvocationRequest; + import org.apache.maven.shared.invoker.InvocationRequest; ++import org.apache.maven.shared.invoker.InvocationRequest.CheckSumPolicy; ++import org.apache.maven.shared.invoker.InvocationRequest.ReactorFailureBehavior; + import org.codehaus.plexus.util.StringUtils; + + /** +@@ -178,6 +180,30 @@ public class BisectCliRequest + return null; + } + ++ private static CheckSumPolicy stringToCheckSumPolicy( String policy ) ++ { ++ if ( policy == null ) ++ return null; ++ if ( policy.equals( "fail" ) ) ++ return CheckSumPolicy.Fail; ++ if ( policy.equals( "warn" ) ) ++ return CheckSumPolicy.Warn; ++ ++ throw new IllegalArgumentException( "Invalid checksum policy selected" ); ++ } ++ ++ private static String checkSumPolicyToString( CheckSumPolicy policy ) ++ { ++ if ( policy == null ) ++ return null; ++ if ( policy.equals( CheckSumPolicy.Fail ) ) ++ return "fail"; ++ if ( policy.equals( CheckSumPolicy.Warn ) ) ++ return "warn"; ++ ++ throw new IllegalArgumentException( "Invalid checksum policy selected" ); ++ } ++ + private void setDefaultValues() + { + String userHome = System.getProperty( "user.home" ); +@@ -193,11 +219,11 @@ public class BisectCliRequest + alsoMake = request.isAlsoMake(); + alsoMakeDependents = request.isAlsoMakeDependents(); + debug = request.isDebug(); +- failureBehavior = request.getFailureBehavior(); +- globalChecksumPolicy = request.getGlobalChecksumPolicy(); ++ failureBehavior = request.getReactorFailureBehavior().getLongOption(); ++ globalChecksumPolicy = checkSumPolicyToString( request.getGlobalChecksumPolicy() ); + globalSettings = StringUtils.defaultString( request.getGlobalSettingsFile() ); + goals = request.getGoals(); +- batchMode = !request.isInteractive(); ++ batchMode = request.isBatchMode(); + javaHome = fileToString( request.getJavaHome() ); + localRepository = fileToString( request.getLocalRepositoryDirectory( null ) ); + mavenOpts = request.getMavenOpts(); +@@ -222,11 +248,11 @@ public class BisectCliRequest + request.setAlsoMake( alsoMake ); + request.setAlsoMakeDependents( alsoMakeDependents ); + request.setDebug( debug ); +- request.setFailureBehavior( failureBehavior ); +- request.setGlobalChecksumPolicy( globalChecksumPolicy ); ++ request.setReactorFailureBehavior( ReactorFailureBehavior.valueOfByLongOption( failureBehavior ) ); ++ request.setGlobalChecksumPolicy( stringToCheckSumPolicy( globalChecksumPolicy ) ); + request.setGlobalSettingsFile( stringToFile( globalSettings ) ); + request.setGoals( goals ); +- request.setInteractive( !batchMode ); ++ request.setBatchMode( batchMode ); + request.setJavaHome( stringToFile( javaHome ) ); + request.setLocalRepositoryDirectory( stringToFile( localRepository ) ); + request.setMavenOpts( mavenOpts ); +-- +2.20.1 + diff --git a/xmvn.spec b/xmvn.spec index 709caf7..62dcc5d 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -5,7 +5,7 @@ Name: xmvn Version: 3.0.0 -Release: 24%{?dist} +Release: 25%{?dist} Summary: Local Extensions for Apache Maven License: ASL 2.0 URL: https://fedora-java.github.io/xmvn/ @@ -22,6 +22,7 @@ Patch5: 0001-Don-t-use-JAXB-for-converting-bytes-to-hex-string.patch Patch6: 0001-Use-apache-commons-compress-for-manifest-injection-a.patch Patch7: 0001-test-Fix-XML-namespace-in-installer-test-resources.patch Patch8: 0001-Port-to-Xmlunit-2.6.2.patch +Patch9: 0001-Update-maven-invoker-to-version-3.0.1.patch BuildRequires: maven >= 3.5.0 BuildRequires: maven-local @@ -201,6 +202,7 @@ This package provides %{summary}. %patch6 -p1 %patch7 -p1 %patch8 -p1 +%patch9 -p1 # Bisect IT has no chances of working in local, offline mode, without # network access - it needs to access remote repositories. @@ -341,6 +343,9 @@ cp -P ${maven_home}/bin/m2.conf %{buildroot}%{_datadir}/%{name}/bin/ %doc LICENSE NOTICE %changelog +* Thu May 30 2019 Marian Koncek - 3.0.0-25 +- Update maven-invoker to version 3.0.1 + * Fri May 24 2019 Mikolaj Izdebski - 3.0.0-24 - Mass rebuild for javapackages-tools 201901 From 92bb6d7e3ef90d3d5c93c156e713a8e19e6d987a Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Fri, 14 Jun 2019 13:09:46 +0200 Subject: [PATCH 07/42] Update to upstream version 3.1.0 --- .gitignore | 1 + ...B-for-converting-bytes-to-hex-string.patch | 58 -- ...Fix-configuration-of-aliased-plugins.patch | 76 --- 0001-Fix-installer-plugin-loading.patch | 403 ------------ 0001-Port-to-Gradle-4.2.patch | 568 ----------------- 0001-Port-to-Gradle-4.3.1.patch | 62 -- 0001-Port-to-Xmlunit-2.6.2.patch | 86 --- ...g-Xdoclint-none-in-m-javadoc-p-3.0.0.patch | 30 - ...pdate-maven-invoker-to-version-3.0.1.patch | 115 ---- ...ns-compress-for-manifest-injection-a.patch | 593 ------------------ ...amespace-in-installer-test-resources.patch | 311 --------- sources | 2 +- xmvn.spec | 28 +- 13 files changed, 7 insertions(+), 2326 deletions(-) delete mode 100644 0001-Don-t-use-JAXB-for-converting-bytes-to-hex-string.patch delete mode 100644 0001-Fix-configuration-of-aliased-plugins.patch delete mode 100644 0001-Fix-installer-plugin-loading.patch delete mode 100644 0001-Port-to-Gradle-4.2.patch delete mode 100644 0001-Port-to-Gradle-4.3.1.patch delete mode 100644 0001-Port-to-Xmlunit-2.6.2.patch delete mode 100644 0001-Support-setting-Xdoclint-none-in-m-javadoc-p-3.0.0.patch delete mode 100644 0001-Update-maven-invoker-to-version-3.0.1.patch delete mode 100644 0001-Use-apache-commons-compress-for-manifest-injection-a.patch delete mode 100644 0001-test-Fix-XML-namespace-in-installer-test-resources.patch diff --git a/.gitignore b/.gitignore index d87524a..ff2718f 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,4 @@ /xmvn-2.4.0.tar.xz /xmvn-2.5.0.tar.xz /xmvn-3.0.0.tar.xz +/xmvn-3.1.0.tar.xz diff --git a/0001-Don-t-use-JAXB-for-converting-bytes-to-hex-string.patch b/0001-Don-t-use-JAXB-for-converting-bytes-to-hex-string.patch deleted file mode 100644 index 415ee9a..0000000 --- a/0001-Don-t-use-JAXB-for-converting-bytes-to-hex-string.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 336cbdc97f3c7055ebdf858141bfc160fd4d412b Mon Sep 17 00:00:00 2001 -From: Mikolaj Izdebski -Date: Fri, 8 Dec 2017 18:00:54 +0100 -Subject: [PATCH] Don't use JAXB for converting bytes to hex string - ---- - .../java/org/fedoraproject/xmvn/resolver/impl/CacheManager.java | 8 ++------ - 1 file changed, 2 insertions(+), 6 deletions(-) - -diff --git a/xmvn-core/src/main/java/org/fedoraproject/xmvn/resolver/impl/CacheManager.java b/xmvn-core/src/main/java/org/fedoraproject/xmvn/resolver/impl/CacheManager.java -index 1d6c193b..0902aa88 100644 ---- a/xmvn-core/src/main/java/org/fedoraproject/xmvn/resolver/impl/CacheManager.java -+++ b/xmvn-core/src/main/java/org/fedoraproject/xmvn/resolver/impl/CacheManager.java -@@ -16,14 +16,13 @@ - package org.fedoraproject.xmvn.resolver.impl; - - import java.io.IOException; -+import java.math.BigInteger; - import java.nio.file.Files; - import java.nio.file.Path; - import java.nio.file.Paths; - import java.security.MessageDigest; - import java.security.NoSuchAlgorithmException; - --import javax.xml.bind.annotation.adapters.HexBinaryAdapter; -- - /** - * @author Mikolaj Izdebski - */ -@@ -31,8 +30,6 @@ class CacheManager - { - private static final String DIGEST_ALGORITHM = "SHA-1"; - -- private final HexBinaryAdapter hexAdapter; -- - private final MessageDigest digest; - - private static volatile Path cacheHome; -@@ -41,7 +38,6 @@ class CacheManager - { - try - { -- hexAdapter = new HexBinaryAdapter(); - digest = MessageDigest.getInstance( DIGEST_ALGORITHM ); - } - catch ( NoSuchAlgorithmException e ) -@@ -53,7 +49,7 @@ class CacheManager - private String hash( Path path ) - throws IOException - { -- return hexAdapter.marshal( digest.digest( Files.readAllBytes( path ) ) ); -+ return new BigInteger( 1, digest.digest( Files.readAllBytes( path ) ) ).setBit( 160 ).toString( 16 ).substring( 1 ).toUpperCase(); - } - - private static Path getPathDefault( String key, Object defaultValue ) --- -2.14.3 - diff --git a/0001-Fix-configuration-of-aliased-plugins.patch b/0001-Fix-configuration-of-aliased-plugins.patch deleted file mode 100644 index 9208c31..0000000 --- a/0001-Fix-configuration-of-aliased-plugins.patch +++ /dev/null @@ -1,76 +0,0 @@ -From 46ad87218f0be4a4b7e292a1c8b5d5dbce48ae63 Mon Sep 17 00:00:00 2001 -From: Mikolaj Izdebski -Date: Fri, 16 Mar 2018 11:10:35 +0100 -Subject: [PATCH] Fix configuration of aliased plugins - -Normally Maven tries to look up plugin configuration using plugin -coordinates taken from plugin descriptor. This works with pure Maven -as plugin descriptor always matches reference in POM. -However in XMvn they can differ when plugin artifact is resolved -throug artifact alias, so XMvn should force use of coordinates -specified in in POM. ---- - .../aether/XMvnMojoExecutionConfigurator.java | 51 ++++++++++++++++++++++ - 1 file changed, 51 insertions(+) - create mode 100644 xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMojoExecutionConfigurator.java - -diff --git a/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMojoExecutionConfigurator.java b/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMojoExecutionConfigurator.java -new file mode 100644 -index 00000000..72e38b37 ---- /dev/null -+++ b/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMojoExecutionConfigurator.java -@@ -0,0 +1,51 @@ -+/*- -+ * Copyright (c) 2018 Red Hat, Inc. -+ * -+ * Licensed under the Apache License, Version 2.0 (the "License"); -+ * you may not use this file except in compliance with the License. -+ * You may obtain a copy of the License at -+ * -+ * http://www.apache.org/licenses/LICENSE-2.0 -+ * -+ * Unless required by applicable law or agreed to in writing, software -+ * distributed under the License is distributed on an "AS IS" BASIS, -+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+ * See the License for the specific language governing permissions and -+ * limitations under the License. -+ */ -+package org.fedoraproject.xmvn.connector.aether; -+ -+import org.apache.maven.lifecycle.MojoExecutionConfigurator; -+import org.apache.maven.lifecycle.internal.DefaultMojoExecutionConfigurator; -+import org.apache.maven.plugin.MojoExecution; -+import org.apache.maven.plugin.descriptor.PluginDescriptor; -+import org.apache.maven.project.MavenProject; -+import org.codehaus.plexus.component.annotations.Component; -+ -+/** -+ * @author Mikolaj Izdebski -+ */ -+@Component( role = MojoExecutionConfigurator.class ) -+public class XMvnMojoExecutionConfigurator -+ extends DefaultMojoExecutionConfigurator -+{ -+ @Override -+ public void configure( MavenProject project, MojoExecution execution, boolean allowPluginLevelConfig ) -+ { -+ PluginDescriptor originalPluginDescriptor = execution.getMojoDescriptor().getPluginDescriptor(); -+ -+ PluginDescriptor aliasedPluginDescriptor = originalPluginDescriptor.clone(); -+ aliasedPluginDescriptor.setGroupId( execution.getPlugin().getGroupId() ); -+ aliasedPluginDescriptor.setArtifactId( execution.getPlugin().getArtifactId() ); -+ -+ try -+ { -+ execution.getMojoDescriptor().setPluginDescriptor( aliasedPluginDescriptor ); -+ super.configure( project, execution, allowPluginLevelConfig ); -+ } -+ finally -+ { -+ execution.getMojoDescriptor().setPluginDescriptor( originalPluginDescriptor ); -+ } -+ } -+} --- -2.14.3 - diff --git a/0001-Fix-installer-plugin-loading.patch b/0001-Fix-installer-plugin-loading.patch deleted file mode 100644 index 2acf3fd..0000000 --- a/0001-Fix-installer-plugin-loading.patch +++ /dev/null @@ -1,403 +0,0 @@ -From 0fd7b0d19bd96456292585e883e3ba2ebbaf579b Mon Sep 17 00:00:00 2001 -From: Mikolaj Izdebski -Date: Wed, 21 Jun 2017 10:21:10 +0200 -Subject: [PATCH] Fix installer plugin loading - ---- - .../install/impl/ArtifactInstallerFactory.java | 97 ++++++-- - .../tools/install/impl/IsolatedClassRealm.java | 245 +++++++++++++++++++++ - 2 files changed, 320 insertions(+), 22 deletions(-) - create mode 100644 xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/impl/IsolatedClassRealm.java - -diff --git a/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/impl/ArtifactInstallerFactory.java b/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/impl/ArtifactInstallerFactory.java -index 7a80571..e6a9a2d 100644 ---- a/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/impl/ArtifactInstallerFactory.java -+++ b/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/impl/ArtifactInstallerFactory.java -@@ -15,8 +15,17 @@ - */ - package org.fedoraproject.xmvn.tools.install.impl; - -+import java.io.BufferedReader; -+import java.io.IOException; -+import java.io.InputStream; -+import java.io.InputStreamReader; -+import java.nio.file.Files; -+import java.nio.file.Path; -+import java.nio.file.Paths; - import java.util.Arrays; --import java.util.Collection; -+import java.util.LinkedHashMap; -+import java.util.List; -+import java.util.Map; - import java.util.Properties; - - import org.slf4j.Logger; -@@ -35,49 +44,93 @@ class ArtifactInstallerFactory - - private final ArtifactInstaller defaultArtifactInstaller; - -- private final ArtifactInstaller eclipseArtifactInstaller; -+ private final IsolatedClassRealm pluginRealm; - -- private static ArtifactInstaller loadPlugin( String className ) -+ private final Map cachedPluginsByType = new LinkedHashMap<>(); -+ -+ private final Map cachedPluginsByImplClass = new LinkedHashMap<>(); -+ -+ private ArtifactInstaller tryLoadPlugin( String type ) - { -+ if ( cachedPluginsByType.containsKey( type ) ) -+ return cachedPluginsByType.get( type ); -+ - try - { -- return (ArtifactInstaller) ArtifactInstallerFactory.class.getClassLoader().loadClass( className ).newInstance(); -+ String resourceName = ArtifactInstaller.class.getCanonicalName() + "/" + type; -+ InputStream resourceStream = pluginRealm != null ? pluginRealm.getResourceAsStream( resourceName ) : null; -+ if ( resourceStream == null ) -+ { -+ logger.debug( "No XMvn Installer plugin found for packaging type {}", type ); -+ cachedPluginsByType.put( type, null ); -+ return null; -+ } -+ -+ String pluginImplClass; -+ try ( BufferedReader resourceReader = new BufferedReader( new InputStreamReader( resourceStream ) ) ) -+ { -+ pluginImplClass = resourceReader.readLine(); -+ } -+ -+ ArtifactInstaller pluggedInInstaller = cachedPluginsByImplClass.get( pluginImplClass ); -+ if ( pluggedInInstaller == null ) -+ { -+ pluggedInInstaller = (ArtifactInstaller) pluginRealm.loadClass( pluginImplClass ).newInstance(); -+ cachedPluginsByImplClass.put( pluginImplClass, pluggedInInstaller ); -+ } -+ -+ cachedPluginsByType.put( type, pluggedInInstaller ); -+ return pluggedInInstaller; - } -- catch ( ReflectiveOperationException e ) -+ catch ( IOException | ReflectiveOperationException e ) - { -- return null; -+ throw new RuntimeException( "Unable to load XMvn Installer plugin for packaging type " + type, e ); - } - } - - public ArtifactInstallerFactory( Configurator configurator ) - { - defaultArtifactInstaller = new DefaultArtifactInstaller( configurator ); -- // FIXME Don't hardcode plugin class name -- eclipseArtifactInstaller = loadPlugin( "org.fedoraproject.p2.xmvn.EclipseArtifactInstaller" ); -+ -+ Path pluginDir = Paths.get( "/usr/share/xmvn/lib/installer" ); -+ if ( Files.isDirectory( pluginDir ) ) -+ { -+ ClassLoader parentClassLoader = ArtifactInstallerFactory.class.getClassLoader(); -+ pluginRealm = new IsolatedClassRealm( parentClassLoader ); -+ pluginRealm.addJarDirectory( pluginDir ); -+ PLUGIN_IMPORTS.forEach( pluginRealm::importPackage ); -+ } -+ else -+ { -+ pluginRealm = null; -+ } - } - - /** -- * List of Tycho pacgkaging types. -+ * List of packages imported from XMvn Installer class loader to plug-in realms. - */ -- private static final Collection ECLIPSE_PACKAGING_TYPES = Arrays.asList( "eclipse-plugin", // -- "eclipse-test-plugin", // -- "eclipse-feature", // -- "eclipse-repository", // -- "eclipse-application", // -- "eclipse-update-site", // -- "eclipse-target-definition" ); -+ private static final List PLUGIN_IMPORTS = Arrays.asList( // XMvn API -+ "org.fedoraproject.xmvn.artifact", // -+ "org.fedoraproject.xmvn.config", // -+ "org.fedoraproject.xmvn.deployer", // -+ "org.fedoraproject.xmvn.locator", // -+ "org.fedoraproject.xmvn.metadata", // -+ "org.fedoraproject.xmvn.resolver", // -+ // XMvn Installer SPI -+ "org.fedoraproject.xmvn.tools.install", // -+ // SLF4J API -+ "org.slf4j" // -+ ); - - @SuppressWarnings( "unused" ) - public ArtifactInstaller getInstallerFor( Artifact artifact, Properties properties ) - { - String type = properties.getProperty( "type" ); -- if ( type != null && ECLIPSE_PACKAGING_TYPES.contains( type ) ) -+ if ( type != null ) - { -- if ( eclipseArtifactInstaller != null ) -- return eclipseArtifactInstaller; -- -- logger.error( "Unable to load XMvn P2 plugin, Eclipse artifact installation will be impossible" ); -- throw new RuntimeException( "Unable to load XMvn P2 plugin" ); -+ ArtifactInstaller pluggedInInstaller = tryLoadPlugin( type ); -+ if ( pluggedInInstaller != null ) -+ return pluggedInInstaller; - } - - return defaultArtifactInstaller; -diff --git a/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/impl/IsolatedClassRealm.java b/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/impl/IsolatedClassRealm.java -new file mode 100644 -index 0000000..3324604 ---- /dev/null -+++ b/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/impl/IsolatedClassRealm.java -@@ -0,0 +1,245 @@ -+/*- -+ * Copyright (c) 2014-2017 Red Hat, Inc. -+ * -+ * Licensed under the Apache License, Version 2.0 (the "License"); -+ * you may not use this file except in compliance with the License. -+ * You may obtain a copy of the License at -+ * -+ * http://www.apache.org/licenses/LICENSE-2.0 -+ * -+ * Unless required by applicable law or agreed to in writing, software -+ * distributed under the License is distributed on an "AS IS" BASIS, -+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+ * See the License for the specific language governing permissions and -+ * limitations under the License. -+ */ -+package org.fedoraproject.xmvn.tools.install.impl; -+ -+import java.io.IOException; -+import java.net.MalformedURLException; -+import java.net.URL; -+import java.net.URLClassLoader; -+import java.nio.file.DirectoryStream; -+import java.nio.file.Files; -+import java.nio.file.Path; -+import java.util.Collection; -+import java.util.Collections; -+import java.util.Enumeration; -+import java.util.HashSet; -+import java.util.LinkedHashSet; -+import java.util.Set; -+ -+/** -+ * A generic, isolated class loader. -+ *

-+ * This class loader has its own classpath, separate from the primary Java classpath. It has a parent class loader, to -+ * which it delegates loading a set of imported classes. All other classes are loaded from its own classpath. -+ * -+ * @author Mikolaj Izdebski -+ */ -+class IsolatedClassRealm -+ extends URLClassLoader -+{ -+ static -+ { -+ registerAsParallelCapable(); -+ } -+ -+ private final ClassLoader parent; -+ -+ private final Set imports = new HashSet<>(); -+ -+ private final Set importsAll = new HashSet<>(); -+ -+ public IsolatedClassRealm( ClassLoader parent ) -+ { -+ super( new URL[0], null ); -+ this.parent = parent; -+ } -+ -+ public void addJar( Path jar ) -+ { -+ try -+ { -+ addURL( jar.toUri().toURL() ); -+ } -+ catch ( MalformedURLException e ) -+ { -+ throw new RuntimeException( e ); -+ } -+ } -+ -+ public void addJarDirectory( Path dir ) -+ { -+ try ( DirectoryStream stream = Files.newDirectoryStream( dir, "*.jar" ) ) -+ { -+ for ( Path path : stream ) -+ { -+ addJar( path ); -+ } -+ } -+ catch ( IOException e ) -+ { -+ throw new RuntimeException( e ); -+ } -+ } -+ -+ public void importPackage( String packageName ) -+ { -+ imports.add( packageName ); -+ } -+ -+ public void importAllPackages( String packageName ) -+ { -+ importsAll.add( packageName ); -+ } -+ -+ boolean isImported( String name ) -+ { -+ int index = name.lastIndexOf( '/' ); -+ -+ if ( index >= 0 ) -+ { -+ name = name.replace( '/', '.' ); -+ } -+ else -+ { -+ index = Math.max( name.lastIndexOf( '.' ), 0 ); -+ } -+ -+ String namespace = name.substring( 0, index ); -+ -+ if ( imports.contains( namespace ) ) -+ return true; -+ -+ while ( !namespace.isEmpty() ) -+ { -+ if ( importsAll.contains( namespace ) ) -+ return true; -+ -+ namespace = namespace.substring( 0, Math.max( namespace.lastIndexOf( '.' ), 0 ) ); -+ } -+ -+ return false; -+ } -+ -+ @Override -+ public Class loadClass( String name ) -+ throws ClassNotFoundException -+ { -+ return loadClass( name, false ); -+ } -+ -+ @Override -+ protected Class loadClass( String name, boolean resolve ) -+ throws ClassNotFoundException -+ { -+ if ( isImported( name ) ) -+ { -+ try -+ { -+ return parent.loadClass( name ); -+ } -+ catch ( ClassNotFoundException e ) -+ { -+ } -+ } -+ -+ try -+ { -+ return super.loadClass( name, resolve ); -+ } -+ catch ( ClassNotFoundException e ) -+ { -+ } -+ -+ synchronized ( getClassLoadingLock( name ) ) -+ { -+ Class clazz = findLoadedClass( name ); -+ if ( clazz != null ) -+ { -+ return clazz; -+ } -+ -+ try -+ { -+ return super.findClass( name ); -+ } -+ catch ( ClassNotFoundException e ) -+ { -+ } -+ } -+ -+ throw new ClassNotFoundException( name ); -+ } -+ -+ @Override -+ protected Class findClass( String name ) -+ throws ClassNotFoundException -+ { -+ throw new ClassNotFoundException( name ); -+ } -+ -+ @Override -+ public URL getResource( String name ) -+ { -+ if ( isImported( name ) ) -+ { -+ URL resource = parent.getResource( name ); -+ if ( resource != null ) -+ { -+ return resource; -+ } -+ } -+ -+ URL resource = super.getResource( name ); -+ if ( resource != null ) -+ { -+ return resource; -+ } -+ -+ resource = super.findResource( name ); -+ if ( resource != null ) -+ { -+ return resource; -+ } -+ -+ return null; -+ } -+ -+ @Override -+ public Enumeration getResources( String name ) -+ throws IOException -+ { -+ Collection resources = new LinkedHashSet<>(); -+ -+ if ( isImported( name ) ) -+ { -+ try -+ { -+ resources.addAll( Collections.list( parent.getResources( name ) ) ); -+ } -+ catch ( IOException e ) -+ { -+ } -+ } -+ -+ try -+ { -+ resources.addAll( Collections.list( super.getResources( name ) ) ); -+ } -+ catch ( IOException e ) -+ { -+ } -+ -+ try -+ { -+ resources.addAll( Collections.list( super.findResources( name ) ) ); -+ } -+ catch ( IOException e ) -+ { -+ } -+ -+ return Collections.enumeration( resources ); -+ } -+} --- -2.9.3 - diff --git a/0001-Port-to-Gradle-4.2.patch b/0001-Port-to-Gradle-4.2.patch deleted file mode 100644 index 0e2a2f8..0000000 --- a/0001-Port-to-Gradle-4.2.patch +++ /dev/null @@ -1,568 +0,0 @@ -From 34b37637bd469621bb3eadfdf5fb856a806722df Mon Sep 17 00:00:00 2001 -From: Michael Simacek -Date: Mon, 2 Oct 2017 12:01:09 +0300 -Subject: [PATCH] Port to Gradle 4.2 - ---- - libs/gradle-core-api/pom.xml | 32 ++++++ - libs/gradle-logging/pom.xml | 32 ++++++ - libs/gradle-model-core/pom.xml | 32 ++++++ - libs/pom.xml | 3 + - xmvn-connector-gradle/pom.xml | 15 +++ - .../xmvn/connector/gradle/GradleResolver.java | 119 ++++++++++++++------- - .../xmvn/connector/gradle/XMvnGradlePlugin.java | 16 +-- - .../xmvn/connector/gradle/XMvnInstallTask.java | 22 +++- - xmvn-parent/pom.xml | 17 ++- - 9 files changed, 235 insertions(+), 53 deletions(-) - create mode 100644 libs/gradle-core-api/pom.xml - create mode 100644 libs/gradle-logging/pom.xml - create mode 100644 libs/gradle-model-core/pom.xml - -diff --git a/libs/gradle-core-api/pom.xml b/libs/gradle-core-api/pom.xml -new file mode 100644 -index 00000000..7b3d68d5 ---- /dev/null -+++ b/libs/gradle-core-api/pom.xml -@@ -0,0 +1,32 @@ -+ -+ -+ -+ 4.0.0 -+ -+ org.fedoraproject.xmvn -+ libs -+ 3.0.0 -+ .. -+ -+ org.gradle -+ gradle-core-api -+ ${gradleVersion} -+ Gradle core API module -+ -diff --git a/libs/gradle-logging/pom.xml b/libs/gradle-logging/pom.xml -new file mode 100644 -index 00000000..d2dec7c1 ---- /dev/null -+++ b/libs/gradle-logging/pom.xml -@@ -0,0 +1,32 @@ -+ -+ -+ -+ 4.0.0 -+ -+ org.fedoraproject.xmvn -+ libs -+ 3.0.0 -+ .. -+ -+ org.gradle -+ gradle-logging -+ ${gradleVersion} -+ Gradle logging module -+ -diff --git a/libs/gradle-model-core/pom.xml b/libs/gradle-model-core/pom.xml -new file mode 100644 -index 00000000..f841b960 ---- /dev/null -+++ b/libs/gradle-model-core/pom.xml -@@ -0,0 +1,32 @@ -+ -+ -+ -+ 4.0.0 -+ -+ org.fedoraproject.xmvn -+ libs -+ 3.0.0 -+ .. -+ -+ org.gradle -+ gradle-model-core -+ ${gradleVersion} -+ Gradle model-core module -+ -diff --git a/libs/pom.xml b/libs/pom.xml -index 2b31c5d0..fc29e359 100644 ---- a/libs/pom.xml -+++ b/libs/pom.xml -@@ -37,8 +37,11 @@ - gradle-base-services - gradle-base-services-groovy - gradle-core -+ gradle-core-api -+ gradle-model-core - gradle-dependency-management - gradle-resources -+ gradle-logging - - - -diff --git a/xmvn-connector-gradle/pom.xml b/xmvn-connector-gradle/pom.xml -index b433e5dd..f18a285e 100644 ---- a/xmvn-connector-gradle/pom.xml -+++ b/xmvn-connector-gradle/pom.xml -@@ -54,11 +54,21 @@ - - - org.gradle -+ gradle-core-api -+ provided -+ -+ -+ org.gradle - gradle-core - provided - - - org.gradle -+ gradle-model-core -+ provided -+ -+ -+ org.gradle - gradle-dependency-management - provided - -@@ -68,6 +78,11 @@ - provided - - -+ org.gradle -+ gradle-logging -+ provided -+ -+ - org.apache.ivy - ivy - provided -diff --git a/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/GradleResolver.java b/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/GradleResolver.java -index a81c5bc0..6305aa86 100644 ---- a/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/GradleResolver.java -+++ b/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/GradleResolver.java -@@ -18,41 +18,47 @@ package org.fedoraproject.xmvn.connector.gradle; - import java.nio.file.Path; - import java.util.Collections; - import java.util.LinkedHashSet; -+import java.util.Map; - import java.util.Set; - -+import org.gradle.api.artifacts.ComponentMetadataSupplier; - import org.gradle.api.artifacts.ModuleVersionIdentifier; -+import org.gradle.api.artifacts.component.ComponentArtifactIdentifier; - import org.gradle.api.artifacts.component.ModuleComponentIdentifier; -+import org.gradle.api.internal.artifacts.ImmutableModuleIdentifierFactory; - import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ConfiguredModuleComponentRepository; - import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ModuleComponentRepositoryAccess; - import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.DescriptorParseContext; --import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.GradlePomModuleDescriptorParser; - import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.parser.MetaDataParser; --import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.DefaultVersionComparator; --import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.DefaultVersionSelectorScheme; -+import org.gradle.api.internal.artifacts.ivyservice.resolveengine.artifact.ResolvableArtifact; - import org.gradle.api.internal.artifacts.repositories.AbstractArtifactRepository; - import org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository; -+import org.gradle.api.internal.artifacts.repositories.resolver.MetadataFetchingCost; - import org.gradle.api.internal.component.ArtifactType; --import org.gradle.internal.component.external.model.DefaultMavenModuleResolveMetaData; --import org.gradle.internal.component.external.model.DefaultModuleComponentArtifactMetaData; --import org.gradle.internal.component.external.model.ModuleComponentResolveMetaData; --import org.gradle.internal.component.external.model.MutableModuleComponentResolveMetaData; --import org.gradle.internal.component.model.ComponentArtifactMetaData; -+import org.gradle.internal.component.external.model.DefaultModuleComponentArtifactMetadata; -+import org.gradle.internal.component.external.model.DefaultMutableMavenModuleResolveMetadata; -+import org.gradle.internal.component.external.model.FixedComponentArtifacts; -+import org.gradle.internal.component.external.model.ModuleComponentArtifactMetadata; -+import org.gradle.internal.component.external.model.ModuleComponentResolveMetadata; -+import org.gradle.internal.component.external.model.MutableMavenModuleResolveMetadata; -+import org.gradle.internal.component.external.model.MutableModuleComponentResolveMetadata; -+import org.gradle.internal.component.model.ComponentArtifactMetadata; - import org.gradle.internal.component.model.ComponentOverrideMetadata; --import org.gradle.internal.component.model.ComponentResolveMetaData; --import org.gradle.internal.component.model.ComponentUsage; -+import org.gradle.internal.component.model.ComponentResolveMetadata; - import org.gradle.internal.component.model.DefaultIvyArtifactName; --import org.gradle.internal.component.model.DependencyMetaData; -+import org.gradle.internal.component.model.DependencyMetadata; - import org.gradle.internal.component.model.IvyArtifactName; - import org.gradle.internal.component.model.ModuleSource; - import org.gradle.internal.resolve.ArtifactResolveException; - import org.gradle.internal.resolve.ModuleVersionResolveException; - import org.gradle.internal.resolve.result.BuildableArtifactResolveResult; - import org.gradle.internal.resolve.result.BuildableArtifactSetResolveResult; -+import org.gradle.internal.resolve.result.BuildableComponentArtifactsResolveResult; - import org.gradle.internal.resolve.result.BuildableModuleComponentMetaDataResolveResult; - import org.gradle.internal.resolve.result.BuildableModuleVersionListingResolveResult; --import org.gradle.internal.resource.local.DefaultLocallyAvailableExternalResource; --import org.gradle.internal.resource.local.DefaultLocallyAvailableResource; -+import org.gradle.internal.resource.local.FileResourceRepository; - import org.gradle.internal.resource.local.LocallyAvailableExternalResource; -+import org.gradle.internal.resource.metadata.DefaultExternalResourceMetaData; - import org.slf4j.Logger; - import org.slf4j.LoggerFactory; - -@@ -72,6 +78,21 @@ public class GradleResolver - implements ResolutionAwareRepository, ConfiguredModuleComponentRepository, ModuleComponentRepositoryAccess, - DescriptorParseContext - { -+ public GradleResolver( MetaDataParser pomParser, -+ ImmutableModuleIdentifierFactory moduleIdentifierFactory, -+ FileResourceRepository fileRepository ) -+ { -+ this.pomParser = pomParser; -+ this.moduleIdentifierFactory = moduleIdentifierFactory; -+ this.fileRepository = fileRepository; -+ } -+ -+ private MetaDataParser pomParser; -+ -+ private ImmutableModuleIdentifierFactory moduleIdentifierFactory; -+ -+ private FileResourceRepository fileRepository; -+ - private final Logger logger = LoggerFactory.getLogger( GradleResolver.class ); - - static class LazyLocatorProvider -@@ -135,17 +156,17 @@ public class GradleResolver - } - - @Override -- public void listModuleVersions( DependencyMetaData arg0, BuildableModuleVersionListingResolveResult arg1 ) -+ public void listModuleVersions( DependencyMetadata arg0, BuildableModuleVersionListingResolveResult arg1 ) - { - logger.debug( "listModuleVersions() called, but it is NOT IMPLEMENTED" ); - } - - @Override -- public void resolveArtifact( ComponentArtifactMetaData artifact, ModuleSource module, -+ public void resolveArtifact( ComponentArtifactMetadata artifact, ModuleSource module, - BuildableArtifactResolveResult result ) - { - ModuleVersionIdentifier moduleId = -- ( (DefaultModuleComponentArtifactMetaData) artifact ).toArtifactIdentifier().getModuleVersionIdentifier(); -+ ( (DefaultModuleComponentArtifactMetadata) artifact ).toArtifactIdentifier().getModuleVersionIdentifier(); - String groupId = moduleId.getGroup(); - String artifactId = artifact.getName().getName(); - String extension = artifact.getName().getExtension(); -@@ -180,11 +201,9 @@ public class GradleResolver - { - logger.debug( "Found Maven POM: {}", pomPath ); - -- MetaDataParser parser = -- new GradlePomModuleDescriptorParser( new DefaultVersionSelectorScheme( new DefaultVersionComparator() ) ); -- MutableModuleComponentResolveMetaData metaData = parser.parseMetaData( this, pomPath.toFile() ); -+ MutableModuleComponentResolveMetadata metaData = pomParser.parseMetaData( this, pomPath.toFile() ); - -- result.resolved( metaData ); -+ result.resolved( metaData.asImmutable() ); - return; - } - else -@@ -204,9 +223,11 @@ public class GradleResolver - if ( path != null ) - { - logger.debug( "Artifact {} found, returning minimal model", artifact3 ); -- MutableModuleComponentResolveMetaData metaData = -- new DefaultMavenModuleResolveMetaData( id, request.getArtifacts() ); -- result.resolved( metaData ); -+ ModuleVersionIdentifier mvi = -+ moduleIdentifierFactory.moduleWithVersion( id.getGroup(), id.getModule(), id.getVersion() ); -+ MutableModuleComponentResolveMetadata metaData = -+ new DefaultMutableMavenModuleResolveMetadata( mvi, id, request.getArtifacts() ); -+ result.resolved( metaData.asImmutable() ); - return; - } - } -@@ -224,24 +245,15 @@ public class GradleResolver - - if ( artifactSet.isEmpty() ) - { -- artifactSet.add( new DefaultIvyArtifactName( id.getModule(), "jar", "jar", -- Collections.emptyMap() ) ); -+ artifactSet.add( new DefaultIvyArtifactName( id.getModule(), "jar", "jar", null ) ); - } - - return artifactSet; - } - - @Override -- public void resolveModuleArtifacts( ComponentResolveMetaData component, ComponentUsage usage, -- BuildableArtifactSetResolveResult result ) -- { -- result.resolved( Collections.singleton( ( (ModuleComponentResolveMetaData) component ).artifact( "jar", "jar", -- null ) ) ); -- } -- -- @Override -- public void resolveModuleArtifacts( ComponentResolveMetaData component, ArtifactType type, -- BuildableArtifactSetResolveResult result ) -+ public void resolveArtifactsWithType( ComponentResolveMetadata component, ArtifactType type, -+ BuildableArtifactSetResolveResult result ) - { - if ( type != ArtifactType.MAVEN_POM ) - { -@@ -250,15 +262,22 @@ public class GradleResolver - return; - } - -- ModuleComponentResolveMetaData metaData = (ModuleComponentResolveMetaData) component; -- ModuleComponentIdentifier id = metaData.getComponentId(); -+ ModuleComponentIdentifier id = (ModuleComponentIdentifier) component.getComponentId(); - DefaultIvyArtifactName name = new DefaultIvyArtifactName( id.getModule(), "pom", "pom" ); -- DefaultModuleComponentArtifactMetaData resolvedMetaData = -- new DefaultModuleComponentArtifactMetaData( id, name ); -+ DefaultModuleComponentArtifactMetadata resolvedMetaData = -+ new DefaultModuleComponentArtifactMetadata( id, name ); - result.resolved( Collections.singleton( resolvedMetaData ) ); - } - - @Override -+ public void resolveArtifacts( ComponentResolveMetadata component, BuildableComponentArtifactsResolveResult result ) -+ { -+ ModuleComponentArtifactMetadata artifact = -+ ( (ModuleComponentResolveMetadata) component ).artifact( "jar", "jar", null ); -+ result.resolved( new FixedComponentArtifacts( Collections.singleton( artifact ) ) ); -+ } -+ -+ @Override - public LocallyAvailableExternalResource getMetaDataArtifact( ModuleComponentIdentifier id, ArtifactType type ) - { - Path pomPath = resolve( new DefaultArtifact( id.getGroup(), id.getModule(), "pom", id.getVersion() ) ); -@@ -266,7 +285,25 @@ public class GradleResolver - if ( pomPath == null ) - return null; - -- return new DefaultLocallyAvailableExternalResource( pomPath.toUri(), -- new DefaultLocallyAvailableResource( pomPath.toFile() ) ); -+ DefaultExternalResourceMetaData metadata = new DefaultExternalResourceMetaData( pomPath.toUri(), 0, 0 ); -+ return fileRepository.resource( pomPath.toFile(), pomPath.toUri(), metadata ); -+ } -+ -+ @Override -+ public ComponentMetadataSupplier createMetadataSupplier() -+ { -+ return null; -+ } -+ -+ @Override -+ public Map getArtifactCache() -+ { -+ return Collections.emptyMap(); -+ } -+ -+ @Override -+ public MetadataFetchingCost estimateMetadataFetchingCost( ModuleComponentIdentifier arg0 ) -+ { -+ return MetadataFetchingCost.CHEAP; - } - } -diff --git a/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/XMvnGradlePlugin.java b/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/XMvnGradlePlugin.java -index 2646f098..c3250e3c 100644 ---- a/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/XMvnGradlePlugin.java -+++ b/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/XMvnGradlePlugin.java -@@ -15,9 +15,11 @@ - */ - package org.fedoraproject.xmvn.connector.gradle; - -+import groovy.lang.Closure; -+import groovy.lang.GroovyShell; - import org.gradle.api.Plugin; - import org.gradle.api.Task; --import org.gradle.api.artifacts.repositories.ArtifactRepository; -+import org.gradle.api.artifacts.dsl.RepositoryHandler; - import org.gradle.api.invocation.Gradle; - - /** -@@ -26,15 +28,17 @@ import org.gradle.api.invocation.Gradle; - public class XMvnGradlePlugin - implements Plugin - { -+ private void configureRepositories( RepositoryHandler repositories ) -+ { -+ repositories.configure( (Closure) new GroovyShell().evaluate( "{ it -> xmvn() }" ) ); -+ } -+ - @Override - public void apply( Gradle gradle ) - { -- ArtifactRepository repo = new GradleResolver(); -- repo.setName( "xmvn" ); -- - gradle.allprojects( project -> { -- project.getRepositories().addFirst( repo ); -- project.getBuildscript().getRepositories().addFirst( repo ); -+ configureRepositories( project.getRepositories() ); -+ configureRepositories( project.getBuildscript().getRepositories() ); - - Task upload = project.getTasks().create( "xmvnInstall", XMvnInstallTask.class ); - upload.setDescription( "Installs all artifacts through XMvn" ); -diff --git a/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/XMvnInstallTask.java b/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/XMvnInstallTask.java -index 196f4a5b..07905f1f 100644 ---- a/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/XMvnInstallTask.java -+++ b/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/XMvnInstallTask.java -@@ -17,6 +17,7 @@ package org.fedoraproject.xmvn.connector.gradle; - - import java.nio.file.Files; - import java.util.Collections; -+import java.util.HashSet; - import java.util.List; - import java.util.Set; - import java.util.stream.Collectors; -@@ -32,7 +33,7 @@ import org.gradle.api.artifacts.PublishArtifact; - import org.gradle.api.artifacts.PublishException; - import org.gradle.api.component.SoftwareComponent; - import org.gradle.api.internal.component.SoftwareComponentInternal; --import org.gradle.api.internal.component.Usage; -+import org.gradle.api.internal.component.UsageContext; - import org.gradle.api.tasks.TaskAction; - - import org.fedoraproject.xmvn.artifact.Artifact; -@@ -83,7 +84,7 @@ class XMvnInstallTask - Project dependencyProject = projectDependency.getDependencyProject(); - Stream components = dependencyProject.getComponents().stream(); - Stream internalComponents = components.map( c -> (SoftwareComponentInternal) c ); -- Stream usages = internalComponents.flatMap( ic -> ic.getUsages().stream() ); -+ Stream usages = internalComponents.flatMap( ic -> ic.getUsages().stream() ); - Stream publishArtifacts = usages.flatMap( usage -> usage.getArtifacts().stream() ); - Stream artifacts = publishArtifacts.map( pa -> getPublishArtifact( dependencyProject, pa ) ); - return artifacts.collect( Collectors.toList() ); -@@ -144,7 +145,13 @@ class XMvnInstallTask - } - } - -- DeploymentResult result = getDeployer().deploy( request ); -+ DeploymentResult result; -+ -+ // prevent parallel access to installation plan -+ synchronized ( XMvnInstallTask.class ) -+ { -+ result = getDeployer().deploy( request ); -+ } - - if ( result.getException() != null ) - { -@@ -155,17 +162,22 @@ class XMvnInstallTask - @TaskAction - protected void deployProject() - { -+ Set seenArtifacts = new HashSet<>(); -+ - for ( SoftwareComponent component : getProject().getComponents() ) - { - SoftwareComponentInternal internalComponent = (SoftwareComponentInternal) component; - -- for ( Usage usage : internalComponent.getUsages() ) -+ for ( UsageContext usage : internalComponent.getUsages() ) - { - Set dependencies = usage.getDependencies(); - - for ( PublishArtifact artifact : usage.getArtifacts() ) - { -- deploy( artifact, dependencies ); -+ if ( seenArtifacts.add( artifact ) ) -+ { -+ deploy( artifact, dependencies ); -+ } - } - } - } -diff --git a/xmvn-parent/pom.xml b/xmvn-parent/pom.xml -index 661cc24d..7e7a6d94 100644 ---- a/xmvn-parent/pom.xml -+++ b/xmvn-parent/pom.xml -@@ -84,7 +84,7 @@ - 1 - 2.4.0 - 1.64 -- 2.13-rc-1 -+ 4.2.1 - 2.4.10 - 2.2 - 1.0.3 -@@ -278,11 +278,21 @@ - - - org.gradle -+ gradle-core-api -+ ${gradleVersion} -+ -+ -+ org.gradle - gradle-core - ${gradleVersion} - - - org.gradle -+ gradle-model-core -+ ${gradleVersion} -+ -+ -+ org.gradle - gradle-dependency-management - ${gradleVersion} - -@@ -292,6 +302,11 @@ - ${gradleVersion} - - -+ org.gradle -+ gradle-logging -+ ${gradleVersion} -+ -+ - org.codehaus.groovy - groovy-all - ${groovyVersion} --- -2.13.6 - diff --git a/0001-Port-to-Gradle-4.3.1.patch b/0001-Port-to-Gradle-4.3.1.patch deleted file mode 100644 index efc5531..0000000 --- a/0001-Port-to-Gradle-4.3.1.patch +++ /dev/null @@ -1,62 +0,0 @@ -From cd6cf796f7c2230c940f95f46dc905a25152c486 Mon Sep 17 00:00:00 2001 -From: Michael Simacek -Date: Fri, 10 Nov 2017 15:13:45 +0200 -Subject: [PATCH] Port to Gradle 4.3.1 - ---- - .../java/org/fedoraproject/xmvn/connector/gradle/GradleResolver.java | 2 +- - .../java/org/fedoraproject/xmvn/connector/gradle/XMvnInstallTask.java | 4 ++-- - xmvn-parent/pom.xml | 2 +- - 3 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/GradleResolver.java b/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/GradleResolver.java -index 6305aa86..9e1a247a 100644 ---- a/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/GradleResolver.java -+++ b/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/GradleResolver.java -@@ -226,7 +226,7 @@ public class GradleResolver - ModuleVersionIdentifier mvi = - moduleIdentifierFactory.moduleWithVersion( id.getGroup(), id.getModule(), id.getVersion() ); - MutableModuleComponentResolveMetadata metaData = -- new DefaultMutableMavenModuleResolveMetadata( mvi, id, request.getArtifacts() ); -+ DefaultMutableMavenModuleResolveMetadata.missing( mvi, id ); - result.resolved( metaData.asImmutable() ); - return; - } -diff --git a/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/XMvnInstallTask.java b/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/XMvnInstallTask.java -index 07905f1f..d220e266 100644 ---- a/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/XMvnInstallTask.java -+++ b/xmvn-connector-gradle/src/main/java/org/fedoraproject/xmvn/connector/gradle/XMvnInstallTask.java -@@ -116,7 +116,7 @@ class XMvnInstallTask - } ).collect( Collectors.toList() ); - } - -- private void deploy( PublishArtifact gradleArtifact, Set dependencies ) -+ private void deploy( PublishArtifact gradleArtifact, Set dependencies ) - { - DeploymentRequest request = new DeploymentRequest(); - -@@ -170,7 +170,7 @@ class XMvnInstallTask - - for ( UsageContext usage : internalComponent.getUsages() ) - { -- Set dependencies = usage.getDependencies(); -+ Set dependencies = usage.getDependencies(); - - for ( PublishArtifact artifact : usage.getArtifacts() ) - { -diff --git a/xmvn-parent/pom.xml b/xmvn-parent/pom.xml -index 7e7a6d94..910e27b6 100644 ---- a/xmvn-parent/pom.xml -+++ b/xmvn-parent/pom.xml -@@ -84,7 +84,7 @@ - 1 - 2.4.0 - 1.64 -- 4.2.1 -+ 4.3.1 - 2.4.10 - 2.2 - 1.0.3 --- -2.13.6 - diff --git a/0001-Port-to-Xmlunit-2.6.2.patch b/0001-Port-to-Xmlunit-2.6.2.patch deleted file mode 100644 index d72380a..0000000 --- a/0001-Port-to-Xmlunit-2.6.2.patch +++ /dev/null @@ -1,86 +0,0 @@ -From 7049d71ed85851fb5ca25b88c5e33b51cf3a5dac Mon Sep 17 00:00:00 2001 -From: Marian Koncek -Date: Fri, 19 Apr 2019 09:32:40 +0200 -Subject: [PATCH] Port to Xmlunit 2.6.2 - ---- - xmvn-parent/pom.xml | 10 +++++----- - .../xmvn/tools/install/impl/InstallerTest.java | 6 ++---- - 2 files changed, 7 insertions(+), 9 deletions(-) - -diff --git a/xmvn-parent/pom.xml b/xmvn-parent/pom.xml -index d4f9dda..5c21cfa 100644 ---- a/xmvn-parent/pom.xml -+++ b/xmvn-parent/pom.xml -@@ -122,7 +122,7 @@ - 3.6 - 3.0.1 - 2.19.1 -- 1.6 -+ 2.6.2 - - - -@@ -228,8 +228,8 @@ - ${junitVersion} - - -- xmlunit -- xmlunit -+ org.xmlunit -+ xmlunit-assertj - ${xmlunitVersion} - - -@@ -336,8 +336,8 @@ - test - - -- xmlunit -- xmlunit -+ org.xmlunit -+ xmlunit-assertj - test - - -diff --git a/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/InstallerTest.java b/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/InstallerTest.java -index 9fb7d90..bece0b2 100644 ---- a/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/InstallerTest.java -+++ b/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/InstallerTest.java -@@ -15,8 +15,6 @@ - */ - package org.fedoraproject.xmvn.tools.install.impl; - --import static org.custommonkey.xmlunit.XMLAssert.assertXMLEqual; --import static org.custommonkey.xmlunit.XMLUnit.setIgnoreWhitespace; - import static org.easymock.EasyMock.expect; - import static org.easymock.EasyMock.replay; - import static org.easymock.EasyMock.verify; -@@ -40,6 +38,7 @@ import org.junit.runner.RunWith; - import org.w3c.dom.Document; - import org.w3c.dom.Node; - import org.w3c.dom.NodeList; -+import org.xmlunit.assertj.XmlAssert; - - import org.fedoraproject.xmvn.artifact.DefaultArtifact; - import org.fedoraproject.xmvn.config.Artifact; -@@ -188,7 +187,6 @@ public class InstallerTest - protected void assertMetadataEqual( Path expected, Path actual ) - throws Exception - { -- setIgnoreWhitespace( true ); - assertTrue( Files.isRegularFile( actual ) ); - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - DocumentBuilder builder = factory.newDocumentBuilder(); -@@ -208,7 +206,7 @@ public class InstallerTest - unifyUuids( expectedXml.getElementsByTagName( "uuid" ) ); - unifyUuids( actualXml.getElementsByTagName( "uuid" ) ); - -- assertXMLEqual( expectedXml, actualXml ); -+ XmlAssert.assertThat( expectedXml ).and( actualXml ).ignoreWhitespace().areSimilar(); - } - - @Test --- -2.20.1 - diff --git a/0001-Support-setting-Xdoclint-none-in-m-javadoc-p-3.0.0.patch b/0001-Support-setting-Xdoclint-none-in-m-javadoc-p-3.0.0.patch deleted file mode 100644 index c483cf4..0000000 --- a/0001-Support-setting-Xdoclint-none-in-m-javadoc-p-3.0.0.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 9aa9c66be355d95e2c532bbdfdc98bdbba9b6606 Mon Sep 17 00:00:00 2001 -From: Michael Simacek -Date: Thu, 7 Dec 2017 15:50:52 +0200 -Subject: [PATCH] Support setting "-Xdoclint:none" in m-javadoc-p >= 3.0.0 - -maven-javadoc-plugin 3.0.0 replaced `additionalparam` string property -with `additionalOptions` list property. -See: https://issues.apache.org/jira/browse/MJAVADOC-368 ---- - .../fedoraproject/xmvn/connector/aether/XMvnMojoExecutionListener.java | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMojoExecutionListener.java b/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMojoExecutionListener.java -index 5f9b5dd4..bb066638 100644 ---- a/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMojoExecutionListener.java -+++ b/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMojoExecutionListener.java -@@ -267,7 +267,10 @@ public class XMvnMojoExecutionListener - // Disable doclint - if ( JAVADOC_AGGREGATE.equals( execution ) ) - { -+ // maven-javadoc-plugin < 3.0.0 - trySetBeanProperty( mojo, "additionalparam", "-Xdoclint:none" ); -+ // maven-javadoc-plugin >= 3.0.0 -+ trySetBeanProperty( mojo, "additionalOptions", new String[] { "-Xdoclint:none" } ); - } - else if ( XMVN_BUILDDEP.equals( execution ) ) - { --- -2.14.3 - diff --git a/0001-Update-maven-invoker-to-version-3.0.1.patch b/0001-Update-maven-invoker-to-version-3.0.1.patch deleted file mode 100644 index 0eeeadb..0000000 --- a/0001-Update-maven-invoker-to-version-3.0.1.patch +++ /dev/null @@ -1,115 +0,0 @@ -From 5d8219051b8419aeb33f15f6a5e38084f1782572 Mon Sep 17 00:00:00 2001 -From: Marian Koncek -Date: Wed, 29 May 2019 16:55:20 +0200 -Subject: [PATCH] Update maven-invoker to version 3.0.1 - ---- - xmvn-parent/pom.xml | 2 +- - xmvn-tools/xmvn-bisect/pom.xml | 4 ++ - .../xmvn/tools/bisect/BisectCliRequest.java | 38 ++++++++++++++++--- - 3 files changed, 37 insertions(+), 7 deletions(-) - -diff --git a/xmvn-parent/pom.xml b/xmvn-parent/pom.xml -index 5c21cfa..edf6cbd 100644 ---- a/xmvn-parent/pom.xml -+++ b/xmvn-parent/pom.xml -@@ -86,7 +86,7 @@ - 1.64 - 4.3.1 - 2.4.10 -- 2.2 -+ 3.0.1 - 1.0.3 - 3.5.0 - 3.0.24 -diff --git a/xmvn-tools/xmvn-bisect/pom.xml b/xmvn-tools/xmvn-bisect/pom.xml -index ce592ad..1410022 100644 ---- a/xmvn-tools/xmvn-bisect/pom.xml -+++ b/xmvn-tools/xmvn-bisect/pom.xml -@@ -49,5 +49,9 @@ - - - -+ -+ org.codehaus.plexus -+ plexus-utils -+ - - -diff --git a/xmvn-tools/xmvn-bisect/src/main/java/org/fedoraproject/xmvn/tools/bisect/BisectCliRequest.java b/xmvn-tools/xmvn-bisect/src/main/java/org/fedoraproject/xmvn/tools/bisect/BisectCliRequest.java -index 795bfd9..1f0fcf5 100644 ---- a/xmvn-tools/xmvn-bisect/src/main/java/org/fedoraproject/xmvn/tools/bisect/BisectCliRequest.java -+++ b/xmvn-tools/xmvn-bisect/src/main/java/org/fedoraproject/xmvn/tools/bisect/BisectCliRequest.java -@@ -29,6 +29,8 @@ import com.beust.jcommander.Parameter; - import com.beust.jcommander.ParameterException; - import org.apache.maven.shared.invoker.DefaultInvocationRequest; - import org.apache.maven.shared.invoker.InvocationRequest; -+import org.apache.maven.shared.invoker.InvocationRequest.CheckSumPolicy; -+import org.apache.maven.shared.invoker.InvocationRequest.ReactorFailureBehavior; - import org.codehaus.plexus.util.StringUtils; - - /** -@@ -178,6 +180,30 @@ public class BisectCliRequest - return null; - } - -+ private static CheckSumPolicy stringToCheckSumPolicy( String policy ) -+ { -+ if ( policy == null ) -+ return null; -+ if ( policy.equals( "fail" ) ) -+ return CheckSumPolicy.Fail; -+ if ( policy.equals( "warn" ) ) -+ return CheckSumPolicy.Warn; -+ -+ throw new IllegalArgumentException( "Invalid checksum policy selected" ); -+ } -+ -+ private static String checkSumPolicyToString( CheckSumPolicy policy ) -+ { -+ if ( policy == null ) -+ return null; -+ if ( policy.equals( CheckSumPolicy.Fail ) ) -+ return "fail"; -+ if ( policy.equals( CheckSumPolicy.Warn ) ) -+ return "warn"; -+ -+ throw new IllegalArgumentException( "Invalid checksum policy selected" ); -+ } -+ - private void setDefaultValues() - { - String userHome = System.getProperty( "user.home" ); -@@ -193,11 +219,11 @@ public class BisectCliRequest - alsoMake = request.isAlsoMake(); - alsoMakeDependents = request.isAlsoMakeDependents(); - debug = request.isDebug(); -- failureBehavior = request.getFailureBehavior(); -- globalChecksumPolicy = request.getGlobalChecksumPolicy(); -+ failureBehavior = request.getReactorFailureBehavior().getLongOption(); -+ globalChecksumPolicy = checkSumPolicyToString( request.getGlobalChecksumPolicy() ); - globalSettings = StringUtils.defaultString( request.getGlobalSettingsFile() ); - goals = request.getGoals(); -- batchMode = !request.isInteractive(); -+ batchMode = request.isBatchMode(); - javaHome = fileToString( request.getJavaHome() ); - localRepository = fileToString( request.getLocalRepositoryDirectory( null ) ); - mavenOpts = request.getMavenOpts(); -@@ -222,11 +248,11 @@ public class BisectCliRequest - request.setAlsoMake( alsoMake ); - request.setAlsoMakeDependents( alsoMakeDependents ); - request.setDebug( debug ); -- request.setFailureBehavior( failureBehavior ); -- request.setGlobalChecksumPolicy( globalChecksumPolicy ); -+ request.setReactorFailureBehavior( ReactorFailureBehavior.valueOfByLongOption( failureBehavior ) ); -+ request.setGlobalChecksumPolicy( stringToCheckSumPolicy( globalChecksumPolicy ) ); - request.setGlobalSettingsFile( stringToFile( globalSettings ) ); - request.setGoals( goals ); -- request.setInteractive( !batchMode ); -+ request.setBatchMode( batchMode ); - request.setJavaHome( stringToFile( javaHome ) ); - request.setLocalRepositoryDirectory( stringToFile( localRepository ) ); - request.setMavenOpts( mavenOpts ); --- -2.20.1 - diff --git a/0001-Use-apache-commons-compress-for-manifest-injection-a.patch b/0001-Use-apache-commons-compress-for-manifest-injection-a.patch deleted file mode 100644 index ff552e8..0000000 --- a/0001-Use-apache-commons-compress-for-manifest-injection-a.patch +++ /dev/null @@ -1,593 +0,0 @@ -From 4e1e7377d6318d2bd7dd8620269e172a704650e2 Mon Sep 17 00:00:00 2001 -From: Michael Simacek -Date: Mon, 16 Apr 2018 15:29:50 +0200 -Subject: [PATCH] Use apache-commons-compress for manifest injection and native - code detection - ---- - xmvn-parent/pom.xml | 8 +- - xmvn-tools/xmvn-install/pom.xml | 4 + - .../fedoraproject/xmvn/tools/install/JarUtils.java | 176 +++++++++------------ - .../xmvn/tools/install/impl/JarUtilsTest.java | 55 +++++++ - .../src/test/resources/recompression-size.jar | Bin 0 -> 4376 bytes - xmvn.spec | 3 +- - 6 files changed, 140 insertions(+), 106 deletions(-) - create mode 100644 xmvn-tools/xmvn-install/src/test/resources/recompression-size.jar - -diff --git a/xmvn-parent/pom.xml b/xmvn-parent/pom.xml -index df6af7fb..f6465d90 100644 ---- a/xmvn-parent/pom.xml -+++ b/xmvn-parent/pom.xml -@@ -92,6 +92,7 @@ - 3.0.24 - 3.5 - 1.7.25 -+ 1.16.1 - - - 1.3.2.GA -@@ -102,7 +103,7 @@ - 3.6.1 - 3.0.0 - 2.8.2 -- 3.4 -+ 3.5 - 1.6 - 2.5.2 - 0.7.9 -@@ -321,6 +322,11 @@ - plexus-container-default - ${plexusVersion} - -+ -+ org.apache.commons -+ commons-compress -+ ${commonsCompressVersion} -+ - - - -diff --git a/xmvn-tools/xmvn-install/pom.xml b/xmvn-tools/xmvn-install/pom.xml -index 66ac01d7..fbb36a68 100644 ---- a/xmvn-tools/xmvn-install/pom.xml -+++ b/xmvn-tools/xmvn-install/pom.xml -@@ -61,5 +61,9 @@ - org.ow2.asm - asm - -+ -+ org.apache.commons -+ commons-compress -+ - - -diff --git a/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/JarUtils.java b/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/JarUtils.java -index 98d3a57e..5cb62b0f 100644 ---- a/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/JarUtils.java -+++ b/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/JarUtils.java -@@ -16,19 +16,16 @@ - package org.fedoraproject.xmvn.tools.install; - - import java.io.IOException; --import java.lang.reflect.Field; -+import java.io.InputStream; - import java.nio.file.Files; - import java.nio.file.Path; --import java.util.Collection; -+import java.util.Enumeration; - import java.util.jar.Attributes; --import java.util.jar.JarEntry; --import java.util.jar.JarInputStream; --import java.util.jar.JarOutputStream; - import java.util.jar.Manifest; --import java.util.zip.ZipEntry; --import java.util.zip.ZipInputStream; --import java.util.zip.ZipOutputStream; - -+import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; -+import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; -+import org.apache.commons.compress.archivers.zip.ZipFile; - import org.objectweb.asm.ClassReader; - import org.objectweb.asm.ClassVisitor; - import org.objectweb.asm.MethodVisitor; -@@ -43,6 +40,8 @@ import org.fedoraproject.xmvn.artifact.Artifact; - */ - public final class JarUtils - { -+ private static final String MANIFEST_PATH = "META-INF/MANIFEST.MF"; -+ - private static final Logger LOGGER = LoggerFactory.getLogger( JarUtils.class ); - - // From /usr/include/linux/elf.h -@@ -67,28 +66,33 @@ public final class JarUtils - * - * @return {@code true} if native code was found inside given JAR - */ -- public static boolean containsNativeCode( Path jar ) -+ public static boolean containsNativeCode( Path jarPath ) - { -- try ( ZipInputStream jis = new ZipInputStream( Files.newInputStream( jar ) ) ) -+ try ( ZipFile jar = new ZipFile( jarPath.toFile() ) ) - { -- ZipEntry ent; -- while ( ( ent = jis.getNextEntry() ) != null ) -+ Enumeration entries = jar.getEntries(); -+ while ( entries.hasMoreElements() ) - { -- if ( ent.isDirectory() ) -+ ZipArchiveEntry entry = entries.nextElement(); -+ if ( entry.isDirectory() ) - continue; -- if ( jis.read() == ELFMAG0 && jis.read() == ELFMAG1 && jis.read() == ELFMAG2 && jis.read() == ELFMAG3 ) -+ try ( InputStream jis = jar.getInputStream( entry ) ) - { -- LOGGER.debug( "Native code found inside {}: {}", jar, ent.getName() ); -- return true; -+ if ( jis.read() == ELFMAG0 && jis.read() == ELFMAG1 && jis.read() == ELFMAG2 -+ && jis.read() == ELFMAG3 ) -+ { -+ LOGGER.debug( "Native code found inside {}: {}", jarPath, entry.getName() ); -+ return true; -+ } - } - } - -- LOGGER.trace( "Native code not found inside {}", jar ); -+ LOGGER.trace( "Native code not found inside {}", jarPath ); - return false; - } - catch ( IOException e ) - { -- LOGGER.debug( "I/O exception caught when trying to determine whether JAR contains native code: {}", jar, -+ LOGGER.debug( "I/O exception caught when trying to determine whether JAR contains native code: {}", jarPath, - e ); - return false; - } -@@ -122,40 +126,47 @@ public final class JarUtils - * - * @return {@code true} given JAR as found inside to use native code - */ -- public static boolean usesNativeCode( Path jar ) -+ public static boolean usesNativeCode( Path jarPath ) - { -- try ( ZipInputStream jis = new ZipInputStream( Files.newInputStream( jar ) ) ) -+ try ( ZipFile jar = new ZipFile( jarPath.toFile() ) ) - { -- ZipEntry ent; -- while ( ( ent = jis.getNextEntry() ) != null ) -+ Enumeration entries = jar.getEntries(); -+ while ( entries.hasMoreElements() ) - { -- final String entryName = ent.getName(); -- if ( ent.isDirectory() || !entryName.endsWith( ".class" ) ) -+ ZipArchiveEntry entry = entries.nextElement(); -+ final String entryName = entry.getName(); -+ if ( entry.isDirectory() || !entryName.endsWith( ".class" ) ) - continue; - -- new ClassReader( jis ).accept( new ClassVisitor( Opcodes.ASM4 ) -+ try ( InputStream jis = jar.getInputStream( entry ) ) - { -- @Override -- public MethodVisitor visitMethod( int flags, String name, String desc, String sig, String[] exc ) -+ new ClassReader( jis ).accept( new ClassVisitor( Opcodes.ASM4 ) - { -- if ( ( flags & Opcodes.ACC_NATIVE ) != 0 ) -- throw new NativeMethodFound( entryName, name, sig ); -+ @Override -+ public MethodVisitor visitMethod( int flags, String name, String desc, String sig, -+ String[] exc ) -+ { -+ if ( ( flags & Opcodes.ACC_NATIVE ) != 0 ) -+ throw new NativeMethodFound( entryName, name, sig ); - -- return super.visitMethod( flags, name, desc, sig, exc ); -- } -- }, ClassReader.SKIP_CODE ); -+ return super.visitMethod( flags, name, desc, sig, exc ); -+ } -+ }, ClassReader.SKIP_CODE ); -+ } - } - - return false; - } - catch ( NativeMethodFound e ) - { -- LOGGER.debug( "Native method {}({}) found in {}: {}", e.methodName, e.methodSignature, jar, e.className ); -+ LOGGER.debug( "Native method {}({}) found in {}: {}", e.methodName, e.methodSignature, jarPath, -+ e.className ); - return true; - } - catch ( IOException e ) - { -- LOGGER.debug( "I/O exception caught when trying to determine whether JAR uses native code: {}", jar, e ); -+ LOGGER.debug( "I/O exception caught when trying to determine whether JAR uses native code: {}", jarPath, -+ e ); - return false; - } - catch ( RuntimeException e ) -@@ -178,29 +189,13 @@ public final class JarUtils - } - } - -- /** -- * OpenJDK has a sanity check that prevents adding duplicate entries to ZIP streams. The problem is that some of -- * JARs we try to inject manifests to (especially the ones created by Gradle) already contain duplicate entries, so -- * manifest injection would always fail for them with "ZipException: duplicate entry". -- *

-- * This function tries to work around this OpenJDK sanity check, effectively allowing creating ZIP files with -- * duplicated entries. It should be called on particular ZIP output stream before adding each duplicate entry. -- * -- * @param zipOutputStream ZIP stream to hack -- */ -- private static void openJdkAvoidDuplicateEntryHack( ZipOutputStream zipOutputStream ) -+ private static void updateManifest( Artifact artifact, Manifest mf ) - { -- try -- { -- Field namesField = ZipOutputStream.class.getDeclaredField( "names" ); -- namesField.setAccessible( true ); -- Collection names = (Collection) namesField.get( zipOutputStream ); -- names.clear(); -- } -- catch ( ReflectiveOperationException e ) -- { -- // This hack relies on OpenJDK internals and therefore is not guaranteed to work. Ignore failures. -- } -+ putAttribute( mf, Artifact.MF_KEY_GROUPID, artifact.getGroupId(), null ); -+ putAttribute( mf, Artifact.MF_KEY_ARTIFACTID, artifact.getArtifactId(), null ); -+ putAttribute( mf, Artifact.MF_KEY_EXTENSION, artifact.getExtension(), Artifact.DEFAULT_EXTENSION ); -+ putAttribute( mf, Artifact.MF_KEY_CLASSIFIER, artifact.getClassifier(), "" ); -+ putAttribute( mf, Artifact.MF_KEY_VERSION, artifact.getVersion(), Artifact.DEFAULT_VERSION ); - } - - /** -@@ -213,65 +208,38 @@ public final class JarUtils - public static void injectManifest( Path targetJar, Artifact artifact ) - { - LOGGER.trace( "Trying to inject manifest to {}", artifact ); -- Manifest mf = null; - try - { -- try ( JarInputStream jis = new JarInputStream( Files.newInputStream( targetJar ) ) ) -+ try ( ZipFile jar = new ZipFile( targetJar.toFile() ) ) - { -- mf = jis.getManifest(); -- if ( mf == null ) -+ ZipArchiveEntry manifestEntry = jar.getEntry( MANIFEST_PATH ); -+ if ( manifestEntry != null ) - { -- // getManifest sometimes doesn't find the manifest, try finding it as plain entry -- ZipEntry ent; -- while ( ( ent = jis.getNextEntry() ) != null ) -+ Manifest mf = new Manifest( jar.getInputStream( manifestEntry ) ); -+ updateManifest( artifact, mf ); -+ Files.delete( targetJar ); -+ try ( ZipArchiveOutputStream os = new ZipArchiveOutputStream( targetJar.toFile() ) ) - { -- if ( ent.getName().equalsIgnoreCase( "META-INF/MANIFEST.MF" ) ) -- { -- mf = new Manifest( jis ); -- break; -- } -+ // write manifest -+ ZipArchiveEntry newManifestEntry = new ZipArchiveEntry( MANIFEST_PATH ); -+ os.putArchiveEntry( newManifestEntry ); -+ mf.write( os ); -+ os.closeArchiveEntry(); -+ // copy the rest of content -+ jar.copyRawEntries( os, entry -> !entry.equals( manifestEntry ) ); - } -- } -- } -- -- if ( mf == null ) -- { -- LOGGER.trace( "Manifest injection skipped: no pre-existing manifest found to update" ); -- return; -- } -- -- putAttribute( mf, Artifact.MF_KEY_GROUPID, artifact.getGroupId(), null ); -- putAttribute( mf, Artifact.MF_KEY_ARTIFACTID, artifact.getArtifactId(), null ); -- putAttribute( mf, Artifact.MF_KEY_EXTENSION, artifact.getExtension(), Artifact.DEFAULT_EXTENSION ); -- putAttribute( mf, Artifact.MF_KEY_CLASSIFIER, artifact.getClassifier(), "" ); -- putAttribute( mf, Artifact.MF_KEY_VERSION, artifact.getVersion(), Artifact.DEFAULT_VERSION ); -- -- try ( JarInputStream jis = new JarInputStream( Files.newInputStream( targetJar ) ) ) -- { -- -- targetJar = targetJar.toRealPath(); -- Files.delete( targetJar ); -- try ( JarOutputStream jos = new JarOutputStream( Files.newOutputStream( targetJar ), mf ) ) -- { -- byte[] buf = new byte[512]; -- JarEntry entry; -- while ( ( entry = jis.getNextJarEntry() ) != null ) -+ catch ( IOException e ) - { -- openJdkAvoidDuplicateEntryHack( jos ); -- jos.putNextEntry( entry ); -- -- int sz; -- while ( ( sz = jis.read( buf ) ) > 0 ) -- jos.write( buf, 0, sz ); -+ // Re-throw exceptions that occur when processing JAR file after reading header and manifest. -+ throw new RuntimeException( e ); - } -+ LOGGER.trace( "Manifest injected successfully" ); - } -- catch ( IOException e ) -+ else - { -- // Re-throw exceptions that occur when processing JAR file after reading header and manifest. -- throw new RuntimeException( e ); -+ LOGGER.trace( "Manifest injection skipped: no pre-existing manifest found to update" ); -+ return; - } -- -- LOGGER.trace( "Manifest injected successfully" ); - } - } - catch ( IOException e ) -diff --git a/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/JarUtilsTest.java b/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/JarUtilsTest.java -index 3ec10cfa..98945a64 100644 ---- a/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/JarUtilsTest.java -+++ b/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/JarUtilsTest.java -@@ -19,11 +19,13 @@ import static org.junit.Assert.assertEquals; - import static org.junit.Assert.assertFalse; - import static org.junit.Assert.assertNotNull; - import static org.junit.Assert.assertTrue; -+import static org.junit.Assume.assumeTrue; - - import java.nio.file.Files; - import java.nio.file.Path; - import java.nio.file.Paths; - import java.nio.file.StandardCopyOption; -+import java.nio.file.attribute.PosixFilePermission; - import java.util.Arrays; - import java.util.jar.Attributes; - import java.util.jar.JarInputStream; -@@ -116,6 +118,38 @@ public class JarUtilsTest - } - } - -+ /** -+ * Regression test for a jar which contains an entry that can recompress with a different size, which caused a -+ * mismatch in sizes. -+ * -+ * @throws Exception -+ */ -+ @Test -+ public void testManifestInjectionRecompressionCausesSizeMismatch() -+ throws Exception -+ { -+ Path testResource = Paths.get( "src/test/resources/recompression-size.jar" ); -+ Path testJar = workDir.resolve( "manifest.jar" ); -+ Files.copy( testResource, testJar, StandardCopyOption.COPY_ATTRIBUTES, StandardCopyOption.REPLACE_EXISTING ); -+ -+ Artifact artifact = -+ new DefaultArtifact( "org.eclipse.osgi", "osgi.compatibility.state", "1.1.0.v20180409-1212" ); -+ JarUtils.injectManifest( testJar, artifact ); -+ -+ try ( JarInputStream jis = new JarInputStream( Files.newInputStream( testJar ) ) ) -+ { -+ Manifest mf = jis.getManifest(); -+ assertNotNull( mf ); -+ -+ Attributes attr = mf.getMainAttributes(); -+ assertNotNull( attr ); -+ -+ assertEquals( "org.eclipse.osgi", attr.getValue( "JavaPackages-GroupId" ) ); -+ assertEquals( "osgi.compatibility.state", attr.getValue( "JavaPackages-ArtifactId" ) ); -+ assertEquals( "1.1.0.v20180409-1212", attr.getValue( "JavaPackages-Version" ) ); -+ } -+ } -+ - /** - * Test JAR if manifest injection works as expected when some artifact fields have default values. - * -@@ -148,6 +182,27 @@ public class JarUtilsTest - } - } - -+ /** -+ * Test JAR if manifest injection preserves sane file perms. -+ * -+ * @throws Exception -+ */ -+ @Test -+ public void testManifestInjectionSanePermissions() -+ throws Exception -+ { -+ Path testResource = Paths.get( "src/test/resources/example.jar" ); -+ Path testJar = workDir.resolve( "manifest.jar" ); -+ Files.copy( testResource, testJar, StandardCopyOption.COPY_ATTRIBUTES, StandardCopyOption.REPLACE_EXISTING ); -+ -+ assumeTrue( "sane umask", Files.getPosixFilePermissions( testJar ).contains( PosixFilePermission.OTHERS_READ ) ); -+ -+ Artifact artifact = new DefaultArtifact( "org.apache.maven", "maven-model", "xsd", "model", "2.2.1" ); -+ JarUtils.injectManifest( testJar, artifact ); -+ -+ assertTrue( Files.getPosixFilePermissions( testJar ).contains( PosixFilePermission.OTHERS_READ ) ); -+ } -+ - /** - * Test if native code detection works as expected. - * -diff --git a/xmvn-tools/xmvn-install/src/test/resources/recompression-size.jar b/xmvn-tools/xmvn-install/src/test/resources/recompression-size.jar -new file mode 100644 -index 00000000..976481ea ---- /dev/null -+++ b/xmvn-tools/xmvn-install/src/test/resources/recompression-size.jar -@@ -0,0 +1,145 @@ -+PK -+ûL“L²îMETA-INF/MANIFEST.MFUT ÉGØZ;HØZux ³H³HManifest-Version: 1.0 -+ -+PK®L“Lõ–^]±¦» dir/fileUT 7GØZ8GØZux ³H³HíÒáÃ0†áÿ½ËÓ«èÉÕ' ùQJ %äa6›m¾çu®,%8£=úÓx}¼yýðû“?ûíWÛ³ TxPáíÔPáA…·TxP{@…ÔPáAíTxP{@…µTxPáAíÔPj¨= ÂƒÚê„·ÔPPáíÞP{@A…·Tx{@íÞPPáA…·Tx{@A…ÞPPáíTxáAA…µTxP{„ÔPáAíµTxP{@…µÔPáAíÔP{@…µTx{@íÔPPáíµTx{@A…·Ô…‚ -+o(¨ðö€º0PPáíÔáAA…·TxP{„ÞPPáAíTxP{@…µGxPPáAíÔP*<¨= ÂƒÚêÂ@…µTxP{@]¨ð ö€‚ -+o¨ ÔPPáíua ÂƒÚ -+*¼= . Tx{@A…·TxPáíÔPáA…·TxP{@…ÞPPáAíTxP{@…µTxPáAíÔPj¨= ÂƒÚê„·ÔPáAíÞP{@A…·Tx{@íÞPPáíµTx{@A…ÞPPáíTxáAA…µTxP{„ÔPáAíTxP{@…µÔPáAíÔP{@…µTx{@íÔPPáíµTxP{@A…·Ô…‚ -+o(¨ðö€º0PPáíÞP -+*¼=  ÂƒÚ#<(¨ðö€‚ -+jð  ÂƒÚ*<¨=ƒ‚ -+j¨ð ö€ -+*<¨= ÂƒÚêÂ@…µTxP{@]¨ð ö€ -+j¨ ÔPPáíua ÂƒÚ -+*¼= . Tx{@A…·TxPáíÞPPáA…·TxP{@…ÞPPáAíTxP{@…µTxPáAíÔPáAíµTxP{@]˜ðö€Ú*<¨=  ÂÛj¨ð ö€‚ -+o¨=  ÂÛ -+*¼= ö€‚ -+o(¨ð ÂÛ -+*¼=  Âƒ -+/<(¨ðö€‚ -+jð  ÂƒÚ*<¨=ƒ‚ -+j¨ð ö -+*<¨= ÂƒÚj¨ð ö€ -+j¨= ÂƒÚ -+*¼= ö€ -+j(¨ðö€º0PáAíÞP -+*¼=  ÂÛêÂ@A…·TxP{„ÞPPáAíTx{@A…µGxPPáAíÔPáA…µTxP{@…ÔPáAíua ÂƒÚ*<¨= . TxP{@A…·Ô… -+j(¨ðö€º0P{@íÞPPáA…·Tx{@A…ÞPPáAíTx{@A…µTxPáíÔPáA…µTxP{@…µÔPáAíÔP{@…µTx{@íÔPPáíµTx{@A…·ÔPPáíÞP{@A…·TxPá…ÞPPáAíTx{@A…µGxPPáAíÔáAA…µTxP{@íÔPáAíµTxP{@…µÔPáAíÞP*<¨=  ÂÛêÂ@A…·Tx{@](¨ðö€‚ -+o¨ ÞPPáAíTx{@A…µGxPPáíÔPáA…µTxP{@…ÔPáAíua ÂƒÚ*<¨= . TxP{@…µÔ… -+j(¨ðö€º0P{@íÞPPáA…·Tx{@A…ÞPPáíTx{@A…µTxPáíÔPáA…·TxP{@…µÔPáAíÔP{@…µTx{@íÔPPáíµTxP{@A…·ÔPPáíÞP{@A…·Tx{@](¨ðö€‚ -+jð  ÂÛ -+*<¨=ƒ‚ -+j¨ð ö -+*<¨= ÂƒÚ#<(¨ð ö€ -+j¨= ÂƒÚ*<¨= ö€ -+j(¨ðö€º0PáAíÞP*<¨=  ÂÛêÂ@A…·Tx{@](¨ðö€‚ -+o¨ ÞPPáAíTx{@A…µTxPáAíÔPáA…µTxP{@…ÔPáAíua ÂƒÚ*<¨= . TxP{@…µÔ…Új(¨ðö€‚ -+o¨=  ÂÛ -+*<¨ðö€‚ -+o(¨ð ÂÛ -+*¼=  Âƒ -+o(¨ð ö€ -+*¼=  ÂƒÚ*<¨= ö€ -+j¨ð ö€Ú*<¨= ÂƒÚj¨ð ö€‚ -+o¨= ÂƒÚ -+*¼= ö€ -+j(¨ðö€Ú -+*¼=  ÂÛêÂ@A…·TxP{„ÞPPáAíTx{@A…µGxPPáAíÔáAA…µTxP{@íÔPáAíµTxP{@…µÔ… -+j(¨ðö€º0PáAíÞP*<¨=  ÂÛêÂ@A…·Tx{@](¨ðö€‚ -+jð  ÂÛ -+*<¨= Âƒ -+o(¨ð ö€ -+*<¨= ÂƒÚ*<¨ð ö€ -+j¨ð ÂƒÚ*<¨= . TxP{@…µÔ…Új(¨ðö€‚ -+o¨=  ÂÛ -+*¼= ö€‚ -+o(¨ð ÂÛ -+*¼=  Âƒ -+o(¨ð ö€ -+*¼=  ÂƒÚ*<¨=ƒ‚ -+j¨ð ö€Ú*<¨= ÂƒÚj¨ð ö€ -+j¨= ÂƒÚ -+*¼= ö€ -+j(¨ðö€Ú -+*¼=  ÂÛêÂ@A…·Tx{@](¨ðö€‚ -+jð  ÂÛ -+*<¨=ƒ‚ -+o(¨ð ö -+*<¨= ÂƒÚ#<(¨ð ö€ -+j¨= ÂƒÚ*<¨= . TxP{@…µÔ… -+j(¨ðö€º0PáAíÞP -+*¼=  ÂÛêÂ@A…·Tx{@](¨ðö€‚ -+j¨ð ÂÛ -+*<¨= Âƒ -+o(¨ð ö€ -+*<¨= ÂƒÚ*<¨ð ö€ -+j¨ ÔPáAíua ö€Ú*<¨=  ÂÛj(¨ðö€‚ -+o¨=  ÂÛ -+*<¨ðö€‚ -+o(¨ð ÂÛ -+*¼=  Âƒ -+o(¨ð ö€ -+jð  ÂƒÚ*<¨=ƒ‚ -+j¨ð ö€Ú*<¨= ÂƒÚj¨ð ö€‚ -+o¨= ÂƒÚ -+*¼= ö€ -+j(¨ðö€º0PPáíÞP -+*¼=  ÂÛêÂ@A…·TxP{„ÞPPáAíTxP{@…µGxPPáAíÔáAA…µTxP{@]¨ð ö€ -+j¨ ÔPPáíua ÂƒÚ -+*¼= . TxP{@A…·Ô…‚ -+o(¨ðö€º0PPáíÞPPáA…·TxP{@…ÞPPáAíTxP{@…µTxPáAíÔPáA…µTxP{@]¨= ö€ -+j(¨ðö€Ú -+*¼=  ÂÛj(¨ðö€‚ -+o¨=  ÂÛ -+*<¨ðö€‚ -+o(¨ð ÂÛ -+*¼=  ÂƒÚ#<(¨ð ö€ -+jð  ÂƒÚ*<¨= ö€ -+j¨ð ö€Ú*<¨= ÂƒÚj¨ð ö€‚ -+o¨= ÂƒÚ -+*¼= . TxP{@A…·Ô…‚ -+o(¨ðö€º0PPáíÔáAA…·TxP{„ÞPPáAíTxP{@…µGxPPáAíÔP*<¨= ÂƒÚêÂ@…µTxP{@]¨ð ö€‚ -+o¨ ÔPPáíua ÂƒÚ -+*¼= . Tx{@A…·TxPáíÔPáA…·TxP{@…ÞPPáAíTxP{@…µTxPáAíÔPáAíµTxP{@A…·ÔPáAíÞP{@A…·Tx{@íÞPPáíµTx{@A…ÞPPáíÔáAA…µTxP{„ÔPáAíTxP{@…µÔPáAíÔP{@…µTxP{@íÔPPáíua ÂƒÚ -+*¼= . Tx{@A…·Ô…‚ -+o(¨ðö€º0PPáíÔáAA…·TxP{„ÔPáAíTxP{@…µTxPáAíÔP*<¨= ÂƒÚêÂ@…µTxP{@]¨ð ö€‚ -+o¨ ÔPPáíua  ÂÛ -+*¼=  Âƒ -+o(¨ðö€‚ -+*¼=  ÂƒÚ*<¨ðö€‚ -+j¨ð ÂÛ -+*<¨= Âƒ -+j¨ð ö€ -+j¨= ÂƒÚ -+*¼= ö€ -+j(¨ðö€Ú*<¨=  ÂÛj(¨ðö€‚ -+o¨=  ÂÛ -+*<¨ðö€‚ -+o(¨ð ö -+*¼=  ÂƒÚ#<(¨ð ö€ -+jð  ÂƒÚ*<¨=ƒ‚ -+j¨ð ö€Ú*<¨= ÂƒÚj¨ð ö€‚ -+o¨ ÔPPáíua ÂƒÚ -+*¼= . Tx{@A…·Ô…‚ -+o(¨ð ö -+*¼=  ÂƒÚ#<(¨ðö€‚ -+jð  ÂƒÚ*<¨= Âƒ -+j¨ð ö€ -+*<¨= ÂƒÚêÂ@…µTxP{@]¨ð ö€‚ -+o¨ ÔPPáíua ö€Ú -+*¼=  Âƒ -+o(¨ðö€‚ -+*¼=  ÂÛ -+*<¨ðö€‚ -+j¨ð ÂÛ -+*<¨= Âƒ -+j¨ð ö€ -+j¨= ÂƒÚ*<¨= ö€ -+j(¨ðö€Ú*<¨=  ÂÛj(¨ðö€‚ -+o¨=  ÂÛ -+*¼= ö€‚ -+o(¨ð ö -+*¼=  ÂƒÚ#<(¨ðö€‚ -+jð  ÂƒÚ*<¨=ƒ‚ -+j¨ð ö€Ú*<¨= ÂƒÚj¨ð öÜOPK -+ûL“L²î´META-INF/MANIFEST.MFUTÉGØZux ³H³HPK®L“Lõ–^]±¦» ´gdir/fileUT7GØZux ³H³HPK¨Z -\ No newline at end of file -diff --git a/xmvn.spec b/xmvn.spec -index 8764b63d..0775d4a2 100644 ---- a/xmvn.spec -+++ b/xmvn.spec -@@ -196,6 +196,7 @@ artifact repository. - - %package install - Summary: XMvn Install -+Requires: apache-commons-compress - - %description install - This package provides XMvn Install, which is a command-line interface -@@ -284,7 +285,7 @@ done - - # helper scripts - %jpackage_script org.fedoraproject.xmvn.tools.bisect.BisectCli "" "-Dxmvn.home=%{_datadir}/%{name}" xmvn/xmvn-bisect:beust-jcommander:maven-invoker:plexus/utils xmvn-bisect --%jpackage_script org.fedoraproject.xmvn.tools.install.cli.InstallerCli "" "" xmvn/xmvn-install:xmvn/xmvn-api:xmvn/xmvn-core:beust-jcommander:slf4j/api:slf4j/simple:objectweb-asm/asm xmvn-install -+%jpackage_script org.fedoraproject.xmvn.tools.install.cli.InstallerCli "" "" xmvn/xmvn-install:xmvn/xmvn-api:xmvn/xmvn-core:beust-jcommander:slf4j/api:slf4j/simple:objectweb-asm/asm:objenesis/objenesis:commons-compress xmvn-install - %jpackage_script org.fedoraproject.xmvn.tools.resolve.ResolverCli "" "" xmvn/xmvn-resolve:xmvn/xmvn-api:xmvn/xmvn-core:beust-jcommander xmvn-resolve - %jpackage_script org.fedoraproject.xmvn.tools.subst.SubstCli "" "" xmvn/xmvn-subst:xmvn/xmvn-api:xmvn/xmvn-core:beust-jcommander xmvn-subst - --- -2.14.3 - diff --git a/0001-test-Fix-XML-namespace-in-installer-test-resources.patch b/0001-test-Fix-XML-namespace-in-installer-test-resources.patch deleted file mode 100644 index 56af48f..0000000 --- a/0001-test-Fix-XML-namespace-in-installer-test-resources.patch +++ /dev/null @@ -1,311 +0,0 @@ -From c35be2b2b90741aa4f7c260fa4954cd5d3c2e6a8 Mon Sep 17 00:00:00 2001 -From: Mikolaj Izdebski -Date: Wed, 17 Apr 2019 16:12:22 +0200 -Subject: [PATCH] [test] Fix XML namespace in installer test resources - ---- - xmvn-tools/xmvn-install/src/test/resources/alias.xml | 2 +- - xmvn-tools/xmvn-install/src/test/resources/compat.xml | 2 +- - xmvn-tools/xmvn-install/src/test/resources/metadata-uuid.xml | 2 +- - xmvn-tools/xmvn-install/src/test/resources/namespace-dep.xml | 2 +- - xmvn-tools/xmvn-install/src/test/resources/namespace.xml | 2 +- - xmvn-tools/xmvn-install/src/test/resources/no-aid-dep.xml | 2 +- - xmvn-tools/xmvn-install/src/test/resources/no-aid-excl.xml | 2 +- - xmvn-tools/xmvn-install/src/test/resources/no-aid.xml | 2 +- - xmvn-tools/xmvn-install/src/test/resources/no-file.xml | 2 +- - xmvn-tools/xmvn-install/src/test/resources/no-gid-dep.xml | 2 +- - xmvn-tools/xmvn-install/src/test/resources/no-gid-excl.xml | 2 +- - xmvn-tools/xmvn-install/src/test/resources/no-gid.xml | 2 +- - xmvn-tools/xmvn-install/src/test/resources/no-version-dep.xml | 2 +- - xmvn-tools/xmvn-install/src/test/resources/no-version.xml | 2 +- - xmvn-tools/xmvn-install/src/test/resources/nonexistent-file.xml | 2 +- - xmvn-tools/xmvn-install/src/test/resources/nonreadable-file.xml | 2 +- - xmvn-tools/xmvn-install/src/test/resources/nonregular-file.xml | 2 +- - xmvn-tools/xmvn-install/src/test/resources/resolved-version.xml | 2 +- - xmvn-tools/xmvn-install/src/test/resources/skipped.xml | 2 +- - xmvn-tools/xmvn-install/src/test/resources/test-pkg-main.xml | 2 +- - .../xmvn-install/src/test/resources/test-pkg-resolved.xml | 2 +- - xmvn-tools/xmvn-install/src/test/resources/test-pkg-sub.xml | 2 +- - xmvn-tools/xmvn-install/src/test/resources/test-pkg.xml | 2 +- - xmvn-tools/xmvn-install/src/test/resources/uuid.xml | 2 +- - xmvn-tools/xmvn-install/src/test/resources/valid.xml | 2 +- - 27 files changed, 27 insertions(+), 27 deletions(-) - -diff --git a/xmvn-tools/xmvn-install/src/test/resources/alias.xml b/xmvn-tools/xmvn-install/src/test/resources/alias.xml -index 6e33a2a0..a86d73e9 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/alias.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/alias.xml -@@ -1,5 +1,5 @@ - -- -+ - - - com.example -diff --git a/xmvn-tools/xmvn-install/src/test/resources/compat.xml b/xmvn-tools/xmvn-install/src/test/resources/compat.xml -index 1cd57df9..428177cb 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/compat.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/compat.xml -@@ -1,5 +1,5 @@ - -- -+ - - - com.example -diff --git a/xmvn-tools/xmvn-install/src/test/resources/metadata-uuid.xml b/xmvn-tools/xmvn-install/src/test/resources/metadata-uuid.xml -index cb3fae4e..8f0898c6 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/metadata-uuid.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/metadata-uuid.xml -@@ -1,5 +1,5 @@ - -- -+ - test-uuid - - -diff --git a/xmvn-tools/xmvn-install/src/test/resources/namespace-dep.xml b/xmvn-tools/xmvn-install/src/test/resources/namespace-dep.xml -index d80cf352..59e6767b 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/namespace-dep.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/namespace-dep.xml -@@ -1,5 +1,5 @@ - -- -+ - - - com.example -diff --git a/xmvn-tools/xmvn-install/src/test/resources/namespace.xml b/xmvn-tools/xmvn-install/src/test/resources/namespace.xml -index 7b0b7ada..d4a62f68 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/namespace.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/namespace.xml -@@ -1,5 +1,5 @@ - -- -+ - - - com.example -diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-aid-dep.xml b/xmvn-tools/xmvn-install/src/test/resources/no-aid-dep.xml -index 36548f94..44ec6a89 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/no-aid-dep.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/no-aid-dep.xml -@@ -1,5 +1,5 @@ - -- -+ - - - com.example -diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-aid-excl.xml b/xmvn-tools/xmvn-install/src/test/resources/no-aid-excl.xml -index 5b1c77f1..9aec70fb 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/no-aid-excl.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/no-aid-excl.xml -@@ -1,5 +1,5 @@ - -- -+ - - - com.example -diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-aid.xml b/xmvn-tools/xmvn-install/src/test/resources/no-aid.xml -index b8b33a99..9dd5b97f 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/no-aid.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/no-aid.xml -@@ -1,5 +1,5 @@ - -- -+ - - - com.example -diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-file.xml b/xmvn-tools/xmvn-install/src/test/resources/no-file.xml -index 710567ee..a77dd6cc 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/no-file.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/no-file.xml -@@ -1,5 +1,5 @@ - -- -+ - - - com.example -diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-gid-dep.xml b/xmvn-tools/xmvn-install/src/test/resources/no-gid-dep.xml -index 0fdfec96..53b829ad 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/no-gid-dep.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/no-gid-dep.xml -@@ -1,5 +1,5 @@ - -- -+ - - - com.example -diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-gid-excl.xml b/xmvn-tools/xmvn-install/src/test/resources/no-gid-excl.xml -index 3c135126..c8e3e6c8 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/no-gid-excl.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/no-gid-excl.xml -@@ -1,5 +1,5 @@ - -- -+ - - - com.example -diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-gid.xml b/xmvn-tools/xmvn-install/src/test/resources/no-gid.xml -index 40386690..ba36e50e 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/no-gid.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/no-gid.xml -@@ -1,5 +1,5 @@ - -- -+ - - - com.example -diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-version-dep.xml b/xmvn-tools/xmvn-install/src/test/resources/no-version-dep.xml -index 08587264..49fe2922 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/no-version-dep.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/no-version-dep.xml -@@ -1,5 +1,5 @@ - -- -+ - - - com.example -diff --git a/xmvn-tools/xmvn-install/src/test/resources/no-version.xml b/xmvn-tools/xmvn-install/src/test/resources/no-version.xml -index 480bc8e4..2a8322ab 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/no-version.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/no-version.xml -@@ -1,5 +1,5 @@ - -- -+ - - - com.example -diff --git a/xmvn-tools/xmvn-install/src/test/resources/nonexistent-file.xml b/xmvn-tools/xmvn-install/src/test/resources/nonexistent-file.xml -index 385822b6..400bf234 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/nonexistent-file.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/nonexistent-file.xml -@@ -1,5 +1,5 @@ - -- -+ - - - com.example -diff --git a/xmvn-tools/xmvn-install/src/test/resources/nonreadable-file.xml b/xmvn-tools/xmvn-install/src/test/resources/nonreadable-file.xml -index eb23aba7..cff22643 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/nonreadable-file.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/nonreadable-file.xml -@@ -1,5 +1,5 @@ - -- -+ - - - com.example -diff --git a/xmvn-tools/xmvn-install/src/test/resources/nonregular-file.xml b/xmvn-tools/xmvn-install/src/test/resources/nonregular-file.xml -index 3cd66465..76c34bc9 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/nonregular-file.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/nonregular-file.xml -@@ -1,5 +1,5 @@ - -- -+ - - - com.example -diff --git a/xmvn-tools/xmvn-install/src/test/resources/resolved-version.xml b/xmvn-tools/xmvn-install/src/test/resources/resolved-version.xml -index 9099ec28..9279d896 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/resolved-version.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/resolved-version.xml -@@ -1,5 +1,5 @@ - -- -+ - - - com.example -diff --git a/xmvn-tools/xmvn-install/src/test/resources/skipped.xml b/xmvn-tools/xmvn-install/src/test/resources/skipped.xml -index 66bef3d8..b08836a1 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/skipped.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/skipped.xml -@@ -1,5 +1,5 @@ - -- -+ - - - com.example -diff --git a/xmvn-tools/xmvn-install/src/test/resources/test-pkg-main.xml b/xmvn-tools/xmvn-install/src/test/resources/test-pkg-main.xml -index 0bcdce1d..0bd964fc 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/test-pkg-main.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/test-pkg-main.xml -@@ -1,5 +1,5 @@ - -- -+ - 1e5b4990-c4e3-42b4-9145-5b7783ab91a2 - - -diff --git a/xmvn-tools/xmvn-install/src/test/resources/test-pkg-resolved.xml b/xmvn-tools/xmvn-install/src/test/resources/test-pkg-resolved.xml -index c9053bbd..9d3bbb67 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/test-pkg-resolved.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/test-pkg-resolved.xml -@@ -1,5 +1,5 @@ - -- -+ - 1e5b4990-c4e3-42b4-9145-5b7783ab91a2 - - -diff --git a/xmvn-tools/xmvn-install/src/test/resources/test-pkg-sub.xml b/xmvn-tools/xmvn-install/src/test/resources/test-pkg-sub.xml -index 32e72e63..068f17f6 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/test-pkg-sub.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/test-pkg-sub.xml -@@ -1,5 +1,5 @@ - -- -+ - 1e5b4990-c4e3-42b4-9145-5b7783ab91a2 - - -diff --git a/xmvn-tools/xmvn-install/src/test/resources/test-pkg.xml b/xmvn-tools/xmvn-install/src/test/resources/test-pkg.xml -index 3364d985..8b0d6223 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/test-pkg.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/test-pkg.xml -@@ -1,5 +1,5 @@ - -- -+ - 1e5b4990-c4e3-42b4-9145-5b7783ab91a2 - - -diff --git a/xmvn-tools/xmvn-install/src/test/resources/uuid.xml b/xmvn-tools/xmvn-install/src/test/resources/uuid.xml -index 9bf862fa..b57b9584 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/uuid.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/uuid.xml -@@ -1,5 +1,5 @@ - -- -+ - - - com.example -diff --git a/xmvn-tools/xmvn-install/src/test/resources/valid.xml b/xmvn-tools/xmvn-install/src/test/resources/valid.xml -index c9a2be8d..f2fa0c24 100644 ---- a/xmvn-tools/xmvn-install/src/test/resources/valid.xml -+++ b/xmvn-tools/xmvn-install/src/test/resources/valid.xml -@@ -1,5 +1,5 @@ - -- -+ - - - com.example --- -2.20.1 - diff --git a/sources b/sources index 9e28166..b8c592c 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (xmvn-3.0.0.tar.xz) = 00cb77a9eaf3521c1aaaa615a8dba258c6993e3c308659213c5dbee953bf6bab1832654e94fc5eee471e8c6fbfe5ec10f7b8755d89a59c864fb5061ed251a1ef +SHA512 (xmvn-3.1.0.tar.xz) = 3351f00c81039cc2f856ac59562bcd6f6bcef44b86e9e1b31eec9828ee1ade227b36ef29e2a4981193e7c69e8cea07b7f9616b678ac150dfaccc688e465f7478 diff --git a/xmvn.spec b/xmvn.spec index 62dcc5d..bf396fd 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -4,8 +4,8 @@ Name: xmvn -Version: 3.0.0 -Release: 25%{?dist} +Version: 3.1.0 +Release: 1%{?dist} Summary: Local Extensions for Apache Maven License: ASL 2.0 URL: https://fedora-java.github.io/xmvn/ @@ -13,17 +13,6 @@ BuildArch: noarch Source0: https://github.com/fedora-java/xmvn/releases/download/%{version}/xmvn-%{version}.tar.xz -Patch0: 0001-Fix-installer-plugin-loading.patch -Patch1: 0001-Port-to-Gradle-4.2.patch -Patch2: 0001-Port-to-Gradle-4.3.1.patch -Patch3: 0001-Support-setting-Xdoclint-none-in-m-javadoc-p-3.0.0.patch -Patch4: 0001-Fix-configuration-of-aliased-plugins.patch -Patch5: 0001-Don-t-use-JAXB-for-converting-bytes-to-hex-string.patch -Patch6: 0001-Use-apache-commons-compress-for-manifest-injection-a.patch -Patch7: 0001-test-Fix-XML-namespace-in-installer-test-resources.patch -Patch8: 0001-Port-to-Xmlunit-2.6.2.patch -Patch9: 0001-Update-maven-invoker-to-version-3.0.1.patch - BuildRequires: maven >= 3.5.0 BuildRequires: maven-local BuildRequires: apache-commons-compress @@ -193,16 +182,6 @@ This package provides %{summary}. %prep %setup -q -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 # Bisect IT has no chances of working in local, offline mode, without # network access - it needs to access remote repositories. @@ -343,6 +322,9 @@ cp -P ${maven_home}/bin/m2.conf %{buildroot}%{_datadir}/%{name}/bin/ %doc LICENSE NOTICE %changelog +* Fri Jun 14 2019 Mikolaj Izdebski - 3.1.0-1 +- Update to upstream version 3.1.0 + * Thu May 30 2019 Marian Koncek - 3.0.0-25 - Update maven-invoker to version 3.0.1 From c999df57605246d0905759858419ae6017232d69 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Fri, 28 Jun 2019 12:16:29 +0200 Subject: [PATCH 08/42] Prefer namespaced metadata when duplicates are found --- ...d-metadata-when-duplicates-are-found.patch | 59 +++++++++++++++++++ xmvn.spec | 8 ++- 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 0001-Prefer-namespaced-metadata-when-duplicates-are-found.patch diff --git a/0001-Prefer-namespaced-metadata-when-duplicates-are-found.patch b/0001-Prefer-namespaced-metadata-when-duplicates-are-found.patch new file mode 100644 index 0000000..7a921cc --- /dev/null +++ b/0001-Prefer-namespaced-metadata-when-duplicates-are-found.patch @@ -0,0 +1,59 @@ +From a4d655c2537eaffe0a3031243427cfdfd480a450 Mon Sep 17 00:00:00 2001 +From: Mikolaj Izdebski +Date: Fri, 28 Jun 2019 12:15:23 +0200 +Subject: [PATCH] Prefer namespaced metadata when duplicates are found + +--- + .../metadata/impl/DefaultMetadataResult.java | 33 +++++++++++-------- + 1 file changed, 19 insertions(+), 14 deletions(-) + +diff --git a/xmvn-core/src/main/java/org/fedoraproject/xmvn/metadata/impl/DefaultMetadataResult.java b/xmvn-core/src/main/java/org/fedoraproject/xmvn/metadata/impl/DefaultMetadataResult.java +index c8b63214..67bafef5 100644 +--- a/xmvn-core/src/main/java/org/fedoraproject/xmvn/metadata/impl/DefaultMetadataResult.java ++++ b/xmvn-core/src/main/java/org/fedoraproject/xmvn/metadata/impl/DefaultMetadataResult.java +@@ -94,23 +94,28 @@ class DefaultMetadataResult + } + + ArtifactMetadata otherMetadata = artifactMap.get( artifact ); +- if ( otherMetadata != null ) ++ ++ if ( otherMetadata == null ) ++ { ++ artifactMap.put( artifact, metadata ); ++ continue; ++ } ++ ++ duplicateArtifacts.add( artifact ); ++ ++ if ( ignoreDuplicates ) + { +- duplicateArtifacts.add( artifact ); +- +- if ( ignoreDuplicates ) +- { +- artifactMap.remove( artifact ); +- logger.warn( "Ignoring metadata for artifact {} as it has duplicate metadata", artifact ); +- continue; +- } +- else +- { +- logger.warn( "Duplicate metadata for artifact {}", artifact ); +- } ++ artifactMap.remove( artifact ); ++ logger.warn( "Ignoring metadata for artifact {} as it has duplicate metadata", artifact ); ++ continue; + } + +- artifactMap.put( artifact, metadata ); ++ logger.warn( "Duplicate metadata for artifact {}", artifact ); ++ ++ if ( otherMetadata.getNamespace().isEmpty() || !metadata.getNamespace().isEmpty() ) ++ { ++ artifactMap.put( artifact, metadata ); ++ } + } + } + +-- +2.21.0 + diff --git a/xmvn.spec b/xmvn.spec index bf396fd..5983ba2 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -5,7 +5,7 @@ Name: xmvn Version: 3.1.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Local Extensions for Apache Maven License: ASL 2.0 URL: https://fedora-java.github.io/xmvn/ @@ -13,6 +13,8 @@ BuildArch: noarch Source0: https://github.com/fedora-java/xmvn/releases/download/%{version}/xmvn-%{version}.tar.xz +Patch1: 0001-Prefer-namespaced-metadata-when-duplicates-are-found.patch + BuildRequires: maven >= 3.5.0 BuildRequires: maven-local BuildRequires: apache-commons-compress @@ -182,6 +184,7 @@ This package provides %{summary}. %prep %setup -q +%patch1 -p1 # Bisect IT has no chances of working in local, offline mode, without # network access - it needs to access remote repositories. @@ -322,6 +325,9 @@ cp -P ${maven_home}/bin/m2.conf %{buildroot}%{_datadir}/%{name}/bin/ %doc LICENSE NOTICE %changelog +* Fri Jun 28 2019 Mikolaj Izdebski - 3.1.0-2 +- Prefer namespaced metadata when duplicates are found + * Fri Jun 14 2019 Mikolaj Izdebski - 3.1.0-1 - Update to upstream version 3.1.0 From 883825436971bf7aa0feb29da48e73690aae5526 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Sat, 29 Jun 2019 10:25:03 +0200 Subject: [PATCH 09/42] Update requires on maven-wagon --- xmvn.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xmvn.spec b/xmvn.spec index 5983ba2..b4c2b6f 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -61,7 +61,7 @@ Requires: maven-resolver-api Requires: maven-resolver-impl Requires: maven-resolver-spi Requires: maven-resolver-util -Requires: maven-wagon-provider-api +Requires: maven-wagon Requires: plexus-cipher Requires: plexus-classworlds Requires: plexus-containers-component-annotations From a0fc235e1c058d15b2c1447347fe1e9c3163b0fc Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Sat, 29 Jun 2019 10:34:14 +0200 Subject: [PATCH 10/42] Update requires on sisu --- xmvn.spec | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/xmvn.spec b/xmvn.spec index b4c2b6f..f2c9f02 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -68,8 +68,7 @@ Requires: plexus-containers-component-annotations Requires: plexus-interpolation Requires: plexus-sec-dispatcher Requires: plexus-utils -Requires: sisu-inject -Requires: sisu-plexus +Requires: sisu Requires: slf4j %description minimal From 40b08af9dc4d5927cadc14a97966afd80ef05875 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Sat, 29 Jun 2019 13:09:30 +0200 Subject: [PATCH 11/42] Fix requires on maven-resolver --- xmvn.spec | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/xmvn.spec b/xmvn.spec index f2c9f02..d1814d1 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -57,10 +57,7 @@ Requires: atinject Requires: google-guice Requires: guava Requires: maven-lib -Requires: maven-resolver-api -Requires: maven-resolver-impl -Requires: maven-resolver-spi -Requires: maven-resolver-util +Requires: maven-resolver Requires: maven-wagon Requires: plexus-cipher Requires: plexus-classworlds From 365f7f624c54aa17921e30cf59ada2ece853b9bc Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Sat, 29 Jun 2019 14:02:58 +0200 Subject: [PATCH 12/42] Make xmvn-subst honor settings for ignoring duplicate metadata --- ...d-metadata-when-duplicates-are-found.patch | 4 +- ...honor-settings-for-ignoring-duplicat.patch | 81 +++++++++++++++++++ xmvn.spec | 2 + 3 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 0002-Make-xmvn-subst-honor-settings-for-ignoring-duplicat.patch diff --git a/0001-Prefer-namespaced-metadata-when-duplicates-are-found.patch b/0001-Prefer-namespaced-metadata-when-duplicates-are-found.patch index 7a921cc..0f808c1 100644 --- a/0001-Prefer-namespaced-metadata-when-duplicates-are-found.patch +++ b/0001-Prefer-namespaced-metadata-when-duplicates-are-found.patch @@ -1,7 +1,7 @@ -From a4d655c2537eaffe0a3031243427cfdfd480a450 Mon Sep 17 00:00:00 2001 +From 1474fd57e606bdb00417524a7b648f7841b014c8 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Fri, 28 Jun 2019 12:15:23 +0200 -Subject: [PATCH] Prefer namespaced metadata when duplicates are found +Subject: [PATCH 1/2] Prefer namespaced metadata when duplicates are found --- .../metadata/impl/DefaultMetadataResult.java | 33 +++++++++++-------- diff --git a/0002-Make-xmvn-subst-honor-settings-for-ignoring-duplicat.patch b/0002-Make-xmvn-subst-honor-settings-for-ignoring-duplicat.patch new file mode 100644 index 0000000..94c4774 --- /dev/null +++ b/0002-Make-xmvn-subst-honor-settings-for-ignoring-duplicat.patch @@ -0,0 +1,81 @@ +From 4957492864d6a88a814bfd6f21798b52a4e70515 Mon Sep 17 00:00:00 2001 +From: Mikolaj Izdebski +Date: Sat, 29 Jun 2019 14:00:13 +0200 +Subject: [PATCH 2/2] Make xmvn-subst honor settings for ignoring duplicate + metadata + +--- + .../xmvn/tools/subst/SubstCli.java | 25 +++++++++++++------ + 1 file changed, 17 insertions(+), 8 deletions(-) + +diff --git a/xmvn-tools/xmvn-subst/src/main/java/org/fedoraproject/xmvn/tools/subst/SubstCli.java b/xmvn-tools/xmvn-subst/src/main/java/org/fedoraproject/xmvn/tools/subst/SubstCli.java +index 423b5e61..30b1ac63 100644 +--- a/xmvn-tools/xmvn-subst/src/main/java/org/fedoraproject/xmvn/tools/subst/SubstCli.java ++++ b/xmvn-tools/xmvn-subst/src/main/java/org/fedoraproject/xmvn/tools/subst/SubstCli.java +@@ -23,6 +23,7 @@ import java.util.ArrayList; + import java.util.List; + + import org.fedoraproject.xmvn.config.Configurator; ++import org.fedoraproject.xmvn.config.ResolverSettings; + import org.fedoraproject.xmvn.locator.ServiceLocator; + import org.fedoraproject.xmvn.locator.ServiceLocatorFactory; + import org.fedoraproject.xmvn.metadata.MetadataRequest; +@@ -34,26 +35,34 @@ import org.fedoraproject.xmvn.metadata.MetadataResult; + */ + public class SubstCli + { +- private final List configuredMetadataRepos; +- + private MetadataResolver metadataResolver; + ++ private ResolverSettings resolverSettings; ++ + public SubstCli( Configurator configurator, MetadataResolver metadataResolver ) + { + this.metadataResolver = metadataResolver; +- configuredMetadataRepos = configurator.getConfiguration().getResolverSettings().getMetadataRepositories(); ++ resolverSettings = configurator.getConfiguration().getResolverSettings(); ++ } ++ ++ private MetadataResult resolveMetadata( List repos ) ++ { ++ MetadataRequest request = new MetadataRequest( repos ); ++ request.setIgnoreDuplicates( resolverSettings.isIgnoreDuplicateMetadata() ); ++ MetadataResult result = metadataResolver.resolveMetadata( request ); ++ return result; + } + + private void run( SubstCliRequest cliRequest ) + { +- List metadataResolvers = new ArrayList<>(); ++ List metadataResults = new ArrayList<>(); + + if ( cliRequest.getRoot() != null ) + { + List metadataRepos = new ArrayList<>(); + Path root = Paths.get( cliRequest.getRoot() ); + +- for ( String configuredRepo : configuredMetadataRepos ) ++ for ( String configuredRepo : resolverSettings.getMetadataRepositories() ) + { + Path repoPath = Paths.get( configuredRepo ); + if ( repoPath.isAbsolute() ) +@@ -62,12 +71,12 @@ public class SubstCli + } + } + +- metadataResolvers.add( metadataResolver.resolveMetadata( new MetadataRequest( metadataRepos ) ) ); ++ metadataResults.add( resolveMetadata( metadataRepos ) ); + } + +- metadataResolvers.add( metadataResolver.resolveMetadata( new MetadataRequest( configuredMetadataRepos ) ) ); ++ metadataResults.add( resolveMetadata( resolverSettings.getMetadataRepositories() ) ); + +- ArtifactVisitor visitor = new ArtifactVisitor( cliRequest.isDebug(), metadataResolvers ); ++ ArtifactVisitor visitor = new ArtifactVisitor( cliRequest.isDebug(), metadataResults ); + + visitor.setTypes( cliRequest.getTypes() ); + visitor.setFollowSymlinks( cliRequest.isFollowSymlinks() ); +-- +2.21.0 + diff --git a/xmvn.spec b/xmvn.spec index d1814d1..90a7e9d 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -14,6 +14,7 @@ BuildArch: noarch Source0: https://github.com/fedora-java/xmvn/releases/download/%{version}/xmvn-%{version}.tar.xz Patch1: 0001-Prefer-namespaced-metadata-when-duplicates-are-found.patch +Patch2: 0002-Make-xmvn-subst-honor-settings-for-ignoring-duplicat.patch BuildRequires: maven >= 3.5.0 BuildRequires: maven-local @@ -181,6 +182,7 @@ This package provides %{summary}. %prep %setup -q %patch1 -p1 +%patch2 -p1 # Bisect IT has no chances of working in local, offline mode, without # network access - it needs to access remote repositories. From ba824f063a223ed810f0ffa2c4e31ea6e8913e93 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Mon, 1 Jul 2019 12:26:36 +0200 Subject: [PATCH 13/42] Fix requires generation for self-depending packages --- ...d-metadata-when-duplicates-are-found.patch | 2 +- ...honor-settings-for-ignoring-duplicat.patch | 2 +- ...neration-for-self-depending-packages.patch | 115 ++++++++++++++++++ xmvn.spec | 2 + 4 files changed, 119 insertions(+), 2 deletions(-) create mode 100644 0003-Fix-requires-generation-for-self-depending-packages.patch diff --git a/0001-Prefer-namespaced-metadata-when-duplicates-are-found.patch b/0001-Prefer-namespaced-metadata-when-duplicates-are-found.patch index 0f808c1..de58426 100644 --- a/0001-Prefer-namespaced-metadata-when-duplicates-are-found.patch +++ b/0001-Prefer-namespaced-metadata-when-duplicates-are-found.patch @@ -1,7 +1,7 @@ From 1474fd57e606bdb00417524a7b648f7841b014c8 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Fri, 28 Jun 2019 12:15:23 +0200 -Subject: [PATCH 1/2] Prefer namespaced metadata when duplicates are found +Subject: [PATCH 1/3] Prefer namespaced metadata when duplicates are found --- .../metadata/impl/DefaultMetadataResult.java | 33 +++++++++++-------- diff --git a/0002-Make-xmvn-subst-honor-settings-for-ignoring-duplicat.patch b/0002-Make-xmvn-subst-honor-settings-for-ignoring-duplicat.patch index 94c4774..ee57d31 100644 --- a/0002-Make-xmvn-subst-honor-settings-for-ignoring-duplicat.patch +++ b/0002-Make-xmvn-subst-honor-settings-for-ignoring-duplicat.patch @@ -1,7 +1,7 @@ From 4957492864d6a88a814bfd6f21798b52a4e70515 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Sat, 29 Jun 2019 14:00:13 +0200 -Subject: [PATCH 2/2] Make xmvn-subst honor settings for ignoring duplicate +Subject: [PATCH 2/3] Make xmvn-subst honor settings for ignoring duplicate metadata --- diff --git a/0003-Fix-requires-generation-for-self-depending-packages.patch b/0003-Fix-requires-generation-for-self-depending-packages.patch new file mode 100644 index 0000000..d722c09 --- /dev/null +++ b/0003-Fix-requires-generation-for-self-depending-packages.patch @@ -0,0 +1,115 @@ +From a07c7079d6e7ed3f799454a827836b3ca3033e45 Mon Sep 17 00:00:00 2001 +From: Mikolaj Izdebski +Date: Mon, 1 Jul 2019 12:22:04 +0200 +Subject: [PATCH 3/3] Fix requires generation for self-depending packages + +--- + .../tools/install/impl/DefaultInstaller.java | 5 ++++ + .../tools/install/impl/InstallerTest.java | 9 +++++++ + .../test/resources/self-requires-resolved.xml | 25 +++++++++++++++++++ + .../src/test/resources/self-requires.xml | 24 ++++++++++++++++++ + 4 files changed, 63 insertions(+) + create mode 100644 xmvn-tools/xmvn-install/src/test/resources/self-requires-resolved.xml + create mode 100644 xmvn-tools/xmvn-install/src/test/resources/self-requires.xml + +diff --git a/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/impl/DefaultInstaller.java b/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/impl/DefaultInstaller.java +index e051e823..671d79d3 100644 +--- a/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/impl/DefaultInstaller.java ++++ b/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/impl/DefaultInstaller.java +@@ -275,6 +275,11 @@ public class DefaultInstaller + dependency.setNamespace( resolvedMetadata.getNamespace() ); + return; + } ++ } ++ ++ for ( String version : Arrays.asList( dependency.getRequestedVersion(), Artifact.DEFAULT_VERSION ) ) ++ { ++ Artifact dependencyArtifact = dependency.toArtifact().setVersion( version ); + + // Next try system artifact resolver + ResolutionRequest request = new ResolutionRequest( dependencyArtifact ); +diff --git a/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/InstallerTest.java b/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/InstallerTest.java +index 48db907d..ccbbf63d 100644 +--- a/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/InstallerTest.java ++++ b/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/InstallerTest.java +@@ -204,6 +204,15 @@ public class InstallerTest + installRoot.resolve( "usr/share/maven-metadata/test-pkg.xml" ) ); + } + ++ @Test ++ public void testSelfRequires() ++ throws Exception ++ { ++ install( "self-requires.xml" ); ++ assertMetadataEqual( getResource( "self-requires-resolved.xml" ), ++ installRoot.resolve( "usr/share/maven-metadata/test-pkg.xml" ) ); ++ } ++ + @Test + public void testSubpackage() + throws Exception +diff --git a/xmvn-tools/xmvn-install/src/test/resources/self-requires-resolved.xml b/xmvn-tools/xmvn-install/src/test/resources/self-requires-resolved.xml +new file mode 100644 +index 00000000..59e8ad61 +--- /dev/null ++++ b/xmvn-tools/xmvn-install/src/test/resources/self-requires-resolved.xml +@@ -0,0 +1,25 @@ ++ ++ ++ bfb4d47f-4bf2-49bc-bd85-1d3528e97746 ++ ++ ++ org.apache.maven.wagon ++ wagon-provider-api ++ 3.3.2 ++ ???example.jar ++ ++ ++ org.apache.maven.wagon ++ wagon-file ++ 3.3.2 ++ ???example.jar ++ ++ ++ org.apache.maven.wagon ++ wagon-provider-api ++ 3.3.2 ++ ++ ++ ++ ++ +diff --git a/xmvn-tools/xmvn-install/src/test/resources/self-requires.xml b/xmvn-tools/xmvn-install/src/test/resources/self-requires.xml +new file mode 100644 +index 00000000..16a78328 +--- /dev/null ++++ b/xmvn-tools/xmvn-install/src/test/resources/self-requires.xml +@@ -0,0 +1,24 @@ ++ ++ ++ ++ ++ org.apache.maven.wagon ++ wagon-provider-api ++ 3.3.2 ++ src/test/resources/example.jar ++ ++ ++ org.apache.maven.wagon ++ wagon-file ++ 3.3.2 ++ src/test/resources/example.jar ++ ++ ++ org.apache.maven.wagon ++ wagon-provider-api ++ 3.3.2 ++ ++ ++ ++ ++ +\ No newline at end of file +-- +2.21.0 + diff --git a/xmvn.spec b/xmvn.spec index 90a7e9d..8966c6e 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -15,6 +15,7 @@ Source0: https://github.com/fedora-java/xmvn/releases/download/%{version} Patch1: 0001-Prefer-namespaced-metadata-when-duplicates-are-found.patch Patch2: 0002-Make-xmvn-subst-honor-settings-for-ignoring-duplicat.patch +Patch3: 0003-Fix-requires-generation-for-self-depending-packages.patch BuildRequires: maven >= 3.5.0 BuildRequires: maven-local @@ -183,6 +184,7 @@ This package provides %{summary}. %setup -q %patch1 -p1 %patch2 -p1 +%patch3 -p1 # Bisect IT has no chances of working in local, offline mode, without # network access - it needs to access remote repositories. From cb118d667965804704aecd18f1032205c2b08fb2 Mon Sep 17 00:00:00 2001 From: Marian Koncek Date: Thu, 8 Aug 2019 14:54:23 +0200 Subject: [PATCH 14/42] Link to guava-28 module --- xmvn.spec | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/xmvn.spec b/xmvn.spec index 8966c6e..fa11cd7 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -274,6 +274,10 @@ install -d -m 755 %{buildroot}%{_datadir}/%{name}/conf/ cp -P ${maven_home}/conf/settings.xml %{buildroot}%{_datadir}/%{name}/conf/ cp -P ${maven_home}/bin/m2.conf %{buildroot}%{_datadir}/%{name}/bin/ +#### +ln -s %{_javadir}/guava/failureaccess.jar %{buildroot}%{_datadir}/xmvn/lib +#### + %files %{_bindir}/mvn-local From f99d3fea3ba155c8ae9efc09a0f04edaad58001d Mon Sep 17 00:00:00 2001 From: Marian Koncek Date: Tue, 13 Aug 2019 09:43:11 +0200 Subject: [PATCH 15/42] Revert "Link to guava-28 module" This reverts commit cb118d667965804704aecd18f1032205c2b08fb2. --- xmvn.spec | 4 ---- 1 file changed, 4 deletions(-) diff --git a/xmvn.spec b/xmvn.spec index fa11cd7..8966c6e 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -274,10 +274,6 @@ install -d -m 755 %{buildroot}%{_datadir}/%{name}/conf/ cp -P ${maven_home}/conf/settings.xml %{buildroot}%{_datadir}/%{name}/conf/ cp -P ${maven_home}/bin/m2.conf %{buildroot}%{_datadir}/%{name}/bin/ -#### -ln -s %{_javadir}/guava/failureaccess.jar %{buildroot}%{_datadir}/xmvn/lib -#### - %files %{_bindir}/mvn-local From 0f00836e64e8fa99674698b5b5111bd2547e1665 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Tue, 3 Sep 2019 03:45:53 +0200 Subject: [PATCH 16/42] Avoid calling xmvn-subst during sclraw bootstrap --- xmvn.spec | 2 ++ 1 file changed, 2 insertions(+) diff --git a/xmvn.spec b/xmvn.spec index 8966c6e..17cf380 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -261,7 +261,9 @@ done cp -r ${maven_home}/lib/* %{buildroot}%{_datadir}/%{name}/lib/ # possibly recreate symlinks that can be automated with xmvn-subst +%if !0%{?sclraw_phase} %{name}-subst -s -R %{buildroot} %{buildroot}%{_datadir}/%{name}/ +%endif # /usr/bin/xmvn ln -s %{_datadir}/%{name}/bin/mvn %{buildroot}%{_bindir}/%{name} From 14ab2034be7dfbb54ec508ebf498afc7a4d07a08 Mon Sep 17 00:00:00 2001 From: Marian Koncek Date: Thu, 12 Sep 2019 15:16:14 +0200 Subject: [PATCH 17/42] Remove dependency on maven-install-plugin --- xmvn.spec | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/xmvn.spec b/xmvn.spec index 17cf380..d10b04e 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -25,7 +25,6 @@ BuildRequires: cglib BuildRequires: maven-dependency-plugin BuildRequires: maven-plugin-build-helper BuildRequires: maven-assembly-plugin -BuildRequires: maven-install-plugin BuildRequires: maven-plugin-plugin BuildRequires: objectweb-asm BuildRequires: modello @@ -200,6 +199,9 @@ find -name ResolverIntegrationTest.java -delete %pom_disable_module xmvn-connector-gradle +%pom_remove_plugin :maven-install-plugin xmvn-it +%pom_remove_plugin :maven-install-plugin xmvn-parent + # Upstream code quality checks, not relevant when building RPMs %pom_remove_plugin -r :apache-rat-plugin %pom_remove_plugin -r :maven-checkstyle-plugin From 099d91c2194f0f0311979b7b7989a9b67a5f4543 Mon Sep 17 00:00:00 2001 From: Marian Koncek Date: Thu, 12 Sep 2019 15:38:58 +0200 Subject: [PATCH 18/42] Revert "Remove dependency on maven-install-plugin" This reverts commit 14ab2034be7dfbb54ec508ebf498afc7a4d07a08. --- xmvn.spec | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/xmvn.spec b/xmvn.spec index d10b04e..17cf380 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -25,6 +25,7 @@ BuildRequires: cglib BuildRequires: maven-dependency-plugin BuildRequires: maven-plugin-build-helper BuildRequires: maven-assembly-plugin +BuildRequires: maven-install-plugin BuildRequires: maven-plugin-plugin BuildRequires: objectweb-asm BuildRequires: modello @@ -199,9 +200,6 @@ find -name ResolverIntegrationTest.java -delete %pom_disable_module xmvn-connector-gradle -%pom_remove_plugin :maven-install-plugin xmvn-it -%pom_remove_plugin :maven-install-plugin xmvn-parent - # Upstream code quality checks, not relevant when building RPMs %pom_remove_plugin -r :apache-rat-plugin %pom_remove_plugin -r :maven-checkstyle-plugin From 05f2d8cf32490f2eee7fc30cafafdef1320ed0e8 Mon Sep 17 00:00:00 2001 From: Marian Koncek Date: Thu, 12 Sep 2019 15:39:44 +0200 Subject: [PATCH 19/42] Remove dependency on maven-install-plugin --- xmvn.spec | 1 - 1 file changed, 1 deletion(-) diff --git a/xmvn.spec b/xmvn.spec index 17cf380..4018f9c 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -25,7 +25,6 @@ BuildRequires: cglib BuildRequires: maven-dependency-plugin BuildRequires: maven-plugin-build-helper BuildRequires: maven-assembly-plugin -BuildRequires: maven-install-plugin BuildRequires: maven-plugin-plugin BuildRequires: objectweb-asm BuildRequires: modello From cb3084af297ee794f6f6d1f94b69ab6c3cce4f68 Mon Sep 17 00:00:00 2001 From: Marian Koncek Date: Wed, 25 Sep 2019 16:24:46 +0200 Subject: [PATCH 20/42] Bundle jars --- xmvn.spec | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/xmvn.spec b/xmvn.spec index 4018f9c..deaff5d 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -257,11 +257,12 @@ done %jpackage_script org.fedoraproject.xmvn.tools.subst.SubstCli "" "" xmvn/xmvn-subst:xmvn/xmvn-api:xmvn/xmvn-core:beust-jcommander xmvn-subst # copy over maven lib directory -cp -r ${maven_home}/lib/* %{buildroot}%{_datadir}/%{name}/lib/ +rm -rf %{buildroot}%{_datadir}/%{name}/lib/* +cp -Lr ${maven_home}/lib/* %{buildroot}%{_datadir}/%{name}/lib/ # possibly recreate symlinks that can be automated with xmvn-subst %if !0%{?sclraw_phase} -%{name}-subst -s -R %{buildroot} %{buildroot}%{_datadir}/%{name}/ +# %{name}-subst -s -R %{buildroot} %{buildroot}%{_datadir}/%{name}/ %endif # /usr/bin/xmvn From a4fd76adc4d3ebfc45202a1da665b3a10342cc5f Mon Sep 17 00:00:00 2001 From: Marian Koncek Date: Wed, 25 Sep 2019 17:19:06 +0200 Subject: [PATCH 21/42] Bundle only maven-resolver jars --- xmvn.spec | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/xmvn.spec b/xmvn.spec index deaff5d..9e09a43 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -257,14 +257,16 @@ done %jpackage_script org.fedoraproject.xmvn.tools.subst.SubstCli "" "" xmvn/xmvn-subst:xmvn/xmvn-api:xmvn/xmvn-core:beust-jcommander xmvn-subst # copy over maven lib directory -rm -rf %{buildroot}%{_datadir}/%{name}/lib/* -cp -Lr ${maven_home}/lib/* %{buildroot}%{_datadir}/%{name}/lib/ +cp -r ${maven_home}/lib/* %{buildroot}%{_datadir}/%{name}/lib/ # possibly recreate symlinks that can be automated with xmvn-subst %if !0%{?sclraw_phase} -# %{name}-subst -s -R %{buildroot} %{buildroot}%{_datadir}/%{name}/ +%{name}-subst -s -R %{buildroot} %{buildroot}%{_datadir}/%{name}/ %endif +rm -rf %{buildroot}%{_datadir}/%{name}/lib/maven-resolver* +cp -Lr ${maven_home}/lib/maven-resolver* %{buildroot}%{_datadir}/%{name}/lib/ + # /usr/bin/xmvn ln -s %{_datadir}/%{name}/bin/mvn %{buildroot}%{_bindir}/%{name} From 6aa50750969014da69cbd893e89a094006adcc1f Mon Sep 17 00:00:00 2001 From: Marian Koncek Date: Wed, 25 Sep 2019 17:38:27 +0200 Subject: [PATCH 22/42] Unbundle jars --- xmvn.spec | 3 --- 1 file changed, 3 deletions(-) diff --git a/xmvn.spec b/xmvn.spec index 9e09a43..4018f9c 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -264,9 +264,6 @@ cp -r ${maven_home}/lib/* %{buildroot}%{_datadir}/%{name}/lib/ %{name}-subst -s -R %{buildroot} %{buildroot}%{_datadir}/%{name}/ %endif -rm -rf %{buildroot}%{_datadir}/%{name}/lib/maven-resolver* -cp -Lr ${maven_home}/lib/maven-resolver* %{buildroot}%{_datadir}/%{name}/lib/ - # /usr/bin/xmvn ln -s %{_datadir}/%{name}/bin/mvn %{buildroot}%{_bindir}/%{name} From cd269ac8a83aef2091be0bb241f7ff7ddd3fb6fe Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Mon, 28 Oct 2019 10:01:17 +0100 Subject: [PATCH 23/42] Update to upstream snapshot of 4.0.0 --- .gitignore | 1 + ...d-metadata-when-duplicates-are-found.patch | 59 --------- ...honor-settings-for-ignoring-duplicat.patch | 81 ------------ ...neration-for-self-depending-packages.patch | 115 ------------------ sources | 2 +- xmvn.spec | 19 ++- 6 files changed, 10 insertions(+), 267 deletions(-) delete mode 100644 0001-Prefer-namespaced-metadata-when-duplicates-are-found.patch delete mode 100644 0002-Make-xmvn-subst-honor-settings-for-ignoring-duplicat.patch delete mode 100644 0003-Fix-requires-generation-for-self-depending-packages.patch diff --git a/.gitignore b/.gitignore index ff2718f..e63b8cf 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,4 @@ /xmvn-2.5.0.tar.xz /xmvn-3.0.0.tar.xz /xmvn-3.1.0.tar.xz +/5d1e284.tar.gz diff --git a/0001-Prefer-namespaced-metadata-when-duplicates-are-found.patch b/0001-Prefer-namespaced-metadata-when-duplicates-are-found.patch deleted file mode 100644 index de58426..0000000 --- a/0001-Prefer-namespaced-metadata-when-duplicates-are-found.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 1474fd57e606bdb00417524a7b648f7841b014c8 Mon Sep 17 00:00:00 2001 -From: Mikolaj Izdebski -Date: Fri, 28 Jun 2019 12:15:23 +0200 -Subject: [PATCH 1/3] Prefer namespaced metadata when duplicates are found - ---- - .../metadata/impl/DefaultMetadataResult.java | 33 +++++++++++-------- - 1 file changed, 19 insertions(+), 14 deletions(-) - -diff --git a/xmvn-core/src/main/java/org/fedoraproject/xmvn/metadata/impl/DefaultMetadataResult.java b/xmvn-core/src/main/java/org/fedoraproject/xmvn/metadata/impl/DefaultMetadataResult.java -index c8b63214..67bafef5 100644 ---- a/xmvn-core/src/main/java/org/fedoraproject/xmvn/metadata/impl/DefaultMetadataResult.java -+++ b/xmvn-core/src/main/java/org/fedoraproject/xmvn/metadata/impl/DefaultMetadataResult.java -@@ -94,23 +94,28 @@ class DefaultMetadataResult - } - - ArtifactMetadata otherMetadata = artifactMap.get( artifact ); -- if ( otherMetadata != null ) -+ -+ if ( otherMetadata == null ) -+ { -+ artifactMap.put( artifact, metadata ); -+ continue; -+ } -+ -+ duplicateArtifacts.add( artifact ); -+ -+ if ( ignoreDuplicates ) - { -- duplicateArtifacts.add( artifact ); -- -- if ( ignoreDuplicates ) -- { -- artifactMap.remove( artifact ); -- logger.warn( "Ignoring metadata for artifact {} as it has duplicate metadata", artifact ); -- continue; -- } -- else -- { -- logger.warn( "Duplicate metadata for artifact {}", artifact ); -- } -+ artifactMap.remove( artifact ); -+ logger.warn( "Ignoring metadata for artifact {} as it has duplicate metadata", artifact ); -+ continue; - } - -- artifactMap.put( artifact, metadata ); -+ logger.warn( "Duplicate metadata for artifact {}", artifact ); -+ -+ if ( otherMetadata.getNamespace().isEmpty() || !metadata.getNamespace().isEmpty() ) -+ { -+ artifactMap.put( artifact, metadata ); -+ } - } - } - --- -2.21.0 - diff --git a/0002-Make-xmvn-subst-honor-settings-for-ignoring-duplicat.patch b/0002-Make-xmvn-subst-honor-settings-for-ignoring-duplicat.patch deleted file mode 100644 index ee57d31..0000000 --- a/0002-Make-xmvn-subst-honor-settings-for-ignoring-duplicat.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 4957492864d6a88a814bfd6f21798b52a4e70515 Mon Sep 17 00:00:00 2001 -From: Mikolaj Izdebski -Date: Sat, 29 Jun 2019 14:00:13 +0200 -Subject: [PATCH 2/3] Make xmvn-subst honor settings for ignoring duplicate - metadata - ---- - .../xmvn/tools/subst/SubstCli.java | 25 +++++++++++++------ - 1 file changed, 17 insertions(+), 8 deletions(-) - -diff --git a/xmvn-tools/xmvn-subst/src/main/java/org/fedoraproject/xmvn/tools/subst/SubstCli.java b/xmvn-tools/xmvn-subst/src/main/java/org/fedoraproject/xmvn/tools/subst/SubstCli.java -index 423b5e61..30b1ac63 100644 ---- a/xmvn-tools/xmvn-subst/src/main/java/org/fedoraproject/xmvn/tools/subst/SubstCli.java -+++ b/xmvn-tools/xmvn-subst/src/main/java/org/fedoraproject/xmvn/tools/subst/SubstCli.java -@@ -23,6 +23,7 @@ import java.util.ArrayList; - import java.util.List; - - import org.fedoraproject.xmvn.config.Configurator; -+import org.fedoraproject.xmvn.config.ResolverSettings; - import org.fedoraproject.xmvn.locator.ServiceLocator; - import org.fedoraproject.xmvn.locator.ServiceLocatorFactory; - import org.fedoraproject.xmvn.metadata.MetadataRequest; -@@ -34,26 +35,34 @@ import org.fedoraproject.xmvn.metadata.MetadataResult; - */ - public class SubstCli - { -- private final List configuredMetadataRepos; -- - private MetadataResolver metadataResolver; - -+ private ResolverSettings resolverSettings; -+ - public SubstCli( Configurator configurator, MetadataResolver metadataResolver ) - { - this.metadataResolver = metadataResolver; -- configuredMetadataRepos = configurator.getConfiguration().getResolverSettings().getMetadataRepositories(); -+ resolverSettings = configurator.getConfiguration().getResolverSettings(); -+ } -+ -+ private MetadataResult resolveMetadata( List repos ) -+ { -+ MetadataRequest request = new MetadataRequest( repos ); -+ request.setIgnoreDuplicates( resolverSettings.isIgnoreDuplicateMetadata() ); -+ MetadataResult result = metadataResolver.resolveMetadata( request ); -+ return result; - } - - private void run( SubstCliRequest cliRequest ) - { -- List metadataResolvers = new ArrayList<>(); -+ List metadataResults = new ArrayList<>(); - - if ( cliRequest.getRoot() != null ) - { - List metadataRepos = new ArrayList<>(); - Path root = Paths.get( cliRequest.getRoot() ); - -- for ( String configuredRepo : configuredMetadataRepos ) -+ for ( String configuredRepo : resolverSettings.getMetadataRepositories() ) - { - Path repoPath = Paths.get( configuredRepo ); - if ( repoPath.isAbsolute() ) -@@ -62,12 +71,12 @@ public class SubstCli - } - } - -- metadataResolvers.add( metadataResolver.resolveMetadata( new MetadataRequest( metadataRepos ) ) ); -+ metadataResults.add( resolveMetadata( metadataRepos ) ); - } - -- metadataResolvers.add( metadataResolver.resolveMetadata( new MetadataRequest( configuredMetadataRepos ) ) ); -+ metadataResults.add( resolveMetadata( resolverSettings.getMetadataRepositories() ) ); - -- ArtifactVisitor visitor = new ArtifactVisitor( cliRequest.isDebug(), metadataResolvers ); -+ ArtifactVisitor visitor = new ArtifactVisitor( cliRequest.isDebug(), metadataResults ); - - visitor.setTypes( cliRequest.getTypes() ); - visitor.setFollowSymlinks( cliRequest.isFollowSymlinks() ); --- -2.21.0 - diff --git a/0003-Fix-requires-generation-for-self-depending-packages.patch b/0003-Fix-requires-generation-for-self-depending-packages.patch deleted file mode 100644 index d722c09..0000000 --- a/0003-Fix-requires-generation-for-self-depending-packages.patch +++ /dev/null @@ -1,115 +0,0 @@ -From a07c7079d6e7ed3f799454a827836b3ca3033e45 Mon Sep 17 00:00:00 2001 -From: Mikolaj Izdebski -Date: Mon, 1 Jul 2019 12:22:04 +0200 -Subject: [PATCH 3/3] Fix requires generation for self-depending packages - ---- - .../tools/install/impl/DefaultInstaller.java | 5 ++++ - .../tools/install/impl/InstallerTest.java | 9 +++++++ - .../test/resources/self-requires-resolved.xml | 25 +++++++++++++++++++ - .../src/test/resources/self-requires.xml | 24 ++++++++++++++++++ - 4 files changed, 63 insertions(+) - create mode 100644 xmvn-tools/xmvn-install/src/test/resources/self-requires-resolved.xml - create mode 100644 xmvn-tools/xmvn-install/src/test/resources/self-requires.xml - -diff --git a/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/impl/DefaultInstaller.java b/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/impl/DefaultInstaller.java -index e051e823..671d79d3 100644 ---- a/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/impl/DefaultInstaller.java -+++ b/xmvn-tools/xmvn-install/src/main/java/org/fedoraproject/xmvn/tools/install/impl/DefaultInstaller.java -@@ -275,6 +275,11 @@ public class DefaultInstaller - dependency.setNamespace( resolvedMetadata.getNamespace() ); - return; - } -+ } -+ -+ for ( String version : Arrays.asList( dependency.getRequestedVersion(), Artifact.DEFAULT_VERSION ) ) -+ { -+ Artifact dependencyArtifact = dependency.toArtifact().setVersion( version ); - - // Next try system artifact resolver - ResolutionRequest request = new ResolutionRequest( dependencyArtifact ); -diff --git a/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/InstallerTest.java b/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/InstallerTest.java -index 48db907d..ccbbf63d 100644 ---- a/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/InstallerTest.java -+++ b/xmvn-tools/xmvn-install/src/test/java/org/fedoraproject/xmvn/tools/install/impl/InstallerTest.java -@@ -204,6 +204,15 @@ public class InstallerTest - installRoot.resolve( "usr/share/maven-metadata/test-pkg.xml" ) ); - } - -+ @Test -+ public void testSelfRequires() -+ throws Exception -+ { -+ install( "self-requires.xml" ); -+ assertMetadataEqual( getResource( "self-requires-resolved.xml" ), -+ installRoot.resolve( "usr/share/maven-metadata/test-pkg.xml" ) ); -+ } -+ - @Test - public void testSubpackage() - throws Exception -diff --git a/xmvn-tools/xmvn-install/src/test/resources/self-requires-resolved.xml b/xmvn-tools/xmvn-install/src/test/resources/self-requires-resolved.xml -new file mode 100644 -index 00000000..59e8ad61 ---- /dev/null -+++ b/xmvn-tools/xmvn-install/src/test/resources/self-requires-resolved.xml -@@ -0,0 +1,25 @@ -+ -+ -+ bfb4d47f-4bf2-49bc-bd85-1d3528e97746 -+ -+ -+ org.apache.maven.wagon -+ wagon-provider-api -+ 3.3.2 -+ ???example.jar -+ -+ -+ org.apache.maven.wagon -+ wagon-file -+ 3.3.2 -+ ???example.jar -+ -+ -+ org.apache.maven.wagon -+ wagon-provider-api -+ 3.3.2 -+ -+ -+ -+ -+ -diff --git a/xmvn-tools/xmvn-install/src/test/resources/self-requires.xml b/xmvn-tools/xmvn-install/src/test/resources/self-requires.xml -new file mode 100644 -index 00000000..16a78328 ---- /dev/null -+++ b/xmvn-tools/xmvn-install/src/test/resources/self-requires.xml -@@ -0,0 +1,24 @@ -+ -+ -+ -+ -+ org.apache.maven.wagon -+ wagon-provider-api -+ 3.3.2 -+ src/test/resources/example.jar -+ -+ -+ org.apache.maven.wagon -+ wagon-file -+ 3.3.2 -+ src/test/resources/example.jar -+ -+ -+ org.apache.maven.wagon -+ wagon-provider-api -+ 3.3.2 -+ -+ -+ -+ -+ -\ No newline at end of file --- -2.21.0 - diff --git a/sources b/sources index b8c592c..727b647 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (xmvn-3.1.0.tar.xz) = 3351f00c81039cc2f856ac59562bcd6f6bcef44b86e9e1b31eec9828ee1ade227b36ef29e2a4981193e7c69e8cea07b7f9616b678ac150dfaccc688e465f7478 +SHA512 (5d1e284.tar.gz) = 6f87dd21983059f41af9a6f16a48712f7f1bef146ce60530a9dea19cf2a611b09c98f7165a00585bce1441f6d7d362a9ade441069a36b5406fde7d23789f8263 diff --git a/xmvn.spec b/xmvn.spec index 4018f9c..daede35 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -4,18 +4,15 @@ Name: xmvn -Version: 3.1.0 -Release: 2%{?dist} +Version: 4.0.0~20191027.5d1e284 +Release: 1%{?dist} Summary: Local Extensions for Apache Maven License: ASL 2.0 URL: https://fedora-java.github.io/xmvn/ BuildArch: noarch -Source0: https://github.com/fedora-java/xmvn/releases/download/%{version}/xmvn-%{version}.tar.xz - -Patch1: 0001-Prefer-namespaced-metadata-when-duplicates-are-found.patch -Patch2: 0002-Make-xmvn-subst-honor-settings-for-ignoring-duplicat.patch -Patch3: 0003-Fix-requires-generation-for-self-depending-packages.patch +#Source0: https://github.com/fedora-java/xmvn/releases/download/%{version}/xmvn-%{version}.tar.xz +Source0: https://github.com/fedora-java/xmvn/archive/5d1e284.tar.gz BuildRequires: maven >= 3.5.0 BuildRequires: maven-local @@ -180,10 +177,7 @@ Summary: API documentation for %{name} This package provides %{summary}. %prep -%setup -q -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 +%setup -q -n xmvn-5d1e284e74e4315040bfd231e0a5638b9199b7e6 # Bisect IT has no chances of working in local, offline mode, without # network access - it needs to access remote repositories. @@ -326,6 +320,9 @@ cp -P ${maven_home}/bin/m2.conf %{buildroot}%{_datadir}/%{name}/bin/ %doc LICENSE NOTICE %changelog +* Mon Oct 28 2019 Mikolaj Izdebski - 4.0.0~20191027.5d1e284-1 +- Update to upstream snapshot of 4.0.0 + * Fri Jun 28 2019 Mikolaj Izdebski - 3.1.0-2 - Prefer namespaced metadata when duplicates are found From d5fb3841028e8a6491a7da965d2af11497338e20 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Mon, 28 Oct 2019 10:43:34 +0100 Subject: [PATCH 24/42] Fix snapshot versioning in build/install scriplets --- xmvn.spec | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/xmvn.spec b/xmvn.spec index daede35..0655470 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -217,23 +217,25 @@ cp -aL ${maven_home} target/dependency/apache-maven-$mver %build %mvn_build -s -j +version=4.0.0-SNAPSHOT tar --delay-directory-restore -xvf target/*tar.bz2 -chmod -R +rwX %{name}-%{version}* +chmod -R +rwX %{name}-${version}* # These are installed as doc -rm -f %{name}-%{version}*/{AUTHORS-XMVN,README-XMVN.md,LICENSE,NOTICE,NOTICE-XMVN} +rm -f %{name}-${version}*/{AUTHORS-XMVN,README-XMVN.md,LICENSE,NOTICE,NOTICE-XMVN} # Not needed - we use JPackage launcher scripts -rm -Rf %{name}-%{version}*/lib/{installer,resolver,subst,bisect}/ +rm -Rf %{name}-${version}*/lib/{installer,resolver,subst,bisect}/ # Irrelevant Maven launcher scripts -rm -f %{name}-%{version}*/bin/* +rm -f %{name}-${version}*/bin/* %install %mvn_install +version=4.0.0-SNAPSHOT maven_home=$(realpath $(dirname $(realpath $(which mvn)))/..) install -d -m 755 %{buildroot}%{_datadir}/%{name} -cp -r %{name}-%{version}*/* %{buildroot}%{_datadir}/%{name}/ +cp -r %{name}-${version}*/* %{buildroot}%{_datadir}/%{name}/ for cmd in mvn mvnDebug; do cat <%{buildroot}%{_datadir}/%{name}/bin/$cmd From 68a613e20d705fc284f89abfa849ae2cd86c5a4a Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Mon, 28 Oct 2019 10:45:18 +0100 Subject: [PATCH 25/42] Regenerate buildrequires --- xmvn.spec | 48 ++++++++++++++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/xmvn.spec b/xmvn.spec index 0655470..9494aaf 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -14,25 +14,37 @@ BuildArch: noarch #Source0: https://github.com/fedora-java/xmvn/releases/download/%{version}/xmvn-%{version}.tar.xz Source0: https://github.com/fedora-java/xmvn/archive/5d1e284.tar.gz -BuildRequires: maven >= 3.5.0 BuildRequires: maven-local -BuildRequires: apache-commons-compress -BuildRequires: beust-jcommander -BuildRequires: cglib -BuildRequires: maven-dependency-plugin -BuildRequires: maven-plugin-build-helper -BuildRequires: maven-assembly-plugin -BuildRequires: maven-plugin-plugin -BuildRequires: objectweb-asm -BuildRequires: modello -BuildRequires: xmlunit-assertj -BuildRequires: apache-ivy -BuildRequires: junit -BuildRequires: easymock -BuildRequires: maven-invoker -BuildRequires: plexus-containers-container-default -BuildRequires: plexus-containers-component-annotations -BuildRequires: plexus-containers-component-metadata +BuildRequires: mvn(com.beust:jcommander) +BuildRequires: mvn(org.apache.commons:commons-compress) +BuildRequires: mvn(org.apache.ivy:ivy) +BuildRequires: mvn(org.apache.maven.plugin-tools:maven-plugin-annotations) +BuildRequires: mvn(org.apache.maven.plugins:maven-assembly-plugin) +BuildRequires: mvn(org.apache.maven.plugins:maven-plugin-plugin) +BuildRequires: mvn(org.apache.maven.resolver:maven-resolver-api) +BuildRequires: mvn(org.apache.maven.resolver:maven-resolver-util) +BuildRequires: mvn(org.apache.maven.shared:maven-invoker) +BuildRequires: mvn(org.apache.maven:maven-artifact) +BuildRequires: mvn(org.apache.maven:maven-core) +BuildRequires: mvn(org.apache.maven:maven-model) +BuildRequires: mvn(org.apache.maven:maven-model-builder) +BuildRequires: mvn(org.apache.maven:maven-plugin-api) +BuildRequires: mvn(org.codehaus.modello:modello-maven-plugin) +BuildRequires: mvn(org.codehaus.mojo:build-helper-maven-plugin) +BuildRequires: mvn(org.codehaus.plexus:plexus-classworlds) +BuildRequires: mvn(org.codehaus.plexus:plexus-component-annotations) +BuildRequires: mvn(org.codehaus.plexus:plexus-component-metadata) +BuildRequires: mvn(org.codehaus.plexus:plexus-container-default) +BuildRequires: mvn(org.codehaus.plexus:plexus-utils) +BuildRequires: mvn(org.easymock:easymock) +BuildRequires: mvn(org.junit.jupiter:junit-jupiter) +BuildRequires: mvn(org.ow2.asm:asm) +BuildRequires: mvn(org.slf4j:slf4j-api) +BuildRequires: mvn(org.slf4j:slf4j-simple) +BuildRequires: mvn(org.xmlunit:xmlunit-assertj) + +# For /usr/bin/mvn, used to determine location of Maven home +BuildRequires: maven Requires: %{name}-minimal = %{version}-%{release} Requires: maven >= 3.6.1 From 758c965a7bfce64bdd57b265abd00906e8497133 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Mon, 28 Oct 2019 11:21:53 +0100 Subject: [PATCH 26/42] Update to latest snapshot --- .gitignore | 1 + sources | 2 +- xmvn.spec | 8 ++++---- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index e63b8cf..ee6160c 100644 --- a/.gitignore +++ b/.gitignore @@ -44,3 +44,4 @@ /xmvn-3.0.0.tar.xz /xmvn-3.1.0.tar.xz /5d1e284.tar.gz +/da67577.tar.gz diff --git a/sources b/sources index 727b647..99f08bf 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (5d1e284.tar.gz) = 6f87dd21983059f41af9a6f16a48712f7f1bef146ce60530a9dea19cf2a611b09c98f7165a00585bce1441f6d7d362a9ade441069a36b5406fde7d23789f8263 +SHA512 (da67577.tar.gz) = d68cfaea21ec9d5f9ee7e70a2d40cd111c53f8d10868766b9994637a06568b3846360b10402ca93ae29b974abe354146a1a5dc9a72a90e5cc4dcfb314d31845b diff --git a/xmvn.spec b/xmvn.spec index 9494aaf..fafab74 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -4,7 +4,7 @@ Name: xmvn -Version: 4.0.0~20191027.5d1e284 +Version: 4.0.0~20191028.da67577 Release: 1%{?dist} Summary: Local Extensions for Apache Maven License: ASL 2.0 @@ -12,7 +12,7 @@ URL: https://fedora-java.github.io/xmvn/ BuildArch: noarch #Source0: https://github.com/fedora-java/xmvn/releases/download/%{version}/xmvn-%{version}.tar.xz -Source0: https://github.com/fedora-java/xmvn/archive/5d1e284.tar.gz +Source0: https://github.com/fedora-java/xmvn/archive/da67577.tar.gz BuildRequires: maven-local BuildRequires: mvn(com.beust:jcommander) @@ -189,7 +189,7 @@ Summary: API documentation for %{name} This package provides %{summary}. %prep -%setup -q -n xmvn-5d1e284e74e4315040bfd231e0a5638b9199b7e6 +%setup -q -n xmvn-da67577d9252f0b1fffed546c7c23d97a97dec4b # Bisect IT has no chances of working in local, offline mode, without # network access - it needs to access remote repositories. @@ -334,7 +334,7 @@ cp -P ${maven_home}/bin/m2.conf %{buildroot}%{_datadir}/%{name}/bin/ %doc LICENSE NOTICE %changelog -* Mon Oct 28 2019 Mikolaj Izdebski - 4.0.0~20191027.5d1e284-1 +* Mon Oct 28 2019 Mikolaj Izdebski - 4.0.0~20191028.da67577-1 - Update to upstream snapshot of 4.0.0 * Fri Jun 28 2019 Mikolaj Izdebski - 3.1.0-2 From cdd2c32e1320222ef9ca24a120d0212d3759db66 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Tue, 5 Nov 2019 17:29:28 +0100 Subject: [PATCH 27/42] Mass rebuild for javapackages-tools 201902 --- xmvn.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xmvn.spec b/xmvn.spec index fafab74..e28d792 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -5,7 +5,7 @@ Name: xmvn Version: 4.0.0~20191028.da67577 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Local Extensions for Apache Maven License: ASL 2.0 URL: https://fedora-java.github.io/xmvn/ @@ -334,6 +334,9 @@ cp -P ${maven_home}/bin/m2.conf %{buildroot}%{_datadir}/%{name}/bin/ %doc LICENSE NOTICE %changelog +* Tue Nov 05 2019 Mikolaj Izdebski - 4.0.0~20191028.da67577-2 +- Mass rebuild for javapackages-tools 201902 + * Mon Oct 28 2019 Mikolaj Izdebski - 4.0.0~20191028.da67577-1 - Update to upstream snapshot of 4.0.0 From b0991423da1fb4d9ccfeeca13b52c46bba8ad3bf Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Wed, 20 Nov 2019 08:22:03 +0100 Subject: [PATCH 28/42] Allow copying dangling symlinks in Maven home --- xmvn.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xmvn.spec b/xmvn.spec index e28d792..b23d524 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -224,7 +224,7 @@ maven_home=$(realpath $(dirname $(realpath $(which mvn)))/..) mver=$(sed -n '//{s/.*>\(.*\)<.*/\1/;p}' \ xmvn-parent/pom.xml) mkdir -p target/dependency/ -cp -aL ${maven_home} target/dependency/apache-maven-$mver +cp -a ${maven_home} target/dependency/apache-maven-$mver %build %mvn_build -s -j From 140ecf4c8202eb1b0f8c1379e20700232321bf99 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Thu, 23 Jan 2020 12:52:30 +0100 Subject: [PATCH 29/42] Implement toolchain manager --- ...nitial-PoC-of-XMvn-toolchain-manager.patch | 77 +++++++++++++++++++ xmvn.spec | 8 +- 2 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 0001-Initial-PoC-of-XMvn-toolchain-manager.patch diff --git a/0001-Initial-PoC-of-XMvn-toolchain-manager.patch b/0001-Initial-PoC-of-XMvn-toolchain-manager.patch new file mode 100644 index 0000000..37b1d81 --- /dev/null +++ b/0001-Initial-PoC-of-XMvn-toolchain-manager.patch @@ -0,0 +1,77 @@ +From c9362d3f23f950bb6987c63c67b06528de3ce100 Mon Sep 17 00:00:00 2001 +From: Mikolaj Izdebski +Date: Thu, 23 Jan 2020 12:50:42 +0100 +Subject: [PATCH] Initial PoC of XMvn toolchain manager + +--- + .../aether/XMvnMavenLifecycleParticipant.java | 38 +++++++++++++++++++ + 1 file changed, 38 insertions(+) + +diff --git a/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMavenLifecycleParticipant.java b/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMavenLifecycleParticipant.java +index 0e360488..ddd6151b 100644 +--- a/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMavenLifecycleParticipant.java ++++ b/xmvn-connector-aether/src/main/java/org/fedoraproject/xmvn/connector/aether/XMvnMavenLifecycleParticipant.java +@@ -15,10 +15,15 @@ + */ + package org.fedoraproject.xmvn.connector.aether; + ++import java.util.Collections; ++ + import org.apache.maven.AbstractMavenLifecycleParticipant; + import org.apache.maven.MavenExecutionException; + import org.apache.maven.execution.MavenExecutionRequest; + import org.apache.maven.execution.MavenSession; ++import org.apache.maven.project.MavenProject; ++import org.apache.maven.toolchain.MisconfiguredToolchainException; ++import org.apache.maven.toolchain.ToolchainManagerPrivate; + import org.codehaus.plexus.component.annotations.Component; + import org.codehaus.plexus.component.annotations.Requirement; + import org.codehaus.plexus.logging.Logger; +@@ -42,6 +47,9 @@ public class XMvnMavenLifecycleParticipant + @Requirement( role = XMvnMojoExecutionListener.class ) + private XMvnMojoExecutionListener mojoExecutionListener; + ++ @Requirement ++ private ToolchainManagerPrivate toolchainManager; ++ + @Override + public void afterSessionStart( MavenSession session ) + throws MavenExecutionException +@@ -61,4 +69,34 @@ public class XMvnMavenLifecycleParticipant + chainedListener.addExecutionListener( reportGenerator ); + request.setExecutionListener( chainedListener ); + } ++ ++ @Override ++ public void afterProjectsRead( MavenSession session ) ++ throws MavenExecutionException ++ { ++ MavenProject currentProject = session.getCurrentProject(); ++ ++ try ++ { ++ for ( var toolchain : toolchainManager.getToolchainsForType( "jdk", session ) ) ++ { ++ if ( toolchain.matchesRequirements( Collections.singletonMap( "xmvn", "xmvn" ) ) ) ++ { ++ for ( var project : session.getAllProjects() ) ++ { ++ session.setCurrentProject( project ); ++ toolchainManager.storeToolchainToBuildContext( toolchain, session ); ++ } ++ } ++ } ++ } ++ catch ( MisconfiguredToolchainException e ) ++ { ++ throw new MavenExecutionException( "Unable to configure toolchains", e ); ++ } ++ finally ++ { ++ session.setCurrentProject( currentProject ); ++ } ++ } + } +-- +2.21.0 + diff --git a/xmvn.spec b/xmvn.spec index b23d524..d98e4ee 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -5,7 +5,7 @@ Name: xmvn Version: 4.0.0~20191028.da67577 -Release: 2%{?dist} +Release: 3%{?dist} Summary: Local Extensions for Apache Maven License: ASL 2.0 URL: https://fedora-java.github.io/xmvn/ @@ -14,6 +14,8 @@ BuildArch: noarch #Source0: https://github.com/fedora-java/xmvn/releases/download/%{version}/xmvn-%{version}.tar.xz Source0: https://github.com/fedora-java/xmvn/archive/da67577.tar.gz +Patch0: 0001-Initial-PoC-of-XMvn-toolchain-manager.patch + BuildRequires: maven-local BuildRequires: mvn(com.beust:jcommander) BuildRequires: mvn(org.apache.commons:commons-compress) @@ -190,6 +192,7 @@ This package provides %{summary}. %prep %setup -q -n xmvn-da67577d9252f0b1fffed546c7c23d97a97dec4b +%patch0 -p1 # Bisect IT has no chances of working in local, offline mode, without # network access - it needs to access remote repositories. @@ -334,6 +337,9 @@ cp -P ${maven_home}/bin/m2.conf %{buildroot}%{_datadir}/%{name}/bin/ %doc LICENSE NOTICE %changelog +* Thu Jan 23 2020 Mikolaj Izdebski - 4.0.0~20191028.da67577-3 +- Implement toolchain manager + * Tue Nov 05 2019 Mikolaj Izdebski - 4.0.0~20191028.da67577-2 - Mass rebuild for javapackages-tools 201902 From e3abb21ffb3c09e5d4f51a55e6b369f84252648e Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Wed, 19 Feb 2020 13:11:05 +0100 Subject: [PATCH 30/42] Require maven-jdk-binding --- xmvn.spec | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/xmvn.spec b/xmvn.spec index d98e4ee..6bc1b58 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -5,7 +5,7 @@ Name: xmvn Version: 4.0.0~20191028.da67577 -Release: 3%{?dist} +Release: 4%{?dist} Summary: Local Extensions for Apache Maven License: ASL 2.0 URL: https://fedora-java.github.io/xmvn/ @@ -59,7 +59,6 @@ creating RPM packages containing Maven artifacts. %package minimal Summary: Dependency-reduced version of XMvn -Requires: maven-lib >= 3.4.0 Requires: %{name}-api = %{version}-%{release} Requires: %{name}-connector-aether = %{version}-%{release} Requires: %{name}-core = %{version}-%{release} @@ -68,7 +67,6 @@ Requires: apache-commons-lang3 Requires: atinject Requires: google-guice Requires: guava -Requires: maven-lib Requires: maven-resolver Requires: maven-wagon Requires: plexus-cipher @@ -80,6 +78,10 @@ Requires: plexus-utils Requires: sisu Requires: slf4j +Requires: maven-lib >= 3.4.0 +Requires: maven-jdk-binding +Suggests: maven-openjdk11 + %description minimal This package provides minimal version of XMvn, incapable of using remote repositories. @@ -337,6 +339,9 @@ cp -P ${maven_home}/bin/m2.conf %{buildroot}%{_datadir}/%{name}/bin/ %doc LICENSE NOTICE %changelog +* Wed Feb 19 2020 Mikolaj Izdebski - 4.0.0~20191028.da67577-4 +- Require maven-jdk-binding + * Thu Jan 23 2020 Mikolaj Izdebski - 4.0.0~20191028.da67577-3 - Implement toolchain manager From 596fd4e3f6b891ccfa31e53ef759c9251ca6ac00 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Tue, 24 Mar 2020 11:58:35 +0100 Subject: [PATCH 31/42] Make sure javapackages config is not bundled during build --- xmvn.spec | 3 +++ 1 file changed, 3 insertions(+) diff --git a/xmvn.spec b/xmvn.spec index 6bc1b58..8c9b4ef 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -288,6 +288,9 @@ install -d -m 755 %{buildroot}%{_datadir}/%{name}/conf/ cp -P ${maven_home}/conf/settings.xml %{buildroot}%{_datadir}/%{name}/conf/ cp -P ${maven_home}/bin/m2.conf %{buildroot}%{_datadir}/%{name}/bin/ +# Make sure javapackages config is not bundled +rm -rf %{buildroot}%{_datadir}/%{name}/{configuration.xml,config.d/,conf/toolchains.xml} + %files %{_bindir}/mvn-local From fc227182fa57fac2bfc1ee3fd1a34f7c53592010 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Mon, 20 Apr 2020 07:40:26 +0200 Subject: [PATCH 32/42] Disable Ivy connector --- xmvn.spec | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/xmvn.spec b/xmvn.spec index 8c9b4ef..5921a02 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -5,7 +5,7 @@ Name: xmvn Version: 4.0.0~20191028.da67577 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Local Extensions for Apache Maven License: ASL 2.0 URL: https://fedora-java.github.io/xmvn/ @@ -19,7 +19,6 @@ Patch0: 0001-Initial-PoC-of-XMvn-toolchain-manager.patch BuildRequires: maven-local BuildRequires: mvn(com.beust:jcommander) BuildRequires: mvn(org.apache.commons:commons-compress) -BuildRequires: mvn(org.apache.ivy:ivy) BuildRequires: mvn(org.apache.maven.plugin-tools:maven-plugin-annotations) BuildRequires: mvn(org.apache.maven.plugins:maven-assembly-plugin) BuildRequires: mvn(org.apache.maven.plugins:maven-plugin-plugin) @@ -116,15 +115,6 @@ provides integration of Maven Resolver with XMvn. It provides an adapter which allows XMvn resolver to be used as Maven workspace reader. - -%package connector-ivy -Summary: XMvn Connector for Apache Ivy - -%description connector-ivy -This package provides XMvn Connector for Apache Ivy, which provides -integration of Apache Ivy with XMvn. It provides an adapter which -allows XMvn resolver to be used as Ivy resolver. - %package mojo Summary: XMvn MOJO @@ -209,6 +199,7 @@ find -name ResolverIntegrationTest.java -delete %mvn_package ":xmvn{,-it}" __noinstall %pom_disable_module xmvn-connector-gradle +%pom_disable_module xmvn-connector-ivy # Upstream code quality checks, not relevant when building RPMs %pom_remove_plugin -r :apache-rat-plugin @@ -319,9 +310,6 @@ rm -rf %{buildroot}%{_datadir}/%{name}/{configuration.xml,config.d/,conf/toolcha %files connector-aether -f .mfiles-xmvn-connector-aether - -%files connector-ivy -f .mfiles-xmvn-connector-ivy - %files mojo -f .mfiles-xmvn-mojo %files tools-pom -f .mfiles-xmvn-tools @@ -342,6 +330,9 @@ rm -rf %{buildroot}%{_datadir}/%{name}/{configuration.xml,config.d/,conf/toolcha %doc LICENSE NOTICE %changelog +* Mon Apr 20 2020 Mikolaj Izdebski - 4.0.0~20191028.da67577-5 +- Disable Ivy connector + * Wed Feb 19 2020 Mikolaj Izdebski - 4.0.0~20191028.da67577-4 - Require maven-jdk-binding From a11bf2b93b220155161781458c0acee6cfc01172 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Tue, 21 Apr 2020 05:38:28 +0200 Subject: [PATCH 33/42] Disable bisect module --- xmvn.spec | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/xmvn.spec b/xmvn.spec index 5921a02..73d0e9c 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -24,7 +24,6 @@ BuildRequires: mvn(org.apache.maven.plugins:maven-assembly-plugin) BuildRequires: mvn(org.apache.maven.plugins:maven-plugin-plugin) BuildRequires: mvn(org.apache.maven.resolver:maven-resolver-api) BuildRequires: mvn(org.apache.maven.resolver:maven-resolver-util) -BuildRequires: mvn(org.apache.maven.shared:maven-invoker) BuildRequires: mvn(org.apache.maven:maven-artifact) BuildRequires: mvn(org.apache.maven:maven-core) BuildRequires: mvn(org.apache.maven:maven-model) @@ -143,16 +142,6 @@ 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. -%package bisect -Summary: XMvn Bisect -# Explicit javapackages-tools requires since scripts use -# /usr/share/java-utils/java-functions -Requires: javapackages-tools - -%description bisect -This package provides XMvn Bisect, which is a debugging tool that can -diagnose build failures by using bisection method. - %package subst Summary: XMvn Subst # Explicit javapackages-tools requires since scripts use @@ -198,6 +187,8 @@ find -name ResolverIntegrationTest.java -delete %mvn_package ":xmvn{,-it}" __noinstall +%pom_remove_dep :xmvn-bisect +%pom_disable_module xmvn-bisect xmvn-tools %pom_disable_module xmvn-connector-gradle %pom_disable_module xmvn-connector-ivy @@ -255,7 +246,6 @@ EOF done # helper scripts -%jpackage_script org.fedoraproject.xmvn.tools.bisect.BisectCli "" "-Dxmvn.home=%{_datadir}/%{name}" xmvn/xmvn-bisect:beust-jcommander:maven-invoker:plexus/utils xmvn-bisect %jpackage_script org.fedoraproject.xmvn.tools.install.cli.InstallerCli "" "" xmvn/xmvn-install:xmvn/xmvn-api:xmvn/xmvn-core:beust-jcommander:slf4j/api:slf4j/simple:objectweb-asm/asm:commons-compress xmvn-install %jpackage_script org.fedoraproject.xmvn.tools.resolve.ResolverCli "" "" xmvn/xmvn-resolve:xmvn/xmvn-api:xmvn/xmvn-core:beust-jcommander xmvn-resolve %jpackage_script org.fedoraproject.xmvn.tools.subst.SubstCli "" "" xmvn/xmvn-subst:xmvn/xmvn-api:xmvn/xmvn-core:beust-jcommander xmvn-subst @@ -317,9 +307,6 @@ rm -rf %{buildroot}%{_datadir}/%{name}/{configuration.xml,config.d/,conf/toolcha %files resolve -f .mfiles-xmvn-resolve %{_bindir}/%{name}-resolve -%files bisect -f .mfiles-xmvn-bisect -%{_bindir}/%{name}-bisect - %files subst -f .mfiles-xmvn-subst %{_bindir}/%{name}-subst From 4a0858701946e83158b370e8478113179e92cef3 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Wed, 8 Jul 2020 08:42:35 +0200 Subject: [PATCH 34/42] Don't buildrequire maven by name --- xmvn.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xmvn.spec b/xmvn.spec index 73d0e9c..bda8b86 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -43,8 +43,8 @@ BuildRequires: mvn(org.slf4j:slf4j-api) BuildRequires: mvn(org.slf4j:slf4j-simple) BuildRequires: mvn(org.xmlunit:xmlunit-assertj) -# For /usr/bin/mvn, used to determine location of Maven home -BuildRequires: maven +# Used to determine location of Maven home +BuildRequires: %{_bindir}/mvn Requires: %{name}-minimal = %{version}-%{release} Requires: maven >= 3.6.1 From 1dad161ef4dc75fca2bca6f2a90ce20e16020d44 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Mon, 20 Jul 2020 13:44:16 +0200 Subject: [PATCH 35/42] Follow symlinks when copying Maven home in bootstrap mode --- xmvn.spec | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/xmvn.spec b/xmvn.spec index bda8b86..794f2c6 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -234,13 +234,13 @@ version=4.0.0-SNAPSHOT maven_home=$(realpath $(dirname $(realpath $(which mvn)))/..) install -d -m 755 %{buildroot}%{_datadir}/%{name} -cp -r %{name}-${version}*/* %{buildroot}%{_datadir}/%{name}/ +cp -r%{?mbi:L} %{name}-${version}*/* %{buildroot}%{_datadir}/%{name}/ for cmd in mvn mvnDebug; do cat <%{buildroot}%{_datadir}/%{name}/bin/$cmd #!/bin/sh -e export _FEDORA_MAVEN_HOME="%{_datadir}/%{name}" -exec ${maven_home}/bin/$cmd "\${@}" +exec %{_datadir}/maven/bin/$cmd "\${@}" EOF chmod 755 %{buildroot}%{_datadir}/%{name}/bin/$cmd done @@ -251,10 +251,10 @@ done %jpackage_script org.fedoraproject.xmvn.tools.subst.SubstCli "" "" xmvn/xmvn-subst:xmvn/xmvn-api:xmvn/xmvn-core:beust-jcommander xmvn-subst # copy over maven lib directory -cp -r ${maven_home}/lib/* %{buildroot}%{_datadir}/%{name}/lib/ +cp -r%{?mbi:L} ${maven_home}/lib/* %{buildroot}%{_datadir}/%{name}/lib/ # possibly recreate symlinks that can be automated with xmvn-subst -%if !0%{?sclraw_phase} +%if !0%{?mbi} %{name}-subst -s -R %{buildroot} %{buildroot}%{_datadir}/%{name}/ %endif From 9d979d1162c6c3084486b3ea9707d886a9b34c2f Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Tue, 1 Dec 2020 06:43:17 +0100 Subject: [PATCH 36/42] Define mbi macro --- xmvn.spec | 3 +++ 1 file changed, 3 insertions(+) diff --git a/xmvn.spec b/xmvn.spec index 794f2c6..0ebe22e 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -2,6 +2,9 @@ # any additional bundles. %global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^osgi\\($ +%if "%{_module_name}" == "javapackages-bootstrap" +%global mbi 1 +%endif Name: xmvn Version: 4.0.0~20191028.da67577 From 8ceea9d953e382b350f081954b88ed26fee91982 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Fri, 4 Dec 2020 11:47:09 +0100 Subject: [PATCH 37/42] Copy over maven boot and lib directories --- xmvn.spec | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xmvn.spec b/xmvn.spec index 0ebe22e..bb9279c 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -253,7 +253,8 @@ done %jpackage_script org.fedoraproject.xmvn.tools.resolve.ResolverCli "" "" xmvn/xmvn-resolve:xmvn/xmvn-api:xmvn/xmvn-core:beust-jcommander xmvn-resolve %jpackage_script org.fedoraproject.xmvn.tools.subst.SubstCli "" "" xmvn/xmvn-subst:xmvn/xmvn-api:xmvn/xmvn-core:beust-jcommander xmvn-subst -# copy over maven lib directory +# copy over maven boot and lib directories +cp -r%{?mbi:L} ${maven_home}/boot/* %{buildroot}%{_datadir}/%{name}/boot/ cp -r%{?mbi:L} ${maven_home}/lib/* %{buildroot}%{_datadir}/%{name}/lib/ # possibly recreate symlinks that can be automated with xmvn-subst From 68b60310eb0205920b8fcf8ff2a9cde6f0eb9337 Mon Sep 17 00:00:00 2001 From: Marian Koncek Date: Thu, 28 Jan 2021 15:02:03 +0100 Subject: [PATCH 38/42] Update dependency xmlunit.assertj to xmlunit.assertj3 --- xmvn.spec | 3 +++ 1 file changed, 3 insertions(+) diff --git a/xmvn.spec b/xmvn.spec index bb9279c..e7d9951 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -178,6 +178,9 @@ This package provides %{summary}. %setup -q -n xmvn-da67577d9252f0b1fffed546c7c23d97a97dec4b %patch0 -p1 +# Port to xmlunit-assertj3 +find -name '*.java' -exec sed -i 's/org\.xmlunit\.assertj/org.xmlunit.assertj3/' {} + + # Bisect IT has no chances of working in local, offline mode, without # network access - it needs to access remote repositories. find -name BisectIntegrationTest.java -delete From df4931a9df168fb182ec8bc5d8f426e5a49f07e4 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Fri, 16 Apr 2021 15:33:13 +0200 Subject: [PATCH 39/42] Conditionalize buildrequires in bootstrap mode --- xmvn.spec | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/xmvn.spec b/xmvn.spec index e7d9951..7414b03 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -1,3 +1,5 @@ +%bcond_without bootstrap + # XMvn uses OSGi environment provided by Tycho, it shouldn't require # any additional bundles. %global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^osgi\\($ @@ -20,6 +22,9 @@ Source0: https://github.com/fedora-java/xmvn/archive/da67577.tar.gz Patch0: 0001-Initial-PoC-of-XMvn-toolchain-manager.patch BuildRequires: maven-local +%if %{with bootstrap} +BuildRequires: javapackages-bootstrap +%else BuildRequires: mvn(com.beust:jcommander) BuildRequires: mvn(org.apache.commons:commons-compress) BuildRequires: mvn(org.apache.maven.plugin-tools:maven-plugin-annotations) @@ -45,9 +50,12 @@ BuildRequires: mvn(org.ow2.asm:asm) BuildRequires: mvn(org.slf4j:slf4j-api) BuildRequires: mvn(org.slf4j:slf4j-simple) BuildRequires: mvn(org.xmlunit:xmlunit-assertj) +%endif # Used to determine location of Maven home +%if %{without bootstrap} BuildRequires: %{_bindir}/mvn +%endif Requires: %{name}-minimal = %{version}-%{release} Requires: maven >= 3.6.1 From 90074242d145350d6b1d96747be8409f7fc385aa Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Fri, 16 Apr 2021 18:34:40 +0200 Subject: [PATCH 40/42] Set PATH when calling which in bootstrap mode --- xmvn.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xmvn.spec b/xmvn.spec index 7414b03..e76aad0 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -221,7 +221,7 @@ find -name ResolverIntegrationTest.java -delete %pom_remove_plugin :maven-jar-plugin xmvn-tools # get mavenVersion that is expected -maven_home=$(realpath $(dirname $(realpath $(which mvn)))/..) +maven_home=$(realpath $(dirname $(realpath $(%{?jpb_env} which mvn)))/..) mver=$(sed -n '//{s/.*>\(.*\)<.*/\1/;p}' \ xmvn-parent/pom.xml) mkdir -p target/dependency/ @@ -245,7 +245,7 @@ rm -f %{name}-${version}*/bin/* %mvn_install version=4.0.0-SNAPSHOT -maven_home=$(realpath $(dirname $(realpath $(which mvn)))/..) +maven_home=$(realpath $(dirname $(realpath $(%{?jpb_env} which mvn)))/..) install -d -m 755 %{buildroot}%{_datadir}/%{name} cp -r%{?mbi:L} %{name}-${version}*/* %{buildroot}%{_datadir}/%{name}/ From b8fa616792cd08179525a64018fa8015b152ad04 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Fri, 16 Apr 2021 19:00:57 +0200 Subject: [PATCH 41/42] Don't try to bundle maven-metadata --- xmvn.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xmvn.spec b/xmvn.spec index e76aad0..0a25c6d 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -285,7 +285,7 @@ cp -P ${maven_home}/conf/settings.xml %{buildroot}%{_datadir}/%{name}/conf/ cp -P ${maven_home}/bin/m2.conf %{buildroot}%{_datadir}/%{name}/bin/ # Make sure javapackages config is not bundled -rm -rf %{buildroot}%{_datadir}/%{name}/{configuration.xml,config.d/,conf/toolchains.xml} +rm -rf %{buildroot}%{_datadir}/%{name}/{configuration.xml,config.d/,conf/toolchains.xml,maven-metadata/} %files %{_bindir}/mvn-local From 8d6c5a34257f533f806db7e0205b39f5d2798897 Mon Sep 17 00:00:00 2001 From: Mikolaj Izdebski Date: Thu, 13 May 2021 19:08:43 +0200 Subject: [PATCH 42/42] Turn off bootstrap mode by default --- xmvn.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xmvn.spec b/xmvn.spec index 0a25c6d..7e11fa9 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -1,4 +1,4 @@ -%bcond_without bootstrap +%bcond_with bootstrap # XMvn uses OSGi environment provided by Tycho, it shouldn't require # any additional bundles.