glog: enable building shared library again

* fix the soversion used by libglog as explained bellow:

The preferred default should IMHO be the same as with 0.3.4 version
which was shared library, but that's easy to add with small bbappend
having:
EXTRA_OECMAKE += "-DBUILD_SHARED_LIBS=ON"

but unfortunately the SONAME in the library changed from:
objdump -x usr/lib/libglog.so.0.0.0 | grep SONAME
  SONAME               libglog.so.0
in 0.3.4 to:
objdump -x usr/lib/libglog.so.0.3.5  | grep SONAME
  SONAME               libglog.so.0.3.5

Which breaks all our prebuilt binaries which now correctly complain that
there isn't libglog.so.0 provider in dependencies:
QA Issue: /usr/lib/libfoo.so.1.2.3 contained in package libfoo requires
libglog.so.0, but no providers found in RDEPENDS_libfoo

Which is quite unfortunate for minor upgrade. Did they really change the
ABI (and expect to change it in all future minor upgrades) or is this
change just unexpected side-effect of using cmake instead of autotools?

It looks the later, because if I build 0.3.5 version with autotools I
get:
objdump -x usr/lib/libglog.so.0.0.0 | grep SONAME
  SONAME               libglog.so.0

and there is patch for SOVERSION here as well:
https://github.com/google/or-tools/blob/master/patches/glog.patch

applied in master:
https://github.com/google/glog/blob/master/CMakeLists.txt#L493
6b6e38a7d5 (diff-af3b638bc2a3e6c650974192a53c7291)

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Martin Jansa 2018-10-15 11:11:42 +00:00 committed by Khem Raj
parent 5559ea533d
commit e6978e60b6
2 changed files with 74 additions and 0 deletions

View File

@ -0,0 +1,71 @@
From 4ea11e0d7c0575316a6ccc07a931164ca29c3d2f Mon Sep 17 00:00:00 2001
From: Corentin Le Molgat <corentinl@google.com>
Date: Mon, 29 Jan 2018 14:59:08 +0100
Subject: [PATCH] Rework CMake glog VERSION management.
- Use of Project version properties instead of custom variables
- fix missmatch between VERSION (build version) and SOVERSION (API version)
src: https://cmake.org/cmake/help/latest/prop_tgt/VERSION.html#prop_tgt:VERSION
Upstream-Status: Backport [https://github.com/google/glog/commit/6b6e38a7d53fe01f42ce34384cf4ba4c50e8cb65]
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
CMakeLists.txt | 23 ++++++++---------------
1 file changed, 8 insertions(+), 15 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7415eab..fb4e408 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,23 +8,16 @@ if (POLICY CMP0063)
cmake_policy (SET CMP0063 NEW)
endif (POLICY CMP0063)
-project (google-glog)
+project(glog VERSION 0.3.5 LANGUAGES C CXX)
enable_testing ()
-set (GLOG_MAJOR_VERSION 0)
-set (GLOG_MINOR_VERSION 3)
-set (GLOG_PATCH_VERSION 5)
-
-set (GLOG_VERSION
- ${GLOG_MAJOR_VERSION}.${GLOG_MINOR_VERSION}.${GLOG_PATCH_VERSION})
-
set (CPACK_PACKAGE_NAME glog)
set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "")
-set (CPACK_PACKAGE_VERSION_MAJOR ${GLOG_MAJOR_VERSION})
-set (CPACK_PACKAGE_VERSION_MINOR ${GLOG_MINOR_VERSION})
-set (CPACK_PACKAGE_VERSION_PATCH ${GLOG_PATCH_VERSION})
-set (CPACK_PACKAGE_VERSION ${GLOG_VERSION})
+set (CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
+set (CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
+set (CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
+set (CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
option (WITH_GFLAGS "Use gflags" ON)
option (WITH_THREADS "Enable multithreading support" ON)
@@ -406,8 +399,8 @@ if (gflags_FOUND)
endif (NOT BUILD_SHARED_LIBS)
endif (gflags_FOUND)
-set_target_properties (glog PROPERTIES VERSION ${GLOG_MAJOR_VERSION})
-set_target_properties (glog PROPERTIES SOVERSION ${GLOG_VERSION})
+set_target_properties (glog PROPERTIES VERSION ${PROJECT_VERSION})
+set_target_properties (glog PROPERTIES SOVERSION ${PROJECT_VERSION_MAJOR})
if (WIN32)
target_compile_definitions (glog PUBLIC GLOG_NO_ABBREVIATED_SEVERITIES)
@@ -570,7 +563,7 @@ configure_package_config_file (glog-config.cmake.in
NO_CHECK_REQUIRED_COMPONENTS_MACRO)
write_basic_package_version_file (glog-config-version.cmake VERSION
- ${GLOG_VERSION} COMPATIBILITY SameMajorVersion)
+ ${PROJECT_VERSION} COMPATIBILITY SameMajorVersion)
export (TARGETS glog NAMESPACE glog:: FILE glog-targets.cmake)
export (PACKAGE glog)
--
2.17.1

View File

@ -11,6 +11,7 @@ DEPENDS = "libunwind"
SRC_URI = " \
git://github.com/google/glog.git;branch=v035 \
file://0001-find-libunwind-during-configure.patch \
file://0001-Rework-CMake-glog-VERSION-management.patch \
"
SRCREV = "a6a166db069520dbbd653c97c2e5b12e08a8bb26"
@ -22,3 +23,5 @@ inherit cmake
RDEPENDS_${PN}-dev = ""
RRECOMMENDS_${PN}-dev = "${PN}-staticdev"
RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
EXTRA_OECMAKE += "-DBUILD_SHARED_LIBS=ON"