From 6dfad590cc2cdb4b76ed985986b5cca0536491db Mon Sep 17 00:00:00 2001 From: tt4g Date: Sun, 1 Mar 2026 05:47:11 +0900 Subject: [PATCH 1/5] libpqxx: add version 8.0.0 --- recipes/libpqxx/all/conandata.yml | 3 +++ recipes/libpqxx/config.yml | 2 ++ 2 files changed, 5 insertions(+) diff --git a/recipes/libpqxx/all/conandata.yml b/recipes/libpqxx/all/conandata.yml index 6d8238150ae06..449594b86fc00 100644 --- a/recipes/libpqxx/all/conandata.yml +++ b/recipes/libpqxx/all/conandata.yml @@ -1,4 +1,7 @@ sources: + "8.0.0": + url: "https://github.com/jtv/libpqxx/archive/refs/tags/8.0.0.tar.gz" + sha256: "f467c8133b31941324e40eb21f05db0b52e0fcfa070fd1a08490967c1f129977" "7.10.5": url: "https://github.com/jtv/libpqxx/archive/refs/tags/7.10.5.tar.gz" sha256: "aa214df8b98672a43a39b68a37da87af1415a44965f6e484f85ca0eb4f151367" diff --git a/recipes/libpqxx/config.yml b/recipes/libpqxx/config.yml index 05109bde3121c..5477191966c8d 100644 --- a/recipes/libpqxx/config.yml +++ b/recipes/libpqxx/config.yml @@ -1,4 +1,6 @@ versions: + "8.0.0": + folder: all "7.10.5": folder: all "6.4.8": From eebd480a9fc7622106e5139c038edb33119a70f6 Mon Sep 17 00:00:00 2001 From: tt4g Date: Sun, 1 Mar 2026 10:04:15 +0900 Subject: [PATCH 2/5] libpqxx: fix `check_min_cppstd` checks libpqxx 8 requires C++20. --- recipes/libpqxx/all/conanfile.py | 35 ++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/recipes/libpqxx/all/conanfile.py b/recipes/libpqxx/all/conanfile.py index 44d9898ef92f5..5aaedac69fecb 100644 --- a/recipes/libpqxx/all/conanfile.py +++ b/recipes/libpqxx/all/conanfile.py @@ -30,21 +30,39 @@ class LibpqxxConan(ConanFile): @property def _min_cppstd(self): - return 14 if Version(self.version) < "7.0" else "17" + version = Version(self.version) + if version >= "8.0": + return 20 + elif version >= "7.0": + return 17 + else: + return 14 @property def _compilers_minimum_version(self): - if Version(self.version) < "7.0": + version = Version(self.version) + if version >= "8.0": return { - "gcc": "7", + "gcc": "10", + "clang": "11", + # Apple Clang 15 supports C++20, but it has several bugs. + # One such bug causes `std::source_location` to return incorrect + # line numbers when used as a default argument. + # Since libpqxx 8 uses `std::source_location`, builds may + # succeed, but it will not be working correctly. + "apple-clang": "16", + } + elif version >= "7.0": + return { + "gcc": "7" if version < "7.5.0" else "8", "clang": "6", - "apple-clang": "10" + "apple-clang": "10", } else: return { - "gcc": "7" if Version(self.version) < "7.5.0" else "8", + "gcc": "7", "clang": "6", - "apple-clang": "10" + "apple-clang": "10", } @property @@ -72,9 +90,10 @@ def validate(self): if self.settings.compiler.get_safe("cppstd"): check_min_cppstd(self, self._min_cppstd) - if Version(self.version) < "7.0": + version = Version(self.version) + if version < "7.0": check_min_vs(self, 190) - elif Version(self.version) < "7.6": + elif version < "7.6": check_min_vs(self, 191) else: check_min_vs(self, 192) From ac9ce370b7d56621b975d39f519e62347fe78eac Mon Sep 17 00:00:00 2001 From: tt4g Date: Sun, 1 Mar 2026 10:48:45 +0900 Subject: [PATCH 3/5] libpqxx: fix libpqxx 8 configuration checks on Macos 13.3 and earlier Apple Clang does not support Macos 13.3 and earlier when using C++20. --- recipes/libpqxx/all/conanfile.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/recipes/libpqxx/all/conanfile.py b/recipes/libpqxx/all/conanfile.py index 5aaedac69fecb..efa779d50a407 100644 --- a/recipes/libpqxx/all/conanfile.py +++ b/recipes/libpqxx/all/conanfile.py @@ -67,7 +67,9 @@ def _compilers_minimum_version(self): @property def _mac_os_minimum_required_version(self): - return "10.15" + # libpqxx 8 requires C++20, and Apple Clang using C++20 requires Macos + # 13.3 or later. + return "13.3" if Version(self.version) > "8.0" else "10.15" def export_sources(self): export_conandata_patches(self) @@ -112,7 +114,8 @@ def validate(self): 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.") + f"Macos {self._mac_os_minimum_required_version} and earlier cannot be built." + ) def source(self): get(self, **self.conan_data["sources"][self.version], destination=self.source_folder, strip_root=True) From ec12eaeff7f3b82f0bbcd7af8919c6c0ddb975c2 Mon Sep 17 00:00:00 2001 From: tt4g Date: Sun, 1 Mar 2026 15:48:26 +0900 Subject: [PATCH 4/5] libpqxx: fix again libpqxx 8 configuration checks on Macos 13.3 and earlier --- recipes/libpqxx/all/conanfile.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipes/libpqxx/all/conanfile.py b/recipes/libpqxx/all/conanfile.py index efa779d50a407..f8333ba736682 100644 --- a/recipes/libpqxx/all/conanfile.py +++ b/recipes/libpqxx/all/conanfile.py @@ -69,7 +69,7 @@ def _compilers_minimum_version(self): def _mac_os_minimum_required_version(self): # libpqxx 8 requires C++20, and Apple Clang using C++20 requires Macos # 13.3 or later. - return "13.3" if Version(self.version) > "8.0" else "10.15" + return "13.3" if Version(self.version) >= "8.0" else "10.15" def export_sources(self): export_conandata_patches(self) From 2b59860fd2d4a01ce57bf96b0c90496bbd75dcd3 Mon Sep 17 00:00:00 2001 From: tt4g Date: Sun, 1 Mar 2026 16:07:31 +0900 Subject: [PATCH 5/5] libpqxx: fix libpqxx 8 tests on Macos 13.3 and earlier --- recipes/libpqxx/all/test_package/conanfile.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/recipes/libpqxx/all/test_package/conanfile.py b/recipes/libpqxx/all/test_package/conanfile.py index a9fbb7f543162..1508a2939442d 100644 --- a/recipes/libpqxx/all/test_package/conanfile.py +++ b/recipes/libpqxx/all/test_package/conanfile.py @@ -1,19 +1,30 @@ from conan import ConanFile from conan.tools.build import can_run -from conan.tools.cmake import cmake_layout, CMake +from conan.tools.cmake import cmake_layout, CMake, CMakeDeps, CMakeToolchain +from conan.tools.scm import Version import os class TestPackageConan(ConanFile): settings = "os", "arch", "compiler", "build_type" - generators = "CMakeDeps", "CMakeToolchain", "VirtualRunEnv" + generators = "CMakeDeps", "VirtualRunEnv" test_type = "explicit" + @property + def _mac_os_minimum_required_version(self): + version = Version(self.dependencies[self.tested_reference_str].ref.version) + return "13.3" if version >= "8.0" else "10.15" + def requirements(self): self.requires(self.tested_reference_str) def layout(self): cmake_layout(self) + def generate(self): + tc = CMakeToolchain(self) + tc.variables["CMAKE_OSX_DEPLOYMENT_TARGET"] = self._mac_os_minimum_required_version + tc.generate() + def build(self): cmake = CMake(self) cmake.configure()