mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-07-16 04:17:25 +00:00
35edaebc55
This reverts commita0557fe543. As said by Ross[Ø]: "Putting the _target_ protoc into the sysroot for executation at _build_ time isn't useful because even if it has the right architecture, the tune might be incompatible. Recipes which want protoc should just depend on protobuf-native." This has been reverted recently by Samuli[1]: "If protoc is enabled for the build, recipes using protobuf will fail when protoc is not available in the recipe sysroot" Be the revert is incorret as This is an issue coming from qtgrpc other recipes that use protobuf or gRPC compiler, proplery looks for the binary in the correct sysroot folder. Qtgrpc recipe should fix this issue at the recipe level, for example this is what I've done for "etcd-cpp-apiv3" recipe[2] that doesn't need this patch to properly compile. So keeping this hack doesn't seems to be a correct fix. Note that qtgrpc recipe isn't available on meta-oe nor any other public layers. 0: https://patchwork.yoctoproject.org/project/oe/patch/20230904161230.377450-1-ross.burton@arm.com/ 1: https://patchwork.yoctoproject.org/project/oe/patch/20230927051101.3088498-1-samuli.piippo@qt.io/ 2: https://github.com/etcd-cpp-apiv3/etcd-cpp-apiv3/commit/47f0d9e0326f3cc31c801a0ecf7312d1049ece3e CC: Samuli Piippo <samuli.piippo@gmail.com> CC: Ross Burton <ross.burton@arm.com> Signed-off-by: Clément Péron <peron.clem@gmail.com> Signed-off-by: Khem Raj <raj.khem@gmail.com> (cherry picked from commitbfb626a230) Signed-off-by: Armin Kuster <akuster808@gmail.com>
116 lines
4.6 KiB
BlitzBasic
116 lines
4.6 KiB
BlitzBasic
SUMMARY = "Protocol Buffers - structured data serialisation mechanism"
|
|
DESCRIPTION = "Protocol Buffers are a way of encoding structured data in an \
|
|
efficient yet extensible format. Google uses Protocol Buffers for almost \
|
|
all of its internal RPC protocols and file formats."
|
|
HOMEPAGE = "https://github.com/google/protobuf"
|
|
SECTION = "console/tools"
|
|
LICENSE = "BSD-3-Clause"
|
|
LIC_FILES_CHKSUM = "file://LICENSE;md5=37b5762e07f0af8c74ce80a8bda4266b"
|
|
|
|
DEPENDS = "zlib abseil-cpp"
|
|
DEPENDS:append:class-target = " protobuf-native"
|
|
|
|
SRCREV = "2c5fa078d8e86e5f4bd34e6f4c9ea9e8d7d4d44a"
|
|
|
|
SRC_URI = "gitsm://github.com/protocolbuffers/protobuf.git;branch=23.x;protocol=https \
|
|
file://run-ptest \
|
|
file://0001-examples-Makefile-respect-CXX-LDFLAGS-variables-fix-.patch \
|
|
"
|
|
SRC_URI:append:mips:toolchain-clang = " file://0001-Fix-build-on-mips-clang.patch "
|
|
SRC_URI:append:mipsel:toolchain-clang = " file://0001-Fix-build-on-mips-clang.patch "
|
|
|
|
S = "${WORKDIR}/git"
|
|
|
|
inherit cmake pkgconfig ptest
|
|
|
|
PACKAGECONFIG ??= ""
|
|
PACKAGECONFIG:class-native ?= "compiler"
|
|
PACKAGECONFIG:class-nativesdk ?= "compiler"
|
|
PACKAGECONFIG[python] = ",,"
|
|
PACKAGECONFIG[compiler] = "-Dprotobuf_BUILD_PROTOC_BINARIES=ON,-Dprotobuf_BUILD_PROTOC_BINARIES=OFF"
|
|
|
|
EXTRA_OECMAKE += "\
|
|
-Dprotobuf_BUILD_SHARED_LIBS=ON \
|
|
-Dprotobuf_BUILD_LIBPROTOC=ON \
|
|
-Dprotobuf_BUILD_TESTS=OFF \
|
|
-Dprotobuf_BUILD_EXAMPLES=OFF \
|
|
-Dprotobuf_ABSL_PROVIDER="package" \
|
|
"
|
|
|
|
TEST_SRC_DIR = "examples"
|
|
LANG_SUPPORT = "cpp ${@bb.utils.contains('PACKAGECONFIG', 'python', 'python', '', d)}"
|
|
|
|
do_compile_ptest() {
|
|
mkdir -p "${B}/${TEST_SRC_DIR}"
|
|
|
|
# Add the location of the cross-compiled header and library files
|
|
# which haven't been installed yet.
|
|
cp "${B}/protobuf.pc" "${B}/${TEST_SRC_DIR}/protobuf.pc"
|
|
cp ${S}/${TEST_SRC_DIR}/*.cc "${B}/${TEST_SRC_DIR}/"
|
|
cp ${S}/${TEST_SRC_DIR}/*.proto "${B}/${TEST_SRC_DIR}/"
|
|
cp ${S}/${TEST_SRC_DIR}/*.py "${B}/${TEST_SRC_DIR}/"
|
|
cp ${S}/${TEST_SRC_DIR}/Makefile "${B}/${TEST_SRC_DIR}/"
|
|
# Adapt protobuf.pc
|
|
sed -e 's|libdir=|libdir=${PKG_CONFIG_SYSROOT_DIR}|' -i "${B}/${TEST_SRC_DIR}/protobuf.pc"
|
|
sed -e 's|Cflags:|Cflags: -I${S}/src |' -i "${B}/${TEST_SRC_DIR}/protobuf.pc"
|
|
sed -e 's|Cflags:|Cflags: -I${WORKDIR}/recipe-sysroot${includedir} |' -i "${B}/${TEST_SRC_DIR}/protobuf.pc"
|
|
sed -e 's|Libs:|Libs: -L${B}|' -i "${B}/${TEST_SRC_DIR}/protobuf.pc"
|
|
sed -e 's|Libs:|Libs: -L${WORKDIR}/recipe-sysroot/usr/lib |' -i "${B}/${TEST_SRC_DIR}/protobuf.pc"
|
|
sed -e 's|Libs:|Libs: -labsl_log_internal_check_op |' -i "${B}/${TEST_SRC_DIR}/protobuf.pc"
|
|
sed -e 's|Libs:|Libs: -labsl_log_internal_message |' -i "${B}/${TEST_SRC_DIR}/protobuf.pc"
|
|
# Adapt uf8_range.pc
|
|
cp "${B}/third_party/utf8_range/utf8_range.pc" "${B}/${TEST_SRC_DIR}/utf8_range.pc"
|
|
sed -e 's|libdir=|libdir=${PKG_CONFIG_SYSROOT_DIR}|' -i "${B}/${TEST_SRC_DIR}/utf8_range.pc"
|
|
sed -e 's|Libs:|Libs= -L${B}/third_party/utf8_range |' -i "${B}/${TEST_SRC_DIR}/utf8_range.pc"
|
|
# Until out-of-tree build of examples is supported, we have to use this approach
|
|
sed -e 's|../src/google/protobuf/.libs/timestamp.pb.o|${B}/CMakeFiles/libprotobuf.dir/src/google/protobuf/timestamp.pb.cc.o|' -i "${B}/${TEST_SRC_DIR}/Makefile"
|
|
export PKG_CONFIG_PATH="${B}/${TEST_SRC_DIR}"
|
|
|
|
# Save the pkgcfg sysroot variable, and update it to nothing so
|
|
# that it doesn't append the sysroot to the beginning of paths.
|
|
# The header and library files aren't installed to the target
|
|
# system yet. So the absolute paths were specified above.
|
|
save_pkg_config_sysroot_dir=$PKG_CONFIG_SYSROOT_DIR
|
|
export PKG_CONFIG_SYSROOT_DIR=
|
|
|
|
# Compile the tests
|
|
for lang in ${LANG_SUPPORT}; do
|
|
oe_runmake -C "${B}/${TEST_SRC_DIR}" ${lang}
|
|
done
|
|
|
|
# Restore the pkgconfig sysroot variable
|
|
export PKG_CONFIG_SYSROOT_DIR=$save_pkg_config_sysroot_dir
|
|
}
|
|
|
|
do_install_ptest() {
|
|
local olddir=`pwd`
|
|
|
|
cd "${S}/${TEST_SRC_DIR}"
|
|
install -d "${D}/${PTEST_PATH}"
|
|
for i in add_person* list_people*; do
|
|
if [ -x "$i" ]; then
|
|
install "$i" "${D}/${PTEST_PATH}"
|
|
fi
|
|
done
|
|
cp "${B}/${TEST_SRC_DIR}/addressbook_pb2.py" "${D}/${PTEST_PATH}"
|
|
cd "$olddir"
|
|
}
|
|
|
|
PACKAGE_BEFORE_PN = "${PN}-compiler ${PN}-lite"
|
|
|
|
FILES:${PN}-compiler = "${bindir} ${libdir}/libprotoc${SOLIBS}"
|
|
FILES:${PN}-lite = "${libdir}/libprotobuf-lite${SOLIBS}"
|
|
|
|
RDEPENDS:${PN}-compiler = "${PN}"
|
|
RDEPENDS:${PN}-dev += "${PN}-compiler"
|
|
RDEPENDS:${PN}-ptest = "bash ${@bb.utils.contains('PACKAGECONFIG', 'python', 'python3-protobuf', '', d)}"
|
|
|
|
MIPS_INSTRUCTION_SET = "mips"
|
|
|
|
BBCLASSEXTEND = "native nativesdk"
|
|
|
|
LDFLAGS:append:arm = " -latomic"
|
|
LDFLAGS:append:mips = " -latomic"
|
|
LDFLAGS:append:powerpc = " -latomic"
|
|
LDFLAGS:append:mipsel = " -latomic"
|