diff --git a/.github/workflows/build_dependencies.yml b/.github/workflows/build_dependencies.yml index 871d528..79367c3 100644 --- a/.github/workflows/build_dependencies.yml +++ b/.github/workflows/build_dependencies.yml @@ -130,7 +130,7 @@ jobs: - name: Export Recipes run: | conan export import/sisl oss/master - conan export 3rd_party/nuraft nuraft/2.4.2@ + conan export 3rd_party/nuraft nuraft/2.4.3@ cached_pkgs=$(ls -1d ~/.conan/data/*/*/*/*/package | sed 's,.*data/,,' | cut -d'/' -f1,2 | paste -sd',' - -) echo "::info:: Pre-cached: ${cached_pkgs}" if: ${{ inputs.testing == 'True' || steps.restore-cache.outputs.cache-hit != 'true' }} diff --git a/3rd_party/nuraft/conandata.yml b/3rd_party/nuraft/conandata.yml index d608da2..bebbe48 100644 --- a/3rd_party/nuraft/conandata.yml +++ b/3rd_party/nuraft/conandata.yml @@ -1,4 +1,7 @@ sources: + "2.4.3": + url: "https://github.com/eBay/nuraft/archive/1adcc6282109c2ddf1121bbc374d48d303145e39.tar.gz" + sha256: "84ff05ce33f49955829377134bb9c06cb1bc0c82f1a9ef388a8068a05a300083" "2.4.2": url: "https://github.com/eBay/nuraft/archive/a4029e132560c06445918bd84471863cb1537a3c.tar.gz" sha256: "f719f89b41175ec3e110d230b788d7a0ab74a691b0a03687f801d1f7af9fe91b" @@ -11,6 +14,10 @@ sources: "2.3.0": url: "https://github.com/eBay/nuraft/archive/f42b12c3ec9f20a085de61e1294e8167fa747c7d.tar.gz" patches: + "2.4.3": + - patch_file: "patches/2-4-3.patch" + patch_description: "Dependency discovery" + patch_type: "conan" "2.4.2": - patch_file: "patches/2-4-0.patch" patch_description: "Dependency discovery" diff --git a/3rd_party/nuraft/patches/2-4-3.patch b/3rd_party/nuraft/patches/2-4-3.patch new file mode 100644 index 0000000..110f903 --- /dev/null +++ b/3rd_party/nuraft/patches/2-4-3.patch @@ -0,0 +1,160 @@ +--- CMakeLists.txt.orig 2024-10-17 00:27:56.332964431 -0700 ++++ CMakeLists.txt 2024-10-17 02:00:22.947570931 -0700 +@@ -1,5 +1,6 @@ + cmake_minimum_required(VERSION 3.5) + project(NuRaft VERSION 1.0.0 LANGUAGES CXX) ++set (CMAKE_CXX_STANDARD 11) + + # === Build type (default: RelWithDebInfo, O2) =========== + if (NOT CMAKE_BUILD_TYPE) +@@ -26,41 +27,23 @@ + + + # === Find ASIO === +-if (BOOST_INCLUDE_PATH AND BOOST_LIBRARY_PATH) ++find_package(OpenSSL CONFIG REQUIRED) ++find_package(Boost CONFIG) ++if (Boost_FOUND) + # If Boost path (both include and library) is given, + # use Boost's ASIO. +- message(STATUS "Boost include path: " ${BOOST_INCLUDE_PATH}) +- message(STATUS "Boost library path: " ${BOOST_LIBRARY_PATH}) +- + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_BOOST_ASIO") +- +- set(ASIO_INCLUDE_DIR ${BOOST_INCLUDE_PATH}) +- set(LIBBOOST_SYSTEM "${BOOST_LIBRARY_PATH}/libboost_system.a") +- ++ set(ASIO_DEP boost::boost) + else () + # If not, ASIO standalone mode. +- FIND_PATH(ASIO_INCLUDE_DIR +- NAME asio.hpp +- HINTS ${PROJECT_SOURCE_DIR}/asio/asio/include +- $ENV{HOME}/local/include +- /opt/local/include +- /usr/local/include +- /usr/include) +- ++ find_package(Asio CONFIG REQUIRED) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DASIO_STANDALONE") +- +-endif () +- +-if (NOT ASIO_INCLUDE_DIR) +- message(FATAL_ERROR "Can't find ASIO header files") +-else () +- message(STATUS "ASIO include path: " ${ASIO_INCLUDE_DIR}) ++ set(ASIO_DEP asio::asio) + endif () + + + # === Includes === + include_directories(BEFORE ./) +-include_directories(BEFORE ${ASIO_INCLUDE_DIR}) + include_directories(BEFORE ${PROJECT_SOURCE_DIR}/include) + include_directories(BEFORE ${PROJECT_SOURCE_DIR}/include/libnuraft) + include_directories(BEFORE ${PROJECT_SOURCE_DIR}/examples) +@@ -83,19 +66,7 @@ + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-pessimizing-move") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations") +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") +- if (APPLE) +-# include_directories(BEFORE +-# /usr/local/opt/openssl/include +-# ) +-# link_directories( +-# /usr/local/opt/openssl/lib +-# ) +- else() +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread") +- endif () + if (USE_PTHREAD_EXIT) + message(STATUS "Using ::pthread_exit for termination") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_PTHREAD_EXIT") +@@ -273,78 +244,18 @@ + ${ROOT_SRC}/stat_mgr.cxx + ) + add_library(RAFT_CORE_OBJ OBJECT ${RAFT_CORE}) ++target_link_libraries(RAFT_CORE_OBJ ${ASIO_DEP} openssl::openssl) + + set(STATIC_LIB_SRC + $) + + # === Executables === + set(LIBRARY_NAME "nuraft") +- +-add_library(static_lib ${STATIC_LIB_SRC}) +-add_library(NuRaft::static_lib ALIAS static_lib) +-set_target_properties(static_lib PROPERTIES OUTPUT_NAME ${LIBRARY_NAME} CLEAN_DIRECT_OUTPUT 1) +- +-add_library(shared_lib SHARED ${STATIC_LIB_SRC}) +-add_library(NuRaft::shared_lib ALIAS shared_lib) +-set_target_properties(shared_lib PROPERTIES OUTPUT_NAME ${LIBRARY_NAME} CLEAN_DIRECT_OUTPUT 1) +- +-# Include directories are necessary for dependents to use the targets. +-target_include_directories(static_lib +- PUBLIC +- $ +- $ +-) +- +-target_include_directories(static_lib +- PUBLIC +- $ +- $ +-) +- +-if (APPLE) +- target_link_libraries(shared_lib ${LIBRARIES}) +-endif () +- +-if (WIN32) +- set(LIBRARY_OUTPUT_NAME "${LIBRARY_NAME}.lib") +-else () +- set(LIBRARY_OUTPUT_NAME "lib${LIBRARY_NAME}.a") +-endif () +-message(STATUS "Output library file name: ${LIBRARY_OUTPUT_NAME}") +- +-# === Examples === +-add_subdirectory("${PROJECT_SOURCE_DIR}/examples") +- +- +-# === Tests === +-add_subdirectory("${PROJECT_SOURCE_DIR}/tests") +- +- +-if (CODE_COVERAGE GREATER 0) +- set(CODE_COVERAGE_DEPS +- raft_server_test +- failure_test +- asio_service_test +- buffer_test +- serialization_test +- timer_test +- strfmt_test +- stat_mgr_test +- logger_test +- new_joiner_test +- ) +- +- # lcov +- SETUP_TARGET_FOR_COVERAGE( +- NAME raft_cov +- EXECUTABLE ./runtests.sh +- DEPENDENCIES ${CODE_COVERAGE_DEPS} +- ) +-endif() +- ++add_library(nuraft ${STATIC_LIB_SRC}) ++target_link_libraries(nuraft ${ASIO_DEP} openssl::openssl) + + # === Install Targets === +-install(TARGETS shared_lib static_lib ++install(TARGETS nuraft + EXPORT nuraft-targets + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib diff --git a/conanfile.py b/conanfile.py index 014c1f8..0f89477 100644 --- a/conanfile.py +++ b/conanfile.py @@ -10,7 +10,7 @@ class NuRaftMesgConan(ConanFile): name = "nuraft_mesg" - version = "3.5.11" + version = "3.6.1" homepage = "https://github.com/eBay/nuraft_mesg" description = "A gRPC service for NuRAFT" @@ -66,7 +66,7 @@ def build_requirements(self): def requirements(self): self.requires("boost/1.83.0", transitive_headers=True) self.requires("sisl/[^12.2]@oss/master", transitive_headers=True) - self.requires("nuraft/2.4.2", transitive_headers=True) + self.requires("nuraft/2.4.3", transitive_headers=True) def layout(self): self.folders.source = "."