[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