testing/ceph19: new aport

* first release candidate for ceph 19
* move ceph.mount into its own sub package
This commit is contained in:
Duncan Bellamy 2023-10-07 13:11:15 +00:00 committed by Natanael Copa
parent 67e55e1747
commit 892ff4b919
19 changed files with 1921 additions and 0 deletions

View file

@ -0,0 +1,259 @@
diff -Nurp a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
--- a/src/common/CMakeLists.txt 2024-07-27 19:25:51.996571738 +0000
+++ b/src/common/CMakeLists.txt 2024-07-27 20:13:53.191996427 +0000
@@ -212,9 +212,8 @@ if(HAVE_INTEL)
list(APPEND crc32_srcs
crc32c_intel_fast.c)
if(HAVE_NASM_X64)
- set(CMAKE_ASM_FLAGS "-i ${PROJECT_SOURCE_DIR}/src/isa-l/include/ ${CMAKE_ASM_FLAGS}")
+# set(CMAKE_ASM_FLAGS "-i ${PROJECT_SOURCE_DIR}/src/isa-l/include/ ${CMAKE_ASM_FLAGS}")
list(APPEND crc32_srcs
- ${PROJECT_SOURCE_DIR}/src/isa-l/crc/crc32_iscsi_00.asm
crc32c_intel_fast_zero_asm.s)
endif(HAVE_NASM_X64)
elseif(HAVE_POWER8)
@@ -239,6 +238,10 @@ endif()
target_link_libraries(crc32
arch)
+if(HAVE_NASM_X64)
+pkg_check_modules(ISAL IMPORTED_TARGET libisal)
+target_link_libraries(crc32 PkgConfig::ISAL)
+endif(HAVE_NASM_X64)
add_library(common_utf8 STATIC utf8.c)
if(HAVE_KEYUTILS)
diff -Nurp a/src/compressor/zlib/CMakeLists.txt b/src/compressor/zlib/CMakeLists.txt
--- a/src/compressor/zlib/CMakeLists.txt 2024-07-27 19:25:51.998571765 +0000
+++ b/src/compressor/zlib/CMakeLists.txt 2024-07-27 20:06:34.792969004 +0000
@@ -5,77 +5,11 @@ if(HAVE_INTEL_SSE4_1 AND HAVE_NASM_X64_A
set(zlib_sources
CompressionPluginZlib.cc
ZlibCompressor.cc
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/hufftables_c.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip_base.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip_icf_base.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/adler32_base.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/flatten_ll.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/encode_df.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip_icf_body.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip_inflate.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/huff_codes.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/crc/crc_base_aliases.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/crc/crc_base.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/crc/crc64_base.c
- )
- list(APPEND zlib_sources
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip_body.asm
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip_finish.asm
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip_icf_body_h1_gr_bt.asm
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip_icf_finish.asm
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/rfc1951_lookup.asm
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/adler32_sse.asm
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/adler32_avx2_4.asm
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip_multibinary.asm
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip_update_histogram_01.asm
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip_update_histogram_04.asm
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip_decode_block_stateless_01.asm
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip_decode_block_stateless_04.asm
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip_inflate_multibinary.asm
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/encode_df_04.asm
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/encode_df_06.asm
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/proc_heap.asm
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip_deflate_hash.asm
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip_gen_icf_map_lh1_06.asm
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip_gen_icf_map_lh1_04.asm
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip_set_long_icf_fg_04.asm
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip_set_long_icf_fg_06.asm
)
elseif(HAVE_ARMV8_SIMD)
- set(zlib_asm_sources
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/aarch64/igzip_inflate_multibinary_arm64.S
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/aarch64/igzip_multibinary_arm64.S
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/aarch64/igzip_deflate_body_aarch64.S
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/aarch64/igzip_deflate_finish_aarch64.S
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/aarch64/isal_deflate_icf_body_hash_hist.S
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/aarch64/isal_deflate_icf_finish_hash_hist.S
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/aarch64/igzip_set_long_icf_fg.S
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/aarch64/isal_update_histogram.S
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/aarch64/igzip_deflate_hash_aarch64.S
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/aarch64/igzip_decode_huffman_code_block_aarch64.S
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/aarch64/igzip_isal_adler32_neon.S
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/aarch64/encode_df.S
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/aarch64/gen_icf_map.S
- )
set(zlib_sources
CompressionPluginZlib.cc
ZlibCompressor.cc
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/hufftables_c.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip_base.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip_icf_base.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/adler32_base.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/flatten_ll.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/encode_df.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip_icf_body.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/igzip_inflate.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/huff_codes.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/proc_heap_base.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/igzip/aarch64/igzip_multibinary_aarch64_dispatcher.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/crc/crc_base_aliases.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/crc/crc_base.c
- ${CMAKE_SOURCE_DIR}/src/isa-l/crc/crc64_base.c
${zlib_asm_sources}
)
set_source_files_properties(${zlib_asm_sources} PROPERTIES
@@ -89,8 +23,13 @@ else()
)
endif()
+pkg_check_modules(ISAL IMPORTED_TARGET libisal)
add_library(ceph_zlib SHARED ${zlib_sources})
target_link_libraries(ceph_zlib ZLIB::ZLIB compressor $<$<PLATFORM_ID:Windows>:ceph-common>)
+if(HAVE_NASM_X64_AVX2 OR HAVE_ARMV8_SIMD)
+target_link_libraries(ceph_zlib PkgConfig::ISAL)
+endif()
+
if(HAVE_QATZIP AND HAVE_QAT)
target_link_libraries(ceph_zlib qat_compressor)
endif()
diff -Nurp a/src/compressor/zlib/ZlibCompressor.cc b/src/compressor/zlib/ZlibCompressor.cc
--- a/src/compressor/zlib/ZlibCompressor.cc 2024-07-27 19:25:52.003571834 +0000
+++ b/src/compressor/zlib/ZlibCompressor.cc 2024-07-27 20:07:44.992931520 +0000
@@ -16,7 +16,7 @@
#include "common/debug.h"
#include "ZlibCompressor.h"
#include "osd/osd_types.h"
-#include "isa-l/include/igzip_lib.h"
+#include "isa-l/igzip_lib.h"
#ifdef HAVE_QATZIP
#include "compressor/QatAccel.h"
#endif
diff -Nurp a/src/compressor/zstd/ZstdCompressor.h b/src/compressor/zstd/ZstdCompressor.h
--- a/src/compressor/zstd/ZstdCompressor.h 2024-07-27 19:25:52.005571861 +0000
+++ b/src/compressor/zstd/ZstdCompressor.h 2024-07-27 19:28:09.601450158 +0000
@@ -16,7 +16,7 @@
#define CEPH_ZSTDCOMPRESSOR_H
#define ZSTD_STATIC_LINKING_ONLY
-#include "zstd/lib/zstd.h"
+#include "zstd.h"
#include "include/buffer.h"
#include "include/encoding.h"
diff -Nurp a/src/erasure-code/isa/CMakeLists.txt b/src/erasure-code/isa/CMakeLists.txt
--- a/src/erasure-code/isa/CMakeLists.txt 2024-07-27 19:25:52.000571793 +0000
+++ b/src/erasure-code/isa/CMakeLists.txt 2024-07-27 19:28:09.599450130 +0000
@@ -1,59 +1,10 @@
# ISA
set(isal_src_dir ${CMAKE_SOURCE_DIR}/src/isa-l)
-include_directories(${isal_src_dir}/include)
+# include_directories(${isal_src_dir}/include)
if(HAVE_NASM_X64_AVX2)
- set(CMAKE_ASM_FLAGS "-i ${isal_src_dir}/include/ ${CMAKE_ASM_FLAGS}")
+ # set(CMAKE_ASM_FLAGS "-i ${isal_src_dir}/include/ ${CMAKE_ASM_FLAGS}")
set(isa_srcs
- ${isal_src_dir}/erasure_code/ec_base.c
- ${isal_src_dir}/erasure_code/gf_2vect_dot_prod_sse.asm
- ${isal_src_dir}/erasure_code/gf_3vect_dot_prod_sse.asm
- ${isal_src_dir}/erasure_code/gf_4vect_dot_prod_sse.asm
- ${isal_src_dir}/erasure_code/gf_5vect_dot_prod_sse.asm
- ${isal_src_dir}/erasure_code/gf_6vect_dot_prod_sse.asm
- ${isal_src_dir}/erasure_code/gf_vect_dot_prod_sse.asm
- ${isal_src_dir}/erasure_code/gf_2vect_mad_avx2.asm
- ${isal_src_dir}/erasure_code/gf_3vect_mad_avx2.asm
- ${isal_src_dir}/erasure_code/gf_4vect_mad_avx2.asm
- ${isal_src_dir}/erasure_code/gf_5vect_mad_avx2.asm
- ${isal_src_dir}/erasure_code/gf_6vect_mad_avx2.asm
- ${isal_src_dir}/erasure_code/gf_vect_mad_avx2.asm
- ${isal_src_dir}/erasure_code/ec_highlevel_func.c
- ${isal_src_dir}/erasure_code/gf_2vect_mad_avx.asm
- ${isal_src_dir}/erasure_code/gf_3vect_mad_avx.asm
- ${isal_src_dir}/erasure_code/gf_4vect_mad_avx.asm
- ${isal_src_dir}/erasure_code/gf_5vect_mad_avx.asm
- ${isal_src_dir}/erasure_code/gf_6vect_mad_avx.asm
- ${isal_src_dir}/erasure_code/gf_vect_mad_avx.asm
- ${isal_src_dir}/erasure_code/ec_multibinary.asm
- ${isal_src_dir}/erasure_code/gf_2vect_mad_sse.asm
- ${isal_src_dir}/erasure_code/gf_3vect_mad_sse.asm
- ${isal_src_dir}/erasure_code/gf_4vect_mad_sse.asm
- ${isal_src_dir}/erasure_code/gf_5vect_mad_sse.asm
- ${isal_src_dir}/erasure_code/gf_6vect_mad_sse.asm
- ${isal_src_dir}/erasure_code/gf_vect_mad_sse.asm
- ${isal_src_dir}/erasure_code/gf_2vect_dot_prod_avx2.asm
- ${isal_src_dir}/erasure_code/gf_3vect_dot_prod_avx2.asm
- ${isal_src_dir}/erasure_code/gf_4vect_dot_prod_avx2.asm
- ${isal_src_dir}/erasure_code/gf_5vect_dot_prod_avx2.asm
- ${isal_src_dir}/erasure_code/gf_6vect_dot_prod_avx2.asm
- ${isal_src_dir}/erasure_code/gf_vect_dot_prod_avx2.asm
- ${isal_src_dir}/erasure_code/gf_vect_mul_avx.asm
- ${isal_src_dir}/erasure_code/gf_2vect_dot_prod_avx.asm
- ${isal_src_dir}/erasure_code/gf_3vect_dot_prod_avx.asm
- ${isal_src_dir}/erasure_code/gf_4vect_dot_prod_avx.asm
- ${isal_src_dir}/erasure_code/gf_5vect_dot_prod_avx.asm
- ${isal_src_dir}/erasure_code/gf_6vect_dot_prod_avx.asm
- ${isal_src_dir}/erasure_code/gf_vect_dot_prod_avx.asm
- ${isal_src_dir}/erasure_code/gf_vect_mul_sse.asm
- ${isal_src_dir}/erasure_code/gf_2vect_dot_prod_avx512.asm
- ${isal_src_dir}/erasure_code/gf_2vect_mad_avx512.asm
- ${isal_src_dir}/erasure_code/gf_3vect_dot_prod_avx512.asm
- ${isal_src_dir}/erasure_code/gf_3vect_mad_avx512.asm
- ${isal_src_dir}/erasure_code/gf_4vect_dot_prod_avx512.asm
- ${isal_src_dir}/erasure_code/gf_4vect_mad_avx512.asm
- ${isal_src_dir}/erasure_code/gf_vect_dot_prod_avx512.asm
- ${isal_src_dir}/erasure_code/gf_vect_mad_avx512.asm
ErasureCodeIsa.cc
ErasureCodeIsaTableCache.cc
ErasureCodePluginIsa.cc
@@ -61,22 +12,6 @@ if(HAVE_NASM_X64_AVX2)
)
elseif(HAVE_ARMV8_SIMD)
set(isa_srcs
- ${isal_src_dir}/erasure_code/ec_base.c
- ${isal_src_dir}/erasure_code/aarch64/ec_aarch64_highlevel_func.c
- ${isal_src_dir}/erasure_code/aarch64/ec_aarch64_dispatcher.c
- ${isal_src_dir}/erasure_code/aarch64/gf_2vect_dot_prod_neon.S
- ${isal_src_dir}/erasure_code/aarch64/gf_2vect_mad_neon.S
- ${isal_src_dir}/erasure_code/aarch64/gf_3vect_dot_prod_neon.S
- ${isal_src_dir}/erasure_code/aarch64/gf_3vect_mad_neon.S
- ${isal_src_dir}/erasure_code/aarch64/gf_4vect_dot_prod_neon.S
- ${isal_src_dir}/erasure_code/aarch64/gf_4vect_mad_neon.S
- ${isal_src_dir}/erasure_code/aarch64/gf_5vect_dot_prod_neon.S
- ${isal_src_dir}/erasure_code/aarch64/gf_5vect_mad_neon.S
- ${isal_src_dir}/erasure_code/aarch64/gf_6vect_mad_neon.S
- ${isal_src_dir}/erasure_code/aarch64/gf_vect_dot_prod_neon.S
- ${isal_src_dir}/erasure_code/aarch64/gf_vect_mad_neon.S
- ${isal_src_dir}/erasure_code/aarch64/gf_vect_mul_neon.S
- ${isal_src_dir}/erasure_code/aarch64/ec_multibinary_arm.S
ErasureCodeIsa.cc
ErasureCodeIsaTableCache.cc
ErasureCodePluginIsa.cc
@@ -88,10 +23,14 @@ elseif(HAVE_ARMV8_SIMD)
)
endif()
+pkg_check_modules(ISAL IMPORTED_TARGET libisal)
add_library(ec_isa SHARED
${isa_srcs}
$<TARGET_OBJECTS:erasure_code_objs>)
target_link_libraries(ec_isa ${EXTRALIBS})
+if(HAVE_NASM_X64_AVX2 OR HAVE_ARMV8_SIMD)
+target_link_libraries(ec_isa PkgConfig::ISAL)
+endif()
set_target_properties(ec_isa PROPERTIES
INSTALL_RPATH "")
install(TARGETS ec_isa DESTINATION ${erasure_plugin_dir})
diff -Nurp a/src/erasure-code/isa/ErasureCodeIsa.cc b/src/erasure-code/isa/ErasureCodeIsa.cc
--- a/src/erasure-code/isa/ErasureCodeIsa.cc 2024-07-27 19:25:52.001571806 +0000
+++ b/src/erasure-code/isa/ErasureCodeIsa.cc 2024-07-27 19:28:09.600450144 +0000
@@ -25,7 +25,7 @@ using namespace ceph;
// -----------------------------------------------------------------------------
extern "C" {
-#include "isa-l/include/erasure_code.h"
+#include "isa-l/erasure_code.h"
}
// -----------------------------------------------------------------------------
#define dout_context g_ceph_context

View file

@ -0,0 +1,43 @@
diff -Nurp a/src/crypto/isa-l/CMakeLists.txt b/src/crypto/isa-l/CMakeLists.txt
--- a/src/crypto/isa-l/CMakeLists.txt 2023-10-07 11:38:41.978488294 +0000
+++ b/src/crypto/isa-l/CMakeLists.txt 2023-10-07 11:42:58.266169084 +0000
@@ -3,33 +3,19 @@ set(CMAKE_ASM_FLAGS "-i ${isal_dir}/aes/
set(isal_crypto_plugin_srcs
isal_crypto_accel.cc
- isal_crypto_plugin.cc
- ${isal_dir}/aes/cbc_pre.c
- ${isal_dir}/aes/cbc_multibinary.asm
- ${isal_dir}/aes/keyexp_128.asm
- ${isal_dir}/aes/keyexp_192.asm
- ${isal_dir}/aes/keyexp_256.asm
- ${isal_dir}/aes/keyexp_multibinary.asm
- ${isal_dir}/aes/cbc_dec_128_x4_sse.asm
- ${isal_dir}/aes/cbc_dec_128_x8_avx.asm
- ${isal_dir}/aes/cbc_dec_192_x4_sse.asm
- ${isal_dir}/aes/cbc_dec_192_x8_avx.asm
- ${isal_dir}/aes/cbc_dec_256_x4_sse.asm
- ${isal_dir}/aes/cbc_dec_256_x8_avx.asm
- ${isal_dir}/aes/cbc_enc_128_x4_sb.asm
- ${isal_dir}/aes/cbc_enc_128_x8_sb.asm
- ${isal_dir}/aes/cbc_enc_192_x4_sb.asm
- ${isal_dir}/aes/cbc_enc_192_x8_sb.asm
- ${isal_dir}/aes/cbc_enc_256_x4_sb.asm
- ${isal_dir}/aes/cbc_enc_256_x8_sb.asm)
+ isal_crypto_plugin.cc)
if(HAVE_NASM_X64)
add_dependencies(crypto_plugins ceph_crypto_isal)
endif(HAVE_NASM_X64)
add_library(ceph_crypto_isal SHARED ${isal_crypto_plugin_srcs})
-target_include_directories(ceph_crypto_isal PRIVATE ${isal_dir}/include)
+if(HAVE_NASM_X64)
+find_package(PkgConfig)
+pkg_check_modules(ISALCRYPTO REQUIRED IMPORTED_TARGET libisal_crypto)
+target_link_libraries(ceph_crypto_isal PkgConfig::ISALCRYPTO)
+endif(HAVE_NASM_X64)
target_link_libraries(ceph_crypto_isal PRIVATE spawn)
set_target_properties(ceph_crypto_isal PROPERTIES

View file

@ -0,0 +1,15 @@
fix for musl
diff -Nurp a/src/tools/rbd_nbd/rbd-nbd.cc b/src/tools/rbd_nbd/rbd-nbd.cc
--- a/src/tools/rbd_nbd/rbd-nbd.cc 2020-11-21 08:06:35.834423310 +0000
+++ b/src/tools/rbd_nbd/rbd-nbd.cc 2020-11-21 08:21:12.067978842 +0000
@@ -576,7 +576,8 @@ private:
for (unsigned i = 0; i < cmdline.size(); i++) {
char *arg = &cmdline[i];
if (i == 0) {
- if (strcmp(basename(arg) , "rbd-nbd") != 0) {
+ const char *fname = strrchr(arg, '/');
+ if (strcmp(fname ? fname+1 : arg, "rbd-nbd") != 0) {
return -EINVAL;
}
} else {

View file

@ -0,0 +1,74 @@
diff -Nurp a/src/CMakeLists.txt b/src/CMakeLists.txt
--- a/src/CMakeLists.txt 2024-07-27 20:23:55.379291046 +0000
+++ b/src/CMakeLists.txt 2024-07-27 20:25:46.359819714 +0000
@@ -367,41 +367,6 @@ set_target_properties(Boost::MPL PROPERT
"BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS;BOOST_MPL_LIMIT_LIST_SIZE=30")
if(WITH_SEASTAR)
- find_package(c-ares 1.13.0 QUIET)
- if(NOT c-ares_FOUND)
- message(STATUS "Could not find c-ares, will build it")
- include(Buildc-ares)
- build_c_ares()
- endif()
- macro(find_package name)
- if(NOT TARGET ${name})
- _find_package(${ARGV})
- endif()
- endmacro ()
- set(Seastar_API_LEVEL "6" CACHE STRING "" FORCE)
- set(Seastar_HWLOC OFF CACHE BOOL "" FORCE)
- set(Seastar_STD_OPTIONAL_VARIANT_STRINGVIEW ON CACHE BOOL "" FORCE)
- if(Seastar_DPDK)
- find_package(dpdk QUIET)
- if(NOT DPDK_FOUND)
- include(BuildDPDK)
- build_dpdk(${CMAKE_BINARY_DIR}/src/dpdk)
- endif()
- endif()
- list(APPEND Seastar_CXX_FLAGS
- "-DSEASTAR_NO_EXCEPTION_HACK"
- "-Wno-error"
- "-Wno-sign-compare"
- "-Wno-attributes"
- "-Wno-pessimizing-move"
- "-Wno-address-of-packed-member"
- "-Wno-non-virtual-dtor")
- set(Seastar_CXX_FLAGS "${Seastar_CXX_FLAGS}" CACHE STRING "" FORCE)
- add_subdirectory(seastar)
- # create the directory so cmake won't complain when looking at the imported
- # target: Seastar exports this directory created at build-time
- file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/seastar/gen/include")
- file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/seastar/gen/src")
add_subdirectory(crimson)
endif()
diff -Nurp a/src/crimson/CMakeLists.txt b/src/crimson/CMakeLists.txt
--- a/src/crimson/CMakeLists.txt 2024-07-27 20:23:55.380291060 +0000
+++ b/src/crimson/CMakeLists.txt 2024-07-27 20:24:14.390552917 +0000
@@ -6,10 +6,11 @@ if((CMAKE_CXX_COMPILER_ID STREQUAL GNU A
list(APPEND crimson_cflag_definitions
"BOOST_ASIO_DISABLE_CONCEPTS")
endif()
+pkg_check_modules(SEASTAR IMPORTED_TARGET seastar)
set_target_properties(crimson::cflags PROPERTIES
INTERFACE_COMPILE_DEFINITIONS "${crimson_cflag_definitions}"
INTERFACE_COMPILE_OPTIONS $<$<COMPILE_LANGUAGE:CXX>:-Wno-non-virtual-dtor>
- INTERFACE_LINK_LIBRARIES Seastar::seastar)
+ INTERFACE_LINK_LIBRARIES PkgConfig::SEASTAR)
set(crimson_common_srcs
common/assert.cc
diff -Nurp a/src/crimson/os/alienstore/CMakeLists.txt b/src/crimson/os/alienstore/CMakeLists.txt
--- a/src/crimson/os/alienstore/CMakeLists.txt 2024-07-27 20:23:55.382291087 +0000
+++ b/src/crimson/os/alienstore/CMakeLists.txt 2024-07-27 20:24:14.390552917 +0000
@@ -2,8 +2,7 @@ include_directories(SYSTEM "${CMAKE_SOUR
add_library(alien::cflags INTERFACE IMPORTED)
set_target_properties(alien::cflags PROPERTIES
- INTERFACE_COMPILE_DEFINITIONS "WITH_SEASTAR;WITH_ALIEN"
- INTERFACE_INCLUDE_DIRECTORIES $<TARGET_PROPERTY:Seastar::seastar,INTERFACE_INCLUDE_DIRECTORIES>)
+ INTERFACE_COMPILE_DEFINITIONS "WITH_SEASTAR;WITH_ALIEN")
set(crimson_alien_common_srcs
${PROJECT_SOURCE_DIR}/src/common/admin_socket.cc

View file

@ -0,0 +1,70 @@
diff -Nurp a/src/CMakeLists.txt b/src/CMakeLists.txt
--- a/src/CMakeLists.txt 2024-07-27 20:20:32.740499875 +0000
+++ b/src/CMakeLists.txt 2024-07-27 20:20:52.206768005 +0000
@@ -414,7 +414,6 @@ set(libcommon_files
${CMAKE_BINARY_DIR}/src/include/ceph_ver.h
ceph_ver.c
global/global_context.cc
- xxHash/xxhash.c
common/error_code.cc
common/tracer.cc
log/Log.cc
@@ -449,6 +448,8 @@ add_library(common-objs OBJECT ${libcomm
target_compile_definitions(common-objs PRIVATE
$<TARGET_PROPERTY:${FMT_LIB},INTERFACE_COMPILE_DEFINITIONS>)
add_dependencies(common-objs legacy-option-headers)
+pkg_check_modules(XXHASH IMPORTED_TARGET libxxhash)
+target_link_libraries(common-objs PkgConfig::XXHASH)
if(WITH_JAEGER)
add_dependencies(common-objs jaeger_base)
diff -Nurp a/src/common/Checksummer.h b/src/common/Checksummer.h
--- a/src/common/Checksummer.h 2024-07-27 20:20:32.742499903 +0000
+++ b/src/common/Checksummer.h 2024-07-27 20:20:52.206768005 +0000
@@ -8,7 +8,7 @@
#include "include/byteorder.h"
#include "include/ceph_assert.h"
-#include "xxHash/xxhash.h"
+#include "xxhash.h"
class Checksummer {
public:
diff -Nurp a/src/crimson/CMakeLists.txt b/src/crimson/CMakeLists.txt
--- a/src/crimson/CMakeLists.txt 2024-07-27 20:20:32.746499958 +0000
+++ b/src/crimson/CMakeLists.txt 2024-07-27 20:21:52.466598032 +0000
@@ -122,7 +122,6 @@ add_library(crimson-common STATIC
${PROJECT_SOURCE_DIR}/src/osd/OSDMap.cc
${PROJECT_SOURCE_DIR}/src/osd/PGPeeringEvent.cc
${PROJECT_SOURCE_DIR}/src/common/scrub_types.cc
- ${PROJECT_SOURCE_DIR}/src/xxHash/xxhash.c
${crimson_common_srcs}
$<TARGET_OBJECTS:common_mountcephfs_objs>
$<TARGET_OBJECTS:common-options-objs>)
@@ -146,10 +145,12 @@ if(NOT WITH_SYSTEM_BOOST)
list(APPEND crimson_common_deps ${ZLIB_LIBRARIES})
endif()
+pkg_check_modules(XXHASH IMPORTED_TARGET libxxhash)
target_link_libraries(crimson-common
PUBLIC
${crimson_common_public_deps}
PRIVATE
+ PkgConfig::XXHASH
crc32 arch
${crimson_common_deps}
OpenSSL::Crypto)
diff -Nurp a/src/os/CMakeLists.txt b/src/os/CMakeLists.txt
--- a/src/os/CMakeLists.txt 2024-07-27 20:20:32.744499930 +0000
+++ b/src/os/CMakeLists.txt 2024-07-27 20:20:52.207768019 +0000
@@ -46,8 +46,9 @@ if(HAVE_LIBZFS)
list(APPEND libos_srcs $<TARGET_OBJECTS:os_zfs_objs>)
endif()
+pkg_check_modules(XXHASH IMPORTED_TARGET libxxhash)
add_library(os STATIC ${libos_srcs})
-target_link_libraries(os blk)
+target_link_libraries(os blk PkgConfig::XXHASH)
target_link_libraries(os heap_profiler kv)

View file

@ -0,0 +1,34 @@
Patch by Robin Mueller
The strftime method of the libmusl writes 'UTC' instead of 'GMT' when
the character Z is used in the format pattern, and it looks like the
S3 clients don't like 'UTC' in the date strings.
This patch replaces 'UTC' with 'GMT' at the relevant location.
--- a/src/rgw/rgw_rest.cc 2021-07-08 16:03:56.000000000 +0200
+++ b/src/rgw/rgw_rest.cc 2021-08-19 09:48:30.339492024 +0200
@@ -436,8 +436,21 @@
return 0;
}
- return strftime(timestr, sizeof(timestr),
- "%a, %d %b %Y %H:%M:%S %Z", tmp);
+ size_t len = strftime(timestr, sizeof(timestr),
+ "%a, %d %b %Y %H:%M:%S %Z", tmp);
+
+ int position = 0;
+ while (timestr[position] != 'U' && len - position > 3)
+ position++;
+
+ if (len - position == 3) {
+ char substr[4];
+ memcpy(substr, &timestr[position], 4);
+
+ if (strcmp(substr, "UTC") == 0)
+ memcpy(&timestr[position], "GMT", 3);
+ }
+ return len;
}
void dump_time_header(struct req_state *s, const char *name, real_time t)

View file

@ -0,0 +1,93 @@
--- a/src/common/buffer.cc
+++ b/src/common/buffer.cc
@@ -1680,7 +1680,7 @@
if (len > st.st_size - off) {
len = st.st_size - off;
}
- ssize_t ret = lseek64(fd, off, SEEK_SET);
+ ssize_t ret = lseek(fd, off, SEEK_SET);
if (ret != (ssize_t)off) {
return -errno;
}
@@ -1804,7 +1804,7 @@
#ifdef HAVE_PWRITEV
r = ::pwritev(fd, vec, veclen, offset);
#else
- r = ::lseek64(fd, offset, SEEK_SET);
+ r = ::lseek(fd, offset, SEEK_SET);
if (r != offset) {
return -errno;
}
@@ -1969,7 +1969,7 @@
int buffer::list::write_fd(int fd, uint64_t offset) const
{
- int r = ::lseek64(fd, offset, SEEK_SET);
+ int r = ::lseek(fd, offset, SEEK_SET);
if (r != offset)
return -errno;
--- a/src/os/fs/FS.cc
+++ b/src/os/fs/FS.cc
@@ -170,7 +170,7 @@
// fall back to writing zeros
ceph::bufferlist bl;
bl.append_zero(length);
- r = ::lseek64(fd, offset, SEEK_SET);
+ r = ::lseek(fd, offset, SEEK_SET);
if (r < 0) {
r = -errno;
goto out;
--- a/src/tools/cephfs/Dumper.cc
+++ b/src/tools/cephfs/Dumper.cc
@@ -137,8 +137,8 @@
}
// write the data
- off64_t seeked = ::lseek64(fd, start, SEEK_SET);
- if (seeked == (off64_t)-1) {
+ off_t seeked = ::lseek(fd, start, SEEK_SET);
+ if (seeked == (off_t)-1) {
r = errno;
derr << "Error " << r << " (" << cpp_strerror(r) << ") seeking to 0x" << std::hex << start << std::dec << dendl;
::close(fd);
@@ -402,7 +402,7 @@
while (left > 0) {
// Read
bufferlist j;
- lseek64(fd, pos, SEEK_SET);
+ lseek(fd, pos, SEEK_SET);
uint64_t l = std::min<uint64_t>(left, 1024*1024);
j.read_fd(fd, l);
--- a/src/tools/rbd/action/Export.cc
+++ b/src/tools/rbd/action/Export.cc
@@ -360,7 +360,7 @@
return;
}
- uint64_t chkret = lseek64(m_fd, m_dest_offset, SEEK_SET);
+ uint64_t chkret = lseek(m_fd, m_dest_offset, SEEK_SET);
if (chkret != m_dest_offset) {
cerr << "rbd: error seeking destination image to offset "
<< m_dest_offset << std::endl;
@@ -545,7 +545,7 @@
if (r < 0)
return r;
- uint64_t chkret = lseek64(fd, file_size, SEEK_SET);
+ uint64_t chkret = lseek(fd, file_size, SEEK_SET);
if (chkret != file_size)
r = errno;
}
--- a/src/tools/rbd/action/Import.cc
+++ b/src/tools/rbd/action/Import.cc
@@ -339,7 +339,7 @@
}
} else {
// lseek to skip this tag
- off64_t offs = lseek64(fd, length, SEEK_CUR);
+ off_t offs = lseek(fd, length, SEEK_CUR);
if (offs < 0) {
return -errno;
}

View file

@ -0,0 +1,53 @@
Patch by Robin Mueller
libmusl doesn't support the z character in the format pattern for strptime this
is a special functionality of glibc.
patch is slightly adapted version of glibc code:
https://elixir.bootlin.com/glibc/latest/source/time/strptime_l.c#L776
--- a/src/rgw/rgw_common.cc 2021-07-08 16:03:56.000000000 +0200
+++ b/src/rgw/rgw_common.cc 2021-08-18 13:08:22.938903459 +0200
@@ -531,7 +531,41 @@
{
// FIPS zeroization audit 20191115: this memset is not security related.
memset(t, 0, sizeof(*t));
- return check_str_end(strptime(s, "%a, %d %b %Y %H:%M:%S %z", t));
+ s = strptime(s, "%a, %d %b %Y %H:%M:%S", t);
+ if (s) {
+ s++;
+ int val;
+ val = 0;
+ while (isspace(*s))
+ ++s;
+ if (*s == 'Z') {
+ ++s;
+ t->tm_gmtoff = 0;
+ } else {
+ if (*s != '+' && *s != '-')
+ return false;
+ bool neg = *s++ == '-';
+ int n = 0;
+ while (n < 4 && *s >= '0' && *s <= '9') {
+ val = val * 10 + *s++ - '0';
+ ++n;
+ if (*s == ':' && n == 2 && isdigit (*(s + 1)))
+ ++s;
+ }
+ if (n == 2)
+ val *= 100;
+ else if (n != 4)
+ /* Only two or four digits recognized. */
+ return false;
+ else if (val % 100 >= 60)
+ /* Minutes valid range is 0 through 59. */
+ return false;
+ t->tm_gmtoff = (val / 100) * 3600 + (val % 100) * 60;
+ if (neg)
+ t->tm_gmtoff = -t->tm_gmtoff;
+ }
+ }
+ return check_str_end(s);
}
bool parse_rfc2616(const char *s, struct tm *t)

View file

@ -0,0 +1,21 @@
diff -Nurp a/src/pybind/mgr/dashboard/frontend/CMakeLists.txt b/src/pybind/mgr/dashboard/frontend/CMakeLists.txt
--- a/src/pybind/mgr/dashboard/frontend/CMakeLists.txt 2023-10-24 11:56:46.686189574 +0000
+++ b/src/pybind/mgr/dashboard/frontend/CMakeLists.txt 2023-10-24 12:01:01.169464299 +0000
@@ -83,7 +83,7 @@ endif(WITH_SYSTEM_NPM)
add_npm_command(
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/node_modules"
- COMMAND CYPRESS_CACHE_FOLDER=${CMAKE_SOURCE_DIR}/build/src/pybind/mgr/dashboard/cypress NG_CLI_ANALYTICS=false npm ci -f ${mgr-dashboard-userconfig}
+ COMMAND CYPRESS_CACHE_FOLDER=${CMAKE_SOURCE_DIR}/build/src/pybind/mgr/dashboard/cypress NG_CLI_ANALYTICS=false yarn install --network-timeout 600000 --frozen-lockfile ${mgr-dashboard-userconfig}
DEPENDS package.json
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "dashboard frontend dependencies are being installed"
@@ -116,7 +116,7 @@ endif()
add_npm_command(
OUTPUT "${frontend_dist_dir}"
- COMMAND DASHBOARD_FRONTEND_LANGS="${DASHBOARD_FRONTEND_LANGS}" npm run build:localize -- ${npm_args}
+ COMMAND DASHBOARD_FRONTEND_LANGS="${DASHBOARD_FRONTEND_LANGS}" yarn run build:localize ${npm_args}
DEPENDS ${frontend_src} node_modules
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "dashboard frontend is being created"

View file

@ -0,0 +1,17 @@
patch by Vladimir Bashkirtsev
diff -uNr ceph-15.2.4/src/erasure-code/shec/ErasureCodeShec.cc ceph-15.2.4-fix_ErasureCodeShec/src/erasure-code/shec/ErasureCodeShec.cc
--- ceph-15.2.4/src/erasure-code/shec/ErasureCodeShec.cc 2020-07-01 01:10:51.000000000 +0930
+++ ceph-15.2.4-fix_ErasureCodeShec/src/erasure-code/shec/ErasureCodeShec.cc 2020-11-14 00:46:20.029488684 +1030
@@ -197,7 +197,10 @@
}
unsigned int k = get_data_chunk_count();
unsigned int m = get_chunk_count() - k;
- unsigned blocksize = (*chunks.begin()).second.length();
+ unsigned blocksize = 0;
+ if (chunks.size() > 0) {
+ blocksize = (*chunks.begin()).second.length();
+ }
for (unsigned int i = 0; i < k + m; i++) {
if (chunks.find(i) == chunks.end()) {
bufferlist tmp;

View file

@ -0,0 +1,26 @@
https://gitlab.alpinelinux.org/alpine/aports/-/issues/15620
diff -Nurp a/src/pybind/mgr/dashboard/services/access_control.py b/src/pybind/mgr/dashboard/services/access_control.py
--- a/src/pybind/mgr/dashboard/services/access_control.py 2024-01-03 00:12:46.140405728 +0000
+++ b/src/pybind/mgr/dashboard/services/access_control.py 2024-01-03 00:14:22.825611708 +0000
@@ -12,7 +12,7 @@ from datetime import datetime, timedelta
from string import ascii_lowercase, ascii_uppercase, digits, punctuation
from typing import List, Optional, Sequence
-import bcrypt
+import bcrypt_ceph as bcrypt
from mgr_module import CLICheckNonemptyFileInput, CLIReadCommand, CLIWriteCommand
from mgr_util import password_hash
diff -Nurp a/src/pybind/mgr/mgr_util.py b/src/pybind/mgr/mgr_util.py
--- a/src/pybind/mgr/mgr_util.py 2024-01-03 00:11:59.903829031 +0000
+++ b/src/pybind/mgr/mgr_util.py 2024-01-03 00:13:56.113278518 +0000
@@ -3,7 +3,7 @@ import os
if 'UNITTEST' in os.environ:
import tests
-import bcrypt
+import bcrypt_ceph as bcrypt
import cephfs
import contextlib
import datetime

761
testing/ceph19/APKBUILD Normal file
View file

@ -0,0 +1,761 @@
# Contributor: John Coyle <dx9err@gmail.com>
# Contributor: Iggy Jackson <iggy@kws1.com>
# Contributor: Duncan Bellamy <dunk@denkimushi.com>
# Maintainer: Duncan Bellamy <dunk@denkimushi.com>
_pkgname=ceph
pkgver=19.1.1
pkgrel=0
_majorver=${pkgver%%.*}
pkgname=$_pkgname$_majorver
pkgdesc="Ceph is a distributed object store and file system, version $_majorver"
pkgusers="ceph"
pkggroups="ceph"
url="https://ceph.io/en/"
# 32-bit: needs more patching specific to 32bit builds
arch="all !armhf !armv7 !x86"
# https://github.com/ceph/ceph/blob/master/COPYING
license="LGPL-2.1-only AND LGPL-2.0-or-later AND GPL-2.0-only AND GPL-3.0-only AND CC-BY-SA-1.0 AND BSL-1.0 AND GPL-2.0-or-later WITH Autoconf-exception-2.0 AND BSD-3-Clause AND MIT AND custom"
depends="$pkgname-mds=$pkgver-r$pkgrel $pkgname-mgr=$pkgver-r$pkgrel $pkgname-mon=$pkgver-r$pkgrel $pkgname-osd=$pkgver-r$pkgrel"
builddir="$srcdir/ceph-$pkgver"
_lua=5.4
_base_deps="
cryptsetup
e2fsprogs
logrotate
parted
psmisc
xfsprogs
"
_osd_daemon_deps="fuse snappy lz4-libs"
_osd_tools_deps="lz4-libs"
_ceph_volume_deps="$pkgname-common=$pkgver-r$pkgrel $pkgname-osd-tools=$pkgver-r$pkgrel lvm2 py3-$pkgname-common=$pkgver-r$pkgrel"
_ceph_test_deps="
gtest-dev
py3-coverage
py3-flake8
py3-nodeenv
py3-pytest
py3-tox
py3-yaml
xmlstarlet
"
_dashboard_deps="
py3-bcrypt-ceph
py3-cherrypy
py3-more-itertools
py3-openssl
py3-prettytable
py3-requests
py3-routes
py3-yaml
"
_mgr_modules_deps="
py3-bcrypt-ceph
py3-cherrypy
py3-dateutil
py3-natsort
py3-openssl
py3-pecan
py3-requests
py3-werkzeug
"
_arrow_deps="apache-arrow-dev c-ares-dev re2-dev"
makedepends="
acl-dev
argp-standalone
bc
boost-dev
btrfs-progs
bzip2-dev
cmake
coreutils
cryptsetup-dev
cunit-dev
curl-dev
cython
diffutils
doxygen
eudev-dev
expat-dev
fcgi-dev
flex
fmt-dev
fuse-dev
git
graphviz-dev
gperf
isa-l-dev
jq
keyutils-dev
libaio-dev
libatomic_ops-dev
libcap-dev
libcap-ng-dev
libedit-dev
librdkafka-dev
libnl3-dev
libtirpc-dev
libtool
liburing-dev
libxml2-dev
linux-headers
lmdb-dev
lua$_lua-dev
lvm2-dev
lz4-dev
nasm
nodejs
npm
nss-dev
oath-toolkit-dev
openldap-dev
openssl-dev>3
procps
python3-dev
py3-setuptools
py3-sphinx
rabbitmq-c-dev
readline-dev
rocksdb7-dev
rpcgen
samurai
snappy-dev
sqlite-dev
userspace-rcu-dev
util-linux-dev
xfsprogs-dev
xxhash-dev
yarn
zstd-dev
$_dashboard_deps
$_mgr_modules_deps
$_base_deps
$_osd_daemon_deps
$_osd_tools_deps
$_ceph_volume_deps
$_ceph_test_deps
$_arrow_deps
"
case "$CARCH" in
aarch64|x86_64) makedepends="$makedepends isa-l_crypto-dev" ;;
esac
source="https://download.ceph.com/tarballs/ceph-$pkgver.tar.gz
ceph.confd
ceph.initd
10-isal_crypto.patch
10-isal.patch
10-musl-fixes.patch
10-xxhash.patch
11-dump_time_header_impl.patch
11-lfs.patch
11-parse_rfc1123_alt.patch
21-yarn.patch
35-fix_ErasureCodeShec.patch
47-bcrypt.patch
gcc13.patch
gcc14.patch
boost-url.patch
ppc64le.patch
"
# to prevent things from installing wrong ceph libs, since they have the same SOMAJOR
sonameprefix="ceph$_majorver:so:"
options="!check" # todo
subpackages="
$pkgname-doc
$pkgname-base
$pkgname-common
$pkgname-mds
$pkgname-mgr-diskprediction-local:mgr_diskpredicton_local:noarch
$pkgname-mgr-modules-core:mgr_modules_core:noarch
$pkgname-mgr-rook:mgr_rook:noarch
$pkgname-mgr-k8events:mgr_k8events:noarch
$pkgname-mgr
$pkgname-mon::noarch
$pkgname-mon-daemon:mon_daemon
$pkgname-mon-tools:mon_tools
$pkgname-mount:ceph_mount
$pkgname-fuse:ceph_fuse
$pkgname-openrc
$pkgname-osd::noarch
$pkgname-osd-daemon:osd_daemon
$pkgname-osd-tools:osd_tools
$pkgname-volume:ceph_volume:noarch
$pkgname-radosgw
$pkgname-bash-completion:bash_completion:noarch
$pkgname-dev
$pkgname-user::noarch
$pkgname-utils
$pkgname-cephadm::noarch
cephfs$_majorver-mirror:mirror
cephfs$_majorver-shell:shell:noarch
cephfs$_majorver-top:top:noarch
rbd-fuse$_majorver:rbd_fuse
rbd-mirror$_majorver:rbd_mirror
rbd-nbd$_majorver:rbd_nbd
librbd$_majorver:librbd
libcephfs$_majorver:libcephfs
libcephsqlite$_majorver:libcephsqlite
librados$_majorver:librados
py3-rados$_majorver:_py3_rados
libradosstriper$_majorver:libradosstriper
py3-rbd$_majorver:_py3_rbd
py3-cephfs$_majorver:_py3_cephfs
py3-$pkgname-common:_py3_ceph_common:noarch
"
case "$CARCH" in
riscv64) ;;
*) subpackages="$pkgname-mgr-dashboard:mgr_dashboard:noarch $subpackages" ;;
esac
# Whether this package is the default (latest) ceph version.
_default_ceph="no"
if [ "$_default_ceph" = yes ]; then
provides="ceph=$pkgver-r$pkgrel"
replaces="ceph"
subpackages="$subpackages ceph-dev:_dev"
fi
_ceph_uid=167
_ceph_gid=167
_py3_sitelib() {
python3 -c "import site; print(site.getsitepackages()[0])"
}
prepare() {
default_prepare
rm -r src/isa-l
rm -r src/xxHash
}
build() {
export CEPH_BUILD_VIRTUALENV="$builddir"
export CFLAGS="${CFLAGS/-fno-plt} -O2 -DNDEBUG"
export CXXFLAGS="${CXXFLAGS/-fno-plt} -O2 -DNDEBUG -Wno-deprecated-declarations -fno-permissive"
case "$CARCH" in
riscv64) local _dash="OFF" ;;
*) local _dash="ON" ;;
esac
cmake -B build -G Ninja -Wno-dev \
-DCMAKE_BUILD_TYPE=MinSizeRel \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=/usr/lib \
-DCMAKE_INSTALL_LOCALSTATEDIR=/var \
-DCMAKE_INSTALL_SYSCONFDIR=/etc \
-DNINJA_MAX_COMPILE_JOBS=$JOBS \
-DALLOCATOR=libc \
-DENABLE_GIT_VERSION=OFF \
-DLUA_LIBRARIES=/usr/lib/lua"$_lua"/liblua.so \
-DWITH_BABELTRACE=OFF \
-DWITH_JAEGER=OFF \
-DWITH_LTTNG=OFF \
-DWITH_MANPAGE=ON \
-DWITH_MGR_DASHBOARD_FRONTEND="$_dash" \
-DWITH_PYTHON3=3 \
-DWITH_RADOSGW_AMQP_ENDPOINT=OFF \
-DWITH_RADOSGW_SELECT_PARQUET=ON \
-DWITH_RADOSGW_POSIX=OFF \
-DWITH_RDMA=OFF \
-DWITH_REENTRANT_STRSIGNAL=ON \
-DWITH_SEASTAR=OFF \
-DWITH_SPDK=OFF \
-DWITH_SYSTEMD=OFF \
-DWITH_CEPHFS_SHELL=ON \
-DWITH_SYSTEM_ARROW=ON \
-DWITH_SYSTEM_BOOST=ON \
-DWITH_SYSTEM_FMT=OFF \
-DWITH_SYSTEM_LIBURING=ON \
-DWITH_SYSTEM_NPM=ON \
-DWITH_SYSTEM_ROCKSDB=ON \
-DWITH_SYSTEM_ZSTD=ON \
-DWITH_QATLIB=OFF \
-DWITH_QATZIP=OFF \
-DWITH_TESTS="$(want_check && echo ON || echo OFF)" \
-DWITH_THREAD_SAFE_RES_QUERY=ON
export NODE_OPTIONS="--openssl-legacy-provider"
cmake --build build --target common-options-objs
cmake --build build
}
package() {
DESTDIR="$pkgdir" cmake --install build
# remove the upstream init file and put in openrc ones
rm -f "$pkgdir"/etc/init.d/ceph
install -D -m 755 "$srcdir"/"$_pkgname".initd "$pkgdir"/etc/init.d/ceph
install -D -m 644 "$srcdir"/"$_pkgname".confd "$pkgdir"/etc/conf.d/ceph
# move mount.* binaries to /sbin
mkdir -p "$pkgdir"/sbin
mv "$pkgdir"/usr/sbin/mount.* "$pkgdir"/sbin
install -m 644 -D src/etc-rbdmap "$pkgdir"/etc/ceph/rbdmap
install -m 644 -D src/logrotate.conf "$pkgdir"/etc/logrotate.d/ceph
install -m 644 -D etc/sysctl/90-ceph-osd.conf "$pkgdir"/etc/sysctl.d/90-ceph-osd.conf
# udev rules
install -m 644 -D udev/50-rbd.rules "$pkgdir"/usr/lib/udev/rules.d/50-rbd.rules
# sudoers.d
install -m 600 -D sudoers.d/ceph-smartctl "$pkgdir"/etc/sudoers.d/ceph-smartctl
# delete systemd related stuff
rm -f "$pkgdir"/usr/sbin/ceph-volume-systemd
# move docs to docs
mkdir -p "$pkgdir"/usr/share/doc/ceph/dashboard
mv "$pkgdir"/usr/share/ceph/mgr/dashboard/*.rst "$pkgdir"/usr/share/doc/ceph/dashboard/
mv "$pkgdir"/usr/share/ceph/mgr/cephadm/HACKING.rst "$pkgdir"/usr/share/doc/ceph/cephadm-HACKING.rst
}
check() {
cd "$builddir"/build
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
_dev() {
mkdir -p "$subpkgdir"
depends="$pkgname-dev=$pkgver-r$pkgrel"
}
# This subpackage is a little weird and a side effect of trying to keep
# the daemon packages as small as possible. We might be able to roll this into
# the base/common package later if we can slim those down or break them up in a
# different way
user() {
pkgdesc="Minimal package to create a user for other ceph packages."
depends=""
install="$pkgname-user.pre-install"
_default_replace_majorversion
mkdir -p "$subpkgdir"
}
base() {
pkgdesc="Base is the package that includes all the files shared amongst ceph servers"
depends="$_base_deps
$pkgname-user=$pkgver-r$pkgrel
$pkgname-common=$pkgver-r$pkgrel
librbd$_majorver=$pkgver-r$pkgrel
librados$_majorver=$pkgver-r$pkgrel
libcephfs$_majorver=$pkgver-r$pkgrel
"
_default_replace_majorversion
amove usr/bin/ceph-crash \
usr/bin/crushtool \
usr/bin/*maptool \
usr/bin/ceph-kvstore-tool \
usr/bin/ceph-run \
usr/sbin/ceph-create-keys \
usr/libexec/ceph/ceph_common.sh \
usr/lib/rados-classes/*.so* \
usr/lib/ceph/erasure-code/libec_*.so* \
usr/lib/ceph/compressor/libceph_*.so* \
usr/lib/ceph/crypto/libceph_*.so* \
usr/lib/ceph/extblkdev/*.so* \
etc/logrotate.d/ceph
for dir in crash crash/posted tmp bootstrap-osd bootstrap-mds \
bootstrap-rgw bootstrap-mgr bootstrap-rbd \
bootstrap-rbd-mirror; do
install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
"$subpkgdir"/var/lib/ceph/$dir
done
}
common() {
pkgdesc="Common utilities to mount and interact with a ceph storage cluster."
depends="py3-cephfs$_majorver=$pkgver-r$pkgrel
py3-prettytable
py3-rados$_majorver=$pkgver-r$pkgrel
py3-rbd$_majorver=$pkgver-r$pkgrel
"
_default_replace_majorversion
amove usr/bin/ceph \
usr/bin/ceph-authtool \
usr/bin/ceph-conf \
usr/bin/ceph-rbdnamer \
usr/bin/rados \
usr/bin/rbd \
usr/bin/rbdmap \
usr/share/ceph/*.ceph.com* \
etc/ceph/rbdmap
amove "$(_py3_sitelib)"/ceph_argparse.py* "$(_py3_sitelib)"/ceph_daemon.py*
amove usr/lib/udev/rules.d/50-rbd.rules
install -m 3770 -o $_ceph_uid -g $_ceph_gid -d \
"$subpkgdir"/var/log/ceph
install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
"$subpkgdir"/var/lib/ceph
}
mds() {
pkgdesc="Metadata server daemon for the Ceph distributed file system."
depends="$pkgname-base=$pkgver-r$pkgrel"
_default_replace_majorversion
amove usr/bin/ceph-mds
install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
"$subpkgdir"/var/lib/ceph/mds
}
mon() {
pkgdesc="Cluster monitor daemon virtual package for the Ceph distributed file system."
depends="$pkgname-base=$pkgver-r$pkgrel
$pkgname-mon-daemon=$pkgver-r$pkgrel
$pkgname-mon-tools=$pkgver-r$pkgrel
"
_default_replace_majorversion
mkdir -p "$subpkgdir"
}
mon_daemon() {
pkgdesc="Cluster monitor daemon for the Ceph distributed file system."
depends="$pkgname-user=$pkgver-r$pkgrel"
_default_replace_majorversion
amove usr/bin/ceph-mon
install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
"$subpkgdir"/var/lib/ceph/mon
}
mon_tools() {
pkgdesc="Cluster monitor tools for the Ceph distributed file system."
depends=
_default_replace_majorversion
amove usr/bin/ceph-monstore-tool
install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
"$subpkgdir"/var/lib/ceph/mon
}
ceph_fuse() {
pkgdesc="FUSE based client for Ceph distributed network file system."
depends=
_default_replace_majorversion
amove usr/bin/ceph-fuse sbin/mount.fuse.ceph
}
ceph_mount() {
pkgdesc="CephFS mount tools"
depends="librados$_majorver=$pkgver-r$pkgrel"
_default_replace_majorversion
amove sbin/mount.ceph
}
rbd_fuse() {
pkgdesc="FUSE based client to map Ceph rbd images to files."
depends=
_default_replace_majorversion
amove usr/bin/rbd-fuse
}
rbd_mirror() {
pkgdesc="Daemon for mirroring RBD images between Ceph clusters."
depends="$pkgname-common=$pkgver-r$pkgrel"
_default_replace_majorversion
amove usr/bin/rbd-mirror
}
rbd_nbd() {
pkgdesc="NBD based client to map Ceph rbd images to local device."
depends=
_default_replace_majorversion
amove usr/bin/rbd-nbd
}
radosgw() {
pkgdesc="Rados REST gateway which implements Amazon's S3 and OpenStack's Swift APIs."
depends="$pkgname-common=$pkgver-r$pkgrel oath-toolkit-liboath"
_default_replace_majorversion
amove usr/bin/radosgw*
amove usr/bin/rgw-*
mkdir -p "$subpkgdir"/var/lib/ceph/radosgw
}
osd() {
pkgdesc="Object storage daemon virtual package for the Ceph distributed file system."
depends="$pkgname-osd-daemon=$pkgver-r$pkgrel
$pkgname-osd-tools=$pkgver-r$pkgrel
$pkgname-volume=$pkgver-r$pkgrel"
_default_replace_majorversion
mkdir -p "$subpkgdir"
}
osd_daemon() {
pkgdesc="Object storage daemon for the Ceph distributed file system."
depends="$_osd_daemon_deps $pkgname-user=$pkgver-r$pkgrel"
_default_replace_majorversion
amove usr/bin/ceph-osd \
usr/libexec/ceph/ceph-osd-prestart.sh \
etc/sudoers.d/ceph-smartctl \
etc/sysctl.d/90-ceph-osd.conf
install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
"$subpkgdir"/var/lib/ceph/osd
}
osd_tools() {
pkgdesc="Object storage daemon tools for the Ceph distributed file system."
depends="$pkgname-base=$pkgver-r$pkgrel $_osd_tools_deps"
_default_replace_majorversion
amove usr/bin/ceph-clsinfo usr/bin/ceph-*-tool
install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
"$subpkgdir"/var/lib/ceph/osd
}
ceph_volume() {
pkgdesc="ceph-volume tool for the Ceph distributed file system."
depends="$_ceph_volume_deps"
_default_replace_majorversion
amove usr/sbin/ceph-volume \
"$(_py3_sitelib)"/ceph_volume "$(_py3_sitelib)"/ceph_volume-*
}
librados() {
pkgdesc="RADOS distributed object store client library"
depends=
_default_replace_majorversion
amove usr/lib/librados.so.* usr/lib/ceph/libceph-common.so.*
}
_py3_rados() {
pkgdesc="Python libraries for the RADOS object store"
depends=py3-$pkgname-common=$pkgver-r$pkgrel
_default_replace_majorversion
amove "$(_py3_sitelib)"/rados*
}
libradosstriper() {
pkgdesc="RADOS striping library"
depends=
_default_replace_majorversion
amove usr/lib/libradosstriper.so.*
}
librbd() {
pkgdesc="RADOS block device client library"
depends=
_default_replace_majorversion
amove usr/lib/librbd.so.*
}
_py3_rbd() {
pkgdesc="Python libraries for the RADOS block device"
depends="py3-rados$_majorver=$pkgver-r$pkgrel"
_default_replace_majorversion
amove "$(_py3_sitelib)"/rbd*
}
libcephsqlite() {
pkgdesc="SQLite Virtual File System (VFS) on top of RADOS"
depends=
_default_replace_majorversion
amove usr/lib/libcephsqlite.so*
}
libcephfs() {
pkgdesc="Ceph distributed file system client library"
depends=
_default_replace_majorversion
amove usr/lib/libcephfs.so.*
}
mirror() {
pkgdesc="daemon for mirroring CephFS directory snapshots between Ceph clusters"
depends=
_default_replace_majorversion
amove /usr/bin/cephfs-mirror
}
shell() {
pkgdesc="interactive shell for the Ceph distributed file system"
depends="py3-rados$_majorver=$pkgver-r$pkgrel"
_default_replace_majorversion
amove "$(_py3_sitelib)"/cephfs_shell*
amove /usr/bin/cephfs-shell
}
top() {
pkgdesc="top like utility to display various filesystem metrics in realtime"
depends="py3-rados$_majorver=$pkgver-r$pkgrel"
_default_replace_majorversion
amove "$(_py3_sitelib)"/cephfs_top*
amove /usr/bin/cephfs-top
}
_py3_cephfs() {
pkgdesc="Python libraries for Ceph distributed file system"
depends="py3-rados$_majorver=$pkgver-r$pkgrel"
_default_replace_majorversion
amove "$(_py3_sitelib)"/cephfs*
}
_py3_ceph_common() {
pkgdesc="Python dependencies for $pkgname distributed file system"
depends="py3-setuptools py3-yaml"
_default_replace_majorversion
amove "$(_py3_sitelib)"/ceph-*.egg-info "$(_py3_sitelib)"/ceph
}
utils() {
pkgdesc="Ceph utils and recovery tools"
depends="$pkgname-common=$pkgver-r$pkgrel"
_default_replace_majorversion
amove usr/bin/ceph-diff-sorted \
usr/bin/ceph-post-file \
usr/bin/ceph-syn \
usr/bin/cephfs-data-scan \
usr/bin/ceph-dencoder \
usr/lib/ceph/denc \
usr/bin/cephfs-journal-tool \
usr/bin/cephfs-table-tool \
usr/bin/rbd-replay* \
usr/bin/crushdiff
}
bash_completion() {
pkgdesc="Bash completions for Ceph"
depends=
_default_replace_majorversion
install_if="ceph=$pkgver-r$pkgrel bash-completion"
amove etc/bash_completion.d/*
}
mgr_dashboard() {
pkgdesc="Dashboard module for ceph-mgr"
depends="
$pkgname-common=$pkgver-r$pkgrel
$pkgname-mgr=$pkgver-r$pkgrel
$_dashboard_deps
"
_default_replace_majorversion
amove usr/share/ceph/mgr/dashboard
}
mgr_diskpredicton_local() {
pkgdesc="diskprediction-local module for ceph-mgr"
depends="$pkgname-mgr=$pkgver-r$pkgrel
py3-numpy
py3-scikit-learn
py3-scipy
"
_default_replace_majorversion
amove usr/share/ceph/mgr/diskprediction_local
}
mgr_modules_core() {
pkgdesc="ceph manager modules which are always enabled"
depends="
$_mgr_modules_deps
"
_default_replace_majorversion
local _mod="alerts balancer crash devicehealth influx insights iostat localpool mirroring nfs orchestrator \
osd_perf_query osd_support pg_autoscaler progress prometheus rbd_support restful selftest snap_schedule \
stats status telegraf telemetry test_orchestrator volumes zabbix"
for _m in ${_mod}; do
amove usr/share/ceph/mgr/"$_m"
done
}
mgr_rook() {
pkgdesc="rook module for ceph-mgr"
depends="$pkgname-mgr=$pkgver-r$pkgrel
py3-jsonpatch
py3-kubernetes"
_default_replace_majorversion
amove usr/share/ceph/mgr/rook
}
mgr_k8events() {
pkgdesc="kubernetes events module for ceph-mgr"
depends="$pkgname-mgr=$pkgver-r$pkgrel
py3-kubernetes
py3-yaml"
_default_replace_majorversion
amove usr/share/ceph/mgr/k8sevents
}
mgr() {
pkgdesc="Ceph Manager Daemon"
depends="$pkgname-base=$pkgver-r$pkgrel
$pkgname-mgr-modules-core=$pkgver-r$pkgrel"
_default_replace_majorversion
amove usr/bin/ceph-mgr usr/share/ceph/mgr
install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
"$subpkgdir"/var/lib/ceph/mgr
}
cephadm() {
pkgdesc="cephadm tool $pkgver"
depends="lvm2"
_default_replace_majorversion
amove usr/sbin/cephadm
}
_default_replace_majorversion() {
if [ "$_default_ceph" = "yes" ]; then
local stripped="${subpkgname/"$_majorver"/}"
# we want to replace both the generic name (ceph-) and the prior major (ceph1X-)
replaces="$stripped ${subpkgname/"$_majorver"/"$(( _majorver - 1 ))"}"
provides="$stripped=$pkgver-r$pkgrel"
fi
}
sha512sums="
1c50a1860a20917a563244ff50ff1a503f369921a7608b9ddf84107fb71e8f5c580cef183f45b35eb4f889eda36608dad2a26e29b0950dfaf8205b60a0fb4c18 ceph-19.1.1.tar.gz
110bdbcb40216c7ed155a8d23020784741b4992d895f4f04a146d275506e4e68053854d3b063b41e9c9b3e3e4f95b6b90602f92c185c853c0d8f47ad0c6b7121 ceph.confd
ce5f162501f6b67fe254546dddf880d1a5b1d1a0fa69e0b1918de17e8da45c5c6124512b8cbd98b76f29d931403de0d11c5ffd330ed8ee1f4dc75bb04baecae3 ceph.initd
9d41023c3265b78186457810ce62562455358d48775da2a382e13212b1e9f50bc909a36806d728a2dd2028c1529e1aa802b92699fe1fc5cb2df07c7086a3d4a8 10-isal_crypto.patch
1edb30da73fa99d8f20889bd5a0f1405019c7268190bc6c2b10dc3835f5301bf15692f6bbf11174b9c780c07678ea848e81b3b727d6966bbb76107c2b8000601 10-isal.patch
94687578411bf0de1b17555ed81c188c88ea63ac4a25993bd8fde9cf68afbbfbdec7b2d7c54fdcfbd4aed4eb78754e8061c308955596cbe037ff15b575874cc6 10-musl-fixes.patch
54ff5e84b3b6fea2e259b74d4cba9c0bedda89ad6b11ec8be24507bca1c6175912b71b9006ea616af8d7527ae7339c24d74c68b4379ebc110b1315d0e3d47f85 10-xxhash.patch
211e6f5f8fc962878196ec917984781eb4a8a9495bcc8d1729b34ac66abd2d4a0b7388ae2caee9d5deb664d54860d120a37215924625e82eac9bfca16179667a 11-dump_time_header_impl.patch
149cdeccedcd9cf951769814a93b2eea654fd98361853ae040c18862e133c4419d3cf0de2d77dc5328e9c437122424159c6384c74e55e297309f58ae9933e36f 11-lfs.patch
253a7bf9fa6a68547f2c9269570be86aa659ef75ab0ed4c9d1a53be70de1ca6079508f19fe5ddb02ed9edda349e121037f8ed4d6b5b0e640edaab863ce6b280d 11-parse_rfc1123_alt.patch
b947a8f13e08b1cfaad82906ac04fa875c651cff660e64c43c7ba52eedb2a79fb2dc276f8e3ac9ee7d1264414bcee78640ec0cfc31600394313ddb0c6baf76c8 21-yarn.patch
abb3cab9c01cc3d6d42a9858678059a8c9c43bda2649bf97b489fdc205eb10ae27f9fb7302062e0fb41f5cffddbfc2ae529130569034f373732a0a5d33aba86e 35-fix_ErasureCodeShec.patch
71ffe6f3263b3546bb3d3593981a288ee8136d44f8c1e734ecfae65b71ea3f7c91e6040c337f237fa41269328378c955e93ed13b9d35e0ad8efd785b75d0f595 47-bcrypt.patch
afef1cc7e43f500d95d2ffd1687cfcb756e9d8dec729186a25d513d4401b38f00edac922562a161575b1da1a65ded3e99d01cf34f9bc329f6d08cf2b896acd0c gcc13.patch
7dbb53629339d702e604314102ae3908ba8adfb0f850858e88727ab13d1e8081ea426048f1c9293fadc0551a4c38954bcaf0a44e37122db9b21355aa4033215b gcc14.patch
8290fdfe74573ad5558066425f59185230f040e01c6a5437116b27715914dc56fda86a1b73fbed7abf727a574f1d50fe643c62958d9ce7162e769b6eaf880d80 boost-url.patch
c2e047da6f721bf64053571bbad60c5948a2bfd7c28f01b4816a274c2f0b8a60812344030d9b2cfd224edaf54fcfa94858d7ba5d3c0d3e2519585f3e61d34cda ppc64le.patch
"

View file

@ -0,0 +1,58 @@
diff -Nurp a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt 2024-07-28 07:11:18.290388744 +0000
+++ b/CMakeLists.txt 2024-07-28 07:13:12.491899849 +0000
@@ -666,7 +666,7 @@ option(WITH_SYSTEM_BOOST "require and bu
# Boost::thread depends on Boost::atomic, so list it explicitly.
set(BOOST_COMPONENTS
atomic chrono thread system regex random program_options date_time
- iostreams context coroutine)
+ iostreams context coroutine url)
set(BOOST_HEADER_COMPONENTS container)
if(WITH_MGR)
diff -Nurp a/src/mds/BoostUrlImpl.cc b/src/mds/BoostUrlImpl.cc
--- a/src/mds/BoostUrlImpl.cc 2024-07-28 07:12:56.769692199 +0000
+++ b/src/mds/BoostUrlImpl.cc 1970-01-01 00:00:00.000000000 +0000
@@ -1,8 +0,0 @@
-/*
- * https://www.boost.org/doc/libs/1_82_0/libs/url/doc/html/url/overview.html#url.overview.requirements
- *
- * To use the library as header-only; that is, to eliminate the requirement
- * to link a program to a static or dynamic Boost.URL library,
- * simply place the following line in exactly one source file in your project.
- */
-#include <boost/url/src.hpp>
diff -Nurp a/src/mds/CMakeLists.txt b/src/mds/CMakeLists.txt
--- a/src/mds/CMakeLists.txt 2024-07-28 07:11:18.298388851 +0000
+++ b/src/mds/CMakeLists.txt 2024-07-28 07:14:59.747316408 +0000
@@ -45,12 +45,12 @@ set(mds_srcs
QuiesceDbManager.cc
QuiesceAgent.cc
MDSRankQuiesce.cc
- BoostUrlImpl.cc
${CMAKE_SOURCE_DIR}/src/common/TrackedOp.cc
${CMAKE_SOURCE_DIR}/src/common/MemoryModel.cc
${CMAKE_SOURCE_DIR}/src/osdc/Journaler.cc
${CMAKE_SOURCE_DIR}/src/mgr/MDSPerfMetricTypes.cc)
add_library(mds STATIC ${mds_srcs})
target_link_libraries(mds PRIVATE
- heap_profiler cpu_profiler osdc ${LUA_LIBRARIES})
+ heap_profiler cpu_profiler osdc ${LUA_LIBRARIES}
+ Boost::url)
target_include_directories(mds PRIVATE "${LUA_INCLUDE_DIR}")
diff -Nurp a/src/test/mds/CMakeLists.txt b/src/test/mds/CMakeLists.txt
--- a/src/test/mds/CMakeLists.txt 2024-07-28 07:11:18.303388917 +0000
+++ b/src/test/mds/CMakeLists.txt 2024-07-28 07:13:12.492899862 +0000
@@ -18,11 +18,10 @@ target_link_libraries(unittest_mds_sessi
add_executable(unittest_mds_quiesce_db
TestQuiesceDb.cc
../../../src/mds/QuiesceDbManager.cc
- ../../../src/mds/BoostUrlImpl.cc
$<TARGET_OBJECTS:unit-main>
)
add_ceph_unittest(unittest_mds_quiesce_db)
-target_link_libraries(unittest_mds_quiesce_db ceph-common global)
+target_link_libraries(unittest_mds_quiesce_db ceph-common global Boost::url)
# unittest_mds_quiesce_agent
add_executable(unittest_mds_quiesce_agent

17
testing/ceph19/ceph.confd Normal file
View file

@ -0,0 +1,17 @@
# Original source: https://gitweb.gentoo.org/repo/gentoo.git/tree/sys-cluster/ceph/files/ceph.confd-r5
# Example
# default ceph conf file
#ceph_conf="/etc/ceph/ceph.conf"
# Set RADOSGW_WANT_NAME_PARAM=y in order to make the init script add
# a --name=client.${RC_SVCNAME} parameter to command_args for radosgw.*
# service instances. This will make the service use a key by the name
# of client.${RC_SVCNAME} instead of the default client.admin key.
# A setting like this in the ceph config file can be used to customize
# the rgw_data and keyring paths used by radosgw instances:
# [client]
# rgw_data = /var/lib/ceph/radosgw/$cluster-$id
# keyring = /var/lib/ceph/radosgw/$cluster-$id/keyring
RADOSGW_WANT_NAME_PARAM=n

118
testing/ceph19/ceph.initd Normal file
View file

@ -0,0 +1,118 @@
#!/sbin/openrc-run
# Original source: https://gitweb.gentoo.org/repo/gentoo.git/tree/sys-cluster/ceph/files/ceph.initd-r12
# make sure /etc/conf.d/ceph gets loaded for ceph-mon etc
_CONFD_FILE="${RC_SERVICE%/*}/../conf.d/${RC_SVCNAME%-*}"
if [ -r "${_CONFD_FILE}" ]; then
. "${_CONFD_FILE}" || exit 1
fi
: "${ceph_conf:=/etc/ceph/ceph.conf}"
daemon_type="${RC_SVCNAME#ceph-}"
daemon_type="${daemon_type%%.*}"
daemon_id="${RC_SVCNAME#ceph-*.}"
daemon_id="${daemon_id:-0}"
: "${rundir:=/run/ceph}"
: "${user:=ceph}"
: "${group:=ceph}"
: "${rc_ulimit:=-n 1048576 -u 1048576}"
pidfile="${rundir}/supervisor-${daemon_type}.${daemon_id}.pid"
daemon_pidfile="${rundir}/${daemon_type}.${daemon_id}.pid"
command="/usr/bin/${RC_SVCNAME%%.*}"
command_args="-i ${daemon_id} --pid-file ${daemon_pidfile} -c ${ceph_conf}"
extra_commands="${extra_commands} reload"
command_args_foreground="--foreground"
retry="${CEPH_TERMTIMEOUT:-TERM/120/KILL/5}"
start_stop_daemon_args="--user ${user} --group ${group}"
supervise_daemon_args="--user ${user} --group ${group}"
: "${supervisor:=supervise-daemon}"
: "${stdout:=/var/log/ceph/ceph}"
: "${stderr:=/var/log/ceph/ceph}"
: "${respawn_delay:=10}"
: "${respawn_max:=5}"
: "${respawn_period:=1800}"
: "${osd_respawn_delay:=15}"
: "{osd_respawn_max:=10}"
: "{radosgw_respawn_max:=5}"
: "${radosgw_respawn_period:=30}"
depend() {
use dns logger
after net ntpd ntp-client chronyd
before netmount
}
is_type_valid() {
case ${daemon_type} in
mon|mds|osd|mgr|radosgw) return 0;;
*) return 1;;
esac
}
start_pre() {
local log_dir
export CEPH_CONF="${ceph_conf}"
checkpath -d -q -o "${user}:${group}" "${rundir}"
if ! is_type_valid ;then
eerror "Please give valid Ceph Server Type: mds, mon, osd"
return 1
elif pgrep -f "[c]eph-${daemon_type} -i ${daemon_id} "; then
eerror "${daemon_type}.${daemon_id} is still running, refusing to start"
return 1
fi
if [ -n "${bluestore_osd_fsid}" ]; then
einfo "Mounting Bluestore"
ceph-volume lvm activate "${daemon_id}" "${bluestore_osd_fsid}" --no-systemd
fi
if [ "${daemon_type}" = radosgw ] && [ "${RADOSGW_WANT_NAME_PARAM}" = y ]; then
command_args="${command_args} --name client.${daemon_id}"
fi
local arg_name arg_val repl_arg_name
for arg_name in stdout stderr respawn_delay respawn_max respawn_period; do
eval arg_val="\${${daemon_type}_${arg_name}}"
if [ -z "${arg_val}" ]; then
eval arg_val="\${${arg_name}}"
else
eval "${arg_name}=\"${arg_val}\""
fi
if [ "${arg_name}" = "stderr" ] || [ "${arg_name}" = "stdout" ]; then
local log_file log_postfix
log_postfix=".${daemon_id}-${arg_name}.log"
log_file="${arg_val}"
if [ "${log_file}" != /dev/null ]; then
log_file="${log_file}${log_postfix}"
log_dir="$(dirname "${log_file}")"
checkpath -m 0755 -o "${user}:${group}" -d "${log_dir}"
fi
repl_arg_name="$(printf -- "%s\n" "${arg_name}" | tr _ -)"
supervise_daemon_args="${supervise_daemon_args} --${repl_arg_name}=${log_file}"
fi
done
}
reload() {
ebegin "Reloading Ceph ${daemon_type}.${daemon_id}"
start-stop-daemon --signal 1 "${start_stop_daemon_args}"
eend ${?}
}
# vim:ft=gentoo-init-d:ts=4:sts=4:sw=4:noet:

View file

@ -0,0 +1,5 @@
#!/bin/sh
addgroup ceph -g 167 -S 2>/dev/null
adduser ceph -u 167 -S -G ceph -s /sbin/nologin -h /var/lib/ceph -g "Ceph Daemons" 2> /dev/null
exit 0

View file

@ -0,0 +1,31 @@
--- a/src/include/buffer_fwd.h
+++ b/src/include/buffer_fwd.h
@@ -1,6 +1,8 @@
#ifndef BUFFER_FWD_H
#define BUFFER_FWD_H
+#include <cstdint>
+
namespace ceph {
namespace buffer {
inline namespace v15_2_0 {
--- a/src/client/Trace.h
+++ b/src/client/Trace.h
@@ -18,6 +18,7 @@
#include <stdlib.h>
+#include <cstdint>
#include <list>
#include <string>
#include <fstream>
--- a/src/common/pretty_binary.cc
+++ b/src/common/pretty_binary.cc
@@ -4,6 +4,7 @@
#include "pretty_binary.h"
#include <stdexcept>
#include <sstream>
+#include <cstdint>
std::string pretty_binary_string_reverse(const std::string& pretty)
{

141
testing/ceph19/gcc14.patch Normal file
View file

@ -0,0 +1,141 @@
From 0eace4ea9ea42412d4d6a16d24a8660642e41173 Mon Sep 17 00:00:00 2001
From: Radoslaw Zarzynski <rzarzyns@redhat.com>
Date: Wed, 24 Jan 2024 17:22:44 +0000
Subject: [PATCH] common/dout: fix FTBFS on GCC 14
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The following problem has been reported by Kaleb Keithley:
```
/builddir/build/BUILD/ceph-18.2.1/src/osd/osd_types.h: In lambda function:
/builddir/build/BUILD/ceph-18.2.1/src/common/dout.h:184:73: error: call to non-constexpr function virtual unsigned int DoutPrefixProvider::get_subsys() const
184 | dout_impl(pdpp->get_cct(), ceph::dout::need_dynamic(pdpp->get_subsys()), v) \
| ~~~~~~~~~~~~~~~~^~
/builddir/build/BUILD/ceph-18.2.1/src/common/dout.h:155:58: note: in definition of macro dout_impl
155 | return (cctX->_conf->subsys.template should_gather<sub, v>()); \
| ^~~
/builddir/build/BUILD/ceph-18.2.1/src/osd/osd_types.h:3617:3: note: in expansion of macro ldpp_dout
3617 | ldpp_dout(dpp, 10) << "build_prior all_probe " << all_probe << dendl;
| ^~~~~~~~~
```
For details of the problem and the idea behind the fix,
please refer to the comment this commit brings to `dout.h`.
The minimized replicator that the facilitated Goldbot-based
investigation:
```cpp
namespace ceph::dout {
template<typename T>
struct dynamic_marker_t {
T value;
// constexpr ctor isn't needed as it's an aggregate type
constexpr operator T() const { return value; }
};
template<typename T>
constexpr dynamic_marker_t<T> need_dynamic(T&& t) {
return dynamic_marker_t<T>{ std::forward<T>(t) };
}
template<typename T>
struct is_dynamic : public std::false_type {};
template<typename T>
struct is_dynamic<dynamic_marker_t<T>> : public std::true_type {};
} // ceph::dout
struct subsys_t {
template <unsigned SubV, int LvlV>
bool should_gather() const {
return true;
}
bool should_gather(const unsigned sub, int level) const {
return false;
}
};
static subsys_t subsys;
do { \
const bool should_gather = [&](const auto cctX) { \
if constexpr (ceph::dout::is_dynamic<decltype(sub)>::value || \
ceph::dout::is_dynamic<decltype(v)>::value) { \
std::cout << "the dynamic path" << std::endl; \
return subsys.should_gather(sub, v); \
} else { \
/* The parentheses are **essential** because commas in angle \
* brackets are NOT ignored on macro expansion! A language's \
* limitation, sorry. */ \
std::cout << "the static path" << std::endl; \
/*return subsys.should_gather(sub, v);*/ \
return (subsys.template should_gather<sub, v>()); \
} \
}(cct); \
} while (0)
if (decltype(auto) pdpp = (dpp); pdpp) /* workaround -Wnonnull-compare for 'this' */ \
dout_impl(42, sub, v)
if (decltype(auto) pdpp = (dpp); pdpp) /* workaround -Wnonnull-compare for 'this' */ \
dout_impl(42, ceph::dout::need_dynamic(42), v)
int main() {
std::random_device dev;
std::mt19937 rng(dev());
std::uniform_int_distribution<std::mt19937::result_type> dist6(1,6); // distribution in range [1, 6]
int sub = dist6(rng);
ldpp_dout("mocked out", sub);
//ldpp_subdout("mocked out", 4, 3);
}
```
Fixes: https://tracker.ceph.com/issues/64050
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
---
src/common/dout.h | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
diff --git a/src/common/dout.h b/src/common/dout.h
index 4cd60efff8fef..6516060c5438e 100644
--- a/src/common/dout.h
+++ b/src/common/dout.h
@@ -144,17 +144,27 @@ struct is_dynamic<dynamic_marker_t<T>> : public std::true_type {};
#else
#define dout_impl(cct, sub, v) \
do { \
- const bool should_gather = [&](const auto cctX) { \
- if constexpr (ceph::dout::is_dynamic<decltype(sub)>::value || \
- ceph::dout::is_dynamic<decltype(v)>::value) { \
+ const bool should_gather = [&](const auto cctX, auto sub_, auto v_) { \
+ /* The check is performed on `sub_` and `v_` to leverage the C++'s \
+ * guarantee on _discarding_ one of blocks of `if constexpr`, which \
+ * includes also the checks for ill-formed code (`should_gather<>` \
+ * must not be feed with non-const expresions), BUT ONLY within \
+ * a template (thus the generic lambda) and under the restriction \
+ * it's dependant on a parameter of this template). \
+ * GCC prior to v14 was not enforcing these restrictions. */ \
+ if constexpr (ceph::dout::is_dynamic<decltype(sub_)>::value || \
+ ceph::dout::is_dynamic<decltype(v_)>::value) { \
return cctX->_conf->subsys.should_gather(sub, v); \
} else { \
+ constexpr auto sub_helper = static_cast<decltype(sub_)>(sub); \
+ constexpr auto v_helper = static_cast<decltype(v_)>(v); \
/* The parentheses are **essential** because commas in angle \
* brackets are NOT ignored on macro expansion! A language's \
* limitation, sorry. */ \
- return (cctX->_conf->subsys.template should_gather<sub, v>()); \
+ return (cctX->_conf->subsys.template should_gather<sub_helper, \
+ v_helper>()); \
} \
- }(cct); \
+ }(cct, sub, v); \
\
if (should_gather) { \
ceph::logging::MutableEntry _dout_e(v, sub); \

View file

@ -0,0 +1,85 @@
From 188612538ea06890d27321a5550c93a817ea9bc2 Mon Sep 17 00:00:00 2001
From: Guna K Kambalimath <Guna.Kambalimath@ibm.com>
Date: Tue, 20 Aug 2024 15:36:52 +0530
Subject: [PATCH] Fixes build failure on IBM Power
---
src/common/CMakeLists.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
index c3fd51d26468f..8b9f3339e3885 100644
--- a/src/common/CMakeLists.txt
+++ b/src/common/CMakeLists.txt
@@ -225,6 +225,7 @@ elseif(HAVE_POWER8)
list(APPEND crc32_srcs
crc32c_ppc_asm.S
crc32c_ppc_fast_zero_asm.S)
+ set_source_files_properties(crc32c_ppc_asm.S PROPERTIES COMPILE_FLAGS -D__ASSEMBLY__)
endif(HAVE_PPC64LE)
elseif(HAVE_ARMV8_CRC)
list(APPEND crc32_srcs
From 83782c9ba033ce9008df287281f1c66dbf8ee28e Mon Sep 17 00:00:00 2001
From: Guna K Kambalimath <Guna.Kambalimath@ibm.com>
Date: Tue, 20 Aug 2024 17:27:44 +0530
Subject: [PATCH] Remove dynamic linking for power
---
src/arch/CMakeLists.txt | 6 +++++-
src/common/CMakeLists.txt | 6 +++++-
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/src/arch/CMakeLists.txt b/src/arch/CMakeLists.txt
index e95d9bbb81fa8..d0e635dcd65e6 100644
--- a/src/arch/CMakeLists.txt
+++ b/src/arch/CMakeLists.txt
@@ -11,4 +11,8 @@ elseif(HAVE_S390X)
list(APPEND arch_srcs s390x.c)
endif()
-add_library(arch OBJECT ${arch_srcs})
+if(HAVE_POWER8)
+ add_library(arch STATIC ${arch_srcs})
+else()
+ add_library(arch OBJECT ${arch_srcs})
+endif()
\ No newline at end of file
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
index 8b9f3339e3885..6cdbb169f2105 100644
--- a/src/common/CMakeLists.txt
+++ b/src/common/CMakeLists.txt
@@ -237,7 +237,11 @@ elseif(HAVE_S390X)
)
endif(HAVE_INTEL)
-add_library(crc32 OBJECT ${crc32_srcs})
+if(HAVE_POWER8)
+ add_library(crc32 STATIC ${crc32_srcs})
+else()
+ add_library(crc32 OBJECT ${crc32_srcs})
+endif()
if(HAVE_ARMV8_CRC)
set_target_properties(crc32 PROPERTIES
From 0efec175a0abc764a4aa883f27d2c13488f668c6 Mon Sep 17 00:00:00 2001
From: Guna K Kambalimath <Guna.Kambalimath@ibm.com>
Date: Tue, 20 Aug 2024 17:38:54 +0530
Subject: [PATCH] Removing set properties
---
src/common/CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
index 6cdbb169f2105..b25b4bff570a3 100644
--- a/src/common/CMakeLists.txt
+++ b/src/common/CMakeLists.txt
@@ -225,7 +225,7 @@ elseif(HAVE_POWER8)
list(APPEND crc32_srcs
crc32c_ppc_asm.S
crc32c_ppc_fast_zero_asm.S)
- set_source_files_properties(crc32c_ppc_asm.S PROPERTIES COMPILE_FLAGS -D__ASSEMBLY__)
+ #set_source_files_properties(crc32c_ppc_asm.S PROPERTIES COMPILE_FLAGS -D__ASSEMBLY__)
endif(HAVE_PPC64LE)
elseif(HAVE_ARMV8_CRC)
list(APPEND crc32_srcs