From: Patrick Donnelly Date: Thu, 28 Jan 2021 23:11:50 +0000 (-0800) Subject: libcephsqlite: rework architecture and backend X-Git-Tag: v16.2.0~36^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2906577574415d058ec40b7725f45f33db8c51da;p=ceph.git libcephsqlite: rework architecture and backend This is a complete rewrite on top of SimpleRADOSStriper as well as the API. The VFS is now a loadable extension as well. Fixes: https://tracker.ceph.com/issues/40609 Signed-off-by: Patrick Donnelly (cherry picked from commit f7fa3b50c1e87ad14b16024ec68812195480b102) --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 7734ad08b9cd..14d3023c0eb2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -279,12 +279,9 @@ endif(WITH_QATZIP) # needs mds and? XXX option(WITH_LIBCEPHFS "libcephfs client library" ON) -find_package(SQLite3) -if(SQLITE3_FOUND) - option(WITH_LIBCEPHSQLITE "libcephsqlite client library" ON) -else() - message(WARNING "disabling WITH_LIBCEPHSQLITE, which depends on SQLite3") - set(WITH_LIBCEPHSQLITE OFF) +option(WITH_LIBCEPHSQLITE "libcephsqlite client library" ON) +if(WITH_LIBCEPHSQLITE) + find_package(SQLite3 REQUIRED) endif() # key-value store diff --git a/cmake/modules/FindSQLite3.cmake b/cmake/modules/FindSQLite3.cmake index 3d96d66524e1..33e54d9e0c89 100644 --- a/cmake/modules/FindSQLite3.cmake +++ b/cmake/modules/FindSQLite3.cmake @@ -1,10 +1,12 @@ -find_path(SQLITE3_INCLUDE_DIR NAMES sqlite3.h PATHS /usr/include /usr/local/include) -find_library(SQLITE3_LIBRARY NAMES sqlite3) +find_path(SQLite3_INCLUDE_DIR NAMES sqlite3.h) +find_library(SQLite3_LIBRARY NAMES sqlite3 sqlite) include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(SQLITE3 DEFAULT_MSG SQLITE3_LIBRARY SQLITE3_INCLUDE_DIR) +find_package_handle_standard_args(SQLite3 DEFAULT_MSG SQLite3_LIBRARY SQLite3_INCLUDE_DIR) -if(SQLITE3_FOUND) - set(SQLITE3_LIBRARIES ${SQLITE3_LIBRARY}) - set(SQLITE3_INCLUDE_DIRS ${SQLITE3_INCLUDE_DIR}) +if(NOT TARGET SQLite3::SQLite3) + add_library(SQLite3::SQLite3 UNKNOWN IMPORTED) + set_target_properties(SQLite3::SQLite3 PROPERTIES + IMPORTED_LOCATION "${SQLite3_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${SQLite3_INCLUDE_DIR}") endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 67b4fab6fa3a..060ab39d372c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -801,16 +801,9 @@ if(WITH_LIBCEPHFS) endif(WITH_LIBCEPHFS) if(WITH_LIBCEPHSQLITE) - set(libcephsqlite_srcs libcephsqlite.cc) - add_library(cephsqlite ${CEPH_SHARED} ${libcephsqlite_srcs}) - set_target_properties(cephsqlite PROPERTIES COMPILE_FLAGS "-I${SQLITE3_INCLUDE_DIRS}") - target_link_libraries(cephsqlite radosstriper librados ${SQLITE3_LIBRARIES} ${EXTRALIBS}) - if(ENABLE_SHARED) - set_target_properties(cephsqlite PROPERTIES - OUTPUT_NAME cephsqlite - VERSION 1.0.0 - SOVERSION 1) - endif(ENABLE_SHARED) + set(cephsqlite_srcs libcephsqlite.cc SimpleRADOSStriper.cc) + add_library(cephsqlite ${CEPH_SHARED} ${cephsqlite_srcs}) + target_link_libraries(cephsqlite PRIVATE cls_lock_client librados ceph-common SQLite3::SQLite3 ${EXTRALIBS}) install(TARGETS cephsqlite DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif(WITH_LIBCEPHSQLITE) diff --git a/src/common/options.cc b/src/common/options.cc index aab4c02b52f1..36b8b45f3181 100644 --- a/src/common/options.cc +++ b/src/common/options.cc @@ -5598,6 +5598,28 @@ std::vector