# 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" 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 }