mirror of
git://git.openembedded.org/meta-openembedded
synced 2026-01-01 13:58:06 +00:00
sdbus-c++: don't fetch googletest during do_configure
* with PTEST_ENABLED it enables with-tests PACKAGECONFIG which
instead of using system googletest gmock, tries to fetch googletest
from github and fails because branch was recently renamed from master to main
| -- Found PkgConfig: /OE/tmp-glibc/work/qemux86-oe-linux/sdbus-c++/0.8.3-r0/recipe-sysroot-native/usr/bin/pkg-config (found version "0.29.2")
| -- Checking for module 'libsystemd>=236'
| -- Found libsystemd, version 249
| -- Building with tests
| Fetching googletest...
| [1/9] Creating directories for 'googletest-populate'
| [1/9] Performing download step (git clone) for 'googletest-populate'
| Cloning into 'googletest-src'...
| fatal: invalid reference: master
| CMake Error at googletest-subbuild/googletest-populate-prefix/tmp/googletest-populate-gitclone.cmake:40 (message):
| Failed to checkout tag: 'master'
|
|
| FAILED: googletest-populate-prefix/src/googletest-populate-stamp/googletest-populate-download
| cd /OE/tmp-glibc/work/qemux86-oe-linux/sdbus-c++/0.8.3-r0/build/_deps && /OE/tmp-glibc/work/qemux86-oe-linux/sdbus-c++/0.8.3-r0/recipe-sysroot-native/usr/bin/cmake -P /OE/tmp-glibc/work/qemux86-oe-linux/sdbus-c++/0.8.3-r0/build/_deps/googletest-subbuild/googletest-populate-prefix/tmp/googletest-populate-gitclone.cmake && /OE/tmp-glibc/work/qemux86-oe-linux/sdbus-c++/0.8.3-r0/recipe-sysroot-native/usr/bin/cmake -E touch /OE/tmp-glibc/work/qemux86-oe-linux/sdbus-c++/0.8.3-r0/build/_deps/googletest-subbuild/googletest-populate-prefix/src/googletest-populate-stamp/googletest-populate-download
| ninja: build stopped: subcommand failed.
|
| CMake Error at /OE/tmp-glibc/work/qemux86-oe-linux/sdbus-c++/0.8.3-r0/recipe-sysroot-native/usr/share/cmake-3.19/Modules/FetchContent.cmake:989 (message):
| Build step for googletest failed: 1
| Call Stack (most recent call first):
| /OE/tmp-glibc/work/qemux86-oe-linux/sdbus-c++/0.8.3-r0/recipe-sysroot-native/usr/share/cmake-3.19/Modules/FetchContent.cmake:1118:EVAL:2 (__FetchContent_directPopulate)
| /OE/tmp-glibc/work/qemux86-oe-linux/sdbus-c++/0.8.3-r0/recipe-sysroot-native/usr/share/cmake-3.19/Modules/FetchContent.cmake:1118 (cmake_language)
| tests/CMakeLists.txt:17 (FetchContent_Populate)
|
|
| -- Configuring incomplete, errors occurred!
* unfortunately this backported patch fixes the fetching failure, because
it uses release-${GOOGLETEST_VERSION} tag instead of now non-existent
master branch, but is not enough to prevent fetching from github during
do_configure:
-- Building with tests
-- Could NOT find GTest (missing: GTest_DIR)
-- Checking for module 'gmock>=1.10.0'
-- No package 'gmock' found
Fetching googletest...
we also need to add googletest dependency to with-tests PACKAGECONFIG was fixed in meta-oe/master with the upgrade to 1.0.0:
b26b66e5da (diff-48a847e7323703994fd2ce0fcb731ff860fa955a77cdfe39d71a9cc84a042c06L15)
then it's ok and not fetching:
-- Building with tests
-- Looking for pthread.h
-- Looking for pthread.h - found
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Armin Kuster <akuster808@gmail.com>
This commit is contained in:
parent
c618e90cda
commit
d9717dea53
|
|
@ -0,0 +1,96 @@
|
|||
From b073e1c2b9a8138da83300f598b9a56fc9762b4b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Stanislav=20Angelovi=C4=8D?= <angelovic.s@gmail.com>
|
||||
Date: Mon, 16 Nov 2020 17:05:36 +0100
|
||||
Subject: [PATCH] Try to first find googletest in the system before downloading
|
||||
it (#125)
|
||||
|
||||
Upstream-Status: Backport [d6fdaca]
|
||||
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
|
||||
|
||||
---
|
||||
tests/CMakeLists.txt | 62 ++++++++++++++++++++++++++++----------------
|
||||
1 file changed, 40 insertions(+), 22 deletions(-)
|
||||
|
||||
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
|
||||
index 97f7c1a..7ecc327 100644
|
||||
--- a/tests/CMakeLists.txt
|
||||
+++ b/tests/CMakeLists.txt
|
||||
@@ -2,26 +2,44 @@
|
||||
# DOWNLOAD AND BUILD OF GOOGLETEST
|
||||
#-------------------------------
|
||||
|
||||
-include(FetchContent)
|
||||
-
|
||||
-message("Fetching googletest...")
|
||||
-FetchContent_Declare(googletest
|
||||
- GIT_REPOSITORY https://github.com/google/googletest.git
|
||||
- GIT_TAG master
|
||||
- GIT_SHALLOW 1
|
||||
- UPDATE_COMMAND "")
|
||||
-
|
||||
-#FetchContent_MakeAvailable(googletest) # Not available in CMake 3.13 :-( Let's do it manually:
|
||||
-FetchContent_GetProperties(googletest)
|
||||
-if(NOT googletest_POPULATED)
|
||||
- FetchContent_Populate(googletest)
|
||||
- set(gtest_force_shared_crt ON CACHE INTERNAL "" FORCE)
|
||||
- set(BUILD_GMOCK ON CACHE INTERNAL "" FORCE)
|
||||
- set(INSTALL_GTEST OFF CACHE INTERNAL "" FORCE)
|
||||
- set(BUILD_SHARED_LIBS_BAK ${BUILD_SHARED_LIBS})
|
||||
- set(BUILD_SHARED_LIBS OFF)
|
||||
- add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR})
|
||||
- set(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_BAK})
|
||||
+set(GOOGLETEST_VERSION 1.10.0 CACHE STRING "Version of gmock to use")
|
||||
+set(GOOGLETEST_GIT_REPO "https://github.com/google/googletest.git" CACHE STRING "A git repo to clone and build googletest from if gmock is not found in the system")
|
||||
+
|
||||
+find_package(GTest ${GOOGLETEST_VERSION} CONFIG)
|
||||
+if (NOT TARGET GTest::gmock)
|
||||
+ # Try pkg-config if GTest was not found through CMake config
|
||||
+ find_package(PkgConfig)
|
||||
+ if (PkgConfig_FOUND)
|
||||
+ pkg_check_modules(GMock IMPORTED_TARGET GLOBAL gmock>=${GOOGLETEST_VERSION})
|
||||
+ if(TARGET PkgConfig::GMock)
|
||||
+ add_library(GTest::gmock ALIAS PkgConfig::GMock)
|
||||
+ endif()
|
||||
+ endif()
|
||||
+ # GTest was not found in the system, build it on our own
|
||||
+ if (NOT TARGET GTest::gmock)
|
||||
+ include(FetchContent)
|
||||
+
|
||||
+ message("Fetching googletest...")
|
||||
+ FetchContent_Declare(googletest
|
||||
+ GIT_REPOSITORY ${GOOGLETEST_GIT_REPO}
|
||||
+ GIT_TAG release-${GOOGLETEST_VERSION}
|
||||
+ GIT_SHALLOW 1
|
||||
+ UPDATE_COMMAND "")
|
||||
+
|
||||
+ #FetchContent_MakeAvailable(googletest) # Not available in CMake 3.13 :-( Let's do it manually:
|
||||
+ FetchContent_GetProperties(googletest)
|
||||
+ if(NOT googletest_POPULATED)
|
||||
+ FetchContent_Populate(googletest)
|
||||
+ set(gtest_force_shared_crt ON CACHE INTERNAL "" FORCE)
|
||||
+ set(BUILD_GMOCK ON CACHE INTERNAL "" FORCE)
|
||||
+ set(INSTALL_GTEST OFF CACHE INTERNAL "" FORCE)
|
||||
+ set(BUILD_SHARED_LIBS_BAK ${BUILD_SHARED_LIBS})
|
||||
+ set(BUILD_SHARED_LIBS OFF)
|
||||
+ add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR})
|
||||
+ set(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_BAK})
|
||||
+ add_library(GTest::gmock ALIAS gmock)
|
||||
+ endif()
|
||||
+ endif()
|
||||
endif()
|
||||
|
||||
#-------------------------------
|
||||
@@ -87,11 +105,11 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
add_executable(sdbus-c++-unit-tests ${UNITTESTS_SRCS})
|
||||
target_compile_definitions(sdbus-c++-unit-tests PRIVATE LIBSYSTEMD_VERSION=${LIBSYSTEMD_VERSION})
|
||||
-target_link_libraries(sdbus-c++-unit-tests sdbus-c++-objlib gmock gmock_main)
|
||||
+target_link_libraries(sdbus-c++-unit-tests sdbus-c++-objlib GTest::gmock)
|
||||
|
||||
add_executable(sdbus-c++-integration-tests ${INTEGRATIONTESTS_SRCS})
|
||||
target_compile_definitions(sdbus-c++-integration-tests PRIVATE LIBSYSTEMD_VERSION=${LIBSYSTEMD_VERSION})
|
||||
-target_link_libraries(sdbus-c++-integration-tests sdbus-c++ gmock gmock_main)
|
||||
+target_link_libraries(sdbus-c++-integration-tests sdbus-c++ GTest::gmock)
|
||||
|
||||
# Manual performance and stress tests
|
||||
option(ENABLE_PERF_TESTS "Build and install manual performance tests (default OFF)" OFF)
|
||||
|
|
@ -12,13 +12,16 @@ PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'with-exte
|
|||
${@bb.utils.contains('PTEST_ENABLED', '1', 'with-tests', '', d)}"
|
||||
PACKAGECONFIG[with-builtin-libsystemd] = ",,sdbus-c++-libsystemd,libcap"
|
||||
PACKAGECONFIG[with-external-libsystemd] = ",,systemd,libsystemd"
|
||||
PACKAGECONFIG[with-tests] = "-DBUILD_TESTS=ON -DTESTS_INSTALL_PATH=${libdir}/${BPN}/tests,-DBUILD_TESTS=OFF"
|
||||
PACKAGECONFIG[with-tests] = "-DBUILD_TESTS=ON -DTESTS_INSTALL_PATH=${libdir}/${BPN}/tests,-DBUILD_TESTS=OFF,googletest gmock"
|
||||
|
||||
DEPENDS += "expat"
|
||||
|
||||
SRCREV = "3a4f343fb924650e7639660efa5f143961162044"
|
||||
SRC_URI = "git://github.com/Kistler-Group/sdbus-cpp.git;protocol=https;branch=master"
|
||||
SRC_URI += "file://run-ptest"
|
||||
|
||||
SRC_URI = "git://github.com/Kistler-Group/sdbus-cpp.git;protocol=https;branch=master \
|
||||
file://0001-Try-to-first-find-googletest-in-the-system-before-do.patch \
|
||||
file://run-ptest \
|
||||
"
|
||||
|
||||
EXTRA_OECMAKE = "-DBUILD_CODE_GEN=ON \
|
||||
-DBUILD_DOC=ON \
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user