From 2e12957ec9a85187ba93ecab6f31cf949faa98e7 Mon Sep 17 00:00:00 2001 From: sigui Date: Sat, 14 Dec 2019 16:56:03 +0800 Subject: [PATCH] add xmvn source --- ...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 ++ ...g-Xdoclint-none-in-m-javadoc-p-3.0.0.patch | 30 + ...ns-compress-for-manifest-injection-a.patch | 593 ++++++++++++++++++ xmvn-3.0.0.tar.xz | Bin 0 -> 168244 bytes xmvn.spec | 252 ++++++++ 9 files changed, 2042 insertions(+) create mode 100644 0001-Don-t-use-JAXB-for-converting-bytes-to-hex-string.patch create mode 100644 0001-Fix-configuration-of-aliased-plugins.patch create mode 100644 0001-Fix-installer-plugin-loading.patch create mode 100644 0001-Port-to-Gradle-4.2.patch create mode 100644 0001-Port-to-Gradle-4.3.1.patch create mode 100644 0001-Support-setting-Xdoclint-none-in-m-javadoc-p-3.0.0.patch create mode 100644 0001-Use-apache-commons-compress-for-manifest-injection-a.patch create mode 100644 xmvn-3.0.0.tar.xz create mode 100644 xmvn.spec 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 new file mode 100644 index 0000000..415ee9a --- /dev/null +++ b/0001-Don-t-use-JAXB-for-converting-bytes-to-hex-string.patch @@ -0,0 +1,58 @@ +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 new file mode 100644 index 0000000..9208c31 --- /dev/null +++ b/0001-Fix-configuration-of-aliased-plugins.patch @@ -0,0 +1,76 @@ +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 new file mode 100644 index 0000000..2acf3fd --- /dev/null +++ b/0001-Fix-installer-plugin-loading.patch @@ -0,0 +1,403 @@ +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 new file mode 100644 index 0000000..0e2a2f8 --- /dev/null +++ b/0001-Port-to-Gradle-4.2.patch @@ -0,0 +1,568 @@ +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 new file mode 100644 index 0000000..efc5531 --- /dev/null +++ b/0001-Port-to-Gradle-4.3.1.patch @@ -0,0 +1,62 @@ +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-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 new file mode 100644 index 0000000..c483cf4 --- /dev/null +++ b/0001-Support-setting-Xdoclint-none-in-m-javadoc-p-3.0.0.patch @@ -0,0 +1,30 @@ +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-Use-apache-commons-compress-for-manifest-injection-a.patch b/0001-Use-apache-commons-compress-for-manifest-injection-a.patch new file mode 100644 index 0000000..ff552e8 --- /dev/null +++ b/0001-Use-apache-commons-compress-for-manifest-injection-a.patch @@ -0,0 +1,593 @@ +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/xmvn-3.0.0.tar.xz b/xmvn-3.0.0.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..b85c5858b7cb6fbc6ff8068b6b19827a1530a6a9 GIT binary patch literal 168244 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%0DPvV*a3f!PAm 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

L3IWLH4coPwEavC7-jeu>)Num%{BaP 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 z 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

tFG`%@y;B;Qjb8p%^;q`1BW z3PEP)q)k3~;AvDa$IDMvXd-syVMnMQhkBH zm_+k?pxlmO08j2ZZ@7?-!kJv*+?=EamzUY)haM!uP1GM{H9-0zVB}^yen-3xcbNbt zrk1+d^I!H7W2ftwO2~nDli&C(kSi129R*!g z0bMWThwq^!V<*Ih4{f6qr#Q4eBafMn9LoBG(zhiDtzlU6tiBm!^OHwaF%pIYr5&Ox z6Iv1-|A%_rYOh98PWe<(W6Xz9+~=V*j@B+8fa?hapt;(#9Bt$Bvh-Cqo3q%qZ#61w;qI5(PRIYA| zzB9CZIX_4`Bo_Gt2=iRgE)gb(ycpL>!dE}{BuMj3CTc35AOGr})H?)W zh**yyV|le=bzqnHdxCVhgE-4O04H9pKa#*8NtL08|v?Xk~ zfpNvkkP<{O2}ZI?G5031Q(b)=DvyxHJQjIUcQ;jzi+g&0U&Pg>u=7nkc*kzB+F8if z7k9^3WSFimS7PE`1R{LBC|w~O0tBw%CQVU*-UcPX94`Ommv6|YOR;P>hso0@S8({X zlfiWnKyL%Ejb{%aa)`tM)eyo9r$Nq8h1 zwCk*4!dTUIwk+L5J@nK2p(1;{SV8xa7(S%{v~lU2mI)BENs3~~ELVi$8I;(X$Ga(8 zJ{b@O0?umSfRElE9al}8Ne+KGfygSS~yCb7q1COx*Km3-5N-pG^2>4NxWv|3U0ajt~vd+XwIk* zX=b_n*qQC-$SwccejC_df~z+*TgHHFXt!r)bd90(7N4Uog13KFTc@}lxlpepm8tMB zJR=}=VF~b3FnGsU70EO@?c*@q6?8$&Mf^@8koST_5TCz|#|x~sFQL=b?9UdF-8?F( zP#gu9-{apVFK}rX{F=#)I6fp@e5Ceg1S_g+8G~hM1+0M!8IrG%xCHsqx4fLvsI8#m zZrOHV{)R9&*r)xownL3e)sCSR*z^f#CVrq^nrp!f{;4{m*fH)CH~q@=Cdl+nm`VGS zEoR4DpGQKJc18IW`#7-}iQ6CbhLLYeWs_)F(DmX&^a*zC-WK=vp_ZGVa1%XFm2hM| z)s?pO315V37e2{UWObR4_b^@tCd`Y}-~x=+U-YlMkYcW|WV}T3-=W%iJoi2>VK4+i z`)!w>QfWWgenoUC51S8t>X;aZ$23Y9WK*gM%M3DSN*5?7zhi8ty?xNHe7B&sRJgu3 z|G6M39>*oZiZyIceyMQ)#&Tb!y5a|)IebyFAvB-EVm#aTDM?pvi34tOTuqm9ARS|pdV1K0cZX&ggL))fknb_<5ULMS*@9P zwxcQE{WDqOaW&0T*w;1#ISebjUjgC6k`*)S0GtYF>Z3_tu*0qUasW<&s{|zwq2xJ1 zcYR+b^v;r97E>>Fe!7kG1_bi0s8@FIpH)|RQebz8!3wQIVyi=m~2kPlZeu(*hMO!6-2Kn>4 zqXMe5Hmx*B z9Y#1ni#k;hdL?{4kPR_@5LpbDQhzd>0GROVHr4|lkGphw+Eks~Ci*0}hla4o?(AhA zGf6Tzv^|JP&r4HD-7A8-ecK{n+aF+fUgQyLYWz?epH=V47pNwYn#X}|ehF-+!seO~ z|M^=0!S1$ww+-|fQBRbTWz82{W4|$oc9mneof4-E_i=ZBboe_mrY=bmwQJRhA< zBN^#7<5AugKwUkHetR=H-whQ>(Q{8l>7v#I(pL6Vq{rFobJ>q*eZZoy*^6^`wd+Ja zpEY}g-}nLzxn1`N?a-LGf9-Fj@+y2-<I6F}Rnv@;}KZy3e zY#KqfRjViX&JNpIu!jAnpoiuByQ2+Lg?G5Z5$QRaT9?Tz0KWLCy-kS`zMT9sQZSqA z6;1sb*!RiLk>)YUGVDc$j1|dCf0NE?L(?Ez8XO}df^BQz;-@L)P>FQo9{GNr5YxuU zQLP&gwSsmTSQaY=+z$18+uRO1#D2Vajh%^vGHHaVv#Y&a{pQ4~d;kCd0D$Edhpc)~ g>i_|Xq6&cEqX7T_0G0l*>J%3{FarPp000D8TJ()&-T(jq literal 0 HcmV?d00001 diff --git a/xmvn.spec b/xmvn.spec new file mode 100644 index 0000000..6a64cd0 --- /dev/null +++ b/xmvn.spec @@ -0,0 +1,252 @@ +%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^osgi\\($ + +Name: xmvn +Version: 3.0.0 +Release: 22 +Summary: Local Extensions for Apache Maven +License: ASL 2.0 +URL: https://fedora-java.github.io/xmvn/ +Source0: https://github.com/fedora-java/xmvn/releases/download/%{version}/xmvn-%{version}.tar.xz +BuildArch: noarch + +Patch0000: 0001-Fix-installer-plugin-loading.patch +Patch0001: 0001-Port-to-Gradle-4.2.patch +Patch0002: 0001-Port-to-Gradle-4.3.1.patch +Patch0003: 0001-Support-setting-Xdoclint-none-in-m-javadoc-p-3.0.0.patch +Patch0004: 0001-Fix-configuration-of-aliased-plugins.patch +Patch0005: 0001-Don-t-use-JAXB-for-converting-bytes-to-hex-string.patch +Patch0006: 0001-Use-apache-commons-compress-for-manifest-injection-a.patch + +BuildRequires: maven >= 3.5.0 maven-local apache-commons-compress beust-jcommander cglib +BuildRequires: maven-dependency-plugin maven-plugin-build-helper maven-assembly-plugin +BuildRequires: maven-install-plugin maven-plugin-plugin objectweb-asm modello xmlunit apache-ivy +BuildRequires: junit easymock maven-invoker plexus-containers-container-default gradle >= 4.3.1 +BuildRequires: plexus-containers-component-annotations plexus-containers-component-metadata + +Requires: xmvn-minimal = %{version}-%{release} maven >= 3.4.0 + +%description +XMvn is a set of free software components that are useful in packaging Java software +whose build is managed by Apache Maven. It maintains a system-wide repository of artifacts. + +%package minimal +Summary: A simplified version of xmvn +Requires: maven-lib >= 3.4.0 xmvn-connector-aether = %{version}-%{release} +Requires: xmvn-api = %{version}-%{release} xmvn-core = %{version}-%{release} +Requires: apache-commons-cli apache-commons-lang3 atinject google-guice guava20 +Requires: maven-lib maven-resolver-api maven-resolver-impl maven-resolver-spi +Requires: maven-resolver-util maven-wagon-provider-api plexus-cipher plexus-classworlds +Requires: plexus-containers-component-annotations plexus-interpolation plexus-sec-dispatcher +Requires: plexus-utils sisu-inject sisu-plexus slf4j + +%description minimal +This package provides minimal version of XMvn, but can't use remote repositories. + +%package parent-pom +Summary: Provides XMvn Parent POM + +%description parent-pom +XMvn Parent is project model from which all other XMvn modules are inheriting. +It defines settings common to all XMvn modules. + +%package api +Summary: Provides XMvn API +Obsoletes: xmvn-launcher < 3.0.0 + +%description api +This module contains public interface for functionality implemented by XMvn Core. + +%package core +Summary: Provides XMvn Core + +%description core +XMvn Core module implements the essential functionality of XMvn such as resolution +of artifacts from system repository. XMvn core is needed by all other modules. + +%package connector-aether +Summary: Provides XMvn Connector for Maven Resolver + +%description connector-aether +XMvn Connector for Eclipse Aether provides integration of Eclipse +Aether with XMvn. It provides an adapter which allows XMvn resolver +to be used as Aether workspace reader. + +%package connector-gradle +Summary: Provides XMvn Connector for Gradle + +%description connector-gradle +XMvn Connector for Gradle provides integration of Gradle with XMvn.It +provides an adapter which allows XMvn resolver to be used as Gradle resolver. + +%package connector-ivy +Summary: Provides XMvn Connector for Apache Ivy + +%description connector-ivy +XMvn Connector for Apache Ivy provides integration of Apache Ivy +with XMvn. It provides an adapter which allows XMvn resolver to +be used as Ivy resolver. + +%package mojo +Summary: Provides XMvn MOJO + +%description mojo +XMvn MOJO is a Maven plugin, which consists of several MOJOs. Some goals +of these MOJOs are intended to be attached to default Maven lifecycle +when building packages, others can be calleddirectly from Maven command line. + +%package tools-pom +Summary: Provides XMvn Tools POM + +%description tools-pom +XMvn Tools is parent POM for all XMvn tools. It holds configuration +common to all XMvn tools. + +%package resolve +Summary: Provides XMvn Resolver +Requires: javapackages-tools + +%description resolve +XMvn Resolver is a commald-line tool resolve Maven artifacts from system repositories. + +%package bisect +Summary: Provides XMvn Bisect +Requires: javapackages-tools + +%description bisect +This is a debugging tool that can diagnose build failures. + +%package subst +Summary: Provides XMvn Subst +Requires: javapackages-tools + +%description subst +This is a tool can substitute Maven artifact files with symbolic +links to corresponding files in artifact repository. + +%package install +Summary: Provides XMvn Install +Requires: apache-commons-compress +Requires: javapackages-tools + +%description install +This is a command-line interface to XMvn installer.The installer reads +reactor metadata and performs artifact installation according to specified configuration. + +%package help +Summary: Provides API documentation for xmvn +Requires: xmvn = %{version}-%{release} +Provides: xmvn-javadoc = %{version}-%{release} +Obsoletes: xmvn-javadoc < %{version}-%{release} + +%description help +This package provides API documentation for xmvn + +%prep +%autosetup -n xmvn-%{version} -p1 + +%pom_remove_plugin -r :maven-site-plugin +%mvn_package ":xmvn{,-it}" __noinstall +%pom_remove_plugin -r :apache-rat-plugin +%pom_remove_plugin -r :maven-checkstyle-plugin +%pom_remove_plugin -r :jacoco-maven-plugin +%pom_remove_plugin :jacoco-maven-plugin xmvn-it +%pom_xpath_remove "pom:executions/pom:execution[pom:id[text()='maven-binaries']]" +%pom_remove_plugin :maven-jar-plugin xmvn-tools +maven_home=$(realpath $(dirname $(realpath $(which mvn)))/..) +mver=$(sed -n '//{s/.*>\(.*\)<.*/\1/;p}' \ + xmvn-parent/pom.xml) +install -d target/dependency/ +cp -aL ${maven_home} target/dependency/apache-maven-$mver + +%build +%mvn_build -s -j + +tar --delay-directory-restore -xvf target/*tar.bz2 +chmod -R +rwX xmvn-%{version}* +rm -f xmvn-%{version}*/{AUTHORS-XMVN,README-XMVN.md,LICENSE,NOTICE,NOTICE-XMVN} +rm -Rf xmvn-%{version}*/lib/{installer,resolver,subst,bisect}/ +rm -f xmvn-%{version}*/bin/* + +%install +%mvn_install + +maven_home=$(realpath $(dirname $(realpath $(which mvn)))/..) +install -d -m 755 %{buildroot}%{_datadir}/xmvn +cp -r xmvn-%{version}*/* %{buildroot}%{_datadir}/xmvn/ + +echo "#!/bin/sh -e +export _FEDORA_MAVEN_HOME=\"%{_datadir}/xmvn\" +exec ${maven_home}/bin/mvn \"\${@}\""> %{buildroot}%{_datadir}/xmvn/bin/mvn +echo "#!/bin/sh -e +export _FEDORA_MAVEN_HOME=\"%{_datadir}/xmvn\" +exec ${maven_home}/bin/mvnDebug \"\${@}\""> %{buildroot}%{_datadir}/xmvn/bin/mvnDebug + +chmod 755 %{buildroot}%{_datadir}/xmvn/bin/mvn +chmod 755 %{buildroot}%{_datadir}/xmvn/bin/mvnDebug + +%jpackage_script org.fedoraproject.xmvn.tools.bisect.BisectCli "" "-Dxmvn.home=%{_datadir}/xmvn" 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 + +cp -r ${maven_home}/lib/* %{buildroot}%{_datadir}/xmvn/lib/ +xmvn-subst -s -R %{buildroot} %{buildroot}%{_datadir}/xmvn/ +ln -s %{_datadir}/xmvn/bin/mvn %{buildroot}%{_bindir}/xmvn +ln -s xmvn %{buildroot}%{_bindir}/mvn-local +install -d -m 755 %{buildroot}%{_datadir}/xmvn/conf/ +cp -P ${maven_home}/conf/settings.xml %{buildroot}%{_datadir}/xmvn/conf/ +cp -P ${maven_home}/bin/m2.conf %{buildroot}%{_datadir}/xmvn/bin/ + +%files +%{_bindir}/mvn-local + +%files minimal +%{_bindir}/xmvn +%dir %{_datadir}/xmvn +%dir %{_datadir}/xmvn/bin +%dir %{_datadir}/xmvn/lib +%{_datadir}/xmvn/lib/*.jar +%{_datadir}/xmvn/lib/ext +%{_datadir}/xmvn/lib/jansi-native +%{_datadir}/xmvn/bin/m2.conf +%{_datadir}/xmvn/bin/mvn +%{_datadir}/xmvn/bin/mvnDebug +%{_datadir}/xmvn/boot +%{_datadir}/xmvn/conf + +%files parent-pom -f .mfiles-xmvn-parent +%doc LICENSE NOTICE + +%files core -f .mfiles-xmvn-core + +%files api -f .mfiles-xmvn-api +%doc AUTHORS README.md LICENSE NOTICE + +%files connector-aether -f .mfiles-xmvn-connector-aether + +%files connector-gradle -f .mfiles-xmvn-connector-gradle + +%files connector-ivy -f .mfiles-xmvn-connector-ivy + +%files mojo -f .mfiles-xmvn-mojo + +%files tools-pom -f .mfiles-xmvn-tools + +%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 + +%files install -f .mfiles-xmvn-install +%{_bindir}/%{name}-install + +%files help +%doc NOTICE + +%changelog +* Fri Nov 22 2019 sunguoshuai - 3.0.0-22 +- Package init.