Compare commits

...

No commits in common. "c9-beta" and "c8-stream-201902" have entirely different histories.

10 changed files with 246 additions and 514 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/xmvn-4.0.0.tar.xz SOURCES/da67577.tar.gz

View File

@ -1 +1 @@
40287aecd41b3a3f60fb633cf5b257c0a7aae232 SOURCES/xmvn-4.0.0.tar.xz df6cdcb0a2dd366cc384c03675c1a7f568472aae SOURCES/da67577.tar.gz

View File

@ -0,0 +1,77 @@
From c9362d3f23f950bb6987c63c67b06528de3ce100 Mon Sep 17 00:00:00 2001
From: Mikolaj Izdebski <mizdebsk@redhat.com>
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

View File

@ -1,56 +0,0 @@
From 1b66b3d5d6cd1e502012e4dbd68f978dacc1312f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fridrich=20=C5=A0trba?= <fridrich.strba@bluewin.ch>
Date: Sat, 7 May 2022 18:13:02 +0200
Subject: [PATCH 1/2] Simple implementation of toolchains
https://github.com/fedora-java/xmvn/issues/142
---
.../fedoraproject/xmvn/mojo/JavadocMojo.java | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/xmvn-mojo/src/main/java/org/fedoraproject/xmvn/mojo/JavadocMojo.java b/xmvn-mojo/src/main/java/org/fedoraproject/xmvn/mojo/JavadocMojo.java
index b2cd41fd..2b06e702 100644
--- a/xmvn-mojo/src/main/java/org/fedoraproject/xmvn/mojo/JavadocMojo.java
+++ b/xmvn-mojo/src/main/java/org/fedoraproject/xmvn/mojo/JavadocMojo.java
@@ -45,6 +45,8 @@ import org.apache.maven.project.DependencyResolutionRequest;
import org.apache.maven.project.DependencyResolutionResult;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.ProjectDependenciesResolver;
+import org.apache.maven.toolchain.Toolchain;
+import org.apache.maven.toolchain.ToolchainManager;
import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.util.StringUtils;
import org.eclipse.aether.util.filter.AndDependencyFilter;
@@ -69,6 +71,9 @@ public class JavadocMojo
@Component
private Configurator confugurator;
+ @Component
+ private ToolchainManager toolchainManager;
+
@Parameter( defaultValue = "${session}", readonly = true )
private MavenSession session;
@@ -161,8 +166,18 @@ public class JavadocMojo
public void execute()
throws MojoExecutionException, MojoFailureException
{
+ String javadocTool = null;
+ Toolchain tc = toolchainManager.getToolchainFromBuildContext( "jdk", session );
+ if ( tc != null )
+ {
+ javadocTool = tc.findTool( "javadoc" );
+ }
Path javadocExecutable;
- if ( System.getenv().containsKey( "JAVA_HOME" ) )
+ if ( javadocTool != null && !javadocTool.isEmpty() )
+ {
+ javadocExecutable = Paths.get( javadocTool );
+ }
+ else if ( System.getenv().containsKey( "JAVA_HOME" ) )
{
javadocExecutable = Paths.get( System.getenv( "JAVA_HOME" ) ) //
.resolve( "bin" ) //
--
2.47.1

View File

@ -1,151 +0,0 @@
From 01e7e776e2af1938f4a1daac08078284913994a1 Mon Sep 17 00:00:00 2001
From: Mikolaj Izdebski <mizdebsk@redhat.com>
Date: Tue, 21 Jun 2022 09:13:51 +0200
Subject: [PATCH 2/2] [it] Add test for javadoc MOJO toolchains
---
.../JavadocToolchainsIntegrationTest.java | 39 +++++++++++++++++++
.../.xmvn/configuration.xml | 7 ++++
.../resources/testJavadocToolchains/pom.xml | 6 +++
.../src/main/java/somepkg/SomeClass.java | 24 ++++++++++++
.../testJavadocToolchains/toolchains.xml | 11 ++++++
.../fedoraproject/xmvn/mojo/JavadocMojo.java | 1 +
6 files changed, 88 insertions(+)
create mode 100644 xmvn-it/src/test/java/org/fedoraproject/xmvn/it/maven/mojo/javadoc/JavadocToolchainsIntegrationTest.java
create mode 100644 xmvn-it/src/test/resources/testJavadocToolchains/.xmvn/configuration.xml
create mode 100644 xmvn-it/src/test/resources/testJavadocToolchains/pom.xml
create mode 100644 xmvn-it/src/test/resources/testJavadocToolchains/src/main/java/somepkg/SomeClass.java
create mode 100644 xmvn-it/src/test/resources/testJavadocToolchains/toolchains.xml
diff --git a/xmvn-it/src/test/java/org/fedoraproject/xmvn/it/maven/mojo/javadoc/JavadocToolchainsIntegrationTest.java b/xmvn-it/src/test/java/org/fedoraproject/xmvn/it/maven/mojo/javadoc/JavadocToolchainsIntegrationTest.java
new file mode 100644
index 00000000..c552652d
--- /dev/null
+++ b/xmvn-it/src/test/java/org/fedoraproject/xmvn/it/maven/mojo/javadoc/JavadocToolchainsIntegrationTest.java
@@ -0,0 +1,39 @@
+/*-
+ * Copyright (c) 2021 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.it.maven.mojo.javadoc;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.junit.jupiter.api.Test;
+
+import org.fedoraproject.xmvn.it.maven.mojo.AbstractMojoIntegrationTest;
+
+/**
+ * Integration tests for javadoc MOJO.
+ *
+ * @author Mikolaj Izdebski
+ */
+public class JavadocToolchainsIntegrationTest
+ extends AbstractMojoIntegrationTest
+{
+ @Test
+ public void testJavadocToolchains()
+ throws Exception
+ {
+ performTest( "org.fedoraproject.xmvn:xmvn-mojo:javadoc" );
+ assertTrue( getStdout().anyMatch( s -> s.equals( "[INFO] Toolchain in xmvn-mojo: JDK[/tmp]" ) ) );
+ }
+}
diff --git a/xmvn-it/src/test/resources/testJavadocToolchains/.xmvn/configuration.xml b/xmvn-it/src/test/resources/testJavadocToolchains/.xmvn/configuration.xml
new file mode 100644
index 00000000..06f5b389
--- /dev/null
+++ b/xmvn-it/src/test/resources/testJavadocToolchains/.xmvn/configuration.xml
@@ -0,0 +1,7 @@
+<configuration>
+ <resolverSettings>
+ <metadataRepositories>
+ <repository>metadata.xml</repository>
+ </metadataRepositories>
+ </resolverSettings>
+</configuration>
diff --git a/xmvn-it/src/test/resources/testJavadocToolchains/pom.xml b/xmvn-it/src/test/resources/testJavadocToolchains/pom.xml
new file mode 100644
index 00000000..5296a0fe
--- /dev/null
+++ b/xmvn-it/src/test/resources/testJavadocToolchains/pom.xml
@@ -0,0 +1,6 @@
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>xmvn.its</groupId>
+ <artifactId>javadoc-toolchains-test</artifactId>
+ <version>0.0.0-SNAPSHOT</version>
+</project>
diff --git a/xmvn-it/src/test/resources/testJavadocToolchains/src/main/java/somepkg/SomeClass.java b/xmvn-it/src/test/resources/testJavadocToolchains/src/main/java/somepkg/SomeClass.java
new file mode 100644
index 00000000..087d2158
--- /dev/null
+++ b/xmvn-it/src/test/resources/testJavadocToolchains/src/main/java/somepkg/SomeClass.java
@@ -0,0 +1,24 @@
+/*-
+ * Copyright (c) 2016-2021 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 somepkg;
+
+/**
+ * @author Mikolaj Izdebski
+ */
+public class SomeClass
+{
+
+}
diff --git a/xmvn-it/src/test/resources/testJavadocToolchains/toolchains.xml b/xmvn-it/src/test/resources/testJavadocToolchains/toolchains.xml
new file mode 100644
index 00000000..9e92c646
--- /dev/null
+++ b/xmvn-it/src/test/resources/testJavadocToolchains/toolchains.xml
@@ -0,0 +1,11 @@
+<toolchains>
+ <toolchain>
+ <type>jdk</type>
+ <provides>
+ <xmvn>xmvn</xmvn>
+ </provides>
+ <configuration>
+ <jdkHome>/tmp</jdkHome>
+ </configuration>
+ </toolchain>
+</toolchains>
diff --git a/xmvn-mojo/src/main/java/org/fedoraproject/xmvn/mojo/JavadocMojo.java b/xmvn-mojo/src/main/java/org/fedoraproject/xmvn/mojo/JavadocMojo.java
index 2b06e702..cf388f5a 100644
--- a/xmvn-mojo/src/main/java/org/fedoraproject/xmvn/mojo/JavadocMojo.java
+++ b/xmvn-mojo/src/main/java/org/fedoraproject/xmvn/mojo/JavadocMojo.java
@@ -170,6 +170,7 @@ public class JavadocMojo
Toolchain tc = toolchainManager.getToolchainFromBuildContext( "jdk", session );
if ( tc != null )
{
+ logger.info( "Toolchain in xmvn-mojo: " + tc );
javadocTool = tc.findTool( "javadoc" );
}
Path javadocExecutable;
--
2.47.1

View File

@ -1,11 +0,0 @@
<toolchains>
<toolchain>
<type>jdk</type>
<provides>
<xmvn>xmvn</xmvn>
</provides>
<configuration>
<jdkHome>/usr/lib/jvm/java-11-openjdk</jdkHome>
</configuration>
</toolchain>
</toolchains>

View File

@ -1,11 +0,0 @@
<toolchains>
<toolchain>
<type>jdk</type>
<provides>
<xmvn>xmvn</xmvn>
</provides>
<configuration>
<jdkHome>/usr/lib/jvm/java-17-openjdk</jdkHome>
</configuration>
</toolchain>
</toolchains>

View File

@ -1,11 +0,0 @@
<toolchains>
<toolchain>
<type>jdk</type>
<provides>
<xmvn>xmvn</xmvn>
</provides>
<configuration>
<jdkHome>/usr/lib/jvm/java-21-openjdk</jdkHome>
</configuration>
</toolchain>
</toolchains>

View File

@ -1,11 +0,0 @@
<toolchains>
<toolchain>
<type>jdk</type>
<provides>
<xmvn>xmvn</xmvn>
</provides>
<configuration>
<jdkHome>/usr/lib/jvm/java-1.8.0-openjdk</jdkHome>
</configuration>
</toolchain>
</toolchains>

View File

@ -1,40 +1,31 @@
%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\\($
%global java_arches aarch64 ppc64le s390x x86_64
%if %{with bootstrap}
%global mbi 1
%endif
Name: xmvn Name: xmvn
Version: 4.0.0 Version: 4.0.0~20191028.da67577
Release: 3%{?dist} Release: 3%{?dist}
Summary: Local Extensions for Apache Maven Summary: Local Extensions for Apache Maven
License: ASL 2.0 License: ASL 2.0
URL: https://fedora-java.github.io/xmvn/ URL: https://fedora-java.github.io/xmvn/
BuildArch: noarch BuildArch: noarch
ExclusiveArch: %{java_arches} noarch
Source0: https://github.com/fedora-java/xmvn/releases/download/%{version}/xmvn-%{version}.tar.xz #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
Patch: 0001-Simple-implementation-of-toolchains-https-github.com.patch Patch0: 0001-Initial-PoC-of-XMvn-toolchain-manager.patch
Patch: 0002-it-Add-test-for-javadoc-MOJO-toolchains.patch
Source8: toolchains-openjdk8.xml BuildRequires: maven-local
Source11: toolchains-openjdk11.xml
Source17: toolchains-openjdk17.xml
Source21: toolchains-openjdk21.xml
%if %{with bootstrap}
BuildRequires: javapackages-bootstrap
%else
BuildRequires: maven-local >= 6.4.0
BuildRequires: mvn(com.beust:jcommander) BuildRequires: mvn(com.beust:jcommander)
BuildRequires: mvn(org.apache.commons:commons-compress) 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.plugin-tools:maven-plugin-annotations)
BuildRequires: mvn(org.apache.maven.plugins:maven-assembly-plugin) BuildRequires: mvn(org.apache.maven.plugins:maven-assembly-plugin)
BuildRequires: mvn(org.apache.maven.plugins:maven-plugin-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-api)
BuildRequires: mvn(org.apache.maven.resolver:maven-resolver-util) 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-artifact)
BuildRequires: mvn(org.apache.maven:maven-core) BuildRequires: mvn(org.apache.maven:maven-core)
BuildRequires: mvn(org.apache.maven:maven-model) BuildRequires: mvn(org.apache.maven:maven-model)
@ -52,12 +43,10 @@ BuildRequires: mvn(org.junit.jupiter:junit-jupiter)
BuildRequires: mvn(org.ow2.asm:asm) BuildRequires: mvn(org.ow2.asm:asm)
BuildRequires: mvn(org.slf4j:slf4j-api) BuildRequires: mvn(org.slf4j:slf4j-api)
BuildRequires: mvn(org.slf4j:slf4j-simple) BuildRequires: mvn(org.slf4j:slf4j-simple)
BuildRequires: mvn(org.xmlunit:xmlunit-assertj3) BuildRequires: mvn(org.xmlunit:xmlunit-assertj)
# Maven home is used as template for XMvn home
# For /usr/bin/mvn, used to determine location of Maven home
BuildRequires: maven BuildRequires: maven
# Test dependency (for testing compatibility with Java 8)
BuildRequires: java-1.8.0-openjdk-devel
%endif
Requires: %{name}-minimal = %{version}-%{release} Requires: %{name}-minimal = %{version}-%{release}
Requires: maven >= 3.6.1 Requires: maven >= 3.6.1
@ -70,12 +59,16 @@ creating RPM packages containing Maven artifacts.
%package minimal %package minimal
Summary: Dependency-reduced version of XMvn 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} Requires: %{name}-core = %{version}-%{release}
Requires: apache-commons-cli Requires: apache-commons-cli
Requires: apache-commons-lang3 Requires: apache-commons-lang3
Requires: atinject Requires: atinject
Requires: google-guice Requires: google-guice
Requires: guava Requires: guava
Requires: maven-lib
Requires: maven-resolver Requires: maven-resolver
Requires: maven-wagon Requires: maven-wagon
Requires: plexus-cipher Requires: plexus-cipher
@ -87,25 +80,48 @@ Requires: plexus-utils
Requires: sisu Requires: sisu
Requires: slf4j Requires: slf4j
Requires: maven-lib >= 3.4.0
Requires: maven-jdk-binding
Suggests: maven-openjdk11
Obsoletes: xmvn-connector-aether < 4.0.0
%description minimal %description minimal
This package provides minimal version of XMvn, incapable of using This package provides minimal version of XMvn, incapable of using
remote repositories. 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 %package core
Summary: XMvn library Summary: XMvn Core
Obsoletes: xmvn-parent-pom < 4.0.0
Obsoletes: xmvn-api < 4.0.0
%description core %description core
This package provides XMvn API and XMvn Core modules, which implement This package provides XMvn Core module, which implements the essential
the essential functionality of XMvn such as resolution of artifacts functionality of XMvn such as resolution of artifacts from system
from system repository. 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.
%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 %package mojo
Summary: XMvn MOJO Summary: XMvn MOJO
@ -116,30 +132,57 @@ of several MOJOs. Some goals of these MOJOs are intended to be
attached to default Maven lifecycle when building packages, others can attached to default Maven lifecycle when building packages, others can
be called directly from Maven command line. be called directly from Maven command line.
%package tools %package tools-pom
Summary: XMvn tools 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 # Explicit javapackages-tools requires since scripts use
# /usr/share/java-utils/java-functions # /usr/share/java-utils/java-functions
Requires: javapackages-tools Requires: javapackages-tools
Requires: java-11-openjdk-headless
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 %description resolve
This package provides various XMvn tools: This package provides XMvn Resolver, which is a very simple
* XMvn Install, which is a command-line interface to XMvn installer. commald-line tool to resolve Maven artifacts from system repositories.
The installer reads reactor metadata and performs artifact Basically it's just an interface to artifact resolution mechanism
installation according to specified configuration. implemented by XMvn Core. The primary intended use case of XMvn
* XMvn Resolver, which is a very simple commald-line tool to resolve Resolver is debugging local artifact repositories.
Maven artifacts from system repositories. Basically it's just an
interface to artifact resolution mechanism implemented by XMvn Core. %package bisect
The primary intended use case of XMvn Resolver is debugging local Summary: XMvn Bisect
artifact repositories. # Explicit javapackages-tools requires since scripts use
* XMvn Subst, which is a tool that can substitute Maven artifact files # /usr/share/java-utils/java-functions
with symbolic links to corresponding files in artifact repository. 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
# /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
# 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.
%package javadoc %package javadoc
Summary: API documentation for %{name} Summary: API documentation for %{name}
@ -147,97 +190,55 @@ Summary: API documentation for %{name}
%description javadoc %description javadoc
This package provides %{summary}. This package provides %{summary}.
%if !0%{?specpartsdir:1}
%package toolchain-openjdk8
Summary: xmvn-minimal binding for openjdk8
Requires: java-1.8.0-openjdk-devel
Requires: javapackages-tools
Requires(meta): xmvn-minimal
%description toolchain-openjdk8
Configures xmvn-minimal to work with openjdk8.
%files toolchain-openjdk8
%ghost %{_jpbindingdir}/xmvn-toolchains.xml
%dir %{_jpbindingdir}/xmvn-toolchains.xml.d
%{_jpbindingdir}/xmvn-toolchains.xml.d/openjdk8
%package toolchain-openjdk11
Summary: xmvn-minimal binding for openjdk11
Requires: java-11-openjdk-devel
Requires: javapackages-tools
Requires(meta): xmvn-minimal
%description toolchain-openjdk11
Configures xmvn-minimal to work with openjdk11.
%files toolchain-openjdk11
%ghost %{_jpbindingdir}/xmvn-toolchains.xml
%dir %{_jpbindingdir}/xmvn-toolchains.xml.d
%{_jpbindingdir}/xmvn-toolchains.xml.d/openjdk11
%package toolchain-openjdk17
Summary: xmvn-minimal binding for openjdk17
Requires: java-17-openjdk-devel
Requires: javapackages-tools
Requires(meta): xmvn-minimal
%description toolchain-openjdk17
Configures xmvn-minimal to work with openjdk17.
%files toolchain-openjdk17
%ghost %{_jpbindingdir}/xmvn-toolchains.xml
%dir %{_jpbindingdir}/xmvn-toolchains.xml.d
%{_jpbindingdir}/xmvn-toolchains.xml.d/openjdk17
%package toolchain-openjdk21
Summary: xmvn-minimal binding for openjdk21
Requires: java-21-openjdk-devel
Requires: javapackages-tools
Requires(meta): xmvn-minimal
%description toolchain-openjdk21
Configures xmvn-minimal to work with openjdk21.
%files toolchain-openjdk21
%ghost %{_jpbindingdir}/xmvn-toolchains.xml
%dir %{_jpbindingdir}/xmvn-toolchains.xml.d
%{_jpbindingdir}/xmvn-toolchains.xml.d/openjdk21
%endif
%prep %prep
%autosetup -p1 %setup -q -n xmvn-da67577d9252f0b1fffed546c7c23d97a97dec4b
%patch0 -p1
%mvn_package ::tar.gz: __noinstall # Bisect IT has no chances of working in local, offline mode, without
%mvn_package ":{xmvn,xmvn-connector}" xmvn # network access - it needs to access remote repositories.
%mvn_package ":xmvn-{api,core,parent}" core find -name BisectIntegrationTest.java -delete
%mvn_package ":xmvn-mojo" mojo
%mvn_package ":xmvn-{install,resolve,subst,tools}" tools # 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_disable_module xmvn-connector-gradle
# 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
# remove dependency plugin maven-binaries execution
# we provide apache-maven by symlink
%pom_xpath_remove "pom:executions/pom:execution[pom:id[text()='maven-binaries']]"
# Don't put Class-Path attributes in manifests # Don't put Class-Path attributes in manifests
%pom_remove_plugin :maven-jar-plugin xmvn-tools %pom_remove_plugin :maven-jar-plugin xmvn-tools
# Copy Maven home packaged as RPM instead of unpacking Maven binary # get mavenVersion that is expected
# tarball with maven-dependency-plugin maven_home=$(realpath $(dirname $(realpath $(which mvn)))/..)
%pom_remove_plugin :maven-dependency-plugin
maven_home=$(realpath $(dirname $(realpath $(%{?jpb_env} type -p mvn)))/..)
mver=$(sed -n '/<mavenVersion>/{s/.*>\(.*\)<.*/\1/;p}' \ mver=$(sed -n '/<mavenVersion>/{s/.*>\(.*\)<.*/\1/;p}' \
xmvn-parent/pom.xml) xmvn-parent/pom.xml)
mkdir -p target/dependency/ mkdir -p target/dependency/
cp -a "${maven_home}" target/dependency/apache-maven-$mver cp -a ${maven_home} target/dependency/apache-maven-$mver
%build %build
%mvn_build -- -P\\!quality %mvn_build -s -j
version=4.0.0 version=4.0.0-SNAPSHOT
tar --delay-directory-restore -xvf target/xmvn-*-bin.tar.gz tar --delay-directory-restore -xvf target/*tar.bz2
chmod -R +rwX %{name}-${version}* chmod -R +rwX %{name}-${version}*
# These are installed as doc # 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 # Not needed - we use JPackage launcher scripts
rm -Rf %{name}-${version}*/lib/{installer,resolver,subst}/ rm -Rf %{name}-${version}*/lib/{installer,resolver,subst,bisect}/
# Irrelevant Maven launcher scripts # Irrelevant Maven launcher scripts
rm -f %{name}-${version}*/bin/* rm -f %{name}-${version}*/bin/*
@ -245,32 +246,32 @@ rm -f %{name}-${version}*/bin/*
%install %install
%mvn_install %mvn_install
version=4.0.0 version=4.0.0-SNAPSHOT
maven_home=$(realpath $(dirname $(realpath $(%{?jpb_env} type -p mvn)))/..) maven_home=$(realpath $(dirname $(realpath $(which mvn)))/..)
install -d -m 755 %{buildroot}%{_datadir}/%{name} install -d -m 755 %{buildroot}%{_datadir}/%{name}
cp -r%{?mbi:L} %{name}-${version}*/* %{buildroot}%{_datadir}/%{name}/ cp -r %{name}-${version}*/* %{buildroot}%{_datadir}/%{name}/
for cmd in mvn mvnDebug; do for cmd in mvn mvnDebug; do
cat <<EOF >%{buildroot}%{_datadir}/%{name}/bin/$cmd cat <<EOF >%{buildroot}%{_datadir}/%{name}/bin/$cmd
#!/bin/sh -e #!/bin/sh -e
export _FEDORA_MAVEN_HOME="%{_datadir}/%{name}" export _FEDORA_MAVEN_HOME="%{_datadir}/%{name}"
exec %{_datadir}/maven/bin/$cmd "\${@}" exec ${maven_home}/bin/$cmd "\${@}"
EOF EOF
chmod 755 %{buildroot}%{_datadir}/%{name}/bin/$cmd chmod 755 %{buildroot}%{_datadir}/%{name}/bin/$cmd
done done
# helper scripts # 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.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.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 %jpackage_script org.fedoraproject.xmvn.tools.subst.SubstCli "" "" xmvn/xmvn-subst:xmvn/xmvn-api:xmvn/xmvn-core:beust-jcommander xmvn-subst
# copy over maven boot and lib directories # copy over maven lib directory
cp -r%{?mbi:L} ${maven_home}/boot/* %{buildroot}%{_datadir}/%{name}/boot/ 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 # possibly recreate symlinks that can be automated with xmvn-subst
%if !0%{?mbi} %if !0%{?sclraw_phase}
%{name}-subst -s -R %{buildroot} %{buildroot}%{_datadir}/%{name}/ %{name}-subst -s -R %{buildroot} %{buildroot}%{_datadir}/%{name}/
%endif %endif
@ -285,44 +286,10 @@ install -d -m 755 %{buildroot}%{_datadir}/%{name}/conf/
cp -P ${maven_home}/conf/settings.xml %{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/ 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,maven-metadata/}
# Toolchains
%if !0%{?specpartsdir:1}
export RPM_SPECPARTS_DIR=/tmp
%endif
ln -sf %{_jpbindingdir}/xmvn-toolchains.xml %{buildroot}%{_datadir}/%{name}/conf/toolchains.xml
install -p -m 644 %{SOURCE8} %{buildroot}%{_datadir}/%{name}/conf/toolchains-openjdk8.xml
install -p -m 644 %{SOURCE11} %{buildroot}%{_datadir}/%{name}/conf/toolchains-openjdk11.xml
install -p -m 644 %{SOURCE17} %{buildroot}%{_datadir}/%{name}/conf/toolchains-openjdk17.xml
install -p -m 644 %{SOURCE21} %{buildroot}%{_datadir}/%{name}/conf/toolchains-openjdk21.xml
%jp_binding --verbose --base-pkg xmvn-minimal --binding-pkg xmvn-toolchain-openjdk8 --variant openjdk8 --ghost xmvn-toolchains.xml --target %{_datadir}/%{name}/conf/toolchains-openjdk8.xml --requires java-1.8.0-openjdk-devel
%jp_binding --verbose --base-pkg xmvn-minimal --binding-pkg xmvn-toolchain-openjdk11 --variant openjdk11 --ghost xmvn-toolchains.xml --target %{_datadir}/%{name}/conf/toolchains-openjdk11.xml --requires java-11-openjdk-devel
%jp_binding --verbose --base-pkg xmvn-minimal --binding-pkg xmvn-toolchain-openjdk17 --variant openjdk17 --ghost xmvn-toolchains.xml --target %{_datadir}/%{name}/conf/toolchains-openjdk17.xml --requires java-17-openjdk-devel
%jp_binding --verbose --base-pkg xmvn-minimal --binding-pkg xmvn-toolchain-openjdk21 --variant openjdk21 --ghost xmvn-toolchains.xml --target %{_datadir}/%{name}/conf/toolchains-openjdk21.xml --requires java-21-openjdk-devel
# Workaround for rpm bug 447156 - rpm fails to change directory to symlink
# https://docs.fedoraproject.org/en-US/packaging-guidelines/Directory_Replacement/
%pretrans -p <lua> minimal
path = "/usr/share/xmvn/conf/logging"
st = posix.stat(path)
if st and st.type == "directory" then
status = os.rename(path, path .. ".rpmmoved")
if not status then
suffix = 0
while not status do
suffix = suffix + 1
status = os.rename(path .. ".rpmmoved", path .. ".rpmmoved." .. suffix)
end
os.rename(path, path .. ".rpmmoved")
end
end
%files %files
%{_bindir}/mvn-local %{_bindir}/mvn-local
%files minimal -f .mfiles-xmvn %files minimal
%{_bindir}/%{name} %{_bindir}/%{name}
%dir %{_datadir}/%{name} %dir %{_datadir}/%{name}
%dir %{_datadir}/%{name}/bin %dir %{_datadir}/%{name}/bin
@ -335,78 +302,41 @@ end
%{_datadir}/%{name}/bin/mvnDebug %{_datadir}/%{name}/bin/mvnDebug
%{_datadir}/%{name}/boot %{_datadir}/%{name}/boot
%{_datadir}/%{name}/conf %{_datadir}/%{name}/conf
%ghost %{_datadir}/%{name}/conf/logging.rpmmoved
%files core -f .mfiles-core %files parent-pom -f .mfiles-xmvn-parent
%license LICENSE NOTICE %doc LICENSE NOTICE
%files core -f .mfiles-xmvn-core
%files api -f .mfiles-xmvn-api
%doc LICENSE NOTICE
%doc AUTHORS README.md %doc AUTHORS README.md
%files mojo -f .mfiles-mojo %files connector-aether -f .mfiles-xmvn-connector-aether
%files tools -f .mfiles-tools
%{_bindir}/%{name}-install %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 %{_bindir}/%{name}-resolve
%files bisect -f .mfiles-xmvn-bisect
%{_bindir}/%{name}-bisect
%files subst -f .mfiles-xmvn-subst
%{_bindir}/%{name}-subst %{_bindir}/%{name}-subst
%files javadoc -f .mfiles-javadoc %files install -f .mfiles-xmvn-install
%license LICENSE NOTICE %{_bindir}/%{name}-install
%files javadoc
%doc LICENSE NOTICE
%changelog %changelog
* Tue Dec 10 2024 Mikolaj Izdebski <mizdebsk@redhat.com> - 4.0.0-3
- Add bindings for XMvn toolchains
- Resolves: RHEL-70855, RHEL-70860
- Related: RHEL-71057
* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 4.0.0-2
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Mon Jul 26 2021 Mikolaj Izdebski <mizdebsk@redhat.com> - 4.0.0-1
- Update to upstream version 4.0.0
* Wed Jun 09 2021 Mikolaj Izdebski <mizdebsk@redhat.com> - 4.0.0~20191028.da67577-10
- Rebuild to workaround DistroBaker issue
* Tue Jun 08 2021 Mikolaj Izdebski <mizdebsk@redhat.com> - 4.0.0~20191028.da67577-9
- Bootstrap Maven for CentOS Stream 9
* Tue Jun 01 2021 Mikolaj Izdebski <mizdebsk@redhat.com> - 4.0.0~20191028.da67577-8
- Workaround for rpm bug 447156 - rpm fails to change directory to symlink
* Wed May 26 2021 Mikolaj Izdebski <mizdebsk@redhat.com> - 4.0.0~20191028.da67577-7
- Conditionally enable Ivy connector
* Mon May 17 2021 Mikolaj Izdebski <mizdebsk@redhat.com> - 4.0.0~20191028.da67577-6
- Bootstrap build
- Non-bootstrap build
* Thu Jan 28 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.0-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.0-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Fri Jul 10 2020 Jiri Vanek <jvanek@redhat.com> - 3.1.0-6
- Rebuilt for JDK-11, see https://fedoraproject.org/wiki/Changes/Java11
* Thu Jul 09 2020 Mat Booth <mat.booth@redhat.com> - 3.1.0-5
- Honour source parameter in javadoc mojo
* Fri Jun 26 2020 Alexander Kurtakov <akurtako@redhat.com> 3.1.0-4
- Rebuild to pick jsr250-api switch to jakarta-annotations.
* Thu Jun 25 2020 Alexander Kurtakov <akurtako@redhat.com> 3.1.0-3
- Ignore test failures as they fail when built Java 11.
* Mon Apr 20 2020 Mikolaj Izdebski <mizdebsk@redhat.com> - 4.0.0~20191028.da67577-5
- Disable Ivy connector
* Wed Feb 19 2020 Mikolaj Izdebski <mizdebsk@redhat.com> - 4.0.0~20191028.da67577-4
- Require maven-jdk-binding
* Fri Jan 31 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Thu Jan 23 2020 Mikolaj Izdebski <mizdebsk@redhat.com> - 4.0.0~20191028.da67577-3 * Thu Jan 23 2020 Mikolaj Izdebski <mizdebsk@redhat.com> - 4.0.0~20191028.da67577-3
- Implement toolchain manager - Implement toolchain manager
@ -416,24 +346,6 @@ end
* Mon Oct 28 2019 Mikolaj Izdebski <mizdebsk@redhat.com> - 4.0.0~20191028.da67577-1 * Mon Oct 28 2019 Mikolaj Izdebski <mizdebsk@redhat.com> - 4.0.0~20191028.da67577-1
- Update to upstream snapshot of 4.0.0 - Update to upstream snapshot of 4.0.0
* Thu Oct 17 2019 Fabio Valentini <decathorpe@gmail.com> - 3.1.0-1
- Update to version 3.1.0.
* Thu Oct 17 2019 Fabio Valentini <decathorpe@gmail.com> - 3.0.0-28
- Bump requirement to maven 3.6.1 and non-compat guava.
* Mon Sep 02 2019 Marian Koncek <mkoncek@redhat.com> - 3.0.0-27
- Port to maven-invoker 3.0.1
* Thu Aug 22 2019 Fabio Valentini <decathorpe@gmail.com> - 3.0.0-26
- Port to xmlunit2.
* Sun Aug 11 2019 Fabio Valentini <decathorpe@gmail.com> - 3.0.0-25
- Disable gradle support by default.
* Sat Jul 27 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.0-24
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Fri Jun 28 2019 Mikolaj Izdebski <mizdebsk@redhat.com> - 3.1.0-2 * Fri Jun 28 2019 Mikolaj Izdebski <mizdebsk@redhat.com> - 3.1.0-2
- Prefer namespaced metadata when duplicates are found - Prefer namespaced metadata when duplicates are found
@ -452,12 +364,6 @@ end
* Sat Apr 13 2019 Mikolaj Izdebski <mizdebsk@redhat.com> - 3.0.0-22 * Sat Apr 13 2019 Mikolaj Izdebski <mizdebsk@redhat.com> - 3.0.0-22
- Switch to Maven 3.6.1 and non-compat Guava - Switch to Maven 3.6.1 and non-compat Guava
* Sun Feb 03 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.0-23
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Tue Oct 30 2018 Mikolaj Izdebski <mizdebsk@redhat.com> - 3.0.0-22
- Port to Gradle 4.4.1
* Wed Aug 01 2018 Severin Gehwolf <sgehwolf@redhat.com> - 3.0.0-21 * Wed Aug 01 2018 Severin Gehwolf <sgehwolf@redhat.com> - 3.0.0-21
- Add requirement on javapackages-tools since scripts use - Add requirement on javapackages-tools since scripts use
java-functions. java-functions.