@@ -127,6 +127,7 @@ mkdir -p "${RECIPE_DIR}"
127127# Generate conanfile.py for conan-center-index
128128cat > " ${RECIPE_DIR} /conanfile.py" << EOF
129129from conan import ConanFile
130+ from conan.errors import ConanInvalidConfiguration
130131from conan.tools.cmake import CMake, CMakeDeps, CMakeToolchain, cmake_layout
131132from conan.tools.files import get
132133import os
@@ -159,6 +160,40 @@ class InfluxdbCppRestConan(ConanFile):
159160 if self.options.shared:
160161 self.options["cpprestsdk"].shared = True
161162
163+ def validate(self):
164+ # std::format requires:
165+ # - GCC 13+ (not available in GCC 11-12)
166+ # - Clang 14+
167+ # - MSVC 19.29+ (VS 2019 16.10+)
168+ if self.settings.compiler == "gcc":
169+ # Extract major version number for comparison
170+ gcc_version = str(self.settings.compiler.version)
171+ gcc_major = int(gcc_version.split('.')[0])
172+ if gcc_major < 13:
173+ raise ConanInvalidConfiguration(
174+ f"influxdb-cpp-rest requires GCC 13+ for std::format support. "
175+ f"Current version: {self.settings.compiler.version}"
176+ )
177+ elif self.settings.compiler == "clang":
178+ # Extract major version number for comparison
179+ clang_version = str(self.settings.compiler.version)
180+ clang_major = int(clang_version.split('.')[0])
181+ if clang_major < 14:
182+ raise ConanInvalidConfiguration(
183+ f"influxdb-cpp-rest requires Clang 14+ for std::format support. "
184+ f"Current version: {self.settings.compiler.version}"
185+ )
186+ elif self.settings.compiler == "msvc":
187+ # MSVC version is stored as "191", "192", etc. (19.1 = 191, 19.29 = 1929)
188+ # We need at least 192 (19.29)
189+ msvc_version = str(self.settings.compiler.version)
190+ msvc_numeric = int(msvc_version)
191+ if msvc_numeric < 192:
192+ raise ConanInvalidConfiguration(
193+ f"influxdb-cpp-rest requires MSVC 19.29+ (VS 2019 16.10+) for std::format support. "
194+ f"Current version: {self.settings.compiler.version}"
195+ )
196+
162197 def requirements(self):
163198 self.requires("cpprestsdk/2.10.19")
164199 self.requires("rxcpp/4.1.1")
0 commit comments