google-guice/google-guice.spec

267 lines
10 KiB
RPMSpec

#
# spec file for package google-guice
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%global short_name guice
Name: google-%{short_name}
Version: 6.0.0
Release: 0
Summary: Dependency injection framework for Java 5 and above
License: Apache-2.0
Group: Development/Libraries/Java
URL: https://github.com/google/%{short_name}
# ./create-tarball.sh %%{version}
Source0: %{name}-%{version}.tar.xz
Source1: %{name}-build.tar.xz
BuildRequires: ant
BuildRequires: aopalliance
BuildRequires: atinject
BuildRequires: fdupes
BuildRequires: glassfish-servlet-api
BuildRequires: google-errorprone-annotations
BuildRequires: guava
BuildRequires: jakarta-inject
BuildRequires: java-devel >= 1.8
BuildRequires: javapackages-local >= 6
BuildRequires: jsr-305
BuildRequires: objectweb-asm
Provides: %{short_name}-multibindings = %{version}
Obsoletes: %{short_name}-multibindings < %{version}
Obsoletes: %{short_name}-testlibs
BuildArch: noarch
%description
Guice alleviates the need for factories and the use of "new" in Java
code. Guice's @Inject is a different "new". Writing factories will
still be needed in some cases, but code will not directly depend on
them.
Guice embraces Java's type safe nature, especially when it comes to
features introduced in Java 5 such as generics and annotations.
%package -n %{short_name}-parent
Summary: Guice parent POM
Group: Development/Libraries/Java
%description -n %{short_name}-parent
Guice is a dependency injection framework for Java 5
and above. This package provides parent POM for Guice modules.
%package -n %{short_name}-assistedinject
Summary: AssistedInject extension module for Guice
Group: Development/Libraries/Java
%description -n %{short_name}-assistedinject
Guice is a dependency injection framework for Java 5
and above. This package provides AssistedInject module for Guice.
%package -n %{short_name}-extensions
Summary: Extensions for Guice
Group: Development/Libraries/Java
%description -n %{short_name}-extensions
Guice is a dependency injection framework for Java 5
and above. This package provides extensions POM for Guice.
%package -n %{short_name}-grapher
Summary: Grapher extension module for Guice
Group: Development/Libraries/Java
%description -n %{short_name}-grapher
Guice is a dependency injection framework for Java 5
and above. This package provides Grapher module for Guice.
%package -n %{short_name}-jmx
Summary: JMX extension module for Guice
Group: Development/Libraries/Java
%description -n %{short_name}-jmx
Guice is a dependency injection framework for Java 5
and above. This package provides JMX module for Guice.
%package -n %{short_name}-jndi
Summary: JNDI extension module for Guice
Group: Development/Libraries/Java
%description -n %{short_name}-jndi
Guice is a dependency injection framework for Java 5
and above. This package provides JNDI module for Guice.
%package -n %{short_name}-servlet
Summary: Servlet extension module for Guice
Group: Development/Libraries/Java
%description -n %{short_name}-servlet
Guice is a dependency injection framework for Java 5
and above. This package provides Servlet module for Guice.
%package -n %{short_name}-throwingproviders
Summary: ThrowingProviders extension module for Guice
Group: Development/Libraries/Java
%description -n %{short_name}-throwingproviders
Guice is a dependency injection framework for Java 5
and above. This package provides ThrowingProviders module for Guice.
%package -n %{short_name}-bom
Summary: Bill of Materials for Guice
Group: Development/Libraries/Java
%description -n %{short_name}-bom
Guice is a dependency injection framework for Java 5
and above. This package provides Bill of Materials module for Guice.
%package javadoc
Summary: API documentation for Guice
Group: Documentation/HTML
%description javadoc
This package provides %{summary}.
%prep
%setup -q -a1
# We don't have struts2.
%pom_disable_module struts2 extensions
# Android-specific extension
%pom_disable_module dagger-adapter extensions
# Remove additional build profiles, which we don't use anyways
# and which are only pulling additional dependencies.
%pom_xpath_remove "pom:profile[pom:id='guice.with.jarjar']" core
# Fix OSGi metadata due to not using jarjar
%pom_xpath_set "pom:instructions/pom:Import-Package" \
"!com.google.inject.*,*" core
# Animal sniffer is only causing problems. Disable it for now.
%pom_remove_plugin :animal-sniffer-maven-plugin core
%pom_remove_plugin :animal-sniffer-maven-plugin extensions
%pom_remove_plugin :maven-gpg-plugin
# We don't have the custom doclet used by upstream. Remove
# maven-javadoc-plugin to generate javadocs with default style.
%pom_remove_plugin -r :maven-javadoc-plugin
# remove test dependency to make sure we don't produce requires
# see #1007498
%pom_remove_dep :guava-testlib extensions
%pom_xpath_remove "pom:dependency[pom:classifier='tests']" extensions
%pom_remove_parent
%pom_disable_module persist extensions
%pom_disable_module spring extensions
%pom_disable_module testlib extensions
%build
mkdir -p lib
build-jar-repository -s lib \
aopalliance \
atinject \
glassfish-servlet-api \
google-errorprone/annotations \
guava/guava \
jakarta-inject \
jsr-305 \
objectweb-asm/asm \
%{ant} -Dtest.skip=true package javadoc
%install
# jars
install -dm 0755 %{buildroot}%{_javadir}/%{short_name}
install -pm 0644 core/target/guice-%{version}.jar %{buildroot}%{_javadir}/%{short_name}/%{name}.jar
# Provide symlinks for all jars that existed, no_aop and aop
ln -sf %{short_name}/%{name}.jar %{buildroot}%{_javadir}/%{name}.jar
ln -sf %{name}.jar %{buildroot}%{_javadir}/%{short_name}/%{name}-no_aop.jar
ln -sf %{short_name}/%{name}.jar %{buildroot}%{_javadir}/%{name}-no_aop.jar
install -pm 0644 extensions/jmx/target/guice-jmx-%{version}.jar \
%{buildroot}%{_javadir}/%{short_name}/guice-jmx.jar
install -pm 0644 extensions/assistedinject/target/guice-assistedinject-%{version}.jar \
%{buildroot}%{_javadir}/%{short_name}/guice-assistedinject.jar
install -pm 0644 extensions/throwingproviders/target/guice-throwingproviders-%{version}.jar \
%{buildroot}%{_javadir}/%{short_name}/guice-throwingproviders.jar
install -pm 0644 extensions/servlet/target/guice-servlet-%{version}.jar \
%{buildroot}%{_javadir}/%{short_name}/guice-servlet.jar
install -pm 0644 extensions/jndi/target/guice-jndi-%{version}.jar \
%{buildroot}%{_javadir}/%{short_name}/guice-jndi.jar
install -pm 0644 extensions/grapher/target/guice-grapher-%{version}.jar \
%{buildroot}%{_javadir}/%{short_name}/guice-grapher.jar
# poms
install -dm 0755 %{buildroot}%{_mavenpomdir}/%{short_name}
%{mvn_install_pom} pom.xml %{buildroot}%{_mavenpomdir}/%{short_name}/guice-parent.pom
%add_maven_depmap %{short_name}/guice-parent.pom -f parent
%{mvn_install_pom} bom/pom.xml %{buildroot}%{_mavenpomdir}/%{short_name}/guice-bom.pom
%add_maven_depmap %{short_name}/guice-bom.pom -f bom
%{mvn_install_pom} extensions/pom.xml %{buildroot}%{_mavenpomdir}/%{short_name}/extensions-parent.pom
%add_maven_depmap %{short_name}/extensions-parent.pom -a org.sonatype.sisu.inject:extensions-parent -f extensions
%{mvn_install_pom} core/pom.xml %{buildroot}%{_mavenpomdir}/%{short_name}/%{name}.pom
%add_maven_depmap %{short_name}/%{name}.pom %{short_name}/%{name}.jar -a "org.sonatype.sisu:sisu-guice,com.google.inject:guice::no_aop:,org.sonatype.sisu:sisu-guice::no_aop:"
%{mvn_install_pom} extensions/jmx/pom.xml %{buildroot}%{_mavenpomdir}/%{short_name}/guice-jmx.pom
%add_maven_depmap %{short_name}/guice-jmx.pom %{short_name}/guice-jmx.jar -a org.sonatype.sisu.inject:guice-jmx -f jmx
%{mvn_install_pom} extensions/assistedinject/pom.xml %{buildroot}%{_mavenpomdir}/%{short_name}/guice-assistedinject.pom
%add_maven_depmap %{short_name}/guice-assistedinject.pom %{short_name}/guice-assistedinject.jar -a org.sonatype.sisu.inject:guice-assistedinject -f assistedinject
%{mvn_install_pom} extensions/throwingproviders/pom.xml %{buildroot}%{_mavenpomdir}/%{short_name}/guice-throwingproviders.pom
%add_maven_depmap %{short_name}/guice-throwingproviders.pom %{short_name}/guice-throwingproviders.jar -a org.sonatype.sisu.inject:guice-throwingproviders -f throwingproviders
%{mvn_install_pom} extensions/servlet/pom.xml %{buildroot}%{_mavenpomdir}/%{short_name}/guice-servlet.pom
%add_maven_depmap %{short_name}/guice-servlet.pom %{short_name}/guice-servlet.jar -a org.sonatype.sisu.inject:guice-servlet -f servlet
%{mvn_install_pom} extensions/jndi/pom.xml %{buildroot}%{_mavenpomdir}/%{short_name}/guice-jndi.pom
%add_maven_depmap %{short_name}/guice-jndi.pom %{short_name}/guice-jndi.jar -a org.sonatype.sisu.inject:guice-jndi -f jndi
%{mvn_install_pom} extensions/grapher/pom.xml %{buildroot}%{_mavenpomdir}/%{short_name}/guice-grapher.pom
%add_maven_depmap %{short_name}/guice-grapher.pom %{short_name}/guice-grapher.jar -a org.sonatype.sisu.inject:guice-grapher -f grapher
# javadoc
install -dm 0755 %{buildroot}%{_javadocdir}/%{name}
cp -pr core/target/site/apidocs/* %{buildroot}%{_javadocdir}/%{name}/
%fdupes -s %{buildroot}%{_javadocdir}
%files -f .mfiles
%dir %{_javadir}/%{short_name}
%{_javadir}/%{name}*.jar
%{_javadir}/%{short_name}/*-no_aop.jar
%files -n %{short_name}-parent -f .mfiles-parent
%license COPYING
%files -n %{short_name}-assistedinject -f .mfiles-assistedinject
%files -n %{short_name}-extensions -f .mfiles-extensions
%files -n %{short_name}-grapher -f .mfiles-grapher
%files -n %{short_name}-jmx -f .mfiles-jmx
%files -n %{short_name}-jndi -f .mfiles-jndi
%files -n %{short_name}-servlet -f .mfiles-servlet
%files -n %{short_name}-throwingproviders -f .mfiles-throwingproviders
%files -n %{short_name}-bom -f .mfiles-bom
%files javadoc
%{_javadocdir}/%{name}
%license COPYING
%changelog