apply another (upstream) patch to fix cmake exported files [release 0.7.0-3mamba;Wed Aug 24 2022]

This commit is contained in:
Silvan Calarco 2024-01-05 19:59:51 +01:00
parent c950ce50a7
commit f10a9ba7a3
3 changed files with 116 additions and 30 deletions

View File

@ -1,27 +0,0 @@
From 4f48727b365962e31451cd91027bd797bc7d2ee7 Mon Sep 17 00:00:00 2001
From: Artturin <Artturin@artturin.com>
Date: Tue, 28 Sep 2021 00:11:04 +0300
Subject: [PATCH] yaml-cpp-config.cmake.in: apply patch to fix #774
From https://github.com/jbeder/yaml-cpp/issues/774#issuecomment-909274732
---
yaml-cpp-config.cmake.in | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/yaml-cpp-config.cmake.in b/yaml-cpp-config.cmake.in
index 7b41e3f30..de0981df9 100644
--- a/yaml-cpp-config.cmake.in
+++ b/yaml-cpp-config.cmake.in
@@ -5,10 +5,10 @@
# Compute paths
get_filename_component(YAML_CPP_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
-set(YAML_CPP_INCLUDE_DIR "@CONFIG_INCLUDE_DIRS@")
# Our library dependencies (contains definitions for IMPORTED targets)
include("${YAML_CPP_CMAKE_DIR}/yaml-cpp-targets.cmake")
# These are IMPORTED targets created by yaml-cpp-targets.cmake
-set(YAML_CPP_LIBRARIES "@EXPORT_TARGETS@")
+get_target_property(YAML_CPP_INCLUDE_DIR yaml-cpp INTERFACE_INCLUDE_DIRECTORIES)
+get_target_property(YAML_CPP_LIBRARIES yaml-cpp IMPORTED_LOCATION_RELEASE)

View File

@ -0,0 +1,110 @@
From 4aad2b1666a4742743b04e765a34742512915674 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.
---
CMakeLists.txt | 29 ++++++++++++++++++-----------
yaml-cpp-config.cmake.in | 10 ++++++----
2 files changed, 24 insertions(+), 15 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 564b7c8d1..ccc1964ea 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -133,10 +133,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"
@@ -145,30 +151,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)
diff --git a/yaml-cpp-config.cmake.in b/yaml-cpp-config.cmake.in
index 7b41e3f30..a7ace3dc0 100644
--- 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,6 +1,6 @@
Name: yaml-cpp Name: yaml-cpp
Version: 0.7.0 Version: 0.7.0
Release: 2mamba Release: 3mamba
Summary: A YAML parser and emitter in C++ matching the YAML 1.2 spec Summary: A YAML parser and emitter in C++ matching the YAML 1.2 spec
Group: Development/Tools Group: Development/Tools
Vendor: openmamba Vendor: openmamba
@ -8,7 +8,7 @@ Distribution: openmamba
Packager: Silvan Calarco <silvan.calarco@mambasoft.it> Packager: Silvan Calarco <silvan.calarco@mambasoft.it>
URL: https://github.com/jbeder/yaml-cpp URL: https://github.com/jbeder/yaml-cpp
Source: https://github.com/jbeder/yaml-cpp.git/yaml-cpp-%{version}/yaml-cpp-%{version}.tar.bz2 Source: https://github.com/jbeder/yaml-cpp.git/yaml-cpp-%{version}/yaml-cpp-%{version}.tar.bz2
Patch0: yaml-cpp-0.7.0-fix-broken-cmake-targets.patch Patch0: yaml-cpp-0.7.0-fix-cmake-export-files.patch
License: MIT License: MIT
## AUTOBUILDREQ-BEGIN ## AUTOBUILDREQ-BEGIN
BuildRequires: glibc-devel BuildRequires: glibc-devel
@ -43,7 +43,7 @@ This package contains libraries and header files for developing applications tha
%prep %prep
%setup -q %setup -q
%patch0 -p1 -b .fix-broken-cmake-targets %patch0 -p1 -b .fix-cmake-export-files
%build %build
%cmake -d build \ %cmake -d build \
@ -82,6 +82,9 @@ This package contains libraries and header files for developing applications tha
%{_datadir}/cmake/yaml-cpp/yaml-cpp*.cmake %{_datadir}/cmake/yaml-cpp/yaml-cpp*.cmake
%changelog %changelog
* Wed Aug 24 2022 Silvan Calarco <silvan.calarco@mambasoft.it> 0.7.0-3mamba
- apply another (upstream) patch to fix cmake exported files
* Tue Aug 23 2022 Silvan Calarco <silvan.calarco@mambasoft.it> 0.7.0-2mamba * Tue Aug 23 2022 Silvan Calarco <silvan.calarco@mambasoft.it> 0.7.0-2mamba
- added a patch to fix broken cmake targets - added a patch to fix broken cmake targets