diff --git a/recipes/fmt/all/conanfile.py b/recipes/fmt/all/conanfile.py index 86da321d03862..80324996850fd 100644 --- a/recipes/fmt/all/conanfile.py +++ b/recipes/fmt/all/conanfile.py @@ -4,9 +4,10 @@ from conan.tools.cmake import CMake, CMakeToolchain, cmake_layout from conan.tools.files import apply_conandata_patches, copy, export_conandata_patches, get, rmdir from conan.tools.layout import basic_layout -from conan.tools.build import check_min_cppstd +from conan.tools.build import check_min_cppstd, valid_max_cppstd from conan.tools.scm import Version from conan.tools.microsoft import is_msvc +from conan.errors import ConanInvalidConfiguration required_conan_version = ">=1.53.0" @@ -81,6 +82,14 @@ def package_id(self): def validate(self): if self.settings.get_safe("compiler.cppstd"): check_min_cppstd(self, 11) + if Version(self.version).major in (8, 10, 11) and \ + self.settings.compiler == "clang" and Version(self.settings.compiler.version) >= "20" and \ + not valid_max_cppstd(self, 20): + # INFO: https://github.com/fmtlib/fmt/issues/4177 + # Partially fixed by: https://github.com/fmtlib/fmt/commit/cacc3108c5b74020dba7bf3c6d3a7e58cdc085b2 + # Completely fixed by: https://github.com/fmtlib/fmt/pull/4187 + # TODO: Revisit after be released a new version of fmt + raise ConanInvalidConfiguration(f"This version of FMT does not currently support Clang 20 with C++20; please use -s compiler.cppstd=17. See https://github.com/fmtlib/fmt/issues/4177") def source(self): get(self, **self.conan_data["sources"][self.version], strip_root=True)