Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

libvault: fix import of Version + decrease min Visual Studio Version + many small fixes #19488

Merged
merged 19 commits into from
Dec 27, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 0 additions & 7 deletions recipes/libvault/all/CMakeLists.txt

This file was deleted.

6 changes: 3 additions & 3 deletions recipes/libvault/all/conandata.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ sources:
sha256: 0a42be282ff0aff77b68cb7238014aa762df5c6b62e4d3561878874ca3760489
patches:
"0.52.0":
- patch_file: "patches/fix-cmake-0.51.0.patch"
- patch_file: "patches/0.52.0-0001-fix-cmake.patch"
patch_type: "conan"
patch_description: "use libcurl from conan center"
"0.51.0":
- patch_file: "patches/fix-cmake-0.51.0.patch"
- patch_file: "patches/0.51.0-0001-fix-cmake.patch"
patch_type: "conan"
patch_description: "use libcurl from conan center"
"0.48.0":
- patch_file: "patches/fix-cmake-0.48.0.patch"
- patch_file: "patches/0.48.0-0001-fix-cmake.patch"
patch_type: "conan"
patch_description: "use libcurl from conan center"
67 changes: 35 additions & 32 deletions recipes/libvault/all/conanfile.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
import os

from conan import ConanFile, Version
from conan import ConanFile
from conan.errors import ConanInvalidConfiguration
from conan.tools.apple import is_apple_os
from conan.tools.build import check_min_cppstd
from conan.tools.cmake import CMake, CMakeDeps, CMakeToolchain
from conan.tools.env import VirtualBuildEnv
from conan.tools.files import apply_conandata_patches, copy, get, rmdir
from conan.tools.microsoft import is_msvc, is_msvc_static_runtime
from conan.tools.cmake import CMake, CMakeDeps, CMakeToolchain, cmake_layout
from conan.tools.files import apply_conandata_patches, copy, export_conandata_patches, get, rmdir
from conan.tools.scm import Version

required_conan_version = ">=1.53.0"
required_conan_version = ">=1.54.0"


class LibvaultConan(ConanFile):
Expand All @@ -19,15 +18,24 @@ class LibvaultConan(ConanFile):
homepage = "https://github.com/abedra/libvault"
description = "A C++ library for Hashicorp Vault"
topics = ("vault", "libvault", "secrets", "passwords")
package_type = "library"
settings = "os", "arch", "compiler", "build_type"
exports_sources = ["CMakeLists.txt", "patches/**"]
options = {"shared": [True, False], "fPIC": [True, False]}
default_options = {"shared": False, "fPIC": True}
options = {
"shared": [True, False],
"fPIC": [True, False],
}
default_options = {
"shared": False,
"fPIC": True,
}

@property
def _mac_os_minimum_required_version(self):
return "10.15"

def export_sources(self):
export_conandata_patches(self)

def config_options(self):
if self.settings.os == "Windows":
del self.options.fPIC
Expand All @@ -36,16 +44,20 @@ def configure(self):
if self.options.shared:
self.options.rm_safe("fPIC")

def layout(self):
cmake_layout(self, src_folder="src")

def requirements(self):
self.requires("libcurl/7.86.0")
self.requires("catch2/3.2.0")
# public header VaultClient.h includes curl/curl.h and use several functions
self.requires("libcurl/[>=7.78.0 <9]", transitive_headers=True, transitive_libs=True)

def validate(self):
compiler = str(self.info.settings.compiler)
compiler = str(self.settings.compiler)
compiler_version = Version(self.settings.compiler.version.value)

minimum_compiler_version = {
"Visual Studio": "19",
"Visual Studio": "16",
"msvc": "192",
"gcc": "8",
"clang": "7.0",
"apple-clang": "12",
Expand All @@ -63,7 +75,7 @@ def validate(self):
raise ConanInvalidConfiguration("clang 11 with libstdc++ is not supported due to old libstdc++ missing C++17 support")

if is_apple_os(self):
os_version = self.info.settings.get_safe("os.version")
os_version = self.settings.get_safe("os.version")
if os_version and Version(os_version) < self._mac_os_minimum_required_version:
raise ConanInvalidConfiguration(
"Macos Mojave (10.14) and earlier cannot to be built because C++ standard library too old.")
Expand All @@ -72,28 +84,21 @@ def validate(self):
check_min_cppstd(self, minimum_cpp_standard)

def source(self):
get(self, **self.conan_data["sources"][self.version], destination=self.source_folder, strip_root=True)
get(self, **self.conan_data["sources"][self.version], strip_root=True)

def generate(self):
tc = CMakeToolchain(self)
tc.variables["ENABLE_TEST"] = "OFF"
tc.variables["ENABLE_INTEGRATION_TEST"] = "OFF"
tc.variables["ENABLE_COVERAGE"] = "OFF"
tc.variables["LINK_CURL"] = "OFF"
tc.variables["CMAKE_OSX_DEPLOYMENT_TARGET"] = self._mac_os_minimum_required_version
if is_msvc(self):
tc.variables["USE_MSVC_RUNTIME_LIBRARY_DLL"] = not is_msvc_static_runtime(self)
tc.cache_variables["CMAKE_POLICY_DEFAULT_CMP0077"] = "NEW"
tc.generate()
tc = CMakeDeps(self)
tc.variables["ENABLE_TEST"] = False
tc.variables["ENABLE_INTEGRATION_TEST"] = False
tc.variables["ENABLE_COVERAGE"] = False
tc.generate()
tc = VirtualBuildEnv(self)
tc.generate(scope="build")
deps = CMakeDeps(self)
deps.generate()

def build(self):
apply_conandata_patches(self)
cmake = CMake(self)
cmake.configure(build_script_folder=self.build_folder)
cmake.configure()
cmake.build()

def package(self):
Expand All @@ -105,12 +110,10 @@ def package(self):

def package_info(self):
self.cpp_info.libs = ["vault"]
self.cpp_info.system_libs = ["m"]
if self.settings.os in ["Linux", "FreeBSD"]:
self.cpp_info.system_libs.append("m")
if self.settings.compiler == "gcc" and Version(self.settings.compiler.version).major == "8":
self.cpp_info.system_libs.append("stdc++fs")
# TODO: Remove after Conan 2.0
self.cpp_info.names["cmake_find_package"] = "libvault"
self.cpp_info.names["cmake_find_package_multi"] = "libvault"

self.cpp_info.set_property("pkg_config_name", "vault")
self.cpp_info.set_property("cmake_file_name", "libvault")
Expand Down
42 changes: 42 additions & 0 deletions recipes/libvault/all/patches/0.48.0-0001-fix-cmake.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,10 +1,6 @@
cmake_minimum_required(VERSION 3.12)
project(vault VERSION 0.48.0 DESCRIPTION "Vault library for C++")

-set(CMAKE_CXX_STANDARD 17)
-set(CMAKE_CXX_STANDARD_REQUIRED ON)
-set(CMAKE_CXX_EXTENSIONS OFF)
-set(CMAKE_CXX_FLAGS_DEBUG --coverage)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)

option(ENABLE_TEST "Enable tests?" ON)
@@ -14,12 +10,7 @@ option(LINK_CURL "Link curl library for vault" OFF)
option(BUILD_SHARED_LIBS "Build vault as a shared library" ON)
option(INSTALL "Run install targets" ON)

-find_package(CURL)
-if (CURL_FOUND)
- include_directories(${CURL_INCLUDE_DIR})
-else (CURL_FOUND)
- message(FATAL_ERROR "CURL not found")
-endif (CURL_FOUND)
+find_package(CURL REQUIRED)

include(GNUInstallDirs)
include_directories("${PROJECT_SOURCE_DIR}/lib")
@@ -120,9 +111,11 @@ set_target_properties(vault PROPERTIES

target_include_directories(vault PRIVATE src)

-if(LINK_CURL)
- target_link_libraries(vault curl)
-endif(LINK_CURL)
+target_link_libraries(vault PUBLIC CURL::libcurl)
+target_compile_features(vault PUBLIC cxx_std_17)
AbrilRBS marked this conversation as resolved.
Show resolved Hide resolved
+if(WIN32)
+ set_target_properties(vault PROPERTIES RUNTIME_OUTPUT_NAME "VaultClient")
+endif()

if (ENABLE_COVERAGE)
target_link_libraries(vault gcov)
41 changes: 41 additions & 0 deletions recipes/libvault/all/patches/0.51.0-0001-fix-cmake.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,9 +1,6 @@
cmake_minimum_required(VERSION 3.12)
project(vault VERSION 0.51.0 DESCRIPTION "Vault library for C++")

-set(CMAKE_CXX_STANDARD 17)
-set(CMAKE_CXX_STANDARD_REQUIRED ON)
-set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)

option(ENABLE_TEST "Enable tests?" ON)
@@ -13,12 +10,7 @@ option(LINK_CURL "Link curl library for vault" OFF)
option(BUILD_SHARED_LIBS "Build vault as a shared library" ON)
option(INSTALL "Run install targets" ON)

-find_package(CURL)
-if (CURL_FOUND)
- include_directories(${CURL_INCLUDE_DIR})
-else (CURL_FOUND)
- message(FATAL_ERROR "CURL not found")
-endif (CURL_FOUND)
+find_package(CURL REQUIRED)

include(GNUInstallDirs)
include_directories("${PROJECT_SOURCE_DIR}/lib")
@@ -119,9 +111,11 @@ set_target_properties(vault PROPERTIES

target_include_directories(vault PRIVATE src)

-if(LINK_CURL)
- target_link_libraries(vault curl)
-endif(LINK_CURL)
+target_link_libraries(vault PUBLIC CURL::libcurl)
+target_compile_features(vault PUBLIC cxx_std_17)
+if(WIN32)
+ set_target_properties(vault PROPERTIES RUNTIME_OUTPUT_NAME "VaultClient")
+endif()

if (ENABLE_COVERAGE)
target_link_libraries(vault gcov)
41 changes: 41 additions & 0 deletions recipes/libvault/all/patches/0.52.0-0001-fix-cmake.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,9 +1,6 @@
cmake_minimum_required(VERSION 3.12)
project(vault VERSION 0.52.0 DESCRIPTION "Vault library for C++")

-set(CMAKE_CXX_STANDARD 17)
-set(CMAKE_CXX_STANDARD_REQUIRED ON)
-set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)

option(ENABLE_TEST "Enable tests?" ON)
@@ -13,12 +10,7 @@ option(LINK_CURL "Link curl library for vault" OFF)
option(BUILD_SHARED_LIBS "Build vault as a shared library" ON)
option(INSTALL "Run install targets" ON)

-find_package(CURL)
-if (CURL_FOUND)
- include_directories(${CURL_INCLUDE_DIR})
-else (CURL_FOUND)
- message(FATAL_ERROR "CURL not found")
-endif (CURL_FOUND)
+find_package(CURL REQUIRED)

include(GNUInstallDirs)
include_directories("${PROJECT_SOURCE_DIR}/lib")
@@ -119,9 +111,11 @@ set_target_properties(vault PROPERTIES

target_include_directories(vault PRIVATE src)

-if(LINK_CURL)
- target_link_libraries(vault curl)
-endif(LINK_CURL)
+target_link_libraries(vault PUBLIC CURL::libcurl)
+target_compile_features(vault PUBLIC cxx_std_17)
+if(WIN32)
+ set_target_properties(vault PROPERTIES RUNTIME_OUTPUT_NAME "VaultClient")
+endif()

if (ENABLE_COVERAGE)
target_link_libraries(vault gcov)
63 changes: 0 additions & 63 deletions recipes/libvault/all/patches/fix-cmake-0.48.0.patch

This file was deleted.

Loading