summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Jansa <Martin.Jansa@gmail.com>2021-11-18 12:31:46 +0100
committerArmin Kuster <akuster808@gmail.com>2021-11-18 07:34:55 -0800
commitf31b9854b13e46cb74569538a33c36730c00c695 (patch)
treedd249781367814c144de29f9a47e49bd4fd2142b
parentad52a41de8b4b7d619d1376d0a0090ebcfff56da (diff)
downloadmeta-openembedded-f31b9854b13e46cb74569538a33c36730c00c695.tar.gz
sdbus-c++: don't fetch googletest during do_configure
* replace the solution from: https://github.com/openembedded/meta-openembedded/commit/6c74740048a6a8413e10b4f29164a38d85020877 with the one from upstream (branch name would need to be changed in git://github.com/google/googletest.git;protocol=https;branch=master;name=gtest;destsuffix=git/tests/googletest-src anyway and better to use the upstream fix in all branches - dunfell, gatesgarth, hardknott need a similar fix now when master branch is gone) * 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: https://github.com/openembedded/meta-openembedded/commit/b26b66e5da92718b4e99a57fbfaaef9e751c3cfe#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>
-rw-r--r--meta-oe/recipes-core/sdbus-c++/sdbus-c++-0.8.3/0001-Try-to-first-find-googletest-in-the-system-before-do.patch96
-rw-r--r--meta-oe/recipes-core/sdbus-c++/sdbus-c++_0.8.3.bb9
2 files changed, 99 insertions, 6 deletions
diff --git a/meta-oe/recipes-core/sdbus-c++/sdbus-c++-0.8.3/0001-Try-to-first-find-googletest-in-the-system-before-do.patch b/meta-oe/recipes-core/sdbus-c++/sdbus-c++-0.8.3/0001-Try-to-first-find-googletest-in-the-system-before-do.patch
new file mode 100644
index 0000000000..89cb593e60
--- /dev/null
+++ b/meta-oe/recipes-core/sdbus-c++/sdbus-c++-0.8.3/0001-Try-to-first-find-googletest-in-the-system-before-do.patch
@@ -0,0 +1,96 @@
1From b073e1c2b9a8138da83300f598b9a56fc9762b4b Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Stanislav=20Angelovi=C4=8D?= <angelovic.s@gmail.com>
3Date: Mon, 16 Nov 2020 17:05:36 +0100
4Subject: [PATCH] Try to first find googletest in the system before downloading
5 it (#125)
6
7Upstream-Status: Backport [d6fdaca]
8Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
9
10---
11 tests/CMakeLists.txt | 62 ++++++++++++++++++++++++++++----------------
12 1 file changed, 40 insertions(+), 22 deletions(-)
13
14diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
15index 97f7c1a..7ecc327 100644
16--- a/tests/CMakeLists.txt
17+++ b/tests/CMakeLists.txt
18@@ -2,26 +2,44 @@
19 # DOWNLOAD AND BUILD OF GOOGLETEST
20 #-------------------------------
21
22-include(FetchContent)
23-
24-message("Fetching googletest...")
25-FetchContent_Declare(googletest
26- GIT_REPOSITORY https://github.com/google/googletest.git
27- GIT_TAG master
28- GIT_SHALLOW 1
29- UPDATE_COMMAND "")
30-
31-#FetchContent_MakeAvailable(googletest) # Not available in CMake 3.13 :-( Let's do it manually:
32-FetchContent_GetProperties(googletest)
33-if(NOT googletest_POPULATED)
34- FetchContent_Populate(googletest)
35- set(gtest_force_shared_crt ON CACHE INTERNAL "" FORCE)
36- set(BUILD_GMOCK ON CACHE INTERNAL "" FORCE)
37- set(INSTALL_GTEST OFF CACHE INTERNAL "" FORCE)
38- set(BUILD_SHARED_LIBS_BAK ${BUILD_SHARED_LIBS})
39- set(BUILD_SHARED_LIBS OFF)
40- add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR})
41- set(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_BAK})
42+set(GOOGLETEST_VERSION 1.10.0 CACHE STRING "Version of gmock to use")
43+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")
44+
45+find_package(GTest ${GOOGLETEST_VERSION} CONFIG)
46+if (NOT TARGET GTest::gmock)
47+ # Try pkg-config if GTest was not found through CMake config
48+ find_package(PkgConfig)
49+ if (PkgConfig_FOUND)
50+ pkg_check_modules(GMock IMPORTED_TARGET GLOBAL gmock>=${GOOGLETEST_VERSION})
51+ if(TARGET PkgConfig::GMock)
52+ add_library(GTest::gmock ALIAS PkgConfig::GMock)
53+ endif()
54+ endif()
55+ # GTest was not found in the system, build it on our own
56+ if (NOT TARGET GTest::gmock)
57+ include(FetchContent)
58+
59+ message("Fetching googletest...")
60+ FetchContent_Declare(googletest
61+ GIT_REPOSITORY ${GOOGLETEST_GIT_REPO}
62+ GIT_TAG release-${GOOGLETEST_VERSION}
63+ GIT_SHALLOW 1
64+ UPDATE_COMMAND "")
65+
66+ #FetchContent_MakeAvailable(googletest) # Not available in CMake 3.13 :-( Let's do it manually:
67+ FetchContent_GetProperties(googletest)
68+ if(NOT googletest_POPULATED)
69+ FetchContent_Populate(googletest)
70+ set(gtest_force_shared_crt ON CACHE INTERNAL "" FORCE)
71+ set(BUILD_GMOCK ON CACHE INTERNAL "" FORCE)
72+ set(INSTALL_GTEST OFF CACHE INTERNAL "" FORCE)
73+ set(BUILD_SHARED_LIBS_BAK ${BUILD_SHARED_LIBS})
74+ set(BUILD_SHARED_LIBS OFF)
75+ add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR})
76+ set(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_BAK})
77+ add_library(GTest::gmock ALIAS gmock)
78+ endif()
79+ endif()
80 endif()
81
82 #-------------------------------
83@@ -87,11 +105,11 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR})
84
85 add_executable(sdbus-c++-unit-tests ${UNITTESTS_SRCS})
86 target_compile_definitions(sdbus-c++-unit-tests PRIVATE LIBSYSTEMD_VERSION=${LIBSYSTEMD_VERSION})
87-target_link_libraries(sdbus-c++-unit-tests sdbus-c++-objlib gmock gmock_main)
88+target_link_libraries(sdbus-c++-unit-tests sdbus-c++-objlib GTest::gmock)
89
90 add_executable(sdbus-c++-integration-tests ${INTEGRATIONTESTS_SRCS})
91 target_compile_definitions(sdbus-c++-integration-tests PRIVATE LIBSYSTEMD_VERSION=${LIBSYSTEMD_VERSION})
92-target_link_libraries(sdbus-c++-integration-tests sdbus-c++ gmock gmock_main)
93+target_link_libraries(sdbus-c++-integration-tests sdbus-c++ GTest::gmock)
94
95 # Manual performance and stress tests
96 option(ENABLE_PERF_TESTS "Build and install manual performance tests (default OFF)" OFF)
diff --git a/meta-oe/recipes-core/sdbus-c++/sdbus-c++_0.8.3.bb b/meta-oe/recipes-core/sdbus-c++/sdbus-c++_0.8.3.bb
index 12eae5c7d5..35183e8962 100644
--- a/meta-oe/recipes-core/sdbus-c++/sdbus-c++_0.8.3.bb
+++ b/meta-oe/recipes-core/sdbus-c++/sdbus-c++_0.8.3.bb
@@ -12,19 +12,16 @@ PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'with-exte
12 ${@bb.utils.contains('PTEST_ENABLED', '1', 'with-tests', '', d)}" 12 ${@bb.utils.contains('PTEST_ENABLED', '1', 'with-tests', '', d)}"
13PACKAGECONFIG[with-builtin-libsystemd] = ",,sdbus-c++-libsystemd,libcap" 13PACKAGECONFIG[with-builtin-libsystemd] = ",,sdbus-c++-libsystemd,libcap"
14PACKAGECONFIG[with-external-libsystemd] = ",,systemd,libsystemd" 14PACKAGECONFIG[with-external-libsystemd] = ",,systemd,libsystemd"
15PACKAGECONFIG[with-tests] = "-DBUILD_TESTS=ON -DTESTS_INSTALL_PATH=${libdir}/${BPN}/tests,-DBUILD_TESTS=OFF" 15PACKAGECONFIG[with-tests] = "-DBUILD_TESTS=ON -DTESTS_INSTALL_PATH=${libdir}/${BPN}/tests,-DBUILD_TESTS=OFF,googletest gmock"
16 16
17DEPENDS += "expat" 17DEPENDS += "expat"
18 18
19SRCREV = "6e8e5aadb674cccea5bdd55141db5dad887fbacd" 19SRCREV = "6e8e5aadb674cccea5bdd55141db5dad887fbacd"
20SRCREV_gtest = "a3460d1aeeaa43fdf137a6adefef10ba0b59fe4b"
21SRCREV_FORMAT = "default_gtest"
22 20
23SRC_URI = "git://github.com/Kistler-Group/sdbus-cpp.git;protocol=https;branch=master \ 21SRC_URI = "git://github.com/Kistler-Group/sdbus-cpp.git;protocol=https;branch=master \
24 git://github.com/google/googletest.git;protocol=https;branch=master;name=gtest;destsuffix=git/tests/googletest-src \ 22 file://0001-Try-to-first-find-googletest-in-the-system-before-do.patch \
25 file://0001-Do-not-download-gtest-automatically.patch \ 23 file://run-ptest \
26" 24"
27SRC_URI += "file://run-ptest"
28 25
29EXTRA_OECMAKE = "-DBUILD_CODE_GEN=ON \ 26EXTRA_OECMAKE = "-DBUILD_CODE_GEN=ON \
30 -DBUILD_DOC=ON \ 27 -DBUILD_DOC=ON \