vsomeip: add recipe

The vsomeip stack implements the http://some-ip.com/ (Scalable
service-Oriented MiddlewarE over IP (SOME/IP)) protocol.
The stack consists out of:
  a shared library for SOME/IP (libvsomeip3.so)
  a shared library for SOME/IP's configuration module
  (libvsomeip3-cfg.so)
  a shared library for SOME/IP's service discovery
  (libvsomeip3-sd.so)
  a shared library for SOME/IP's E2E protection module
  (libvsomeip3-e2e.so)

Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Yi Zhao 2023-09-05 15:58:26 +08:00 committed by Khem Raj
parent 6ce4546d84
commit 59e296dc30
5 changed files with 335 additions and 0 deletions

View File

@ -0,0 +1,28 @@
From e8a1b7a176398c2a9b5969f1b48ae0e1aa30f4ec Mon Sep 17 00:00:00 2001
From: Yi Zhao <yi.zhao@windriver.com>
Date: Wed, 2 Mar 2022 14:51:13 +0800
Subject: [PATCH] Fix pkgconfig dir for multilib
Upstream-Status: Pending
Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
---
CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index add3edda..fea80b4a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -602,7 +602,7 @@ endif()
# create pkg-config file
if(NOT WIN32)
configure_file(${VSOMEIP_NAME}.pc.in ${PROJECT_BINARY_DIR}/${VSOMEIP_NAME}.pc @ONLY)
- install(FILES ${PROJECT_BINARY_DIR}/${VSOMEIP_NAME}.pc DESTINATION lib/pkgconfig)
+ install(FILES ${PROJECT_BINARY_DIR}/${VSOMEIP_NAME}.pc DESTINATION ${INSTALL_LIB_DIR}/pkgconfig)
endif()
##############################################################################
--
2.25.1

View File

@ -0,0 +1,28 @@
From aea4c06ee2a0661d0c7b4773e846276a4f10e2e8 Mon Sep 17 00:00:00 2001
From: Yi Zhao <yi.zhao@windriver.com>
Date: Wed, 9 Mar 2022 11:48:44 +0800
Subject: [PATCH] Install example configuration files to /etc/vsomeip
Upstream-Status: Inappropriate [configuration]
Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
---
CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fea80b4a..e7a92ec6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -501,7 +501,7 @@ install(FILES ${PROJECT_BINARY_DIR}/vsomeip.pc DESTINATION lib/pkgconfig)
endif ()
install (
- FILES ${EXAMPLE_CONFIG_FILES} DESTINATION etc/vsomeip COMPONENT config
+ FILES ${EXAMPLE_CONFIG_FILES} DESTINATION ${DEFAULT_CONFIGURATION_FOLDER} COMPONENT config
)
# Add all targets to the build-tree export set
--
2.25.1

View File

@ -0,0 +1,160 @@
From e012f91a73af7469ef6f660c3a6a752430a4d649 Mon Sep 17 00:00:00 2001
From: Yi Zhao <yi.zhao@windriver.com>
Date: Tue, 11 Jul 2023 16:53:46 +0800
Subject: [PATCH] Do not build external gtest
We don't need to build external gtest since we already depend on
googletest.
Upstream-Status: Inappropriate [embedded specific]
Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
---
CMakeLists.txt | 30 ++----------
test/network_tests/CMakeLists.txt | 80 -------------------------------
2 files changed, 3 insertions(+), 107 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e7a92ec6..f6c680d4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -18,14 +18,6 @@ set (VSOMEIP_VERSION ${VSOMEIP_MAJOR_VERSION}.${VSOMEIP_MINOR_VERSION}.${VSOMEIP
set (PACKAGE_VERSION ${VSOMEIP_VERSION}) # Used in documentation/doxygen.in
set (CMAKE_VERBOSE_MAKEFILE off)
-if (NOT GTEST_ROOT)
- if (DEFINED ENV{GTEST_ROOT})
- set(GTEST_ROOT $ENV{GTEST_ROOT})
- else()
- set(GTEST_ROOT "n/a" CACHE STRING "Path to root folder of googletest. Must be set for building the tests.")
- endif()
-endif()
-
###################################################################################################
# see http://www.cmake.org/Wiki/CMake/Tutorials/How_to_create_a_ProjectConfig.cmake_file
###################################################################################################
@@ -630,27 +622,11 @@ find_package(benchmark)
##############################################################################
# google test
-# check for set environment variable
-if(${GTEST_ROOT} STREQUAL "n/a")
- message(STATUS "GTEST_ROOT is not defined. For building the tests the variable
- GTEST_ROOT has to be defined. Tests can not be built.")
- # early exit
- return() # test can not be build -> make commands build_tests and check are not available
-else()
- message(STATUS "GTEST_ROOT is set. gtest root path set to ${GTEST_ROOT}")
+find_package(GTest)
+if (NOT GTest_FOUND)
+ message(WARNING "GTest is not found. Tests can not be built.")
endif()
-# build google test as static library (always) -> therefore deactivate BUILD_SHARED_LIBS in case it is active
-set(BUILD_SHARED_LIBS_AUTOMATIC_OFF 0)
-if ("${BUILD_SHARED_LIBS}" STREQUAL "ON")
- set(BUILD_SHARED_LIBS OFF)
- set(BUILD_SHARED_LIBS_AUTOMATIC_OFF 1)
-endif()
-add_subdirectory(${GTEST_ROOT} ${CMAKE_CURRENT_BINARY_DIR}/gtest EXCLUDE_FROM_ALL)
-if ("${BUILD_SHARED_LIBS_AUTOMATIC_OFF}" STREQUAL "1")
- set(BUILD_SHARED_LIBS ON)
- set(BUILD_SHARED_LIBS_AUTOMATIC_OFF 0)
-endif()
diff --git a/test/network_tests/CMakeLists.txt b/test/network_tests/CMakeLists.txt
index 6a148604..a501b6a7 100644
--- a/test/network_tests/CMakeLists.txt
+++ b/test/network_tests/CMakeLists.txt
@@ -3633,86 +3633,6 @@ if(NOT ${TESTS_BAT})
endif()
-##############################################################################
-# Add for every test a dependency to gtest
-##############################################################################
-
-if(NOT ${TESTS_BAT})
- add_dependencies(${TEST_CONFIGURATION} gtest)
- add_dependencies(${TEST_APPLICATION} gtest)
- add_dependencies(${TEST_APPLICATION_SINGLE_PROCESS_NAME} gtest)
- add_dependencies(${TEST_APPLICATION_AVAILABILITY_NAME} gtest)
- add_dependencies(${TEST_MAGIC_COOKIES_CLIENT} gtest)
- add_dependencies(${TEST_MAGIC_COOKIES_SERVICE} gtest)
- add_dependencies(${TEST_HEADER_FACTORY} gtest)
- add_dependencies(${TEST_HEADER_FACTORY_CLIENT} gtest)
- add_dependencies(${TEST_HEADER_FACTORY_SERVICE} gtest)
- add_dependencies(${TEST_LOCAL_ROUTING_SERVICE} gtest)
- add_dependencies(${TEST_LOCAL_ROUTING_CLIENT} gtest)
- add_dependencies(${TEST_EXTERNAL_LOCAL_ROUTING_SERVICE} gtest)
- add_dependencies(${TEST_PAYLOAD_SERVICE} gtest)
- add_dependencies(${TEST_PAYLOAD_CLIENT} gtest)
- add_dependencies(${TEST_BIG_PAYLOAD_SERVICE} gtest)
- add_dependencies(${TEST_BIG_PAYLOAD_CLIENT} gtest)
- add_dependencies(${TEST_CLIENT_ID_SERVICE} gtest)
- add_dependencies(${TEST_CLIENT_ID_UTILITY} gtest)
- add_dependencies(${TEST_DEBOUNCE_CLIENT} gtest)
- add_dependencies(${TEST_DEBOUNCE_SERVICE} gtest)
- add_dependencies(${TEST_SUBSCRIBE_NOTIFY_SERVICE} gtest)
- add_dependencies(${TEST_SUBSCRIBE_NOTIFY_ONE_EVENT_TWO_EVENTGROUPS_SERVICE} gtest)
- add_dependencies(${TEST_SUBSCRIBE_NOTIFY_ONE_EVENT_TWO_EVENTGROUPS_CLIENT} gtest)
- add_dependencies(${TEST_SUBSCRIBE_NOTIFY_ONE_SERVICE} gtest)
- add_dependencies(${TEST_CPU_LOAD_SERVICE} gtest)
- add_dependencies(${TEST_CPU_LOAD_CLIENT} gtest)
- add_dependencies(${TEST_INITIAL_EVENT_SERVICE} gtest)
- add_dependencies(${TEST_INITIAL_EVENT_CLIENT} gtest)
- add_dependencies(${TEST_INITIAL_EVENT_AVAILABILITY_CHECKER} gtest)
- add_dependencies(${TEST_INITIAL_EVENT_STOP_SERVICE} gtest)
- add_dependencies(${TEST_OFFER_SERVICE} gtest)
- add_dependencies(${TEST_OFFER_CLIENT} gtest)
- add_dependencies(${TEST_OFFER_SERVICE_EXTERNAL} gtest)
- add_dependencies(${TEST_OFFER_EXTERNAL_SD_MESSAGE_SENDER} gtest)
- add_dependencies(${TEST_OFFERED_SERVICES_INFO_CLIENT} gtest)
- add_dependencies(${TEST_OFFERED_SERVICES_INFO_SERVICE} gtest)
- add_dependencies(${TEST_PENDING_SUBSCRIPTION_SERVICE} gtest)
- add_dependencies(${TEST_PENDING_SUBSCRIPTION_CLIENT} gtest)
- add_dependencies(${TEST_MALICIOUS_DATA_SERVICE} gtest)
- add_dependencies(${TEST_MALICIOUS_DATA_CLIENT} gtest)
- if (${TEST_SECURITY})
- add_dependencies(${TEST_SECURITY_SERVICE} gtest)
- add_dependencies(${TEST_SECURITY_CLIENT} gtest)
- endif()
- add_dependencies(${TEST_E2E_SERVICE} gtest)
- add_dependencies(${TEST_E2E_CLIENT} gtest)
- if (${TEST_E2E_PROFILE_04})
- add_dependencies(${TEST_E2E_PROFILE_04_SERVICE} gtest)
- add_dependencies(${TEST_E2E_PROFILE_04_CLIENT} gtest)
- endif()
- add_dependencies(${TEST_EVENT_SERVICE} gtest)
- add_dependencies(${TEST_EVENT_CLIENT} gtest)
- add_dependencies(${TEST_NPDU_SERVICE_ONE} gtest)
- add_dependencies(${TEST_NPDU_SERVICE_TWO} gtest)
- add_dependencies(${TEST_NPDU_SERVICE_THREE} gtest)
- add_dependencies(${TEST_NPDU_SERVICE_FOUR} gtest)
- add_dependencies(${TEST_NPDU_CLIENT_ONE} gtest)
- add_dependencies(${TEST_NPDU_CLIENT_TWO} gtest)
- add_dependencies(${TEST_NPDU_CLIENT_THREE} gtest)
- add_dependencies(${TEST_NPDU_CLIENT_FOUR} gtest)
- add_dependencies(${TEST_NPDU_DAEMON_CLIENT} gtest)
- add_dependencies(${TEST_NPDU_DAEMON_SERVICE} gtest)
- add_dependencies(${TEST_SOMEIPTP_CLIENT} gtest)
- add_dependencies(${TEST_SOMEIPTP_SERVICE} gtest)
- if(${TEST_SECOND_ADDRESS})
- add_dependencies(${TEST_SECOND_ADDRESS_CLIENT} gtest)
- add_dependencies(${TEST_SECOND_ADDRESS_SERVICE} gtest)
- endif()
- add_dependencies(${TEST_SUSPEND_RESUME_CLIENT} gtest)
- add_dependencies(${TEST_SUSPEND_RESUME_SERVICE} gtest)
-else()
- add_dependencies(${TEST_LOCAL_ROUTING_SERVICE} gtest)
- add_dependencies(${TEST_LOCAL_ROUTING_CLIENT} gtest)
-endif()
-
##############################################################################
# Add tests to the target build_network_tests
##############################################################################
--
2.25.1

View File

@ -0,0 +1,47 @@
From 69805f9c8973a7a4d29297f8d50c29c88f981bee Mon Sep 17 00:00:00 2001
From: Yi Zhao <yi.zhao@windriver.com>
Date: Mon, 17 Jul 2023 14:33:32 +0800
Subject: [PATCH] Do not specify PIE flag explicitly
For nodistro distro, packages are built without PIE because
security_flags.inc is not included by default. But in vsomeip, the PIE
flag is explicitly specified in CMAKE_CXX_FLAGS, which will cause
building with PIE even in nodistro, causing an error when linking the
googletest static library:
TOPDIR/tmp-glibc/work/cortexa53-oe-linux/vsomeip/3.1.20.3-r0/recipe-sysroot-native/usr/bin/aarch64-oe-linux/../../libexec/aarch64-oe-linux/gcc/aarch64-oe-linux/12.2.0/ld:
TOPDIR/tmp-glibc/work/cortexa53-oe-linux/vsomeip/3.1.20.3-r0/recipe-sysroot/usr/lib/libgtest.a(gtest-all.cc.o)(.text+0x4a90):
unresolvable R_AARCH64_ADR_PREL_PG_HI21 relocation against symbol `_ZSt4cerr@@GLIBCXX_3.4'
Remove PIE flag from CMAKE_CXX_FLAGS and only enable PIE flag by
including security_flags.inc.
Upstream-Status: Inappropriate [embedded specific]
Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
---
CMakeLists.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f6c680d4..dce1e701 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -60,12 +60,12 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
# This is only relevant for GCC and causes warnings on Clang
set(EXPORTSYMBOLS "-Wl,-export-dynamic -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/exportmap.gcc")
- set(OS_CXX_FLAGS "${OS_CXX_FLAGS} -pie -Wl,-z,relro,-z,now")
+ set(OS_CXX_FLAGS "${OS_CXX_FLAGS} -Wl,-z,relro,-z,now")
endif()
set(NO_DEPRECATED "")
set(OPTIMIZE "")
- set(OS_CXX_FLAGS "${OS_CXX_FLAGS} -D_GLIBCXX_USE_NANOSLEEP -pthread -O -Wall -Wextra -Wformat -Wformat-security -Wconversion -fexceptions -fstrict-aliasing -fstack-protector-strong -fasynchronous-unwind-tables -fno-omit-frame-pointer -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Wpedantic -Werror -fPIE")
+ set(OS_CXX_FLAGS "${OS_CXX_FLAGS} -D_GLIBCXX_USE_NANOSLEEP -pthread -O -Wall -Wextra -Wformat -Wformat-security -Wconversion -fexceptions -fstrict-aliasing -fstack-protector-strong -fasynchronous-unwind-tables -fno-omit-frame-pointer -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Wpedantic")
# force all use of std::mutex and std::recursive_mutex to use runtime init
# instead of static initialization so mutexes can be hooked to enable PI as needed
--
2.25.1

View File

@ -0,0 +1,72 @@
SUMMARY = "The implementation of SOME/IP"
DESCRIPTION = "The vsomeip stack implements the http://some-ip.com/ \
(Scalable service-Oriented MiddlewarE over IP (SOME/IP)) protocol."
HOMEPAGE = "https://github.com/COVESA/vsomeip"
SECTION = "net"
LICENSE = "MPL-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=9741c346eef56131163e13b9db1241b3"
SRC_URI = "git://github.com/GENIVI/${BPN}.git;branch=master;protocol=https;name=vsomeip \
file://0001-Fix-pkgconfig-dir-for-multilib.patch \
file://0002-Install-example-configuration-files-to-etc-vsomeip.patch \
file://0003-Do-not-build-external-gtest.patch \
file://0004-Do-not-specify-PIE-flag-explicitly.patch \
"
SRCREV = "07464840f503670bc75997b8e926b54734ffa410"
COMPATIBLE_HOST:mips = "null"
COMPATIBLE_HOST:mips64 = "null"
COMPATIBLE_HOST:powerpc = "null"
COMPATIBLE_HOST:libc-musl = 'null'
DEPENDS = "boost dlt-daemon googletest"
S = "${WORKDIR}/git"
inherit cmake pkgconfig
EXTRA_OECMAKE = "-DINSTALL_LIB_DIR:PATH=${baselib} \
-DINSTALL_CMAKE_DIR:PATH=${baselib}/cmake/vsomeip3 \
"
# For vsomeip-test
EXTRA_OECMAKE += "-DTEST_IP_MASTER=10.0.3.1 \
-DTEST_IP_SLAVE=10.0.3.2 \
-DTEST_IP_SLAVE_SECOND=10.0.3.3 \
-DTEST_UID=1000 -DTEST_GID=1000 \
"
RDEPENDS:${PN}-test = "bash lsof"
do_compile:append() {
cmake_runcmake_build --target examples
cmake_runcmake_build --target build_tests
}
do_install:append() {
install -d ${D}/opt/${PN}-test/examples
install -m 0755 ${B}/examples/*-sample ${D}/opt/${PN}-test/examples
install -d ${D}/opt/${PN}-test/examples/routingmanagerd
install -m 0755 ${B}/examples/routingmanagerd/routingmanagerd \
${D}/opt/${PN}-test/examples/routingmanagerd
install -d ${D}/opt/${PN}-test/test/test/common
cp -rf ${S}/test/common/examples_policies \
${D}/opt/${PN}-test/test/test/common/
for d in unit_tests network_tests; do
install -d ${D}/opt/${PN}-test/test/$d
cp -f ${B}/test/$d/*test* ${D}/opt/${PN}-test/test/$d
done
}
PACKAGES += "${PN}-test"
FILES:${PN}-dbg += " \
/opt/${PN}-test/.debug/* \
"
FILES:${PN}-test = " \
/opt/${PN}-test \
"