From 020ea3f412b6a2a1b15bec53ddc7eb149554447e Mon Sep 17 00:00:00 2001 From: Bart Date: Thu, 4 Dec 2025 10:34:37 -0500 Subject: [PATCH] refactor: Update Conan dependencies: protobuf and grpc (#5589) This PR updates protobuf and grpc to their latest versions. The latest protobuf version no longer requires patches, so we can use it directly from the official Conan Center Index, while the latest grpc still needed a patch, which was added to our own Conan Center Index fork in XRPLF/conan-center-index#8. --- .gitignore | 3 +++ BUILD.md | 26 +++++++++----------------- conan.lock | 18 +++++++++--------- conan/profiles/default | 6 ------ conanfile.py | 16 +++++++++++++--- 5 files changed, 34 insertions(+), 35 deletions(-) diff --git a/.gitignore b/.gitignore index 5476f21a41..d8c6b8a5f8 100644 --- a/.gitignore +++ b/.gitignore @@ -111,3 +111,6 @@ bld.rippled/ # Suggested in-tree build directory /.build*/ + +# Locally patched Conan recipes +external/conan-center-index/ diff --git a/BUILD.md b/BUILD.md index a497db417a..153406535c 100644 --- a/BUILD.md +++ b/BUILD.md @@ -142,20 +142,25 @@ locally: ```bash cd external +mkdir -p conan-center-index +cd conan-center-index git init git remote add origin git@github.com:XRPLF/conan-center-index.git git sparse-checkout init git sparse-checkout set recipes/ed25519 +git sparse-checkout add recipes/grpc git sparse-checkout add recipes/secp256k1 git sparse-checkout add recipes/snappy git sparse-checkout add recipes/soci git fetch origin master git checkout master -conan export --version 2015.03 recipes/ed25519/all -conan export --version 0.7.0 recipes/secp256k1/all -conan export --version 1.1.10 recipes/snappy/all -conan export --version 4.0.3 recipes/soci/all rm -rf .git +cd ../.. +conan export --version 2015.03 external/conan-center-index/recipes/ed25519/all +conan export --version 1.72.0 external/conan-center-index/recipes/grpc/all +conan export --version 0.7.0 external/conan-center-index/recipes/secp256k1/all +conan export --version 1.1.10 external/conan-center-index/recipes/snappy/all +conan export --version 4.0.3 external/conan-center-index/recipes/soci/all ``` In the case we switch to a newer version of a dependency that still requires a @@ -385,19 +390,6 @@ tools.build:cxxflags=['-DBOOST_ASIO_DISABLE_CONCEPTS'] `--settings build_type=$BUILD_TYPE` or in the profile itself, under the section `[settings]` with the key `build_type`. - If you are using a Microsoft Visual C++ compiler, - then you will need to ensure consistency between the `build_type` setting - and the `compiler.runtime` setting. - - When `build_type` is `Release`, `compiler.runtime` should be `MT`. - - When `build_type` is `Debug`, `compiler.runtime` should be `MTd`. - - ``` - conan install .. --output-folder . --build missing --settings build_type=Release --settings compiler.runtime=MT - conan install .. --output-folder . --build missing --settings build_type=Debug --settings compiler.runtime=MTd - ``` - 3. Configure CMake and pass the toolchain file generated by Conan, located at `$OUTPUT_FOLDER/build/generators/conan_toolchain.cmake`. diff --git a/conan.lock b/conan.lock index d235e8d41a..410a04403b 100644 --- a/conan.lock +++ b/conan.lock @@ -9,7 +9,7 @@ "secp256k1/0.7.0#9210e4c655d0a665400378a663960d17%1764261276.764", "rocksdb/10.5.1#4a197eca381a3e5ae8adf8cffa5aacd0%1762797952.535", "re2/20230301#ca3b241baec15bd31ea9187150e0b333%1764175362.029", - "protobuf/3.21.12#44ee56c0a6eea0c19aeeaca680370b88%1764175361.456", + "protobuf/6.32.1#f481fd276fc23a33b85a3ed1e898b693%1759134873.45", "openssl/3.5.4#a1d5835cc6ed5c5b8f3cd5b9b5d24205%1760106486.594", "nudb/2.0.9#fb8dfd1a5557f5e0528114c2da17721e%1763150366.909", "lz4/1.10.0#59fc63cac7f10fbe8e05c7e62c2f3504%1756234228.999", @@ -17,19 +17,19 @@ "libbacktrace/cci.20210118#a7691bfccd8caaf66309df196790a5a1%1756230911.03", "libarchive/3.8.1#ffee18995c706e02bf96e7a2f7042e0d%1764175360.142", "jemalloc/5.3.0#e951da9cf599e956cebc117880d2d9f8%1729241615.244", - "grpc/1.50.1#02291451d1e17200293a409410d1c4e1%1756234248.958", - "ed25519/2015.03#17c1f1910e769f368025267a53c23c13%1764259445.491", + "grpc/1.72.0#f244a57bff01e708c55a1100b12e1589%1763158050.628", + "ed25519/2015.03#ae761bdc52730a843f0809bdf6c1b1f6%1764270189.893", "doctest/2.4.12#eb9fb352fb2fdfc8abb17ec270945165%1762797941.757", "date/3.0.4#862e11e80030356b53c2c38599ceb32b%1763584497.32", "c-ares/1.34.5#5581c2b62a608b40bb85d965ab3ec7c8%1764175359.429", "bzip2/1.0.8#c470882369c2d95c5c77e970c0c7e321%1764175359.429", "boost/1.88.0#8852c0b72ce8271fb8ff7c53456d4983%1756223752.326", - "abseil/20230802.1#90ba607d4ee8fb5fb157c3db540671fc%1764175359.429" + "abseil/20250127.0#9e8e8cfc89a1324139fc0ee3bd4d8c8c%1753819045.301" ], "build_requires": [ "zlib/1.3.1#b8bc2603263cf7eccbd6e17e66b0ed76%1756234269.497", "strawberryperl/5.32.1.1#707032463aa0620fa17ec0d887f5fe41%1756234281.733", - "protobuf/3.21.12#44ee56c0a6eea0c19aeeaca680370b88%1764175361.456", + "protobuf/6.32.1#f481fd276fc23a33b85a3ed1e898b693%1759134873.45", "nasm/2.16.01#31e26f2ee3c4346ecd347911bd126904%1756234232.901", "msys2/cci.latest#5b73b10144f73cc5bfe0572ed9be39e1%1751977009.857", "m4/1.4.19#70dc8bbb33e981d119d2acc0175cf381%1763158052.846", @@ -37,13 +37,13 @@ "cmake/3.31.10#313d16a1aa16bbdb2ca0792467214b76%1764175359.429", "b2/5.3.3#107c15377719889654eb9a162a673975%1756234226.28", "automake/1.16.5#b91b7c384c3deaa9d535be02da14d04f%1755524470.56", - "autoconf/2.71#51077f068e61700d65bb05541ea1e4b0%1731054366.86" + "autoconf/2.71#51077f068e61700d65bb05541ea1e4b0%1731054366.86", + "abseil/20250127.0#9e8e8cfc89a1324139fc0ee3bd4d8c8c%1753819045.301" ], "python_requires": [], "overrides": { - "protobuf/3.21.12": [ - null, - "protobuf/3.21.12" + "protobuf/5.27.0": [ + "protobuf/6.32.1" ], "lz4/1.9.4": [ "lz4/1.10.0" diff --git a/conan/profiles/default b/conan/profiles/default index def2fffd6b..cde59f7f3b 100644 --- a/conan/profiles/default +++ b/conan/profiles/default @@ -20,12 +20,6 @@ compiler.libcxx={{detect_api.detect_libcxx(compiler, version, compiler_exe)}} {% endif %} [conf] -{% if compiler == "clang" and compiler_version >= 19 %} -grpc/1.50.1:tools.build:cxxflags+=['-Wno-missing-template-arg-list-after-template-kw'] -{% endif %} -{% if compiler == "apple-clang" and compiler_version >= 17 %} -grpc/1.50.1:tools.build:cxxflags+=['-Wno-missing-template-arg-list-after-template-kw'] -{% endif %} {% if compiler == "gcc" and compiler_version < 13 %} tools.build:cxxflags+=['-Wno-restrict'] {% endif %} diff --git a/conanfile.py b/conanfile.py index 2d3e090fa3..8dc09da0af 100644 --- a/conanfile.py +++ b/conanfile.py @@ -29,7 +29,7 @@ class Xrpl(ConanFile): requires = [ "ed25519/2015.03", - "grpc/1.50.1", + "grpc/1.72.0", "libarchive/3.8.1", "nudb/2.0.9", "openssl/3.5.4", @@ -43,7 +43,7 @@ class Xrpl(ConanFile): ] tool_requires = [ - "protobuf/3.21.12", + "protobuf/6.32.1", ] default_options = { @@ -61,6 +61,16 @@ class Xrpl(ConanFile): "ed25519/*:shared": False, "grpc/*:shared": False, "grpc/*:secure": True, + "grpc/*:codegen": True, + "grpc/*:cpp_plugin": True, + "grpc/*:csharp_ext": False, + "grpc/*:csharp_plugin": False, + "grpc/*:node_plugin": False, + "grpc/*:objective_c_plugin": False, + "grpc/*:php_plugin": False, + "grpc/*:python_plugin": False, + "grpc/*:ruby_plugin": False, + "grpc/*:otel_plugin": False, "libarchive/*:shared": False, "libarchive/*:with_acl": False, "libarchive/*:with_bzip2": False, @@ -118,7 +128,7 @@ class Xrpl(ConanFile): self.requires("boost/1.88.0", force=True, **transitive_headers_opt) self.requires("date/3.0.4", **transitive_headers_opt) self.requires("lz4/1.10.0", force=True) - self.requires("protobuf/3.21.12", force=True) + self.requires("protobuf/6.32.1", force=True) self.requires("sqlite3/3.49.1", force=True) if self.options.jemalloc: self.requires("jemalloc/5.3.0")