mirror of
				https://github.com/XRPLF/rippled.git
				synced 2025-11-04 11:15:56 +00:00 
			
		
		
		
	refactor: Update date, libarchive, nudb, openssl, sqlite3, xxhash packages (#5567)
This PR updates several dependencies to their latest versions. Not all dependencies have been updated, as some need to be patched and some require additional code changes due to backward incompatibilities introduced by the version bump.
This commit is contained in:
		
							
								
								
									
										1
									
								
								.github/actions/dependencies/action.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/actions/dependencies/action.yml
									
									
									
									
										vendored
									
									
								
							@@ -12,7 +12,6 @@ runs:
 | 
			
		||||
        conan export --version 1.1.10 external/snappy
 | 
			
		||||
        conan export --version 9.7.3 external/rocksdb
 | 
			
		||||
        conan export --version 4.0.3 external/soci
 | 
			
		||||
        conan export --version 2.0.8 external/nudb
 | 
			
		||||
    - name: add Ripple Conan remote
 | 
			
		||||
      if: env.CONAN_URL != ''
 | 
			
		||||
      shell: bash
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								.github/workflows/macos.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/workflows/macos.yml
									
									
									
									
										vendored
									
									
								
							@@ -96,7 +96,6 @@ jobs:
 | 
			
		||||
          conan export --version 1.1.10 external/snappy
 | 
			
		||||
          conan export --version 9.7.3 external/rocksdb
 | 
			
		||||
          conan export --version 4.0.3 external/soci
 | 
			
		||||
          conan export --version 2.0.8 external/nudb
 | 
			
		||||
      - name: add Ripple Conan remote
 | 
			
		||||
        if: env.CONAN_URL != ''
 | 
			
		||||
        shell: bash
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										13
									
								
								.github/workflows/nix.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										13
									
								
								.github/workflows/nix.yml
									
									
									
									
										vendored
									
									
								
							@@ -164,6 +164,16 @@ jobs:
 | 
			
		||||
          generator: Ninja
 | 
			
		||||
          configuration: ${{ matrix.configuration }}
 | 
			
		||||
          cmake-args: "-Dassert=TRUE -Dwerr=TRUE ${{ matrix.cmake-args }}"
 | 
			
		||||
      - name: check linking
 | 
			
		||||
        run: |
 | 
			
		||||
          cd ${build_dir}
 | 
			
		||||
          ldd ./rippled
 | 
			
		||||
          if [ "$(ldd ./rippled | grep -E '(libstdc\+\+|libgcc)' | wc -l)" -eq 0 ]; then
 | 
			
		||||
            echo 'The binary is statically linked.'
 | 
			
		||||
          else
 | 
			
		||||
            echo 'The binary is dynamically linked.'
 | 
			
		||||
            exit 1
 | 
			
		||||
          fi
 | 
			
		||||
      - name: test
 | 
			
		||||
        run: |
 | 
			
		||||
          cd ${build_dir}
 | 
			
		||||
@@ -220,6 +230,7 @@ jobs:
 | 
			
		||||
          cd ${build_dir}
 | 
			
		||||
          ./rippled --unittest --unittest-jobs $(nproc)
 | 
			
		||||
          ctest -j $(nproc) --output-on-failure
 | 
			
		||||
 | 
			
		||||
  coverage:
 | 
			
		||||
    strategy:
 | 
			
		||||
      fail-fast: false
 | 
			
		||||
@@ -296,7 +307,6 @@ jobs:
 | 
			
		||||
          attempt_limit: 5
 | 
			
		||||
          attempt_delay: 210000 # in milliseconds
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  conan:
 | 
			
		||||
    needs: dependencies
 | 
			
		||||
    runs-on: [self-hosted, heavy]
 | 
			
		||||
@@ -313,7 +323,6 @@ jobs:
 | 
			
		||||
        uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093
 | 
			
		||||
        with:
 | 
			
		||||
          name: ${{ env.platform }}-${{ env.compiler }}-${{ env.configuration }}
 | 
			
		||||
 | 
			
		||||
      - name: extract cache
 | 
			
		||||
        run: |
 | 
			
		||||
          mkdir -p ${CONAN_HOME}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								.github/workflows/windows.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/workflows/windows.yml
									
									
									
									
										vendored
									
									
								
							@@ -92,7 +92,6 @@ jobs:
 | 
			
		||||
          conan export --version 1.1.10 external/snappy
 | 
			
		||||
          conan export --version 9.7.3 external/rocksdb
 | 
			
		||||
          conan export --version 4.0.3 external/soci
 | 
			
		||||
          conan export --version 2.0.8 external/nudb
 | 
			
		||||
      - name: add Ripple Conan remote
 | 
			
		||||
        if: env.CONAN_URL != ''
 | 
			
		||||
        shell: bash
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										17
									
								
								BUILD.md
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								BUILD.md
									
									
									
									
									
								
							@@ -167,8 +167,6 @@ It does not explicitly link the C++ standard library,
 | 
			
		||||
which allows you to statically link it with GCC, if you want.
 | 
			
		||||
 | 
			
		||||
   ```
 | 
			
		||||
   # Conan 1.x
 | 
			
		||||
   conan export external/snappy snappy/1.1.10@
 | 
			
		||||
   # Conan 2.x
 | 
			
		||||
   conan export --version 1.1.10 external/snappy
 | 
			
		||||
   ```
 | 
			
		||||
@@ -177,8 +175,6 @@ Export our [Conan recipe for RocksDB](./external/rocksdb).
 | 
			
		||||
It does not override paths to dependencies when building with Visual Studio.
 | 
			
		||||
 | 
			
		||||
   ```
 | 
			
		||||
   # Conan 1.x
 | 
			
		||||
   conan export external/rocksdb rocksdb/9.7.3@
 | 
			
		||||
   # Conan 2.x
 | 
			
		||||
   conan export --version 9.7.3 external/rocksdb
 | 
			
		||||
   ```
 | 
			
		||||
@@ -187,23 +183,10 @@ Export our [Conan recipe for SOCI](./external/soci).
 | 
			
		||||
It patches their CMake to correctly import its dependencies.
 | 
			
		||||
 | 
			
		||||
   ```
 | 
			
		||||
   # Conan 1.x
 | 
			
		||||
   conan export external/soci soci/4.0.3@
 | 
			
		||||
   # Conan 2.x
 | 
			
		||||
   conan export --version 4.0.3 external/soci
 | 
			
		||||
   ```
 | 
			
		||||
 | 
			
		||||
Export our [Conan recipe for NuDB](./external/nudb).
 | 
			
		||||
It fixes some source files to add missing `#include`s.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   ```
 | 
			
		||||
   # Conan 1.x
 | 
			
		||||
   conan export external/nudb nudb/2.0.8@
 | 
			
		||||
   # Conan 2.x
 | 
			
		||||
   conan export --version 2.0.8 external/nudb
 | 
			
		||||
   ```
 | 
			
		||||
 | 
			
		||||
### Build and Test
 | 
			
		||||
 | 
			
		||||
1. Create a build directory and move into it.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										16
									
								
								conanfile.py
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								conanfile.py
									
									
									
									
									
								
							@@ -25,9 +25,9 @@ class Xrpl(ConanFile):
 | 
			
		||||
 | 
			
		||||
    requires = [
 | 
			
		||||
        'grpc/1.50.1',
 | 
			
		||||
        'libarchive/3.7.6',
 | 
			
		||||
        'nudb/2.0.8',
 | 
			
		||||
        'openssl/1.1.1v',
 | 
			
		||||
        'libarchive/3.8.1',
 | 
			
		||||
        'nudb/2.0.9',
 | 
			
		||||
        'openssl/1.1.1w',
 | 
			
		||||
        'soci/4.0.3',
 | 
			
		||||
        'zlib/1.3.1',
 | 
			
		||||
    ]
 | 
			
		||||
@@ -37,7 +37,7 @@ class Xrpl(ConanFile):
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    tool_requires = [
 | 
			
		||||
        'protobuf/3.21.9',
 | 
			
		||||
        'protobuf/3.21.12',
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    default_options = {
 | 
			
		||||
@@ -105,15 +105,15 @@ class Xrpl(ConanFile):
 | 
			
		||||
        # Conan 2 requires transitive headers to be specified
 | 
			
		||||
        transitive_headers_opt = {'transitive_headers': True} if conan_version.split('.')[0] == '2' else {}
 | 
			
		||||
        self.requires('boost/1.83.0', force=True, **transitive_headers_opt)
 | 
			
		||||
        self.requires('date/3.0.3', **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.9', force=True)
 | 
			
		||||
        self.requires('sqlite3/3.47.0', force=True)
 | 
			
		||||
        self.requires('protobuf/3.21.12', force=True)
 | 
			
		||||
        self.requires('sqlite3/3.49.1', force=True)
 | 
			
		||||
        if self.options.jemalloc:
 | 
			
		||||
            self.requires('jemalloc/5.3.0')
 | 
			
		||||
        if self.options.rocksdb:
 | 
			
		||||
            self.requires('rocksdb/9.7.3')
 | 
			
		||||
        self.requires('xxhash/0.8.2', **transitive_headers_opt)
 | 
			
		||||
        self.requires('xxhash/0.8.3', **transitive_headers_opt)
 | 
			
		||||
 | 
			
		||||
    exports_sources = (
 | 
			
		||||
        'CMakeLists.txt',
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								external/nudb/conandata.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								external/nudb/conandata.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,10 +0,0 @@
 | 
			
		||||
sources:
 | 
			
		||||
  "2.0.8":
 | 
			
		||||
    url: "https://github.com/CPPAlliance/NuDB/archive/2.0.8.tar.gz"
 | 
			
		||||
    sha256: "9b71903d8ba111cd893ab064b9a8b6ac4124ed8bd6b4f67250205bc43c7f13a8"
 | 
			
		||||
patches:
 | 
			
		||||
  "2.0.8":
 | 
			
		||||
    - patch_file: "patches/2.0.8-0001-add-include-stdexcept-for-msvc.patch"
 | 
			
		||||
      patch_description: "Fix build for MSVC by including stdexcept"
 | 
			
		||||
      patch_type: "portability"
 | 
			
		||||
      patch_source: "https://github.com/cppalliance/NuDB/pull/100/files"
 | 
			
		||||
							
								
								
									
										72
									
								
								external/nudb/conanfile.py
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										72
									
								
								external/nudb/conanfile.py
									
									
									
									
										vendored
									
									
								
							@@ -1,72 +0,0 @@
 | 
			
		||||
import os
 | 
			
		||||
 | 
			
		||||
from conan import ConanFile
 | 
			
		||||
from conan.tools.build import check_min_cppstd
 | 
			
		||||
from conan.tools.files import apply_conandata_patches, copy, export_conandata_patches, get
 | 
			
		||||
from conan.tools.layout import basic_layout
 | 
			
		||||
 | 
			
		||||
required_conan_version = ">=1.52.0"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class NudbConan(ConanFile):
 | 
			
		||||
    name = "nudb"
 | 
			
		||||
    description = "A fast key/value insert-only database for SSD drives in C++11"
 | 
			
		||||
    license = "BSL-1.0"
 | 
			
		||||
    url = "https://github.com/conan-io/conan-center-index"
 | 
			
		||||
    homepage = "https://github.com/CPPAlliance/NuDB"
 | 
			
		||||
    topics = ("header-only", "KVS", "insert-only")
 | 
			
		||||
 | 
			
		||||
    package_type = "header-library"
 | 
			
		||||
    settings = "os", "arch", "compiler", "build_type"
 | 
			
		||||
    no_copy_source = True
 | 
			
		||||
 | 
			
		||||
    @property
 | 
			
		||||
    def _min_cppstd(self):
 | 
			
		||||
        return 11
 | 
			
		||||
 | 
			
		||||
    def export_sources(self):
 | 
			
		||||
        export_conandata_patches(self)
 | 
			
		||||
 | 
			
		||||
    def layout(self):
 | 
			
		||||
        basic_layout(self, src_folder="src")
 | 
			
		||||
 | 
			
		||||
    def requirements(self):
 | 
			
		||||
        self.requires("boost/1.83.0")
 | 
			
		||||
 | 
			
		||||
    def package_id(self):
 | 
			
		||||
        self.info.clear()
 | 
			
		||||
 | 
			
		||||
    def validate(self):
 | 
			
		||||
        if self.settings.compiler.cppstd:
 | 
			
		||||
            check_min_cppstd(self, self._min_cppstd)
 | 
			
		||||
 | 
			
		||||
    def source(self):
 | 
			
		||||
        get(self, **self.conan_data["sources"][self.version], strip_root=True)
 | 
			
		||||
 | 
			
		||||
    def build(self):
 | 
			
		||||
        apply_conandata_patches(self)
 | 
			
		||||
 | 
			
		||||
    def package(self):
 | 
			
		||||
        copy(self, "LICENSE*",
 | 
			
		||||
             dst=os.path.join(self.package_folder, "licenses"),
 | 
			
		||||
             src=self.source_folder)
 | 
			
		||||
        copy(self, "*",
 | 
			
		||||
             dst=os.path.join(self.package_folder, "include"),
 | 
			
		||||
             src=os.path.join(self.source_folder, "include"))
 | 
			
		||||
 | 
			
		||||
    def package_info(self):
 | 
			
		||||
        self.cpp_info.bindirs = []
 | 
			
		||||
        self.cpp_info.libdirs = []
 | 
			
		||||
 | 
			
		||||
        self.cpp_info.set_property("cmake_target_name", "NuDB")
 | 
			
		||||
        self.cpp_info.set_property("cmake_target_aliases", ["NuDB::nudb"])
 | 
			
		||||
        self.cpp_info.set_property("cmake_find_mode", "both")
 | 
			
		||||
 | 
			
		||||
        self.cpp_info.components["core"].set_property("cmake_target_name", "nudb")
 | 
			
		||||
        self.cpp_info.components["core"].names["cmake_find_package"] = "nudb"
 | 
			
		||||
        self.cpp_info.components["core"].names["cmake_find_package_multi"] = "nudb"
 | 
			
		||||
        self.cpp_info.components["core"].requires = ["boost::thread", "boost::system"]
 | 
			
		||||
 | 
			
		||||
        # TODO: to remove in conan v2 once cmake_find_package_* generators removed
 | 
			
		||||
        self.cpp_info.names["cmake_find_package"] = "NuDB"
 | 
			
		||||
        self.cpp_info.names["cmake_find_package_multi"] = "NuDB"
 | 
			
		||||
@@ -1,24 +0,0 @@
 | 
			
		||||
diff --git a/include/nudb/detail/stream.hpp b/include/nudb/detail/stream.hpp
 | 
			
		||||
index 6c07bf1..e0ce8ed 100644
 | 
			
		||||
--- a/include/nudb/detail/stream.hpp
 | 
			
		||||
+++ b/include/nudb/detail/stream.hpp
 | 
			
		||||
@@ -14,6 +14,7 @@
 | 
			
		||||
 #include <cstdint>
 | 
			
		||||
 #include <cstring>
 | 
			
		||||
 #include <memory>
 | 
			
		||||
+#include <stdexcept>
 | 
			
		||||
 
 | 
			
		||||
 namespace nudb {
 | 
			
		||||
 namespace detail {
 | 
			
		||||
diff --git a/include/nudb/impl/context.ipp b/include/nudb/impl/context.ipp
 | 
			
		||||
index beb7058..ffde0b3 100644
 | 
			
		||||
--- a/include/nudb/impl/context.ipp
 | 
			
		||||
+++ b/include/nudb/impl/context.ipp
 | 
			
		||||
@@ -9,6 +9,7 @@
 | 
			
		||||
 #define NUDB_IMPL_CONTEXT_IPP
 | 
			
		||||
 
 | 
			
		||||
 #include <nudb/detail/store_base.hpp>
 | 
			
		||||
+#include <stdexcept>
 | 
			
		||||
 
 | 
			
		||||
 namespace nudb {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user