gentoo/dev-java/auto-value/auto-value-1.11.0.ebuild
Arthur Zamarin e9cfb04671
dev-java/auto-value: Stabilize 1.11.0 arm64, #965327
Signed-off-by: Arthur Zamarin <arthurzam@gentoo.org>
2025-11-14 19:50:33 +02:00

185 lines
6.6 KiB
Bash

# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
JAVA_PKG_IUSE="doc test"
JAVA_TESTING_FRAMEWORKS="junit-4"
inherit java-pkg-2 java-pkg-simple
DESCRIPTION="Immutable value-type code generation for Java 1.7+"
HOMEPAGE="https://github.com/google/auto/tree/master/value"
SRC_URI="https://github.com/google/auto/archive/${P}.tar.gz"
S="${WORKDIR}/auto-${P}"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64 arm64 ppc64"
CP_DEPEND="
>=dev-java/asm-9.8-r1:0
dev-java/escapevelocity:0
>=dev-java/guava-33.4.8:0
dev-java/incap:0
dev-java/javapoet:0
"
DEPEND="
${CP_DEPEND}
>=dev-java/checker-framework-qual-3.49.5:0
>=dev-java/error-prone-annotations-2.41.0:0
>=virtual/jdk-1.8:*
test? (
dev-java/compile-testing:0
>=dev-java/guava-testlib-33.4.8:0
dev-java/jsr305:0
dev-java/truth:0
)
"
RDEPEND="
${CP_DEPEND}
>=virtual/jre-1.8:*
"
JAVA_TEST_EXCLUDES=(
# No runnable methods
com.google.auto.value.extension.serializable.serializer.utils.TestStringSerializerFactory
# There was 1 failure:
# 1) getFactory_extensionsLoaded(com.google.auto.value.extension.serializable.serializer.SerializerFactoryLoaderTest)
# value of : getName()
# expected to contain: TestStringSerializerFactory$TestStringSerializer
# but was : com.google.auto.value.extension.serializable.serializer.impl.IdentitySerializerFactory$IdentitySerializer
# at com.google.auto.value.extension.serializable.serializer.SerializerFactoryLoaderTest.getFactory_extensionsLoaded(SerializerFactoryLoaderTest.java:37)
#
# FAILURES!!!
# Tests run: 403, Failures: 1
#
com.google.auto.value.extension.serializable.serializer.SerializerFactoryLoaderTest
)
JAVA_TEST_GENTOO_CLASSPATH="
checker-framework-qual
compile-testing
escapevelocity
guava-testlib
incap
javapoet
jsr305
junit-4
truth
"
JAVA_TEST_SRC_DIR="value/src/test/java"
src_prepare() {
java-pkg-2_src_prepare
mkdir -p value/res/META-INF/services && cd $_ || die "mkdir"
cat > javax.annotation.processing.Processor <<-JAVAX || die
com.google.auto.value.extension.memoized.processor.MemoizedValidator
com.google.auto.value.extension.toprettystring.processor.ToPrettyStringValidator
com.google.auto.value.processor.AutoAnnotationProcessor
com.google.auto.value.processor.AutoBuilderProcessor
com.google.auto.value.processor.AutoOneOfProcessor
com.google.auto.value.processor.AutoValueBuilderProcessor
com.google.auto.value.processor.AutoValueProcessor
JAVAX
cat > com.google.auto.value.extension.serializable.serializer.interfaces.SerializerExtension <<-SER || die
com.google.auto.value.extension.serializable.serializer.impl.ImmutableListSerializerExtension
com.google.auto.value.extension.serializable.serializer.impl.ImmutableMapSerializerExtension
com.google.auto.value.extension.serializable.serializer.impl.OptionalSerializerExtension
SER
cat > com.google.auto.value.extension.AutoValueExtension <<-AUTO || die
com.google.auto.value.extension.memoized.processor.MemoizeExtension
com.google.auto.value.extension.serializable.processor.SerializableAutoValueExtension
com.google.auto.value.extension.toprettystring.processor.ToPrettyStringExtension
AUTO
}
src_compile() {
local cp="$(java-pkg_getjar asm asm.jar)"
cp="${cp}:$(java-pkg_getjars --build-only checker-framework-qual,error-prone-annotations)"
cp="${cp}:$(java-pkg_getjars escapevelocity,guava,incap,javapoet)"
local sources=$(find \
common/src/main/java \
service/annotations/src/main/java \
service/processor/src/main/java \
value/src/main/java \
-name '*.java') || die "gather sources"
einfo "compile them all"
mkdir -p target/classes || die "mkdir target/classes" # still needed for openjdk-8
ejavac -d target/classes -classpath "${cp}" ${sources[@]}
use doc && ejavadoc -d target/api -classpath "${cp}" -quiet ${sources[@]}
einfo "package auto-value-annotations"
# according to value/annotations/pom.xml
find target/classes/com/google/auto/value \
\( ! -path '*/value/*/*' -path '*/value/*.class' \) -o \
\( ! -path '*/value/extension/memoized/*/*' -path '*/value/extension/memoized/*.class' \) -o \
\( ! -path '*/value/extension/serializable/*/*' -path '*/value/extension/serializable/*.class' \) -o \
\( ! -path '*/value/extension/toprettystring/*/*' -path '*/value/extension/toprettystring/*.class' \) |
sed -e 's/^/-C /' -e 's/classes\/com/classes com/' > valueannotations || die "valueannotations"
jar cf auto-value-annotations.jar @valueannotations || die
einfo "package auto-value"
# according to value/processor/pom.xml
find target/classes/com/google/auto \( \
-path '*/value/processor/*.class' -o \
-path '*/value/extension/memoized/processor/*.class' -o \
-path '*/value/extension/serializable/processor/*.class' -o \
-path '*/value/extension/serializable/serializer/*.class' -o \
-path '*/value/extension/toprettystring/processor/*.class' -o \
-path '*/value/extension/AutoValueExtension*.class' \) |
sed -e 's/^/-C /' -e 's/classes\/com/classes com/' > autovalue || die "autovalue"
find value/src/main/java -path '*/value/processor/*.vm' |
sed -e 's/^/-C /' -e 's/java\/com/java com/' >> autovalue || die "add .vm files"
jar cf auto-value.jar @autovalue || die
jar uvf auto-value.jar -C value/res . || die
einfo "package auto-common"
jar cf auto-common.jar -C target/classes com/google/auto/common || die
einfo "package auto-service-annotations"
jar cf auto-service-annotations.jar -C target/classes com/google/auto/service/AutoService.class || die
einfo "package auto-service"
jar cf auto-service.jar -C target/classes com/google/auto/service/processor || die
jar uvf auto-service.jar -C service/processor/src/main/resources META-INF/services || die
}
src_test() {
JAVA_GENTOO_CLASSPATH_EXTRA=":auto-common.jar:auto-service-annotations.jar:auto-value-annotations.jar"
# java.lang.NoClassDefFoundError: com/google/auto/common/MoreTypes
# means 'auto-common.jar' is also needed on processorpath.
# get processorpath
local pp="auto-value.jar:auto-common.jar"
pp="${pp}:$(java-pkg_getjars --build-only guava,incap,escapevelocity,javapoet)"
JAVAC_ARGS="-processorpath ${pp} -parameters" # '-parameters' for MemoizedTest, pom.xml line 177
local vm_version="$(java-config -g PROVIDES_VERSION)"
if ver_test "${vm_version}" -ge 17; then
# pom.xml lines 279-281
JAVA_TEST_EXTRA_ARGS=( --add-exports=jdk.compiler/com.sun.tools.javac.{api,file,parser,tree,util}=ALL-UNNAMED)
fi
java-pkg-simple_src_test
}
src_install() {
java-pkg-simple_src_install
java-pkg_dojar auto-value-annotations.jar auto-common.jar auto-service-annotations.jar auto-service.jar
use doc && docinto html && dodoc -r value/userguide
}