dev-cpp/yaml-cpp: update EAPI 7 -> 8, fix installed .pc & CMake files

Closes: https://bugs.gentoo.org/867955
Signed-off-by: Azamat H. Hackimov <azamat.hackimov@gmail.com>
Closes: https://github.com/gentoo/gentoo/pull/27302
Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
Azamat H. Hackimov
2022-09-17 12:31:33 +03:00
committed by Sam James
parent 4df3594af6
commit 9614b28e55
4 changed files with 172 additions and 6 deletions

View File

@@ -0,0 +1,101 @@
From d5d68286cdd983f99f88b6141a3c34d3bf633d98 Mon Sep 17 00:00:00 2001
From: Felix Schwitzer <flx107809@gmail.com>
Date: Fri, 1 Apr 2022 05:26:47 +0200
Subject: [PATCH] Fix CMake export files (#1077)
After configuring the file `yaml-cpp-config.cmake.in`, the result ends up with
empty variables. (see also the discussion in #774).
Rework this file and the call to `configure_package_config_file` according the
cmake documentation
(https://cmake.org/cmake/help/v3.22/module/CMakePackageConfigHelpers.html?highlight=configure_package_config#command:configure_package_config_file)
to overcome this issue and allow a simple `find_package` after install.
As there was some discussion about the place where to install the
`yaml-cpp-config.cmake` file, e.g. #1055, factor out the install location into
an extra variable to make it easier changing this location in the future.
Also untabify CMakeLists.txt in some places to align with the other code parts in this file.
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -127,10 +127,16 @@ set_target_properties(yaml-cpp PROPERTIES
PROJECT_LABEL "yaml-cpp ${yaml-cpp-label-postfix}"
DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}")
+# FIXME(felix2012): A more common place for the cmake export would be
+# `CMAKE_INSTALL_LIBDIR`, as e.g. done in ubuntu or in this project for GTest
+set(CONFIG_EXPORT_DIR "${CMAKE_INSTALL_DATADIR}/cmake/yaml-cpp")
+set(EXPORT_TARGETS yaml-cpp)
configure_package_config_file(
"${PROJECT_SOURCE_DIR}/yaml-cpp-config.cmake.in"
"${PROJECT_BINARY_DIR}/yaml-cpp-config.cmake"
- INSTALL_DESTINATION "${CMAKE_INSTALL_DATADIR}/cmake/yaml-cpp")
+ INSTALL_DESTINATION "${CONFIG_EXPORT_DIR}"
+ PATH_VARS CMAKE_INSTALL_INCLUDEDIR CONFIG_EXPORT_DIR)
+unset(EXPORT_TARGETS)
write_basic_package_version_file(
"${PROJECT_BINARY_DIR}/yaml-cpp-config-version.cmake"
@@ -139,30 +145,31 @@ write_basic_package_version_file(
configure_file(yaml-cpp.pc.in yaml-cpp.pc @ONLY)
if (YAML_CPP_INSTALL)
- install(TARGETS yaml-cpp
+ install(TARGETS yaml-cpp
EXPORT yaml-cpp-targets
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
- install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/
+ install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
- FILES_MATCHING PATTERN "*.h")
+ FILES_MATCHING PATTERN "*.h")
install(EXPORT yaml-cpp-targets
- DESTINATION "${CMAKE_INSTALL_DATADIR}/cmake/yaml-cpp")
- install(FILES
- "${PROJECT_BINARY_DIR}/yaml-cpp-config.cmake"
- "${PROJECT_BINARY_DIR}/yaml-cpp-config-version.cmake"
- DESTINATION "${CMAKE_INSTALL_DATADIR}/cmake/yaml-cpp")
+ DESTINATION "${CONFIG_EXPORT_DIR}")
+ install(FILES
+ "${PROJECT_BINARY_DIR}/yaml-cpp-config.cmake"
+ "${PROJECT_BINARY_DIR}/yaml-cpp-config-version.cmake"
+ DESTINATION "${CONFIG_EXPORT_DIR}")
install(FILES "${PROJECT_BINARY_DIR}/yaml-cpp.pc"
DESTINATION ${CMAKE_INSTALL_DATADIR}/pkgconfig)
endif()
+unset(CONFIG_EXPORT_DIR)
if(YAML_CPP_BUILD_TESTS)
- add_subdirectory(test)
+ add_subdirectory(test)
endif()
if(YAML_CPP_BUILD_TOOLS)
- add_subdirectory(util)
+ add_subdirectory(util)
endif()
if (YAML_CPP_CLANG_FORMAT_EXE)
--- a/yaml-cpp-config.cmake.in
+++ b/yaml-cpp-config.cmake.in
@@ -3,12 +3,14 @@
# YAML_CPP_INCLUDE_DIR - include directory
# YAML_CPP_LIBRARIES - libraries to link against
-# Compute paths
-get_filename_component(YAML_CPP_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
-set(YAML_CPP_INCLUDE_DIR "@CONFIG_INCLUDE_DIRS@")
+@PACKAGE_INIT@
+
+set_and_check(YAML_CPP_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@")
# Our library dependencies (contains definitions for IMPORTED targets)
-include("${YAML_CPP_CMAKE_DIR}/yaml-cpp-targets.cmake")
+include(@PACKAGE_CONFIG_EXPORT_DIR@/yaml-cpp-targets.cmake)
# These are IMPORTED targets created by yaml-cpp-targets.cmake
set(YAML_CPP_LIBRARIES "@EXPORT_TARGETS@")
+
+check_required_components(@EXPORT_TARGETS@)

View File

@@ -1,8 +1,11 @@
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 5ebc1a6..f02c2bb 100644
From 30fbefe6102da12e8d4d132aa4af2e24bfda9bfb Mon Sep 17 00:00:00 2001
From: "Azamat H. Hackimov" <azamat.hackimov@gmail.com>
Date: Sat, 17 Sep 2022 12:25:24 +0300
Subject: [PATCH] Use external gtest dependency
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -1,13 +1,10 @@
@@ -1,15 +1,10 @@
find_package(Threads REQUIRED)
+find_package(GTest REQUIRED CONFIG)
@@ -14,10 +17,12 @@ index 5ebc1a6..f02c2bb 100644
- "${CMAKE_CURRENT_SOURCE_DIR}/gtest-1.10.0"
- "${CMAKE_CURRENT_BINARY_DIR}/prefix")
-
include_directories(SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/gtest-1.10.0/googletest/include")
-include_directories(SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/gtest-1.10.0/googletest/include")
-
set(test-new-api-pattern "new-api/*.cpp")
@@ -38,7 +35,7 @@ target_link_libraries(yaml-cpp-tests
set(test-source-pattern "*.cpp" "integration/*.cpp" "node/*.cpp")
if (CMAKE_VERSION VERSION_GREATER 3.11)
@@ -38,7 +33,7 @@ target_link_libraries(yaml-cpp-tests
PRIVATE
Threads::Threads
yaml-cpp

View File

@@ -0,0 +1,25 @@
From 4f5b5ba19ece906252cfc90b7cd51035e21c7118 Mon Sep 17 00:00:00 2001
From: "Azamat H. Hackimov" <azamat.hackimov@gmail.com>
Date: Sat, 17 Sep 2022 12:07:46 +0300
Subject: [PATCH] Fix pkg-config file install destination
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -129,7 +129,7 @@ set_target_properties(yaml-cpp PROPERTIES
# FIXME(felix2012): A more common place for the cmake export would be
# `CMAKE_INSTALL_LIBDIR`, as e.g. done in ubuntu or in this project for GTest
-set(CONFIG_EXPORT_DIR "${CMAKE_INSTALL_DATADIR}/cmake/yaml-cpp")
+set(CONFIG_EXPORT_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/yaml-cpp")
set(EXPORT_TARGETS yaml-cpp)
configure_package_config_file(
"${PROJECT_SOURCE_DIR}/yaml-cpp-config.cmake.in"
@@ -160,7 +160,7 @@ if (YAML_CPP_INSTALL)
"${PROJECT_BINARY_DIR}/yaml-cpp-config-version.cmake"
DESTINATION "${CONFIG_EXPORT_DIR}")
install(FILES "${PROJECT_BINARY_DIR}/yaml-cpp.pc"
- DESTINATION ${CMAKE_INSTALL_DATADIR}/pkgconfig)
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
endif()
unset(CONFIG_EXPORT_DIR)

View File

@@ -0,0 +1,35 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit cmake-multilib
DESCRIPTION="YAML parser and emitter in C++"
HOMEPAGE="https://github.com/jbeder/yaml-cpp"
SRC_URI="https://github.com/jbeder/yaml-cpp/archive/${P}.tar.gz"
S="${WORKDIR}/yaml-cpp-${P}"
LICENSE="MIT"
SLOT="0/0.7"
KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
IUSE="test"
RESTRICT="!test? ( test )"
DEPEND="test? ( dev-cpp/gtest[${MULTILIB_USEDEP}] )"
PATCHES=(
"${FILESDIR}/${P}-gtest.patch"
"${FILESDIR}/${P}-cmake-paths.patch"
"${FILESDIR}/${P}-install-paths.patch"
)
src_configure() {
local mycmakeargs=(
-DYAML_BUILD_SHARED_LIBS=ON
-DYAML_CPP_BUILD_TOOLS=OFF # Don't have install rule
-DYAML_CPP_BUILD_TESTS=$(usex test)
)
cmake-multilib_src_configure
}