You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

99 lines
2.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Copyright 2008-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
JAVA_PKG_IUSE="doc source test"
MAVEN_ID="com.google.protobuf:protobuf-java:3.21.9"
# Tests not enabled, depend on com.google.truth which is not packaged
# https://github.com/protocolbuffers/protobuf/blob/v21.9/java/core/pom.xml#L35-L40
# JAVA_TESTING_FRAMEWORKS="junit-4"
inherit edo java-pkg-2 java-pkg-simple
PARENT_PN="${PN/-java/}"
PARENT_PV="$(ver_cut 2-)"
PARENT_P="${PARENT_PN}-${PARENT_PV}"
PARENT_SUBSLOT="32"
DESCRIPTION="Google's Protocol Buffers - Java bindings"
HOMEPAGE="https://developers.google.com/protocol-buffers/"
SRC_URI="
https://github.com/protocolbuffers/protobuf/archive/v${PARENT_PV}.tar.gz
-> ${PARENT_P}.tar.gz
"
LICENSE="BSD"
SLOT="0"
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86 ~amd64-linux ~x86-linux ~x64-macos"
DEPEND="
>=virtual/jdk-1.8:*
test? (
dev-java/guava:0
dev-java/mockito:4
)
"
RDEPEND=">=virtual/jre-1.8:*"
BDEPEND="dev-libs/protobuf:0/${PARENT_SUBSLOT}"
S="${WORKDIR}/${PARENT_P}/java"
JAVA_AUTOMATIC_MODULE_NAME="com.google.protobuf"
JAVA_JAR_FILENAME="protobuf.jar"
JAVA_RESOURCE_DIRS="core/src/main/resources"
JAVA_SRC_DIR="core/src/main/java"
JAVA_TEST_GENTOO_CLASSPATH="guava,junit-4,mockito-4"
JAVA_TEST_RESOURCE_DIRS="../src"
JAVA_TEST_SRC_DIR="core/src/test/java"
# Same than PATCHES but from repository's root directory,
# please see function `src_prepare` below.
# Simplier for users IMHO.
PARENT_PATCHES=(
)
# Here for patches within "java/" subdirectory.
PATCHES=(
)
src_prepare() {
pushd "${WORKDIR}/${PARENT_P}" > /dev/null || die
[[ -n "${PARENT_PATCHES[@]}" ]] && eapply "${PARENT_PATCHES[@]}"
eapply_user
popd > /dev/null || die
# Same than default without the eapply_user part, this last is kept
# for the parent directory.
# It looks like function java-pkg-2_src_prepare doesnt call "default".
[[ -n "${PATCHES[@]}" ]] && eapply "${PATCHES[@]}"
# Remove bundled jars
java-pkg_clean
java-pkg-2_src_prepare
# There is also compiler/plugin, but not in this list because in a subdirectory
core_protos=( any api descriptor duration empty field_mask source_context struct timestamp type wrappers )
# Copy resources from ../src/google/protobuf according to
# https://github.com/protocolbuffers/protobuf/blob/v21.9/java/core/pom.xml#L45-L61
mkdir -p "${JAVA_RESOURCE_DIRS}/google/protobuf/compiler" || die
local core_proto
for core_proto in "${core_protos[@]}"; do
cp "../src/google/protobuf/${core_proto}.proto" \
"${JAVA_RESOURCE_DIRS}/google/protobuf" \
|| die
done
cp {../src,"${JAVA_RESOURCE_DIRS}"}/google/protobuf/compiler/plugin.proto || die
# Generate 146 .java files according to
# https://github.com/protocolbuffers/protobuf/blob/v21.9/java/core/generate-sources-build.xml
for core_proto in "${core_protos[@]}" compiler/plugin; do
edo "${BROOT}/usr/bin/protoc" \
--java_out="${JAVA_SRC_DIR}" -I../src ../src/google/protobuf/"${core_proto}".proto
done
}