diff --git a/.gitignore b/.gitignore index cfc3a1b..18a32a6 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,7 @@ /xmvn-3.1.0.tar.xz /5d1e284.tar.gz /da67577.tar.gz +/fac231b.tar.gz +/5547c28.tar.gz +/523e11f.tar.gz +/7e2d3db.tar.gz diff --git a/0001-Initial-PoC-of-XMvn-toolchain-manager.patch b/0001-Initial-PoC-of-XMvn-toolchain-manager.patch deleted file mode 100644 index 37b1d81..0000000 --- a/0001-Initial-PoC-of-XMvn-toolchain-manager.patch +++ /dev/null @@ -1,77 +0,0 @@ -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/sources b/sources index 99f08bf..e5c00f4 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (da67577.tar.gz) = d68cfaea21ec9d5f9ee7e70a2d40cd111c53f8d10868766b9994637a06568b3846360b10402ca93ae29b974abe354146a1a5dc9a72a90e5cc4dcfb314d31845b +SHA512 (7e2d3db.tar.gz) = 05265ed0a90a52cf75e67b362b7ec5555caf94f0dc421b060d552ea37714e47ed8b62ec6bf289e20f96c625ba3e558d2866b2662d2386e5bfc84b49124a1fc82 diff --git a/xmvn.spec b/xmvn.spec index 51c97f4..5906848 100644 --- a/xmvn.spec +++ b/xmvn.spec @@ -1,31 +1,19 @@ %bcond_with bootstrap -# XMvn uses OSGi environment provided by Tycho, it shouldn't require -# any additional bundles. -%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}^osgi\\($ - -%if 0%{?fedora} -%bcond_without ivy -%else -%bcond_with ivy -%endif - %if %{with bootstrap} %global mbi 1 %endif Name: xmvn -Version: 4.0.0~20191028.da67577 -Release: 8%{?dist} +Version: 4.0.0~20210708.54026c1 +Release: 9%{?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 -Source0: https://github.com/fedora-java/xmvn/archive/da67577.tar.gz - -Patch0: 0001-Initial-PoC-of-XMvn-toolchain-manager.patch +Source0: https://github.com/fedora-java/xmvn/archive/54026c1.tar.gz BuildRequires: maven-local %if %{with bootstrap} @@ -55,15 +43,11 @@ 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) -%if %{with ivy} -BuildRequires: mvn(org.apache.ivy:ivy) -%endif -%endif - -# Used to determine location of Maven home -%if %{without bootstrap} -BuildRequires: %{_bindir}/mvn +BuildRequires: mvn(org.xmlunit:xmlunit-assertj3) +# Maven home is used as template for XMvn home +BuildRequires: maven +# Test dependency (for testing compatibility with Java 8) +BuildRequires: java-1.8.0-openjdk-devel %endif Requires: %{name}-minimal = %{version}-%{release} @@ -77,8 +61,6 @@ creating RPM packages containing Maven artifacts. %package minimal Summary: Dependency-reduced version of XMvn -Requires: %{name}-api = %{version}-%{release} -Requires: %{name}-connector-aether = %{version}-%{release} Requires: %{name}-core = %{version}-%{release} Requires: apache-commons-cli Requires: apache-commons-lang3 @@ -100,49 +82,21 @@ Requires: maven-lib >= 3.4.0 Requires: maven-jdk-binding Suggests: maven-openjdk11 +Obsoletes: xmvn-connector-aether < 4.0.0 + %description minimal This package provides minimal version of XMvn, incapable of using remote repositories. -%package parent-pom -Summary: XMvn Parent POM - -%description parent-pom -This package provides XMvn parent POM. - -%package api -Summary: XMvn API - -%description api -This package provides XMvn API module which contains public interface -for functionality implemented by XMvn Core. - %package core -Summary: XMvn Core +Summary: XMvn library +Obsoletes: xmvn-parent-pom < 4.0.0 +Obsoletes: xmvn-api < 4.0.0 %description core -This package provides XMvn Core module, which implements the essential -functionality of XMvn such as resolution of artifacts from system -repository. - -%package connector-aether -Summary: XMvn Connector for Maven Resolver - -%description connector-aether -This package provides XMvn Connector for Maven Resolver, which -provides integration of Maven Resolver with XMvn. It provides an -adapter which allows XMvn resolver to be used as Maven workspace -reader. - -%if %{with ivy} -%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. -%endif +This package provides XMvn API and XMvn Core modules, which implement +the essential functionality of XMvn such as resolution of artifacts +from system repository. %package mojo Summary: XMvn MOJO @@ -153,47 +107,29 @@ of several MOJOs. Some goals of these MOJOs are intended to be attached to default Maven lifecycle when building packages, others can be called directly from Maven command line. -%package tools-pom -Summary: XMvn Tools POM - -%description tools-pom -This package provides XMvn Tools parent POM. - -%package resolve -Summary: XMvn Resolver -# Explicit javapackages-tools requires since scripts use -# /usr/share/java-utils/java-functions -Requires: javapackages-tools - -%description resolve -This package provides XMvn Resolver, which is a very simple -commald-line tool to resolve Maven artifacts from system repositories. -Basically it's just an interface to artifact resolution mechanism -implemented by XMvn Core. The primary intended use case of XMvn -Resolver is debugging local artifact repositories. - -%package subst -Summary: XMvn Subst -# Explicit javapackages-tools requires since scripts use -# /usr/share/java-utils/java-functions -Requires: javapackages-tools - -%description subst -This package provides XMvn Subst, which is a tool that can substitute -Maven artifact files with symbolic links to corresponding files in -artifact repository. - -%package install -Summary: XMvn Install -Requires: apache-commons-compress +%package tools +Summary: XMvn tools # Explicit javapackages-tools requires since scripts use # /usr/share/java-utils/java-functions Requires: javapackages-tools - -%description install -This package provides XMvn Install, which is a command-line interface -to XMvn installer. The installer reads reactor metadata and performs -artifact installation according to specified configuration. +Obsoletes: xmvn-tools-pom < 4.0.0 +Obsoletes: xmvn-bisect < 4.0.0 +Obsoletes: xmvn-install < 4.0.0 +Obsoletes: xmvn-resolve < 4.0.0 +Obsoletes: xmvn-subst < 4.0.0 + +%description tools +This package provides various XMvn tools: +* XMvn Install, which is a command-line interface to XMvn installer. + The installer reads reactor metadata and performs artifact + installation according to specified configuration. +* XMvn Resolver, which is a very simple commald-line tool to resolve + Maven artifacts from system repositories. Basically it's just an + interface to artifact resolution mechanism implemented by XMvn Core. + The primary intended use case of XMvn Resolver is debugging local + artifact repositories. +* XMvn Subst, which is a tool that can substitute Maven artifact files + with symbolic links to corresponding files in artifact repository. %package javadoc Summary: API documentation for %{name} @@ -202,62 +138,36 @@ Summary: API documentation for %{name} This package provides %{summary}. %prep -%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 - -# Resolver IT won't work either - it tries to execute JAR file, which -# relies on Class-Path in manifest, which is forbidden in Fedora... -find -name ResolverIntegrationTest.java -delete - -%pom_remove_plugin -r :maven-site-plugin - -%mvn_package ":xmvn{,-it}" __noinstall - -%pom_remove_dep :xmvn-bisect -%pom_disable_module xmvn-bisect xmvn-tools -%pom_disable_module xmvn-connector-gradle -%if %{without ivy} -%pom_disable_module xmvn-connector-ivy -%endif - -# Upstream code quality checks, not relevant when building RPMs -%pom_remove_plugin -r :apache-rat-plugin -%pom_remove_plugin -r :maven-checkstyle-plugin -%pom_remove_plugin -r :jacoco-maven-plugin -# FIXME pom macros don't seem to support submodules in profile -%pom_remove_plugin :jacoco-maven-plugin xmvn-it +%setup -q -n xmvn-54026c171fe8f4ccb0a22786616ceb5717359b8b -# remove dependency plugin maven-binaries execution -# we provide apache-maven by symlink -%pom_xpath_remove "pom:executions/pom:execution[pom:id[text()='maven-binaries']]" +%mvn_package ::tar.gz: __noinstall +%mvn_package ":{xmvn,xmvn-connector}" xmvn +%mvn_package ":xmvn-{api,core,parent}" core +%mvn_package ":xmvn-mojo" mojo +%mvn_package ":xmvn-{install,resolve,subst,tools}" tools # Don't put Class-Path attributes in manifests %pom_remove_plugin :maven-jar-plugin xmvn-tools -# get mavenVersion that is expected +# Copy Maven home packaged as RPM instead of unpacking Maven binary +# tarball with maven-dependency-plugin +%pom_remove_plugin :maven-dependency-plugin maven_home=$(realpath $(dirname $(realpath $(%{?jpb_env} which mvn)))/..) mver=$(sed -n '//{s/.*>\(.*\)<.*/\1/;p}' \ xmvn-parent/pom.xml) mkdir -p target/dependency/ -cp -a ${maven_home} target/dependency/apache-maven-$mver +cp -a "${maven_home}" target/dependency/apache-maven-$mver %build -%mvn_build -s -j +%mvn_build -j -- -P\\!quality version=4.0.0-SNAPSHOT -tar --delay-directory-restore -xvf target/*tar.bz2 +tar --delay-directory-restore -xvf target/xmvn-*-bin.tar.gz chmod -R +rwX %{name}-${version}* # These are installed as doc 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}/ # Irrelevant Maven launcher scripts rm -f %{name}-${version}*/bin/* @@ -328,7 +238,7 @@ end %files %{_bindir}/mvn-local -%files minimal +%files minimal -f .mfiles-xmvn %{_bindir}/%{name} %dir %{_datadir}/%{name} %dir %{_datadir}/%{name}/bin @@ -343,38 +253,24 @@ end %{_datadir}/%{name}/conf %ghost %{_datadir}/%{name}/conf/logging.rpmmoved -%files parent-pom -f .mfiles-xmvn-parent -%doc LICENSE NOTICE - -%files core -f .mfiles-xmvn-core - -%files api -f .mfiles-xmvn-api -%doc LICENSE NOTICE +%files core -f .mfiles-core +%license LICENSE NOTICE %doc AUTHORS README.md -%files connector-aether -f .mfiles-xmvn-connector-aether - -%if %{with ivy} -%files connector-ivy -f .mfiles-xmvn-connector-ivy -%endif - -%files mojo -f .mfiles-xmvn-mojo - -%files tools-pom -f .mfiles-xmvn-tools +%files mojo -f .mfiles-mojo -%files resolve -f .mfiles-xmvn-resolve +%files tools -f .mfiles-tools +%{_bindir}/%{name}-install %{_bindir}/%{name}-resolve - -%files subst -f .mfiles-xmvn-subst %{_bindir}/%{name}-subst -%files install -f .mfiles-xmvn-install -%{_bindir}/%{name}-install - %files javadoc -%doc LICENSE NOTICE +%license LICENSE NOTICE %changelog +* Thu Jul 08 2021 Mikolaj Izdebski - 4.0.0~20210708.54026c1-9 +- Update to latest upstream snapshot + * Tue Jun 01 2021 Mikolaj Izdebski - 4.0.0~20191028.da67577-8 - Workaround for rpm bug 447156 - rpm fails to change directory to symlink