Implement new non-conflicting Java bindings

Resolves: RHEL-54068
Resolves: RHEL-54070
Resolves: RHEL-54071
Resolves: RHEL-54072
Resolves: RHEL-62175
Resolves: RHEL-62176
This commit is contained in:
Mikolaj Izdebski 2024-12-11 07:32:36 +01:00
parent cc1f21748a
commit f84cab931e

View File

@ -1,5 +1,6 @@
%bcond_with bootstrap
%global java_arches aarch64 ppc64le s390x x86_64
%global bundled_slf4j_version 1.7.30
%global homedir %{_datadir}/%{name}%{?maven_version_suffix}
%global confdir %{_sysconfdir}/%{name}%{?maven_version_suffix}
@ -7,14 +8,14 @@
Name: maven
Epoch: 1
Version: 3.6.3
Release: 21%{?dist}
Release: 22%{?dist}
Summary: Java project management and project comprehension tool
# maven itself is ASL 2.0
# bundled slf4j is MIT
License: ASL 2.0 and MIT
URL: https://maven.apache.org/
BuildArch: noarch
ExclusiveArch: aarch64 ppc64le s390x x86_64 noarch
ExclusiveArch: %{java_arches} noarch
Source0: https://archive.apache.org/dist/%{name}/%{name}-3/%{version}/source/apache-%{name}-%{version}-src.tar.gz
Source1: maven-bash-completion
@ -80,7 +81,7 @@ BuildRequires: mvn(org.slf4j:slf4j-simple::sources:)
%endif
Requires: %{name}-lib = %{epoch}:%{version}-%{release}
Requires: %{name}-jdk-binding = %{epoch}:%{version}-%{release}
Requires: %{name}-jdk-binding
Suggests: %{name}-openjdk17 = %{epoch}:%{version}-%{release}
Requires: which
@ -108,55 +109,94 @@ Provides: bundled(slf4j) = %{bundled_slf4j_version}
%description lib
Core part of Apache Maven that can be used as a library.
%package javadoc
Summary: API documentation for %{name}
%description javadoc
This package provides %{summary}.
%if !0%{?specpartsdir:1}
%package openjdk8
Summary: OpenJDK 8 binding for Maven
RemovePathPostfixes: -openjdk8
Provides: maven-jdk-binding = %{epoch}:%{version}-%{release}
Requires: maven = %{epoch}:%{version}-%{release}
Requires: java-1.8.0-openjdk-headless
Recommends: java-1.8.0-openjdk-devel
Conflicts: maven-jdk-binding
Provides: maven-jdk-binding = %{epoch}:%{version}-%{release}
Requires: java-1.8.0-openjdk-headless
Recommends: java-1.8.0-openjdk-devel
Requires: javapackages-tools >= 6.4.0
Requires(meta): maven = %{epoch}:%{version}-%{release}
%description openjdk8
Configures Maven to run with OpenJDK 8.
%files openjdk8
%ghost %{_jpbindingdir}/maven.conf
%dir %{_jpbindingdir}/maven.conf.d
%{_jpbindingdir}/maven.conf.d/openjdk8
%package openjdk11
Summary: OpenJDK 11 binding for Maven
RemovePathPostfixes: -openjdk11
Provides: maven-jdk-binding = %{epoch}:%{version}-%{release}
Requires: maven = %{epoch}:%{version}-%{release}
Requires: java-11-openjdk-headless
Recommends: java-11-openjdk-devel
Conflicts: maven-jdk-binding
Provides: maven-jdk-binding = %{epoch}:%{version}-%{release}
Requires: java-11-openjdk-headless
Recommends: java-11-openjdk-devel
Requires: javapackages-tools >= 6.4.0
Requires(meta): maven = %{epoch}:%{version}-%{release}
%description openjdk11
Configures Maven to run with OpenJDK 11.
%files openjdk11
%ghost %{_jpbindingdir}/maven.conf
%dir %{_jpbindingdir}/maven.conf.d
%{_jpbindingdir}/maven.conf.d/openjdk11
%package openjdk17
Summary: OpenJDK 17 binding for Maven
RemovePathPostfixes: -openjdk17
Provides: maven-jdk-binding = %{epoch}:%{version}-%{release}
Requires: maven = %{epoch}:%{version}-%{release}
Requires: java-17-openjdk-headless
Recommends: java-17-openjdk-devel
Conflicts: maven-jdk-binding
Provides: maven-jdk-binding = %{epoch}:%{version}-%{release}
Requires: java-17-openjdk-headless
Recommends: java-17-openjdk-devel
Requires: javapackages-tools >= 6.4.0
Requires(meta): maven = %{epoch}:%{version}-%{release}
%description openjdk17
Configures Maven to run with OpenJDK 17.
%files openjdk17
%ghost %{_jpbindingdir}/maven.conf
%dir %{_jpbindingdir}/maven.conf.d
%{_jpbindingdir}/maven.conf.d/openjdk17
%package openjdk21
Summary: OpenJDK 21 binding for Maven
RemovePathPostfixes: -openjdk21
Provides: maven-jdk-binding = %{epoch}:%{version}-%{release}
Requires: maven = %{epoch}:%{version}-%{release}
Requires: java-21-openjdk-headless
Recommends: java-21-openjdk-devel
Conflicts: maven-jdk-binding
Provides: maven-jdk-binding = %{epoch}:%{version}-%{release}
Requires: java-21-openjdk-headless
Recommends: java-21-openjdk-devel
Requires: javapackages-tools >= 6.4.0
Requires(meta): maven = %{epoch}:%{version}-%{release}
%description openjdk21
Configures Maven to run with OpenJDK 21.
%{?javadoc_package}
%files openjdk21
%ghost %{_jpbindingdir}/maven.conf
%dir %{_jpbindingdir}/maven.conf.d
%{_jpbindingdir}/maven.conf.d/openjdk21
%package unbound
Summary: Unbound Maven binding
Provides: maven-jdk-binding = %{epoch}:%{version}-%{release}
Requires: javapackages-tools >= 6.4.0
Requires(meta): maven = %{epoch}:%{version}-%{release}
%description unbound
Configures Maven to run with Java discovered using JAVA_HOME and PATH
environment variables.
%files unbound
%ghost %{_jpbindingdir}/maven.conf
%dir %{_jpbindingdir}/maven.conf.d
%{_jpbindingdir}/maven.conf.d/unbound
%endif
%prep
%setup -q -n apache-%{name}-%{version}
@ -259,11 +299,21 @@ ln -s %{homedir}/bin/mvnDebug.1.gz %{buildroot}%{_mandir}/man1/mvnDebug%{maven_v
%endif
# JDK bindings
%if !0%{?specpartsdir:1}
export RPM_SPECPARTS_DIR=/tmp
%endif
install -d -m 755 %{buildroot}%{_javaconfdir}/
echo JAVA_HOME=%{_jvmlibdir}/jre-1.8.0-openjdk >%{buildroot}%{_javaconfdir}/maven.conf-openjdk8
echo JAVA_HOME=%{_jvmlibdir}/jre-11-openjdk >%{buildroot}%{_javaconfdir}/maven.conf-openjdk11
echo JAVA_HOME=%{_jvmlibdir}/jre-17-openjdk >%{buildroot}%{_javaconfdir}/maven.conf-openjdk17
echo JAVA_HOME=%{_jvmlibdir}/jre-21-openjdk >%{buildroot}%{_javaconfdir}/maven.conf-openjdk21
ln -sf %{_jpbindingdir}/maven%{?maven_version_suffix}.conf %{buildroot}%{_javaconfdir}/maven%{?maven_version_suffix}.conf
echo JAVA_HOME=%{_jvmdir}/jre-1.8.0-openjdk >%{buildroot}%{_javaconfdir}/maven%{?maven_version_suffix}-openjdk8.conf
echo JAVA_HOME=%{_jvmdir}/jre-11-openjdk >%{buildroot}%{_javaconfdir}/maven%{?maven_version_suffix}-openjdk11.conf
echo JAVA_HOME=%{_jvmdir}/jre-17-openjdk >%{buildroot}%{_javaconfdir}/maven%{?maven_version_suffix}-openjdk17.conf
echo JAVA_HOME=%{_jvmdir}/jre-21-openjdk >%{buildroot}%{_javaconfdir}/maven%{?maven_version_suffix}-openjdk21.conf
%jp_binding --verbose --variant openjdk8 --ghost maven%{?maven_version_suffix}.conf --target %{_javaconfdir}/maven%{?maven_version_suffix}-openjdk8.conf --provides %{name}-jdk-binding --requires java-1.8.0-openjdk-headless --recommends java-1.8.0-openjdk-devel
%jp_binding --verbose --variant openjdk11 --ghost maven%{?maven_version_suffix}.conf --target %{_javaconfdir}/maven%{?maven_version_suffix}-openjdk11.conf --provides %{name}-jdk-binding --requires java-11-openjdk-headless --recommends java-11-openjdk-devel
%jp_binding --verbose --variant openjdk17 --ghost maven%{?maven_version_suffix}.conf --target %{_javaconfdir}/maven%{?maven_version_suffix}-openjdk17.conf --provides %{name}-jdk-binding --requires java-17-openjdk-headless --recommends java-17-openjdk-devel
%jp_binding --verbose --variant openjdk21 --ghost maven%{?maven_version_suffix}.conf --target %{_javaconfdir}/maven%{?maven_version_suffix}-openjdk21.conf --provides %{name}-jdk-binding --requires java-21-openjdk-headless --recommends java-21-openjdk-devel
touch %{buildroot}%{_javaconfdir}/maven%{?maven_version_suffix}-unbound.conf
%jp_binding --verbose --variant unbound --ghost maven%{?maven_version_suffix}.conf --target %{_javaconfdir}/maven%{?maven_version_suffix}-unbound.conf --provides %{name}-jdk-binding
%post
@ -282,6 +332,7 @@ if [[ $1 -eq 0 ]]; then update-alternatives --remove mvn %{homedir}/bin/mvn; fi
%exclude %{homedir}/bin/mvn*
%dir %{confdir}
%dir %{confdir}/logging
%config %{_javaconfdir}/maven%{?maven_version_suffix}*.conf
%config(noreplace) %{_sysconfdir}/m2%{?maven_version_suffix}.conf
%config(noreplace) %{confdir}/settings.xml
%config(noreplace) %{confdir}/logging/simplelogger.properties
@ -300,19 +351,14 @@ if [[ $1 -eq 0 ]]; then update-alternatives --remove mvn %{homedir}/bin/mvn; fi
%{_mandir}/man1/mvnDebug%{maven_version_suffix}.1.gz
%endif
%files openjdk8
%config %{_javaconfdir}/maven.conf-openjdk8
%files openjdk11
%config %{_javaconfdir}/maven.conf-openjdk11
%files openjdk17
%config %{_javaconfdir}/maven.conf-openjdk17
%files openjdk21
%config %{_javaconfdir}/maven.conf-openjdk21
%files javadoc -f .mfiles-javadoc
%license LICENSE NOTICE
%changelog
* Thu Dec 12 2024 Mikolaj Izdebski <mizdebsk@redhat.com> - 1:3.6.3-22
- Implement new non-conflicting Java bindings
- Resolves: RHEL-54068, RHEL-54070, RHEL-54071, RHEL-54072
* Sat Nov 23 2024 Marián Konček <mkoncek@redhat.com> - 1:3.6.3-21
- Add noarch to ExclusiveArch