[oe] [PATCH][meta-oe] glog: fix libunwind search in components which depend on glog
Martin Jansa
martin.jansa at gmail.com
Wed Dec 5 16:58:10 UTC 2018
This might be actually unnecessary with the:
+list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
which sneaked in, in the "glog: fix installation path"
On Wed, Dec 5, 2018 at 4:00 PM Martin Jansa <martin.jansa at gmail.com> wrote:
> * libunwind is not found when using find_package(glog) from some
> other recipe, without this change it fails with:
>
> CMake Error at
> /OE/build/owpb/webos-ports/tmp-glibc/work/tissot-webos-linux/mtp-server/0.0.3+gitrAUTOINC+6159f1a143-r0/recipe-sysroot-native/usr/share/cmake-3.12/Modules/CMakeFindDependencyMacro.cmake:48
> (find_package):
> By not providing "FindLibunwind.cmake" in CMAKE_MODULE_PATH this project
> has asked CMake to find a package configuration file provided by
> "Libunwind", but CMake did not find one.
>
> Could not find a package configuration file provided by "Libunwind" with
> any of the following names:
>
> LibunwindConfig.cmake
> libunwind-config.cmake
>
> Add the installation prefix of "Libunwind" to CMAKE_PREFIX_PATH or set
> "Libunwind_DIR" to a directory containing one of the above files. If
> "Libunwind" provides a separate development package or SDK, be sure it
> has
> been installed.
> Call Stack (most recent call first):
>
> /OE/build/owpb/webos-ports/tmp-glibc/work/tissot-webos-linux/mtp-server/0.0.3+gitrAUTOINC+6159f1a143-r0/recipe-sysroot/usr/lib/cmake/glog/glog-config.cmake:31
> (find_dependency)
> CMakeLists.txt:17 (find_package)
>
> -- Configuring incomplete, errors occurred!
>
> * this might help others when upgrading to thud which has newer glog:
>
> mtp-server in meta-luneos layer is the only user of glog I could find
> in public layers, it was failing to build with 0.3.5 version of glog
> (and building fine with 0.3.4 glog which was built with autotools
> instead of cmake and provided pkg-config instead of glog-config.cmake)
>
> First part is relatively simple, update CMakeLists.txt to use cmake
> machinery instead of pkg-config:
>
> -pkg_check_modules(GLOG REQUIRED libglog)
> +find_package(glog 0.3.5 REQUIRED)
>
> and update the use of GLOG_* variables, e.g.:
> - ${GLOG_LIBRARIES}
> + glog::glog
>
> interestingly glog::glog passes the glog library with whole path, in my
> case:
> /OE/build/owpb/webos-ports/tmp-glibc/work/tissot-webos-linux/ \
> mtp-server/0.0.3+gitrAUTOINC+6159f1a143-r0/recipe-sysroot/usr/lib/ \
> libglog.so.0.3.5 -lunwind -lunwind-aarch64
> instead of just -lglog -unwind -lunwind-aarch64 which would work as
> well, because sysroot is configured correctly elsewhere.
>
> I'm not sure if this is really expected behavior of glog::glog or
> another bug in glog-config.cmake.
>
> Signed-off-by: Martin Jansa <Martin.Jansa at gmail.com>
> ---
> .../0002-Find-Libunwind-during-configure.patch | 15 ++++++++++++---
> 1 file changed, 12 insertions(+), 3 deletions(-)
>
> diff --git
> a/meta-oe/recipes-support/glog/glog/0002-Find-Libunwind-during-configure.patch
> b/meta-oe/recipes-support/glog/glog/0002-Find-Libunwind-during-configure.patch
> index 15cf67fd2e..4d7642a907 100644
> ---
> a/meta-oe/recipes-support/glog/glog/0002-Find-Libunwind-during-configure.patch
> +++
> b/meta-oe/recipes-support/glog/glog/0002-Find-Libunwind-during-configure.patch
> @@ -109,12 +109,21 @@ diff -uNr a/CMakeLists.txt b/CMakeLists.txt
>
> install (EXPORT glog-targets NAMESPACE glog:: DESTINATION lib/cmake/glog)
> diff -uNr a/glog-config.cmake.in b/glog-config.cmake.in
> ---- a/glog-config.cmake.in 2018-11-20 15:49:07.576278417 +0100
> -+++ b/glog-config.cmake.in 2018-11-20 15:52:32.330418489 +0100
> -@@ -4,4 +4,6 @@
> +--- a/glog-config.cmake.in 2018-11-02 14:02:21.784835854 +0100
> ++++ b/glog-config.cmake.in 2018-11-02 14:03:16.796935594 +0100
> +@@ -4,4 +4,15 @@
>
> @gflags_DEPENDENCY@
>
> ++# Record the state of the CMake module path when this script was
> ++# called so that we can ensure that we leave it in the same state on
> ++# exit as it was on entry, but modify it locally.
> ++set(UNWIND_CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH})
> ++
> ++set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
> +find_dependency (Libunwind)
> ++
> ++# Restore original module path
> ++set(CMAKE_MODULE_PATH "${UNWIND_CMAKE_MODULE_PATH}")
> +
> include ("${CMAKE_CURRENT_LIST_DIR}/glog-targets.cmake")
> --
> 2.17.1
>
>
More information about the Openembedded-devel
mailing list