From 30b2ce037f7c1f6811e439841a1455f6fabf65f5 Mon Sep 17 00:00:00 2001 From: Christopher McArthur Date: Tue, 13 Sep 2022 12:56:06 -0600 Subject: [PATCH 1/7] rapidjson: Conan 2.0 migration --- recipes/rapidjson/all/conanfile.py | 24 ++++++++++--------- .../rapidjson/all/test_package/conanfile.py | 19 +++++++++++---- .../all/test_v1_package/CMakeLists.txt | 10 ++++++++ .../all/test_v1_package/conanfile.py | 17 +++++++++++++ 4 files changed, 54 insertions(+), 16 deletions(-) create mode 100644 recipes/rapidjson/all/test_v1_package/CMakeLists.txt create mode 100644 recipes/rapidjson/all/test_v1_package/conanfile.py diff --git a/recipes/rapidjson/all/conanfile.py b/recipes/rapidjson/all/conanfile.py index 828301cb40897..dad0f340323d6 100644 --- a/recipes/rapidjson/all/conanfile.py +++ b/recipes/rapidjson/all/conanfile.py @@ -1,32 +1,34 @@ -from conans import ConanFile, tools +from conan import ConanFile +from conan.tools.files import get, copy import os -required_conan_version = ">=1.33.0" +required_conan_version = ">=1.46.0" class RapidjsonConan(ConanFile): name = "rapidjson" description = "A fast JSON parser/generator for C++ with both SAX/DOM style API" - topics = ("conan", "rapidjson", "json", "parser", "generator") + topics = ("rapidjson", "json", "parser", "generator") url = "https://github.com/conan-io/conan-center-index" homepage = "http://rapidjson.org" license = "MIT" no_copy_source = True - @property - def _source_subfolder(self): - return "source_subfolder" - def source(self): - tools.get(**self.conan_data["sources"][self.version], strip_root=True, destination=self._source_subfolder) + get(self, **self.conan_data["sources"][self.version], strip_root=True, + destination=self.source_folder) def package(self): - self.copy(pattern="license.txt", dst="licenses", src=self._source_subfolder) - self.copy(pattern="*", dst="include", src=os.path.join(self._source_subfolder, "include")) + copy(self, pattern="license.txt", src=self.source_folder, dst=os.path.join(self.package_folder, "licenses")) + copy(self, pattern="*", src=os.path.join(self.source_folder, "include"), dst=os.path.join(self.package_folder, "include")) def package_id(self): - self.info.header_only() + self.info.clear() def package_info(self): + self.cpp_info.set_property("cmake_file_name", "RapidJSON") + self.cpp_info.set_property("cmake_target_name", "RapidJSON::RapidJSON") + + # TODO: to remove in conan v2 once cmake_find_package* generators removed self.cpp_info.names["cmake_find_package"] = "RapidJSON" self.cpp_info.names["cmake_find_package_multi"] = "RapidJSON" diff --git a/recipes/rapidjson/all/test_package/conanfile.py b/recipes/rapidjson/all/test_package/conanfile.py index bd7165a553cf4..c98aa31d6584f 100644 --- a/recipes/rapidjson/all/test_package/conanfile.py +++ b/recipes/rapidjson/all/test_package/conanfile.py @@ -1,10 +1,20 @@ -from conans import ConanFile, CMake, tools import os +from conan import ConanFile +from conan.tools.cmake import CMake +from conan.tools.build import can_run +from conan.tools.cmake import cmake_layout +required_conan_version = ">=1.50.0" class TestPackageConan(ConanFile): settings = "os", "compiler", "build_type", "arch" - generators = "cmake" + generators = "CMakeDeps", "CMakeToolchain", "VirtualRunEnv" + + def requirements(self): + self.requires(self.tested_reference_str) + + def layout(self): + cmake_layout(self) def build(self): cmake = CMake(self) @@ -12,6 +22,5 @@ def build(self): cmake.build() def test(self): - if not tools.cross_building(self.settings): - bin_path = os.path.join("bin", "test_package") - self.run(bin_path, run_environment=True) + if can_run(self): + self.run(os.path.join(self.cpp.build.bindirs[0], "test_package"), env="conanrun") diff --git a/recipes/rapidjson/all/test_v1_package/CMakeLists.txt b/recipes/rapidjson/all/test_v1_package/CMakeLists.txt new file mode 100644 index 0000000000000..dd0aaef3b0ca2 --- /dev/null +++ b/recipes/rapidjson/all/test_v1_package/CMakeLists.txt @@ -0,0 +1,10 @@ +cmake_minimum_required(VERSION 3.1) +project(test_package) + +include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) +conan_basic_setup() + +find_package(RapidJSON CONFIG REQUIRED) + +add_executable(${PROJECT_NAME} ../test_package/test_package.cpp) +target_link_libraries(${PROJECT_NAME} PRIVATE RapidJSON::RapidJSON) diff --git a/recipes/rapidjson/all/test_v1_package/conanfile.py b/recipes/rapidjson/all/test_v1_package/conanfile.py new file mode 100644 index 0000000000000..7e2dfe859bb27 --- /dev/null +++ b/recipes/rapidjson/all/test_v1_package/conanfile.py @@ -0,0 +1,17 @@ +from conans import ConanFile, CMake, tools +import os + + +class TestPackageConan(ConanFile): + settings = "os", "compiler", "build_type", "arch" + generators = "cmake", "cmake_find_package_multi" + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def test(self): + if not tools.cross_building(self.settings): + bin_path = os.path.join("bin", "test_package") + self.run(bin_path, run_environment=True) From bd7ff82bdc15ecf6051206986a743065e4ffc5dc Mon Sep 17 00:00:00 2001 From: Chris Mc Date: Wed, 14 Sep 2022 13:27:07 -0600 Subject: [PATCH 2/7] Apply suggestions from code review Co-authored-by: SpaceIm <30052553+SpaceIm@users.noreply.github.com> Co-authored-by: Uilian Ries --- recipes/rapidjson/all/conanfile.py | 5 +++-- recipes/rapidjson/all/test_package/conanfile.py | 4 ++-- recipes/rapidjson/all/test_v1_package/CMakeLists.txt | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/recipes/rapidjson/all/conanfile.py b/recipes/rapidjson/all/conanfile.py index dad0f340323d6..a1a14b36253b5 100644 --- a/recipes/rapidjson/all/conanfile.py +++ b/recipes/rapidjson/all/conanfile.py @@ -2,7 +2,7 @@ from conan.tools.files import get, copy import os -required_conan_version = ">=1.46.0" +required_conan_version = ">=1.50.0" class RapidjsonConan(ConanFile): @@ -12,6 +12,7 @@ class RapidjsonConan(ConanFile): url = "https://github.com/conan-io/conan-center-index" homepage = "http://rapidjson.org" license = "MIT" + settings = "os", "arch", "compiler", "build_type" no_copy_source = True def source(self): @@ -27,7 +28,7 @@ def package_id(self): def package_info(self): self.cpp_info.set_property("cmake_file_name", "RapidJSON") - self.cpp_info.set_property("cmake_target_name", "RapidJSON::RapidJSON") + self.cpp_info.set_property("cmake_target_name", "rapidjson") # TODO: to remove in conan v2 once cmake_find_package* generators removed self.cpp_info.names["cmake_find_package"] = "RapidJSON" diff --git a/recipes/rapidjson/all/test_package/conanfile.py b/recipes/rapidjson/all/test_package/conanfile.py index c98aa31d6584f..081c97abefb38 100644 --- a/recipes/rapidjson/all/test_package/conanfile.py +++ b/recipes/rapidjson/all/test_package/conanfile.py @@ -1,14 +1,14 @@ import os from conan import ConanFile -from conan.tools.cmake import CMake from conan.tools.build import can_run -from conan.tools.cmake import cmake_layout +from conan.tools.cmake import CMake, cmake_layout required_conan_version = ">=1.50.0" class TestPackageConan(ConanFile): settings = "os", "compiler", "build_type", "arch" generators = "CMakeDeps", "CMakeToolchain", "VirtualRunEnv" + test_type = "explicit" def requirements(self): self.requires(self.tested_reference_str) diff --git a/recipes/rapidjson/all/test_v1_package/CMakeLists.txt b/recipes/rapidjson/all/test_v1_package/CMakeLists.txt index dd0aaef3b0ca2..c461dfcdc82f4 100644 --- a/recipes/rapidjson/all/test_v1_package/CMakeLists.txt +++ b/recipes/rapidjson/all/test_v1_package/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.1) project(test_package) include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) -conan_basic_setup() +conan_basic_setup(TARGETS) find_package(RapidJSON CONFIG REQUIRED) From 000d92763f928ea71bcc1f011a6ab3b9cd9f0aa9 Mon Sep 17 00:00:00 2001 From: Christopher McArthur Date: Wed, 14 Sep 2022 13:30:20 -0600 Subject: [PATCH 3/7] add layout --- recipes/rapidjson/all/conanfile.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/recipes/rapidjson/all/conanfile.py b/recipes/rapidjson/all/conanfile.py index a1a14b36253b5..74b223a8723b7 100644 --- a/recipes/rapidjson/all/conanfile.py +++ b/recipes/rapidjson/all/conanfile.py @@ -1,5 +1,6 @@ from conan import ConanFile from conan.tools.files import get, copy +from conan.tools.layout import basic_layout import os required_conan_version = ">=1.50.0" @@ -15,6 +16,9 @@ class RapidjsonConan(ConanFile): settings = "os", "arch", "compiler", "build_type" no_copy_source = True + def layout(self): + basic_layout(self) + def source(self): get(self, **self.conan_data["sources"][self.version], strip_root=True, destination=self.source_folder) From 4d3d8ea283ae4779ea808f06d96f9c65e5c9cf5f Mon Sep 17 00:00:00 2001 From: Christopher McArthur Date: Wed, 14 Sep 2022 13:30:29 -0600 Subject: [PATCH 4/7] fix v2 target --- recipes/rapidjson/all/test_package/CMakeLists.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/recipes/rapidjson/all/test_package/CMakeLists.txt b/recipes/rapidjson/all/test_package/CMakeLists.txt index 196188113685c..31ee604c1e3f6 100644 --- a/recipes/rapidjson/all/test_package/CMakeLists.txt +++ b/recipes/rapidjson/all/test_package/CMakeLists.txt @@ -1,8 +1,7 @@ cmake_minimum_required(VERSION 3.1) project(test_package) -include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) -conan_basic_setup() +find_package(RapidJSON CONFIG REQUIRED) add_executable(${PROJECT_NAME} test_package.cpp) -target_link_libraries(${PROJECT_NAME} ${CONAN_LIBS}) +target_link_libraries(${PROJECT_NAME} PRIVATE rapidjson) From f22d3f42b69fe4100a536c09e03a79ffb9040162 Mon Sep 17 00:00:00 2001 From: Chris Mc Date: Wed, 14 Sep 2022 13:31:08 -0600 Subject: [PATCH 5/7] Apply suggestions from code review Co-authored-by: Uilian Ries --- recipes/rapidjson/all/test_v1_package/conanfile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/rapidjson/all/test_v1_package/conanfile.py b/recipes/rapidjson/all/test_v1_package/conanfile.py index 7e2dfe859bb27..49a3a66ea5bad 100644 --- a/recipes/rapidjson/all/test_v1_package/conanfile.py +++ b/recipes/rapidjson/all/test_v1_package/conanfile.py @@ -12,6 +12,6 @@ def build(self): cmake.build() def test(self): - if not tools.cross_building(self.settings): + if not tools.cross_building(self): bin_path = os.path.join("bin", "test_package") self.run(bin_path, run_environment=True) From dbc90eb395e6682295136043402bebd1e41751c5 Mon Sep 17 00:00:00 2001 From: Christopher McArthur Date: Wed, 14 Sep 2022 15:47:08 -0600 Subject: [PATCH 6/7] Add cci.20220822 since it provides improved better allocators --- recipes/rapidjson/all/conandata.yml | 10 +++++++--- recipes/rapidjson/all/test_package/CMakeLists.txt | 3 ++- recipes/rapidjson/all/test_v1_package/CMakeLists.txt | 3 ++- recipes/rapidjson/config.yml | 4 +++- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/recipes/rapidjson/all/conandata.yml b/recipes/rapidjson/all/conandata.yml index 55339d9202d0f..dd7649f2b814f 100644 --- a/recipes/rapidjson/all/conandata.yml +++ b/recipes/rapidjson/all/conandata.yml @@ -2,9 +2,13 @@ sources: "1.1.0": url: "https://github.com/Tencent/rapidjson/archive/v1.1.0.tar.gz" sha256: bf7ced29704a1e696fbccf2a2b4ea068e7774fa37f6d7dd4039d0787f8bed98e - "cci.20200410": - url: "https://github.com/Tencent/rapidjson/archive/8f4c021fa2f1e001d2376095928fc0532adf2ae6.zip" - sha256: e6fc99c7df7f29995838a764dd68df87b71db360f7727ace467b21b82c85efda + # More recent unofficial releases based on commits + "cci.20220822": + url: "https://github.com/Tencent/rapidjson/archive/06d58b9e848c650114556a23294d0b6440078c61.tar.gz" + sha256: 30d28bbe0bfff9d8dc5d3cf62799b6ee550499cc1520e44bdece81e002480d19 "cci.20211112": url: "https://github.com/Tencent/rapidjson/archive/0d4517f15a8d7167ba9ae67f3f22a559ca841e3b.tar.gz" sha256: 3697fdcea30dc7c2b2bb68d2521a6b8793f4d3269de751eed2c5fd477ff329ce + "cci.20200410": + url: "https://github.com/Tencent/rapidjson/archive/8f4c021fa2f1e001d2376095928fc0532adf2ae6.zip" + sha256: e6fc99c7df7f29995838a764dd68df87b71db360f7727ace467b21b82c85efda diff --git a/recipes/rapidjson/all/test_package/CMakeLists.txt b/recipes/rapidjson/all/test_package/CMakeLists.txt index 31ee604c1e3f6..30b669a758f42 100644 --- a/recipes/rapidjson/all/test_package/CMakeLists.txt +++ b/recipes/rapidjson/all/test_package/CMakeLists.txt @@ -1,7 +1,8 @@ -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.8) project(test_package) find_package(RapidJSON CONFIG REQUIRED) add_executable(${PROJECT_NAME} test_package.cpp) target_link_libraries(${PROJECT_NAME} PRIVATE rapidjson) +target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_11) diff --git a/recipes/rapidjson/all/test_v1_package/CMakeLists.txt b/recipes/rapidjson/all/test_v1_package/CMakeLists.txt index c461dfcdc82f4..a694a0d382f57 100644 --- a/recipes/rapidjson/all/test_v1_package/CMakeLists.txt +++ b/recipes/rapidjson/all/test_v1_package/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.8) project(test_package) include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) @@ -8,3 +8,4 @@ find_package(RapidJSON CONFIG REQUIRED) add_executable(${PROJECT_NAME} ../test_package/test_package.cpp) target_link_libraries(${PROJECT_NAME} PRIVATE RapidJSON::RapidJSON) +target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_11) diff --git a/recipes/rapidjson/config.yml b/recipes/rapidjson/config.yml index 1ef1c1e46ed25..82e5350012d0b 100644 --- a/recipes/rapidjson/config.yml +++ b/recipes/rapidjson/config.yml @@ -1,7 +1,9 @@ versions: "1.1.0": folder: "all" - "cci.20200410": + "cci.20220822": folder: "all" "cci.20211112": folder: "all" + "cci.20200410": + folder: "all" From 03011532cfdf9957419db47d4ccfd6d4e8f4437e Mon Sep 17 00:00:00 2001 From: Chris Mc Date: Wed, 14 Sep 2022 16:24:23 -0600 Subject: [PATCH 7/7] Update recipes/rapidjson/all/conanfile.py linter --- recipes/rapidjson/all/conanfile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/rapidjson/all/conanfile.py b/recipes/rapidjson/all/conanfile.py index 74b223a8723b7..01002651291b6 100644 --- a/recipes/rapidjson/all/conanfile.py +++ b/recipes/rapidjson/all/conanfile.py @@ -20,7 +20,7 @@ def layout(self): basic_layout(self) def source(self): - get(self, **self.conan_data["sources"][self.version], strip_root=True, + get(self, **self.conan_data["sources"][self.version], strip_root=True, destination=self.source_folder) def package(self):