mirror of
git://git.yoctoproject.org/meta-virtualization.git
synced 2025-07-19 20:59:41 +02:00
protobuf: add protobuf-2.5.0 into devtool
Protocol Buffers(a.k.a., protobuf) are language-neutral, platform-neutral, extensible mechanism for serializing structured data, so it is reasonable to be a part of development tool recipe. Signed-off-by: Zumeng Chen <zumeng.chen@windriver.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
This commit is contained in:
parent
823c8cfcdf
commit
0afa6e168e
19
recipes-devtools/protobuf/files/disable_tests.patch
Normal file
19
recipes-devtools/protobuf/files/disable_tests.patch
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
diff -Naur protobuf-c-0.15.old/src/Makefile.am protobuf-c-0.15/src/Makefile.am
|
||||||
|
--- protobuf-c-0.15.old/src/Makefile.am 2012-11-28 14:59:57.845251943 +0100
|
||||||
|
+++ protobuf-c-0.15/src/Makefile.am 2012-11-28 15:00:23.549252632 +0100
|
||||||
|
@@ -1,5 +1,5 @@
|
||||||
|
if BUILD_PROTOC_C
|
||||||
|
-SUBDIRS = . test
|
||||||
|
+
|
||||||
|
bin_PROGRAMS = protoc-c
|
||||||
|
protoc_c_SOURCES = \
|
||||||
|
google/protobuf/compiler/c/c_service.cc \
|
||||||
|
@@ -23,7 +23,7 @@
|
||||||
|
lib_LTLIBRARIES = libprotobuf-c.la
|
||||||
|
protobufcincludedir = $(includedir)/google/protobuf-c
|
||||||
|
|
||||||
|
-EXTRA_DIST = CMakeLists.txt test/CMakeLists.txt
|
||||||
|
+EXTRA_DIST = CMakeLists.txt
|
||||||
|
|
||||||
|
libprotobuf_c_la_SOURCES = \
|
||||||
|
google/protobuf-c/protobuf-c-dispatch.c \
|
|
@ -0,0 +1,38 @@
|
||||||
|
From 46e331263eb92e47510e88478b255f226d30245c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Keith Holman <Keith.Holman@windriver.com>
|
||||||
|
Date: Mon, 18 Aug 2014 15:19:35 -0400
|
||||||
|
Subject: [PATCH] protobuf: allow running python scripts from anywhere
|
||||||
|
|
||||||
|
The Makefile to generate the examples with Google Protocol Buffers
|
||||||
|
generates some scripts for python. However, these generated scripts
|
||||||
|
only work if they are ran in the same directory as the source files.
|
||||||
|
This fix generates scripts to execute from anywhere on the system.
|
||||||
|
|
||||||
|
Signed-off-by: Keith Holman <Keith.Holman@windriver.com>
|
||||||
|
---
|
||||||
|
examples/Makefile | 6 ++++--
|
||||||
|
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/examples/Makefile b/examples/Makefile
|
||||||
|
index 8dc9083..a993d63 100644
|
||||||
|
--- a/examples/Makefile
|
||||||
|
+++ b/examples/Makefile
|
||||||
|
@@ -48,11 +48,13 @@ list_people_java: javac_middleman
|
||||||
|
add_person_python: add_person.py protoc_middleman
|
||||||
|
@echo "Writing shortcut script add_person_python..."
|
||||||
|
@echo '#! /bin/sh' > add_person_python
|
||||||
|
- @echo './add_person.py "$$@"' >> add_person_python
|
||||||
|
+ @echo 'SCRIPT_DIR=$$(dirname $$0)' >> add_person_python
|
||||||
|
+ @echo '$$SCRIPT_DIR/add_person.py "$$@"' >> add_person_python
|
||||||
|
@chmod +x add_person_python
|
||||||
|
|
||||||
|
list_people_python: list_people.py protoc_middleman
|
||||||
|
@echo "Writing shortcut script list_people_python..."
|
||||||
|
@echo '#! /bin/sh' > list_people_python
|
||||||
|
- @echo './list_people.py "$$@"' >> list_people_python
|
||||||
|
+ @echo 'SCRIPT_DIR=$$(dirname $$0)' >> list_people_python
|
||||||
|
+ @echo '$$SCRIPT_DIR/list_people.py "$$@"' >> list_people_python
|
||||||
|
@chmod +x list_people_python
|
||||||
|
--
|
||||||
|
1.9.3
|
||||||
|
|
32
recipes-devtools/protobuf/files/run-ptest
Executable file
32
recipes-devtools/protobuf/files/run-ptest
Executable file
|
@ -0,0 +1,32 @@
|
||||||
|
#!/bin/bash
|
||||||
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
TEST_FILE="/tmp/test.data"
|
||||||
|
|
||||||
|
RETVAL=0
|
||||||
|
# Test every writing test application
|
||||||
|
for write_exe_full_path in ${DIR}/add_person_*; do
|
||||||
|
if [ -x "${write_exe_full_path}" ]; then
|
||||||
|
write_exe=`basename ${write_exe_full_path}`
|
||||||
|
echo "Generating new test file using ${write_exe}..."
|
||||||
|
${write_exe_full_path} "${TEST_FILE}"
|
||||||
|
RETVAL=$?
|
||||||
|
|
||||||
|
# Test every reading test application
|
||||||
|
for read_exe_full_path in ${DIR}/list_people_*; do
|
||||||
|
read_exe=`basename ${read_exe_full_path}`
|
||||||
|
echo "Test: Write with ${write_exe}; Read with ${read_exe}..."
|
||||||
|
if [ -x "${read_exe_full_path}" ]; then
|
||||||
|
${read_exe_full_path} "${TEST_FILE}"
|
||||||
|
RETVAL=$?
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Cleanup...
|
||||||
|
if [ -e "${TEST_FILE}" ]; then
|
||||||
|
rm "${TEST_FILE}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
exit $RETVAL
|
||||||
|
|
20
recipes-devtools/protobuf/protobuf-c_0.15.bb
Normal file
20
recipes-devtools/protobuf/protobuf-c_0.15.bb
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
SUMMARY = "protobuf-c"
|
||||||
|
DESCRIPTION = "This package provides a code generator and runtime libraries to use Protocol Buffers from pure C"
|
||||||
|
HOMEPAGE = "http://code.google.com/p/protobuf-c/"
|
||||||
|
SECTION = "console/tools"
|
||||||
|
LICENSE = "Apache-2.0"
|
||||||
|
|
||||||
|
LIC_FILES_CHKSUM = "file://src/google/protobuf-c/protobuf-c.c;endline=33;md5=333140fae7cf8a38dc5f980ddb63704b"
|
||||||
|
|
||||||
|
PR = "r0"
|
||||||
|
|
||||||
|
DEPENDS = "protobuf"
|
||||||
|
|
||||||
|
SRC_URI[md5sum] = "73ff0c8df50d2eee75269ad8f8c07dc8"
|
||||||
|
SRC_URI[sha256sum] = "8fcb538e13a5431c46168fc8f2e6ad2574e2db9b684c0c72b066e24f010a0036"
|
||||||
|
SRC_URI = "http://protobuf-c.googlecode.com/files/protobuf-c-${PV}.tar.gz \
|
||||||
|
file://disable_tests.patch"
|
||||||
|
|
||||||
|
inherit autotools
|
||||||
|
|
||||||
|
BBCLASSEXTEND = "native nativesdk"
|
20
recipes-devtools/protobuf/protobuf-native_2.5.0.bb
Normal file
20
recipes-devtools/protobuf/protobuf-native_2.5.0.bb
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
SUMMARY = "protobuf"
|
||||||
|
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 = "http://code.google.com/p/protobuf/"
|
||||||
|
SECTION = "console/tools"
|
||||||
|
LICENSE = "BSD-3-Clause"
|
||||||
|
|
||||||
|
LIC_FILES_CHKSUM = "file://COPYING.txt;md5=af6809583bfde9a31595a58bb4a24514"
|
||||||
|
|
||||||
|
PR = "r0"
|
||||||
|
|
||||||
|
SRC_URI[md5sum] = "b751f772bdeb2812a2a8e7202bf1dae8"
|
||||||
|
SRC_URI[sha256sum] = "c55aa3dc538e6fd5eaf732f4eb6b98bdcb7cedb5b91d3b5bdcf29c98c293f58e"
|
||||||
|
SRC_URI = "http://protobuf.googlecode.com/files/protobuf-${PV}.tar.gz \
|
||||||
|
"
|
||||||
|
|
||||||
|
EXTRA_OECONF += " --with-protoc=echo --disable-shared"
|
||||||
|
|
||||||
|
inherit native autotools
|
95
recipes-devtools/protobuf/protobuf_2.5.0.bb
Normal file
95
recipes-devtools/protobuf/protobuf_2.5.0.bb
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
SUMMARY = "protobuf"
|
||||||
|
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 = "http://code.google.com/p/protobuf/"
|
||||||
|
SECTION = "console/tools"
|
||||||
|
LICENSE = "BSD-3-Clause"
|
||||||
|
|
||||||
|
LIC_FILES_CHKSUM = "file://COPYING.txt;md5=af6809583bfde9a31595a58bb4a24514"
|
||||||
|
|
||||||
|
PR = "r0"
|
||||||
|
EXCLUDE_FROM_WORLD = "1"
|
||||||
|
|
||||||
|
SRC_URI[md5sum] = "b751f772bdeb2812a2a8e7202bf1dae8"
|
||||||
|
SRC_URI[sha256sum] = "c55aa3dc538e6fd5eaf732f4eb6b98bdcb7cedb5b91d3b5bdcf29c98c293f58e"
|
||||||
|
SRC_URI = "http://protobuf.googlecode.com/files/protobuf-${PV}.tar.gz \
|
||||||
|
file://protobuf-allow-running-python-scripts-from-anywhere.patch \
|
||||||
|
file://run-ptest"
|
||||||
|
|
||||||
|
|
||||||
|
EXTRA_OECONF += " --with-protoc=${STAGING_BINDIR_NATIVE}/protoc"
|
||||||
|
inherit autotools setuptools ptest
|
||||||
|
|
||||||
|
DEPENDS += "protobuf-native"
|
||||||
|
|
||||||
|
PYTHON_SRC_DIR="python"
|
||||||
|
TEST_SRC_DIR="examples"
|
||||||
|
LANG_SUPPORT="python"
|
||||||
|
|
||||||
|
do_compile() {
|
||||||
|
# Compile protoc compiler
|
||||||
|
base_do_compile
|
||||||
|
}
|
||||||
|
|
||||||
|
do_compile_ptest() {
|
||||||
|
# Modify makefile to use the cross-compiler
|
||||||
|
sed -e "s|c++|${CXX}|g" -i "${S}/${TEST_SRC_DIR}/Makefile"
|
||||||
|
|
||||||
|
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"
|
||||||
|
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|Libs:|Libs: -L${B}/src/.libs|' -i "${B}/${TEST_SRC_DIR}/protobuf.pc"
|
||||||
|
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 "${S}/${TEST_SRC_DIR}" ${lang}
|
||||||
|
done
|
||||||
|
|
||||||
|
# Restore the pkgconfig sysroot variable
|
||||||
|
export PKG_CONFIG_SYSROOT_DIR=$save_pkg_config_sysroot_dir
|
||||||
|
}
|
||||||
|
|
||||||
|
do_install() {
|
||||||
|
local olddir=`pwd`
|
||||||
|
|
||||||
|
# Install protoc compiler
|
||||||
|
autotools_do_install
|
||||||
|
|
||||||
|
# Install header files
|
||||||
|
export PROTOC="${STAGING_BINDIR_NATIVE}/protoc"
|
||||||
|
cd "${S}/${PYTHON_SRC_DIR}"
|
||||||
|
distutils_do_install
|
||||||
|
|
||||||
|
cd "$olddir"
|
||||||
|
}
|
||||||
|
|
||||||
|
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 "${S}/${TEST_SRC_DIR}/addressbook_pb2.py" "${D}/${PTEST_PATH}"
|
||||||
|
|
||||||
|
cd "$olddir"
|
||||||
|
}
|
||||||
|
|
||||||
|
BBCLASSEXTEND = "nativesdk"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user