From 1b11728e654b94358da973e0932cf2ed3fd689a4 Mon Sep 17 00:00:00 2001 From: Jakub Bogusz Date: Sat, 30 May 2020 18:06:16 +0200 Subject: [PATCH] - updated to 12.2.13; uses cmake now, -static is gone - updated logrotate,boost,python patches - added types patch (fixes build with 32-bit size_t) - added tcmalloc patch (allow build without full gperftools installation) - added rocksdb patch (fix build with system rocksdb > 3) - added fcgi patch (fix build with fcgi support in radosgw) --- boost.patch | 192 ++++++++++++++++++++++- ceph-assert.patch | 10 -- ceph-fcgi.patch | 22 +++ ceph-link.patch | 175 --------------------- ceph-python.patch | 61 ++------ ceph-rocksdb.patch | 56 +++++++ ceph-tcmalloc.patch | 19 +++ ceph-types.patch | 20 +++ ceph.logrotate.patch | 9 +- ceph.spec | 360 +++++++++++++++++++++++++------------------ 10 files changed, 532 insertions(+), 392 deletions(-) delete mode 100644 ceph-assert.patch create mode 100644 ceph-fcgi.patch delete mode 100644 ceph-link.patch create mode 100644 ceph-rocksdb.patch create mode 100644 ceph-tcmalloc.patch create mode 100644 ceph-types.patch diff --git a/boost.patch b/boost.patch index 4937a90..af61e2f 100644 --- a/boost.patch +++ b/boost.patch @@ -32,13 +32,195 @@ constexpr __ph<1> _1{}; if (sub_release_time > release_time) { release_time = sub_release_time; } ---- src/mon/MDSMonitor.cc.orig 2019-06-03 22:46:11.352201283 +0200 -+++ src/mon/MDSMonitor.cc 2019-06-03 22:46:23.110188378 +0200 -@@ -14,6 +14,7 @@ - +--- src/mon/MDSMonitor.cc.orig 2020-05-28 07:26:02.363159480 +0200 ++++ src/mon/MDSMonitor.cc 2020-05-28 07:28:02.559174989 +0200 +@@ -15,6 +15,7 @@ #include #include + #include +#include #include "MDSMonitor.h" - #include "Monitor.h" + #include "FSCommands.h" +--- CMakeLists.txt.orig 2020-01-30 21:52:36.000000000 +0100 ++++ CMakeLists.txt 2020-05-28 16:50:46.412927163 +0200 +@@ -563,7 +563,7 @@ + set(BOOST_HEADER_COMPONENTS container) + + if(WITH_MGR) +- list(APPEND BOOST_COMPONENTS python) ++ list(APPEND BOOST_COMPONENTS python27) + endif() + if(WITH_BOOST_CONTEXT) + list(APPEND BOOST_COMPONENTS context coroutine) +--- src/CMakeLists.txt.orig 2020-01-30 21:52:36.000000000 +0100 ++++ src/CMakeLists.txt 2020-05-28 20:58:47.848974172 +0200 +@@ -722,7 +722,7 @@ + $) + target_include_directories(ceph-mgr PRIVATE "${PYTHON_INCLUDE_DIRS}") + target_link_libraries(ceph-mgr osdc client global-static common +- Boost::python ${PYTHON_LIBRARIES} ${BLKID_LIBRARIES} ${CMAKE_DL_LIBS} ${ALLOC_LIBS}) ++ Boost::python27 ${PYTHON_LIBRARIES} ${BLKID_LIBRARIES} ${CMAKE_DL_LIBS} ${ALLOC_LIBS}) + install(TARGETS ceph-mgr DESTINATION bin) + endif (WITH_MGR) + +--- src/test/librbd/test_mock_Journal.cc.orig 2020-01-30 21:52:36.000000000 +0100 ++++ src/test/librbd/test_mock_Journal.cc 2020-05-29 06:26:16.934514447 +0200 +@@ -482,7 +482,7 @@ + expect_get_max_append_size(mock_journaler, 1 << 16); + expect_start_replay( + mock_image_ctx, mock_journaler, +- std::bind(&invoke_replay_complete, _1, 0)); ++ std::bind(&invoke_replay_complete, std::placeholders::_1, 0)); + + MockJournalReplay mock_journal_replay; + expect_stop_replay(mock_journaler); +@@ -531,7 +531,7 @@ + expect_get_max_append_size(mock_journaler, 1 << 16); + expect_start_replay( + mock_image_ctx, mock_journaler, +- std::bind(&invoke_replay_ready, _1)); ++ std::bind(&invoke_replay_ready, std::placeholders::_1)); + + ::journal::MockReplayEntry mock_replay_entry; + MockJournalReplay mock_journal_replay; +@@ -540,11 +540,11 @@ + expect_try_pop_front(mock_image_ctx, mock_journaler, true, mock_replay_entry); + expect_replay_process(mock_journal_replay); + expect_try_pop_front(mock_image_ctx, mock_journaler, false, mock_replay_entry, +- std::bind(&invoke_replay_ready, _1)); ++ std::bind(&invoke_replay_ready, std::placeholders::_1)); + expect_try_pop_front(mock_image_ctx, mock_journaler, true, mock_replay_entry); + expect_replay_process(mock_journal_replay); + expect_try_pop_front(mock_image_ctx, mock_journaler, false, mock_replay_entry, +- std::bind(&invoke_replay_complete, _1, 0)); ++ std::bind(&invoke_replay_complete, std::placeholders::_1, 0)); + + expect_stop_replay(mock_journaler); + expect_shut_down_replay(mock_image_ctx, mock_journal_replay, 0); +@@ -601,7 +601,7 @@ + expect_get_max_append_size(mock_journaler, 1 << 16); + expect_start_replay( + mock_image_ctx, mock_journaler, +- std::bind(&invoke_replay_complete, _1, -EINVAL)); ++ std::bind(&invoke_replay_complete, std::placeholders::_1, -EINVAL)); + + MockJournalReplay mock_journal_replay; + expect_stop_replay(mock_journaler); +@@ -616,7 +616,7 @@ + expect_get_max_append_size(mock_journaler, 1 << 16); + expect_start_replay( + mock_image_ctx, mock_journaler, +- std::bind(&invoke_replay_complete, _1, 0)); ++ std::bind(&invoke_replay_complete, std::placeholders::_1, 0)); + + expect_stop_replay(mock_journaler); + expect_shut_down_replay(mock_image_ctx, mock_journal_replay, 0); +@@ -649,14 +649,14 @@ + expect_get_max_append_size(mock_journaler, 1 << 16); + expect_start_replay( + mock_image_ctx, mock_journaler, +- std::bind(&invoke_replay_ready, _1)); ++ std::bind(&invoke_replay_ready, std::placeholders::_1)); + + ::journal::MockReplayEntry mock_replay_entry; + MockJournalReplay mock_journal_replay; + expect_try_pop_front(mock_image_ctx, mock_journaler, true, mock_replay_entry); + expect_replay_process(mock_journal_replay); + expect_try_pop_front(mock_image_ctx, mock_journaler, false, mock_replay_entry, +- std::bind(&invoke_replay_complete, _1, 0)); ++ std::bind(&invoke_replay_complete, std::placeholders::_1, 0)); + expect_stop_replay(mock_journaler); + expect_shut_down_replay(mock_image_ctx, mock_journal_replay, -EINVAL); + expect_flush_commit_position(mock_journaler); +@@ -669,7 +669,7 @@ + expect_get_max_append_size(mock_journaler, 1 << 16); + expect_start_replay( + mock_image_ctx, mock_journaler, +- std::bind(&invoke_replay_complete, _1, 0)); ++ std::bind(&invoke_replay_complete, std::placeholders::_1, 0)); + + expect_stop_replay(mock_journaler); + expect_shut_down_replay(mock_image_ctx, mock_journal_replay, 0); +@@ -702,7 +702,7 @@ + expect_get_max_append_size(mock_journaler, 1 << 16); + expect_start_replay( + mock_image_ctx, mock_journaler, +- std::bind(&invoke_replay_ready, _1)); ++ std::bind(&invoke_replay_ready, std::placeholders::_1)); + + ::journal::MockReplayEntry mock_replay_entry; + MockJournalReplay mock_journal_replay; +@@ -720,7 +720,7 @@ + expect_get_max_append_size(mock_journaler, 1 << 16); + expect_start_replay( + mock_image_ctx, mock_journaler, +- std::bind(&invoke_replay_complete, _1, 0)); ++ std::bind(&invoke_replay_complete, std::placeholders::_1, 0)); + expect_stop_replay(mock_journaler); + expect_shut_down_replay(mock_image_ctx, mock_journal_replay, 0); + expect_flush_commit_position(mock_journaler); +@@ -752,7 +752,7 @@ + expect_get_max_append_size(mock_journaler, 1 << 16); + expect_start_replay( + mock_image_ctx, mock_journaler, +- std::bind(&invoke_replay_complete, _1, 0)); ++ std::bind(&invoke_replay_complete, std::placeholders::_1, 0)); + + MockJournalReplay mock_journal_replay; + expect_stop_replay(mock_journaler); +@@ -786,7 +786,7 @@ + + expect_start_replay( + mock_image_ctx, mock_journaler, +- std::bind(&invoke_replay_ready, _1)); ++ std::bind(&invoke_replay_ready, std::placeholders::_1)); + + ::journal::MockReplayEntry mock_replay_entry; + MockJournalReplay mock_journal_replay; +@@ -813,7 +813,7 @@ + expect_get_max_append_size(mock_journaler, 1 << 16); + expect_start_replay( + mock_image_ctx, mock_journaler, { +- std::bind(&invoke_replay_complete, _1, 0) ++ std::bind(&invoke_replay_complete, std::placeholders::_1, 0) + }); + + expect_stop_replay(mock_journaler); +@@ -868,14 +868,14 @@ + expect_get_max_append_size(mock_journaler, 1 << 16); + expect_start_replay( + mock_image_ctx, mock_journaler, +- std::bind(&invoke_replay_ready, _1)); ++ std::bind(&invoke_replay_ready, std::placeholders::_1)); + + ::journal::MockReplayEntry mock_replay_entry; + MockJournalReplay mock_journal_replay; + expect_try_pop_front(mock_image_ctx, mock_journaler, true, mock_replay_entry); + expect_replay_process(mock_journal_replay); + expect_try_pop_front(mock_image_ctx, mock_journaler, false, mock_replay_entry, +- std::bind(&invoke_replay_complete, _1, 0)); ++ std::bind(&invoke_replay_complete, std::placeholders::_1, 0)); + expect_stop_replay(mock_journaler); + + Context *on_flush = nullptr; +@@ -892,7 +892,7 @@ + expect_get_max_append_size(mock_journaler, 1 << 16); + expect_start_replay( + mock_image_ctx, mock_journaler, +- std::bind(&invoke_replay_complete, _1, 0)); ++ std::bind(&invoke_replay_complete, std::placeholders::_1, 0)); + + expect_stop_replay(mock_journaler); + expect_shut_down_replay(mock_image_ctx, mock_journal_replay, 0); +--- src/test/lazy-omap-stats/lazy_omap_stats_test.cc.orig 2020-01-30 21:52:36.000000000 +0100 ++++ src/test/lazy-omap-stats/lazy_omap_stats_test.cc 2020-05-29 08:04:42.179189658 +0200 +@@ -331,7 +331,7 @@ + vector tokens(tok.begin(), tok.end()); + auto it = find(tokens.begin(), tokens.end(), label); + if (it != tokens.end()) { +- return distance(tokens.begin(), it); ++ return std::distance(tokens.begin(), it); + } + + cerr << "find_index failed to find index for " << label << endl; diff --git a/ceph-assert.patch b/ceph-assert.patch deleted file mode 100644 index 3a131bc..0000000 --- a/ceph-assert.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- ceph-10.2.11/src/test/librados_test_stub/TestWatchNotify.cc.orig 2018-07-09 18:23:56.000000000 +0200 -+++ ceph-10.2.11/src/test/librados_test_stub/TestWatchNotify.cc 2020-05-23 14:37:53.766463510 +0200 -@@ -1,6 +1,7 @@ - // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- - // vim: ts=8 sw=2 smarttab - -+#define BOOST_DISABLE_ASSERTS // broken with ceph assert.h - #include "test/librados_test_stub/TestWatchNotify.h" - #include "include/Context.h" - #include "common/Finisher.h" diff --git a/ceph-fcgi.patch b/ceph-fcgi.patch new file mode 100644 index 0000000..2cedecc --- /dev/null +++ b/ceph-fcgi.patch @@ -0,0 +1,22 @@ +--- ceph-12.2.13/src/rgw/CMakeLists.txt.orig 2020-01-30 21:52:36.000000000 +0100 ++++ ceph-12.2.13/src/rgw/CMakeLists.txt 2020-05-28 21:27:33.099627687 +0200 +@@ -135,6 +135,7 @@ + + + if (WITH_RADOSGW_FCGI_FRONTEND) ++ include_directories(SYSTEM ${FCGI_INCLUDE_DIR}) + list(APPEND rgw_a_srcs rgw_fcgi.cc) + endif() + +--- ceph-12.2.13/src/test/CMakeLists.txt.orig 2020-01-30 21:52:36.000000000 +0100 ++++ ceph-12.2.13/src/test/CMakeLists.txt 2020-05-28 22:29:50.639379697 +0200 +@@ -352,6 +352,9 @@ + ) + set_target_properties(ceph_test_librgw_file_marker PROPERTIES COMPILE_FLAGS + ${UNITTEST_CXX_FLAGS}) ++if(WITH_RADOSGW_FCGI_FRONTEND) ++target_include_directories(ceph_test_librgw_file_marker PRIVATE ${FCGI_INCLUDE_DIR}) ++endif(WITH_RADOSGW_FCGI_FRONTEND) + target_link_libraries(ceph_test_librgw_file_marker + rgw + librados diff --git a/ceph-link.patch b/ceph-link.patch deleted file mode 100644 index 63ab49e..0000000 --- a/ceph-link.patch +++ /dev/null @@ -1,175 +0,0 @@ ---- ceph-10.2.11/configure.ac.orig 2018-07-09 18:23:56.000000000 +0200 -+++ ceph-10.2.11/configure.ac 2020-05-22 21:04:23.958900423 +0200 -@@ -760,12 +760,12 @@ - - if test "x$enable_xio" = x"yes"; then - AC_CHECK_HEADER([libxio.h], [], AC_MSG_ERROR([Cannot find header 'libxio.h'.])) -- AC_CHECK_LIB([xio], [xio_init], [], AC_MSG_FAILURE([Accelio libxio not found])) -- AC_CHECK_LIB([ibverbs], [ibv_query_device], [], AC_MSG_FAILURE([libibverbs not found])) -- AC_CHECK_LIB([rdmacm], [rdma_connect], [], AC_MSG_FAILURE([librdmacm not found])) -+ AC_CHECK_LIB([xio], [xio_init], [true], AC_MSG_FAILURE([Accelio libxio not found])) -+ AC_CHECK_LIB([ibverbs], [ibv_query_device], [true], AC_MSG_FAILURE([libibverbs not found])) -+ AC_CHECK_LIB([rdmacm], [rdma_connect], [true], AC_MSG_FAILURE([librdmacm not found])) - - # Also require boost-regex, used in address_helper -- AC_CHECK_LIB(boost_regex, main, [], -+ AC_CHECK_LIB(boost_regex, main, [true], - AC_MSG_FAILURE(["Boost regex library not found."])) - - AC_DEFINE([HAVE_XIO], [1], [Accelio conditional compilation]) -@@ -874,7 +874,7 @@ - AS_IF([test "x$with_librocksdb" = "xyes"], - [PKG_CHECK_MODULES([LIBROCKSDB], [rocksdb], [], [true])]) - AS_IF([test "x$with_librocksdb" = "xyes"], -- [AC_CHECK_LIB([rocksdb], [open], [], [AC_MSG_FAILURE([librocksdb not found])])]) -+ [AC_CHECK_LIB([rocksdb], [open], [true], [AC_MSG_FAILURE([librocksdb not found])])]) - AM_CONDITIONAL(WITH_DLIBROCKSDB, [ test "$with_librocksdb" = "yes" ]) - - AC_ARG_WITH([librocksdb-static], -@@ -897,8 +897,8 @@ - - # needs libcurl and libxml2 - if test "x$with_rest_bench" = xyes && test "x$with_system_libs3" = xno; then -- AC_CHECK_LIB([curl], [curl_easy_init], [], AC_MSG_ERROR([libcurl not found])) -- AC_CHECK_LIB([xml2], [xmlParseChunk], [], AC_MSG_ERROR([libxml2 not found])) -+ AC_CHECK_LIB([curl], [curl_easy_init], [true], AC_MSG_ERROR([libcurl not found])) -+ AC_CHECK_LIB([xml2], [xmlParseChunk], [true], AC_MSG_ERROR([libxml2 not found])) - fi - - # use libaio? ---- ceph-10.2.11/src/kv/Makefile.am.orig 2018-07-09 18:23:56.000000000 +0200 -+++ ceph-10.2.11/src/kv/Makefile.am 2020-05-22 21:08:20.037621475 +0200 -@@ -1,12 +1,12 @@ - if ENABLE_SERVER - --libkv_a_SOURCES = \ -+libkv_la_SOURCES = \ - kv/KeyValueDB.cc \ - kv/LevelDBStore.cc --libkv_a_CXXFLAGS = ${AM_CXXFLAGS} --libkv_a_LIBADD = -+libkv_la_CXXFLAGS = ${AM_CXXFLAGS} -+libkv_la_LIBADD = - --noinst_LIBRARIES += libkv.a -+noinst_LTLIBRARIES += libkv.la - - noinst_HEADERS += \ - kv/KeyValueDB.h \ -@@ -29,22 +29,22 @@ - - rocksdb/librocksdb.a: - cd rocksdb && $(ROCKSDB_MAKE_VARS) $(MAKE) -j$(shell ${NPROC}) static_lib --libkv_a_CXXFLAGS += -I rocksdb/include -fPIC --libkv_a_SOURCES += kv/RocksDBStore.cc --libkv_a_LIBADD += rocksdb/librocksdb.a -+libkv_la_CXXFLAGS += -I rocksdb/include -fPIC -+libkv_la_SOURCES += kv/RocksDBStore.cc -+libkv_la_LIBADD += rocksdb/librocksdb.a - noinst_HEADERS += kv/RocksDBStore.h - endif - - if WITH_DLIBROCKSDB --libkv_a_SOURCES += kv/RocksDBStore.cc --libkv_a_LIBADD += -lrocksdb -+libkv_la_SOURCES += kv/RocksDBStore.cc -+libkv_la_LIBADD += -lrocksdb - noinst_HEADERS += kv/RocksDBStore.h - endif - - if WITH_KINETIC --libkv_a_SOURCES += kv/KineticStore.cc --libkv_a_CXXFLAGS += -std=gnu++11 --libkv_a_LIBADD += -lkinetic_client -lprotobuf -lglog -lgflags libcrypto.a -+libkv_la_SOURCES += kv/KineticStore.cc -+libkv_la_CXXFLAGS += -std=gnu++11 -+libkv_la_LIBADD += -lkinetic_client -lprotobuf -lglog -lgflags libcrypto.a - noinst_HEADERS += kv/KineticStore.h - endif - ---- ceph-10.2.11/src/os/Makefile.am.orig 2018-07-09 18:23:56.000000000 +0200 -+++ ceph-10.2.11/src/os/Makefile.am 2020-05-22 21:11:02.663407123 +0200 -@@ -12,7 +12,7 @@ - - if ENABLE_SERVER - --libos_a_SOURCES = \ -+libos_la_SOURCES = \ - os/filestore/chain_xattr.cc \ - os/filestore/DBObjectMap.cc \ - os/filestore/FileJournal.cc \ -@@ -31,11 +31,11 @@ - os/ObjectStore.cc - - if WITH_FUSE --libos_a_SOURCES += os/FuseStore.cc -+libos_la_SOURCES += os/FuseStore.cc - endif - - if WITH_LIBAIO --libos_a_SOURCES += \ -+libos_la_SOURCES += \ - os/bluestore/kv.cc \ - os/bluestore/Allocator.cc \ - os/bluestore/BlockDevice.cc \ -@@ -48,25 +48,25 @@ - endif - - if LINUX --libos_a_SOURCES += os/filestore/BtrfsFileStoreBackend.cc -+libos_la_SOURCES += os/filestore/BtrfsFileStoreBackend.cc - endif - - if WITH_LIBXFS --libos_a_SOURCES += \ -+libos_la_SOURCES += \ - os/filestore/XfsFileStoreBackend.cc \ - os/fs/XFS.cc - endif - - if WITH_LIBZFS --libos_a_SOURCES += os/filestore/ZFSFileStoreBackend.cc -+libos_la_SOURCES += os/filestore/ZFSFileStoreBackend.cc - endif - --libos_a_CXXFLAGS = ${AM_CXXFLAGS} -I rocksdb/include -fPIC --libos_a_LIBADD = libos_types.a libkv.a --noinst_LIBRARIES += libos.a -+libos_la_CXXFLAGS = ${AM_CXXFLAGS} -I rocksdb/include -fPIC -+libos_la_LIBADD = libos_types.a libkv.la -+noinst_LTLIBRARIES += libos.la - - if WITH_LTTNG --libos_a_LIBADD += $(LIBOS_TP) -+libos_la_LIBADD += $(LIBOS_TP) - endif - - noinst_HEADERS += \ -@@ -140,11 +140,11 @@ - ${top_srcdir}/src/spdk/lib/util/libspdk_util.a \ - ${top_srcdir}/src/spdk/lib/ioat/libspdk_ioat.a - --libos_a_CXXFLAGS += \ -+libos_la_CXXFLAGS += \ - ${LIBSPDK_CFLAGS} \ - ${LIBDPDK_CFLAGS} \ - ${LIBPCIACCESS_CFLAGS} --libos_a_SOURCES += os/bluestore/NVMEDevice.cc -+libos_la_SOURCES += os/bluestore/NVMEDevice.cc - noinst_HEADERS += os/bluestore/NVMEDevice.h - endif - ---- ceph-10.2.11/src/Makefile-env.am.orig 2018-07-09 18:23:56.000000000 +0200 -+++ ceph-10.2.11/src/Makefile-env.am 2020-05-22 21:11:33.779905217 +0200 -@@ -203,9 +203,9 @@ - LIBCRUSH = libcrush.la - LIBCOMPRESSOR = libcompressor.la - LIBJSON_SPIRIT = libjson_spirit.la --LIBKV = libkv.a -+LIBKV = libkv.la - LIBLOG = liblog.la --LIBOS = libos.a -+LIBOS = libos.la - LIBOS_TYPES = libos_types.a - LIBOSD = libosd.a - LIBOSD_TYPES = libosd_types.la diff --git a/ceph-python.patch b/ceph-python.patch index 5d93ce4..2a3971e 100644 --- a/ceph-python.patch +++ b/ceph-python.patch @@ -1,47 +1,14 @@ ---- ceph-10.2.11/src/ceph-detect-init/Makefile.am.orig 2018-07-09 18:23:56.000000000 +0200 -+++ ceph-10.2.11/src/ceph-detect-init/Makefile.am 2020-05-23 15:54:24.161595205 +0200 -@@ -67,15 +67,9 @@ - ceph-detect-init-install-data: - cd $(srcdir)/ceph-detect-init ; \ - if test "$(DESTDIR)" ; then \ -- if lsb_release -si | grep --quiet 'Ubuntu\|Debian\|Devuan' ; then \ -- options=--install-layout=deb ; \ -- else \ - options=--prefix=/usr ; \ -- fi ; \ - root="--root=$(DESTDIR)" ; \ - fi ; \ -- python setup.py install $$root $$options -+ $(PYTHON) setup.py install $$root $$options --optimize=2 - --LOCAL_ALL += ceph-detect-init-all --LOCAL_CLEAN += ceph-detect-init-clean - LOCAL_INSTALLDATA += ceph-detect-init-install-data ---- ceph-10.2.11/src/ceph-disk/Makefile.am.orig 2018-07-09 18:23:56.000000000 +0200 -+++ ceph-10.2.11/src/ceph-disk/Makefile.am 2020-05-23 15:55:36.397870535 +0200 -@@ -32,7 +32,7 @@ - - export CEPH_DISK_VIRTUALENV = ${CEPH_BUILD_VIRTUALENV}/ceph-disk-virtualenv - --ceph-disk-all: ${CEPH_DISK_VIRTUALENV} -+ceph-disk-init-all: ${CEPH_DISK_VIRTUALENV} - - ${CEPH_DISK_VIRTUALENV}: - cd $(srcdir)/ceph-disk ; ../tools/setup-virtualenv.sh ${CEPH_DISK_VIRTUALENV} ; test -d wheelhouse && export NO_INDEX=--no-index ; ${CEPH_DISK_VIRTUALENV}/bin/pip install $$NO_INDEX --find-links=file://$$(pwd)/wheelhouse -e . -@@ -43,15 +43,10 @@ - ceph-disk-install-data: - cd $(srcdir)/ceph-disk ; \ - if test "$(DESTDIR)" ; then \ -- if lsb_release -si | grep --quiet 'Ubuntu\|Debian\|Devuan' ; then \ -- options=--install-layout=deb ; \ -- else \ - options=--prefix=/usr ; \ -- fi ; \ - root="--root=$(DESTDIR) --install-script=/usr/sbin" ; \ - fi ; \ -- python setup.py install $$root $$options -+ $(PYTHON) setup.py install $$root $$options --optimize=2 - --LOCAL_ALL += ceph-disk-all - LOCAL_CLEAN += ceph-disk-clean - LOCAL_INSTALLDATA += ceph-disk-install-data +--- ceph-12.2.13/cmake/modules/Distutils.cmake.orig 2020-01-30 21:52:36.000000000 +0100 ++++ ceph-12.2.13/cmake/modules/Distutils.cmake 2020-05-29 22:15:43.919231143 +0200 +@@ -17,10 +17,7 @@ + install(CODE " + set(options --prefix=${CMAKE_INSTALL_PREFIX}) + if(DEFINED ENV{DESTDIR}) +- if(EXISTS /etc/debian_version) +- list(APPEND options --install-layout=deb) +- endif() +- list(APPEND options --root=\$ENV{DESTDIR}) ++ list(APPEND options --root=\$ENV{DESTDIR} --optimize=2) + if(NOT \"${DU_INSTALL_SCRIPT}\" STREQUAL \"\") + list(APPEND options --install-script=${DU_INSTALL_SCRIPT}) + endif() diff --git a/ceph-rocksdb.patch b/ceph-rocksdb.patch new file mode 100644 index 0000000..edb5f18 --- /dev/null +++ b/ceph-rocksdb.patch @@ -0,0 +1,56 @@ +--- ceph-12.2.13/src/kv/RocksDBStore.cc.orig 2020-01-30 21:52:36.000000000 +0100 ++++ ceph-12.2.13/src/kv/RocksDBStore.cc 2020-05-28 18:54:37.329337101 +0200 +@@ -522,7 +522,7 @@ + // considering performance overhead, default is disabled + if (g_conf->rocksdb_perf) { + rocksdb::SetPerfLevel(rocksdb::PerfLevel::kEnableTimeExceptForMutex); +- rocksdb::perf_context.Reset(); ++ rocksdb::get_perf_context()->Reset(); + } + + RocksDBTransactionImpl * _t = +@@ -549,13 +549,13 @@ + utime_t write_wal_time; + utime_t write_pre_and_post_process_time; + write_wal_time.set_from_double( +- static_cast(rocksdb::perf_context.write_wal_time)/1000000000); ++ static_cast(rocksdb::get_perf_context()->write_wal_time)/1000000000); + write_memtable_time.set_from_double( +- static_cast(rocksdb::perf_context.write_memtable_time)/1000000000); ++ static_cast(rocksdb::get_perf_context()->write_memtable_time)/1000000000); + write_delay_time.set_from_double( +- static_cast(rocksdb::perf_context.write_delay_time)/1000000000); ++ static_cast(rocksdb::get_perf_context()->write_delay_time)/1000000000); + write_pre_and_post_process_time.set_from_double( +- static_cast(rocksdb::perf_context.write_pre_and_post_process_time)/1000000000); ++ static_cast(rocksdb::get_perf_context()->write_pre_and_post_process_time)/1000000000); + logger->tinc(l_rocksdb_write_memtable_time, write_memtable_time); + logger->tinc(l_rocksdb_write_delay_time, write_delay_time); + logger->tinc(l_rocksdb_write_wal_time, write_wal_time); +@@ -575,7 +575,7 @@ + // considering performance overhead, default is disabled + if (g_conf->rocksdb_perf) { + rocksdb::SetPerfLevel(rocksdb::PerfLevel::kEnableTimeExceptForMutex); +- rocksdb::perf_context.Reset(); ++ rocksdb::get_perf_context()->Reset(); + } + + RocksDBTransactionImpl * _t = +@@ -603,13 +603,13 @@ + utime_t write_wal_time; + utime_t write_pre_and_post_process_time; + write_wal_time.set_from_double( +- static_cast(rocksdb::perf_context.write_wal_time)/1000000000); ++ static_cast(rocksdb::get_perf_context()->write_wal_time)/1000000000); + write_memtable_time.set_from_double( +- static_cast(rocksdb::perf_context.write_memtable_time)/1000000000); ++ static_cast(rocksdb::get_perf_context()->write_memtable_time)/1000000000); + write_delay_time.set_from_double( +- static_cast(rocksdb::perf_context.write_delay_time)/1000000000); ++ static_cast(rocksdb::get_perf_context()->write_delay_time)/1000000000); + write_pre_and_post_process_time.set_from_double( +- static_cast(rocksdb::perf_context.write_pre_and_post_process_time)/1000000000); ++ static_cast(rocksdb::get_perf_context()->write_pre_and_post_process_time)/1000000000); + logger->tinc(l_rocksdb_write_memtable_time, write_memtable_time); + logger->tinc(l_rocksdb_write_delay_time, write_delay_time); + logger->tinc(l_rocksdb_write_wal_time, write_wal_time); diff --git a/ceph-tcmalloc.patch b/ceph-tcmalloc.patch new file mode 100644 index 0000000..0ac0da5 --- /dev/null +++ b/ceph-tcmalloc.patch @@ -0,0 +1,19 @@ +--- ceph-12.2.13/cmake/modules/Findgperftools.cmake.orig 2020-01-30 21:52:36.000000000 +0100 ++++ ceph-12.2.13/cmake/modules/Findgperftools.cmake 2020-05-28 17:05:49.948032294 +0200 +@@ -11,13 +11,13 @@ + find_path(GPERFTOOLS_INCLUDE_DIR gperftools/profiler.h) + find_path(Tcmalloc_INCLUDE_DIR gperftools/tcmalloc.h) + +-foreach(component tcmalloc tcmalloc_minimal profiler) ++foreach(component tcmalloc tcmalloc_minimal) + string(TOUPPER ${component} COMPONENT) + find_library(GPERFTOOLS_${COMPONENT}_LIBRARY ${component}) + list(APPEND GPERFTOOLS_LIBRARIES GPERFTOOLS_${COMPONENT}_LIBRARY) + endforeach() + + include(FindPackageHandleStandardArgs) +-find_package_handle_standard_args(gperftools DEFAULT_MSG GPERFTOOLS_LIBRARIES GPERFTOOLS_INCLUDE_DIR) ++find_package_handle_standard_args(gperftools DEFAULT_MSG GPERFTOOLS_LIBRARIES Tcmalloc_INCLUDE_DIR) + +-mark_as_advanced(GPERFTOOLS_LIBRARIES GPERFTOOLS_INCLUDE_DIR) ++mark_as_advanced(GPERFTOOLS_LIBRARIES GPERFTOOLS_INCLUDE_DIR Tcmalloc_INCLUDE_DIR) diff --git a/ceph-types.patch b/ceph-types.patch new file mode 100644 index 0000000..8b55026 --- /dev/null +++ b/ceph-types.patch @@ -0,0 +1,20 @@ +--- ceph-12.2.13/src/osd/PrimaryLogPG.cc.orig 2020-01-30 21:52:36.000000000 +0100 ++++ ceph-12.2.13/src/osd/PrimaryLogPG.cc 2020-05-28 12:18:59.914600378 +0200 +@@ -1582,7 +1582,7 @@ + if (limit != eversion_t() && + limit != pg_trim_to && + pg_log.get_log().approx_size() > target) { +- size_t num_to_trim = std::min(pg_log.get_log().approx_size() - target, ++ size_t num_to_trim = std::min(static_cast(pg_log.get_log().approx_size() - target), + cct->_conf->osd_pg_log_trim_max); + if (num_to_trim < cct->_conf->osd_pg_log_trim_min && + cct->_conf->osd_pg_log_trim_max >= cct->_conf->osd_pg_log_trim_min) { +@@ -1628,7 +1628,7 @@ + pg_log.get_log().approx_size() > target) { + dout(10) << __func__ << " approx pg log length = " + << pg_log.get_log().approx_size() << dendl; +- size_t num_to_trim = std::min(pg_log.get_log().approx_size() - target, ++ size_t num_to_trim = std::min(static_cast(pg_log.get_log().approx_size() - target), + cct->_conf->osd_pg_log_trim_max); + dout(10) << __func__ << " num_to_trim = " << num_to_trim << dendl; + if (num_to_trim < cct->_conf->osd_pg_log_trim_min && diff --git a/ceph.logrotate.patch b/ceph.logrotate.patch index 6702afc..cdae0e6 100644 --- a/ceph.logrotate.patch +++ b/ceph.logrotate.patch @@ -1,10 +1,11 @@ ---- ceph-10.2.11/src/logrotate.conf.orig 2018-07-09 18:23:56.000000000 +0200 -+++ ceph-10.2.11/src/logrotate.conf 2020-05-23 15:03:02.828288220 +0200 -@@ -4,7 +4,7 @@ +--- ceph-12.2.13/src/logrotate.conf.orig 2020-05-28 06:45:00.496496556 +0200 ++++ ceph-12.2.13/src/logrotate.conf 2020-05-28 06:47:07.249143211 +0200 +@@ -4,8 +4,7 @@ compress sharedscripts postrotate -- killall -q -1 ceph-mon ceph-mds ceph-osd ceph-fuse radosgw || true +- killall -q -1 ceph-mon ceph-mgr ceph-mds ceph-osd ceph-fuse radosgw || true +- killall -q -1 ceph-mon ceph-mgr ceph-mds ceph-osd ceph-fuse radosgw rbd-mirror || true + cephctl reload >/dev/null 2>/dev/null endscript missingok diff --git a/ceph.spec b/ceph.spec index aaa5f45..b49bb11 100644 --- a/ceph.spec +++ b/ceph.spec @@ -1,5 +1,4 @@ # TODO: -# - SPDK (libpciaccess dpdk/rte_config.h -lrte_eal -lrte_mempool -lrte_ring) # - proper init scripts if non-systemd boot is too be supported # (upstream scripts seem overcomplicated and hardly useful) # - run as non-root user @@ -9,9 +8,13 @@ # Conditional build: %bcond_without java # Java binding %bcond_with accelio # Accelio transport support [needs update for internal API changes] -%bcond_with dpdk # DPDK (Ceph SPDK) support -%bcond_with kinetic # Kinetic storage support [needs update for internal API changes] -%bcond_without rocksdb # RocksDB storage support +%bcond_with cryptopp # use cryptopp instead of NSS crypto/SSL +%bcond_with dpdk # DPDK messaging (requires cryptopp instead of nss) +%bcond_with fcgi # RADOS Gateway FCGI frontend +%bcond_with fio # FIO engines support +%bcond_without pmem # PMDK (persistent memory) support +%bcond_with spdk # Ceph SPDK support (DPDK based) +%bcond_without system_rocksdb # system RocksDB storage support %bcond_with zfs # ZFS support [not ready for zfs 0.8.x] %bcond_without lttng # LTTng tracing %bcond_without babeltrace # Babeltrace traces support @@ -20,48 +23,58 @@ %ifarch x32 %undefine with_tcmalloc %endif +%ifnarch %{x8664} aarch64 +%undefine with_pmem +%endif +%if %{without cryptopp} && %{with dpdk} +%error DPDK requires cryptopp +%endif # Summary: User space components of the Ceph file system Summary(pl.UTF-8): Działające w przestrzeni użytkownika elementy systemu plików Ceph Name: ceph -Version: 10.2.11 +Version: 12.2.13 Release: 1 License: LGPL v2.1 (libraries), GPL v2 (some programs) Group: Base Source0: http://download.ceph.com/tarballs/%{name}-%{version}.tar.gz -# Source0-md5: 09d18eb8d8d06893e9496657f03427a0 +# Source0-md5: 38bd01cf8224c9ca081298e19ab6e5a1 Source1: ceph.sysconfig Source2: cephctl Source3: ceph.tmpfiles Patch0: %{name}-init-fix.patch Patch1: %{name}.logrotate.patch -Patch2: %{name}-link.patch -Patch3: boost.patch -Patch4: %{name}-assert.patch -Patch5: %{name}-python.patch +Patch2: boost.patch +Patch3: %{name}-python.patch +Patch4: %{name}-types.patch +Patch5: %{name}-tcmalloc.patch +Patch6: %{name}-rocksdb.patch +Patch7: %{name}-fcgi.patch URL: https://ceph.io/ %{?with_accelio:BuildRequires: accelio-devel} -BuildRequires: autoconf >= 2.59 -BuildRequires: automake %{?with_babeltrace:BuildRequires: babeltrace-devel} -BuildRequires: boost-devel >= 1.34 +BuildRequires: boost-devel >= 1.66 +BuildRequires: cmake >= 2.8.11 +%{?with_cryptopp:BuildRequires: cryptopp-devel} BuildRequires: curl-devel -# rte_eal rte_mempool rte_ring -%{?with_dpdk:BuildRequires: dpdk-devel} +%if %{with dpdk} || %{with spdk} +BuildRequires: dpdk-devel +%endif BuildRequires: expat-devel >= 1.95 -BuildRequires: fcgi-devel +%{?with_fcgi:BuildRequires: fcgi-devel} +%{?with_fio:BuildRequires: fio-devel} BuildRequires: gdbm-devel %if %{with java} BuildRequires: jdk %endif BuildRequires: keyutils-devel -%{?with_kinetic:BuildRequires: kinetic-cpp-client} BuildRequires: leveldb-devel >= 1.2 BuildRequires: libaio-devel BuildRequires: libatomic_ops BuildRequires: libblkid-devel >= 2.17 BuildRequires: libedit-devel >= 2.11 BuildRequires: libfuse-devel +# +RDMA? %{?with_accelio:BuildRequires: libibverbs-devel} BuildRequires: libltdl-devel %{?with_accelio:BuildRequires: librdmacm-devel} @@ -71,20 +84,24 @@ BuildRequires: libtool >= 2:1.5 BuildRequires: libuuid-devel BuildRequires: libxml2-devel >= 2.0 %{?with_lttng:BuildRequires: lttng-ust-devel} -BuildRequires: nss-devel >= 3 +BuildRequires: lz4-devel >= 1:1.7 +%{!?with_cryptopp:BuildRequires: nss-devel >= 3} BuildRequires: openldap-devel BuildRequires: openssl-devel BuildRequires: perl-base BuildRequires: pkgconfig +%{?with_pmem:BuildRequires: pmdk-devel} BuildRequires: python >= 1:2.7 +BuildRequires: python-devel >= 1:2.7 BuildRequires: python-Cython -%{?with_rocksdb:BuildRequires: rocksdb-devel} +BuildRequires: python3-devel >= 1:3.2 +%{?with_rocksdb:BuildRequires: rocksdb-devel >= 3.0.0} BuildRequires: rpmbuild(macros) >= 1.671 BuildRequires: sed >= 4.0 BuildRequires: snappy-devel BuildRequires: sphinx-pdg-2 >= 1.0 BuildRequires: udev-devel -#BuildRequires: virtualenv disabled in python patch +#BuildRequires: virtualenv for tests %{?with_dpdk:BuildRequires: xorg-lib-libpciaccess-devel} BuildRequires: xfsprogs-devel %ifarch %{x8664} @@ -101,7 +118,7 @@ Obsoletes: gcephtool Obsoletes: hadoop-cephfs BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) -%define skip_post_check_so libceph_example.so.* libceph_snappy.so.* libceph_zlib.so.* libcls_.*.so.* libec_.*.so.* +%define skip_post_check_so libceph_lz4.so.* libceph_snappy.so.* libceph_zlib.so.* libceph_zstd.so.* libcls_.*.so.* libec_.*.so.* %description Ceph is a distributed network file system designed to provide @@ -128,7 +145,7 @@ Summary(pl.UTF-8): Pliki nagłówkowe bibliotek Cepha License: LGPL v2.1 Group: Development/Libraries Requires: %{name}-libs = %{version}-%{release} -Requires: boost-devel >= 1.34 +Requires: boost-devel >= 1.66 Requires: curl-devel Requires: expat-devel Requires: fcgi-devel @@ -140,6 +157,7 @@ Requires: libstdc++-devel >= 6:4.7 Requires: libuuid-devel %{?with_lttng:Requires: lttng-ust-devel} Requires: openldap-devel +Obsoletes: ceph-static < 12 %description devel This package contains the headers needed to develop programs that use @@ -149,30 +167,29 @@ Ceph. Ten pakiet zawiera pliki nagłówkowe potrzebne do tworzenia programów wykorzystujących Cepha. -%package static -Summary: Ceph static libraries -Summary(pl.UTF-8): Biblioteki statyczne Cepha -License: LGPL v2.1 -Group: Development/Libraries -Requires: %{name}-devel = %{version}-%{release} - -%description static -This package contains static Ceph libraries. - -%description static -l pl.UTF-8 -Ten pakiet zawiera biblioteki statyczne Cepha. - %package -n python-ceph -Summary: Ceph Python bindings -Summary(pl.UTF-8): Wiązania Pythona do bibliotek Cepha +Summary: Ceph Python 2 bindings +Summary(pl.UTF-8): Wiązania Pythona 2 do bibliotek Cepha Group: Development/Languages/Python Requires: %{name}-libs = %{version}-%{release} %description -n python-ceph -Ceph Python bindings. +Ceph Python 2 bindings. %description -n python-ceph -l pl.UTF-8 -Wiązania Pythona do bibliotek Cepha. +Wiązania Pythona 2 do bibliotek Cepha. + +%package -n python3-ceph +Summary: Ceph Python 3 bindings +Summary(pl.UTF-8): Wiązania Pythona 3 do bibliotek Cepha +Group: Development/Languages/Python +Requires: %{name}-libs = %{version}-%{release} + +%description -n python3-ceph +Ceph Python 3 bindings. + +%description -n python3-ceph -l pl.UTF-8 +Wiązania Pythona 3 do bibliotek Cepha. %package -n java-cephfs Summary: CephFS Java bindings @@ -231,86 +248,79 @@ Agenci OCF do monitorowania procesów Cepha. %setup -q %patch0 -p1 %patch1 -p1 -%patch2 -p1 -%patch3 -p0 +%patch2 -p0 +%patch3 -p1 %patch4 -p1 %patch5 -p1 +%patch6 -p1 +%patch7 -p1 %{__sed} -i -e '1s,/usr/bin/env python$,%{__python},' \ - src/{ceph-create-keys,ceph-rest-api} \ + src/{ceph-create-keys,ceph-rest-api,mount.fuse.ceph} \ src/brag/client/ceph-brag \ src/ceph-disk/ceph_disk/main.py -# adjust rule used to create ceph from ceph.in -%{__sed} -i -e 's,|/usr/bin/env python|,|%{__python}|,' src/Makefile-client.am - %build -%{__libtoolize} -%{__aclocal} -I m4 -%{__autoconf} -%{__autoheader} -%{__automake} -# required by xfs headers (for off64_t) -CPPFLAGS="%{rpmcppflags} -D_FILE_OFFSET_BITS=64" -# ac_cv_prog_uudecode_base64=no is a hack to compile Test.class instead of -# using included one which fails with Sun/Oracle JDK 1.6 -%configure \ - %{?with_java:JAVAC=/usr/bin/javac} \ - %{?with_zfs:LIBZFS_CFLAGS="-I/usr/include/libzfs -I/usr/include/libspl"} \ - PYTHON=%{__python} \ - SPHINX_BUILD=/usr/bin/sphinx-build-2 \ - ac_cv_prog_uudecode_base64=no \ - --sbindir=/sbin \ - %{!?with_babeltrace:--without-babeltrace} \ - --without-cryptopp \ - --with-nss \ - %{!?with_tcmalloc:--without-tcmalloc} \ - %{?with_kinetic:--with-kinetic} \ - %{?with_rocksdb:--with-librocksdb} \ - --without-librocksdb-static \ - %{?with_zfs:--with-libzfs} \ - %{!?with_lttng:--without-lttng} \ - --with-ocf \ - --with-radosgw \ - %{?with_dpdk:--with-spdk} \ - --with-system-leveldb \ - --with-systemd-unit-dir=%{systemdunitdir} \ - %{?with_java:--enable-cephfs-java --with-jdk-dir=%{_jvmdir}/java} \ - --disable-silent-rules \ - %{?with_accelio:--enable-xio} - -%{__make} -j1 +install -d build +cd build +%cmake .. \ + -DALLOCATOR="%{?with_tcmalloc:tcmalloc}%{!?with_tcmalloc:libc}" \ + -DFIO_INCLUDE_DIR=/usr/include/fio \ + -DPYTHON=%{__python} \ + -DSPHINX_BUILD=/usr/bin/sphinx-build-2 \ + %{!?with_babeltrace:-DWITH_BABELTRACE=OFF} \ + %{?with_java:-DWITH_CEPHFS_JAVA=ON} \ + %{?with_dpdk:-DWITH_DPDK=ON} \ + %{?with_fio:-DWITH_FIO=ON} \ + %{!?with_lttng:-DWITH_LTTNG=OFF} \ + -DWITH_LZ4=ON \ + %{?with_cryptopp:-DWITH_NSS=OFF} \ + -DWITH_OCF=ON \ + %{?with_pmem:-DWITH_PMEM=ON} \ + %{?with_fcgi:-DWITH_RADOSGW_FCGI_FRONTEND=ON} \ + %{?with_spdk:-DWITH_SPDK=ON} \ + -DWITH_SYSTEM_BOOST=ON \ + %{?with_system_rocksdb:-DWITH_SYSTEM_ROCKSDB=ON} \ + -DWITH_SYSTEMD=ON \ + %{?with_accelio:-DWITH_XIO=ON} \ + %{?with_zfs:-DWITH_ZFS=ON} + +%{__make} %install rm -rf $RPM_BUILD_ROOT -install -d $RPM_BUILD_ROOT%{_localstatedir}/{lib/ceph/{tmp,mon,osd,mds},log/ceph/stat,run/ceph} \ - $RPM_BUILD_ROOT%{_sysconfdir}/{ceph,bash_completion.d,logrotate.d,rc.d/init.d,sysconfig} \ - $RPM_BUILD_ROOT{%{systemdunitdir},%{systemdtmpfilesdir},/etc/systemd/system/ceph.target.wants} +install -d $RPM_BUILD_ROOT%{_localstatedir}/{lib/ceph/{tmp,mon,osd,mds,mgr,radosgw,bootstrap-{osd,mds,rgw,mgr,rbd}},log/ceph/stat,run/ceph} \ + $RPM_BUILD_ROOT%{_sysconfdir}/{ceph,bash_completion.d,logrotate.d,rc.d,sysconfig} \ + $RPM_BUILD_ROOT{%{systemdunitdir},%{systemdtmpfilesdir},/etc/systemd/system/ceph.target.wants,/sbin} -%{__make} install \ - DESTDIR=$RPM_BUILD_ROOT \ - javadir=%{_javadir} +%{__make} -C build install \ + DESTDIR=$RPM_BUILD_ROOT -install -p src/init-ceph $RPM_BUILD_ROOT/etc/rc.d/init.d/ceph -install -p src/logrotate.conf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/ceph +# sanitize paths; no config options for cmake +%{__mv} $RPM_BUILD_ROOT/etc/init.d $RPM_BUILD_ROOT/etc/rc.d +%{__mv} $RPM_BUILD_ROOT%{_libexecdir}/systemd/system/* $RPM_BUILD_ROOT%{systemdunitdir} +%{__mv} $RPM_BUILD_ROOT%{_sbindir}/mount.* $RPM_BUILD_ROOT/sbin + +cp -p src/logrotate.conf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/ceph cp -p %{SOURCE1} $RPM_BUILD_ROOT/etc/sysconfig/ceph install %{SOURCE2} $RPM_BUILD_ROOT%{_bindir} ln -sf /dev/null $RPM_BUILD_ROOT%{systemdunitdir}/ceph.service cp -p %{SOURCE3} $RPM_BUILD_ROOT%{systemdtmpfilesdir}/ceph.conf -# loadable modules -%{__rm} $RPM_BUILD_ROOT%{_libdir}/ceph/compressor/*.{a,la} -%{__rm} $RPM_BUILD_ROOT%{_libdir}/ceph/erasure-code/*.la -%{__rm} $RPM_BUILD_ROOT%{_libdir}/rados-classes/*.la -%if %{with java} -%{__rm} $RPM_BUILD_ROOT%{_libdir}/libcephfs_jni.{la,a} -%endif +%py_comp $RPM_BUILD_ROOT%{py_sitescriptdir} +%py_ocomp $RPM_BUILD_ROOT%{py_sitescriptdir} +%py_postclean -# packaged as %doc -%{__rm} $RPM_BUILD_ROOT%{_docdir}/ceph/sample.{ceph.conf,fetch_config} +%py3_comp $RPM_BUILD_ROOT%{py3_sitescriptdir} +%py3_ocomp $RPM_BUILD_ROOT%{py3_sitescriptdir} -%py_postclean +# tests +%{__rm} $RPM_BUILD_ROOT%{_bindir}/ceph_test_* +# packaged as %doc +%{__rm} $RPM_BUILD_ROOT%{_docdir}/sample.ceph.conf +# cleanup +%{__rm} $RPM_BUILD_ROOT%{_libdir}/ceph/mgr/{.gitignore,dashboard/HACKING.rst,dashboard/static/AdminLTE-2.3.7/{.gitignore,.jshintrc,README.md}} %clean rm -rf $RPM_BUILD_ROOT @@ -341,29 +351,34 @@ fi %files %defattr(644,root,root,755) # COPYING specifies licenses of individual parts -%doc AUTHORS COPYING README src/sample.ceph.conf src/sample.fetch_config +%doc AUTHORS COPYING PendingReleaseNotes README.md src/sample.ceph.conf doc/{release-notes,releases}.rst %attr(754,root,root) /etc/rc.d/init.d/ceph %config(noreplace) /etc/sysconfig/ceph %dir /etc/systemd/system/ceph.target.wants %{systemdunitdir}/ceph.service %{systemdunitdir}/ceph.target -%{systemdunitdir}/ceph-create-keys@.service %{systemdunitdir}/ceph-disk@.service +%{systemdunitdir}/ceph-fuse.target +%{systemdunitdir}/ceph-fuse@.service %{systemdunitdir}/ceph-mds.target %{systemdunitdir}/ceph-mds@.service +%{systemdunitdir}/ceph-mgr.target +%{systemdunitdir}/ceph-mgr@.service %{systemdunitdir}/ceph-mon.target %{systemdunitdir}/ceph-mon@.service %{systemdunitdir}/ceph-osd.target %{systemdunitdir}/ceph-osd@.service %{systemdunitdir}/ceph-rbd-mirror.target %{systemdunitdir}/ceph-rbd-mirror@.service +%{systemdunitdir}/ceph-volume@.service %{systemdunitdir}/rbdmap.service %{systemdtmpfilesdir}/ceph.conf %dir %{_sysconfdir}/ceph %attr(755,root,root) %{_bindir}/ceph %attr(755,root,root) %{_bindir}/ceph-authtool -%attr(755,root,root) %{_bindir}/ceph-bluefs-tool +%attr(755,root,root) %{_bindir}/ceph-bluestore-tool %attr(755,root,root) %{_bindir}/ceph-brag +%attr(755,root,root) %{_bindir}/ceph-client-debug %attr(755,root,root) %{_bindir}/ceph-clsinfo %attr(755,root,root) %{_bindir}/ceph-conf %attr(755,root,root) %{_bindir}/ceph-coverage @@ -371,17 +386,43 @@ fi %attr(755,root,root) %{_bindir}/ceph-debugpack %attr(755,root,root) %{_bindir}/ceph-dencoder %attr(755,root,root) %{_bindir}/ceph-detect-init +%attr(755,root,root) %{_bindir}/ceph-kvstore-tool %attr(755,root,root) %{_bindir}/ceph-mds +%attr(755,root,root) %{_bindir}/ceph-mgr %attr(755,root,root) %{_bindir}/ceph-mon +%attr(755,root,root) %{_bindir}/ceph-monstore-tool %attr(755,root,root) %{_bindir}/ceph-objectstore-tool %attr(755,root,root) %{_bindir}/ceph-osd +%attr(755,root,root) %{_bindir}/ceph-osdomap-tool %attr(755,root,root) %{_bindir}/ceph-post-file %attr(755,root,root) %{_bindir}/ceph-rbdnamer %attr(755,root,root) %{_bindir}/ceph-rest-api %attr(755,root,root) %{_bindir}/ceph-run %attr(755,root,root) %{_bindir}/ceph-syn +%attr(755,root,root) %{_bindir}/ceph_bench_log +%attr(755,root,root) %{_bindir}/ceph_erasure_code +%attr(755,root,root) %{_bindir}/ceph_erasure_code_benchmark +%attr(755,root,root) %{_bindir}/ceph_kvstorebench +%attr(755,root,root) %{_bindir}/ceph_multi_stress_watch +%attr(755,root,root) %{_bindir}/ceph_objectstore_bench +%attr(755,root,root) %{_bindir}/ceph_omapbench +%attr(755,root,root) %{_bindir}/ceph_perf_local +%attr(755,root,root) %{_bindir}/ceph_perf_msgr_client +%attr(755,root,root) %{_bindir}/ceph_perf_msgr_server +%attr(755,root,root) %{_bindir}/ceph_perf_objectstore +%attr(755,root,root) %{_bindir}/ceph_psim +%attr(755,root,root) %{_bindir}/ceph_radosacl +%attr(755,root,root) %{_bindir}/ceph_rgw_jsonparser +%attr(755,root,root) %{_bindir}/ceph_rgw_multiparser +%attr(755,root,root) %{_bindir}/ceph_scratchtool +%attr(755,root,root) %{_bindir}/ceph_scratchtoolpp +%attr(755,root,root) %{_bindir}/ceph_smalliobench +%attr(755,root,root) %{_bindir}/ceph_smalliobenchdumb +%attr(755,root,root) %{_bindir}/ceph_smalliobenchfs +%attr(755,root,root) %{_bindir}/ceph_smalliobenchrbd +%attr(755,root,root) %{_bindir}/ceph_tpbench +%attr(755,root,root) %{_bindir}/ceph_xattr_bench %attr(755,root,root) %{_bindir}/cephctl -%attr(755,root,root) %{_bindir}/cephfs %attr(755,root,root) %{_bindir}/cephfs-data-scan %attr(755,root,root) %{_bindir}/cephfs-journal-tool %attr(755,root,root) %{_bindir}/cephfs-table-tool @@ -398,9 +439,10 @@ fi %attr(755,root,root) %{_bindir}/rbd-replay-many %attr(755,root,root) %{_bindir}/rbd-replay-prep %attr(755,root,root) %{_bindir}/rbdmap +%attr(755,root,root) %{_sbindir}/ceph-create-keys %attr(755,root,root) %{_sbindir}/ceph-disk -%attr(755,root,root) /sbin/ceph-create-keys -%attr(755,root,root) /sbin/ceph-disk-udev +%attr(755,root,root) %{_sbindir}/ceph-volume +%attr(755,root,root) %{_sbindir}/ceph-volume-systemd %attr(755,root,root) /sbin/mount.ceph %attr(755,root,root) /sbin/mount.fuse.ceph %if "%{_libexecdir}" != "%{_libdir}" @@ -410,10 +452,13 @@ fi %attr(755,root,root) %{_libexecdir}/ceph/ceph-osd-prestart.sh %dir %{_libdir}/ceph %{_libdir}/ceph/ceph_common.sh +%{_libdir}/ceph/mgr +%attr(755,root,root) %{_libdir}/ceph/libceph-common.so* %dir %{_libdir}/ceph/compressor -%attr(755,root,root) %{_libdir}/ceph/compressor/libceph_example.so* +%attr(755,root,root) %{_libdir}/ceph/compressor/libceph_lz4.so* %attr(755,root,root) %{_libdir}/ceph/compressor/libceph_snappy.so* %attr(755,root,root) %{_libdir}/ceph/compressor/libceph_zlib.so* +%attr(755,root,root) %{_libdir}/ceph/compressor/libceph_zstd.so* %dir %{_libdir}/ceph/erasure-code %ifarch %{x8664} %attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_isa.so* @@ -425,8 +470,6 @@ fi %endif %ifarch %{ix86} %{x8664} x32 %attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_jerasure_sse3.so* -%endif -%ifarch %{x8664} x32 %attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_jerasure_sse4.so* %endif %attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_lrc.so* @@ -434,23 +477,26 @@ fi %attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_shec_generic.so* %ifarch %{ix86} %{x8664} x32 %attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_shec_sse3.so* +%attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_shec_sse4.so* %endif %dir %{_libdir}/rados-classes -%attr(755,root,root) %{_libdir}/rados-classes/libcls_cephfs.so -%attr(755,root,root) %{_libdir}/rados-classes/libcls_hello.so -%attr(755,root,root) %{_libdir}/rados-classes/libcls_journal.so -%attr(755,root,root) %{_libdir}/rados-classes/libcls_kvs.so -%attr(755,root,root) %{_libdir}/rados-classes/libcls_lock.so -%attr(755,root,root) %{_libdir}/rados-classes/libcls_log.so -%attr(755,root,root) %{_libdir}/rados-classes/libcls_numops.so -%attr(755,root,root) %{_libdir}/rados-classes/libcls_rbd.so -%attr(755,root,root) %{_libdir}/rados-classes/libcls_refcount.so -%attr(755,root,root) %{_libdir}/rados-classes/libcls_replica_log.so -%attr(755,root,root) %{_libdir}/rados-classes/libcls_rgw.so -%attr(755,root,root) %{_libdir}/rados-classes/libcls_statelog.so -%attr(755,root,root) %{_libdir}/rados-classes/libcls_timeindex.so -%attr(755,root,root) %{_libdir}/rados-classes/libcls_user.so -%attr(755,root,root) %{_libdir}/rados-classes/libcls_version.so +%attr(755,root,root) %{_libdir}/rados-classes/libcls_cephfs.so* +%attr(755,root,root) %{_libdir}/rados-classes/libcls_hello.so* +%attr(755,root,root) %{_libdir}/rados-classes/libcls_journal.so* +%attr(755,root,root) %{_libdir}/rados-classes/libcls_kvs.so* +%attr(755,root,root) %{_libdir}/rados-classes/libcls_lock.so* +%attr(755,root,root) %{_libdir}/rados-classes/libcls_log.so* +%attr(755,root,root) %{_libdir}/rados-classes/libcls_lua.so* +%attr(755,root,root) %{_libdir}/rados-classes/libcls_numops.so* +%attr(755,root,root) %{_libdir}/rados-classes/libcls_rbd.so* +%attr(755,root,root) %{_libdir}/rados-classes/libcls_refcount.so* +%attr(755,root,root) %{_libdir}/rados-classes/libcls_replica_log.so* +%attr(755,root,root) %{_libdir}/rados-classes/libcls_rgw.so* +%attr(755,root,root) %{_libdir}/rados-classes/libcls_sdk.so* +%attr(755,root,root) %{_libdir}/rados-classes/libcls_statelog.so* +%attr(755,root,root) %{_libdir}/rados-classes/libcls_timeindex.so* +%attr(755,root,root) %{_libdir}/rados-classes/libcls_user.so* +%attr(755,root,root) %{_libdir}/rados-classes/libcls_version.so* %{_datadir}/ceph %config(noreplace) /etc/logrotate.d/ceph %config(noreplace) %{_sysconfdir}/bash_completion.d/rados @@ -458,6 +504,7 @@ fi %config(noreplace) %{_sysconfdir}/bash_completion.d/rbd %{_mandir}/man8/ceph.8* %{_mandir}/man8/ceph-authtool.8* +%{_mandir}/man8/ceph-bluestore-tool.8* %{_mandir}/man8/ceph-clsinfo.8* %{_mandir}/man8/ceph-conf.8* %{_mandir}/man8/ceph-create-keys.8* @@ -466,6 +513,7 @@ fi %{_mandir}/man8/ceph-deploy.8* %{_mandir}/man8/ceph-detect-init.8* %{_mandir}/man8/ceph-disk.8* +%{_mandir}/man8/ceph-kvstore-tool.8* %{_mandir}/man8/ceph-mds.8* %{_mandir}/man8/ceph-mon.8* %{_mandir}/man8/ceph-osd.8* @@ -474,15 +522,14 @@ fi %{_mandir}/man8/ceph-rest-api.8* %{_mandir}/man8/ceph-run.8* %{_mandir}/man8/ceph-syn.8* -%{_mandir}/man8/cephfs.8* +%{_mandir}/man8/ceph-volume.8* +%{_mandir}/man8/ceph-volume-systemd.8* %{_mandir}/man8/crushtool.8* %{_mandir}/man8/librados-config.8* %{_mandir}/man8/monmaptool.8* %{_mandir}/man8/mount.ceph.8* %{_mandir}/man8/osdmaptool.8* %{_mandir}/man8/rados.8* -%{_mandir}/man8/radosgw.8* -%{_mandir}/man8/radosgw-admin.8* %{_mandir}/man8/rbd.8* %{_mandir}/man8/rbd-fuse.8* %{_mandir}/man8/rbd-mirror.8* @@ -493,7 +540,13 @@ fi %{_mandir}/man8/rbdmap.8* %dir %{_localstatedir}/lib/ceph +%dir %{_localstatedir}/lib/ceph/bootstrap-mds +%dir %{_localstatedir}/lib/ceph/bootstrap-mgr +%dir %{_localstatedir}/lib/ceph/bootstrap-osd +%dir %{_localstatedir}/lib/ceph/bootstrap-rbd +%dir %{_localstatedir}/lib/ceph/bootstrap-rgw %dir %{_localstatedir}/lib/ceph/mds +%dir %{_localstatedir}/lib/ceph/mgr %dir %{_localstatedir}/lib/ceph/mon %dir %{_localstatedir}/lib/ceph/osd %dir %{_localstatedir}/lib/ceph/tmp @@ -503,7 +556,7 @@ fi %files libs %defattr(644,root,root,755) %attr(755,root,root) %{_libdir}/libcephfs.so.*.*.* -%attr(755,root,root) %ghost %{_libdir}/libcephfs.so.1 +%attr(755,root,root) %ghost %{_libdir}/libcephfs.so.2 %attr(755,root,root) %{_libdir}/libos_tp.so.*.*.* %attr(755,root,root) %ghost %{_libdir}/libos_tp.so.1 %attr(755,root,root) %{_libdir}/libosd_tp.so.*.*.* @@ -532,49 +585,49 @@ fi %attr(755,root,root) %{_libdir}/librbd.so %attr(755,root,root) %{_libdir}/librbd_tp.so %attr(755,root,root) %{_libdir}/librgw.so -%{_libdir}/libcephfs.la -%{_libdir}/libos_tp.la -%{_libdir}/libosd_tp.la -%{_libdir}/librados.la -%{_libdir}/librados_tp.la -%{_libdir}/libradosstriper.la -%{_libdir}/librbd.la -%{_libdir}/librbd_tp.la -%{_libdir}/librgw.la %{_includedir}/cephfs %{_includedir}/rados %{_includedir}/radosstriper %{_includedir}/rbd -%files static -%defattr(644,root,root,755) -%{_libdir}/libcephfs.a -%{_libdir}/libos_tp.a -%{_libdir}/libosd_tp.a -%{_libdir}/librados.a -%{_libdir}/librados_tp.a -%{_libdir}/libradosstriper.a -%{_libdir}/librbd.a -%{_libdir}/librbd_tp.a -%{_libdir}/librgw.a - %files -n python-ceph %defattr(644,root,root,755) %attr(755,root,root) %{py_sitedir}/cephfs.so %attr(755,root,root) %{py_sitedir}/rados.so %attr(755,root,root) %{py_sitedir}/rbd.so +%attr(755,root,root) %{py_sitedir}/rgw.so %{py_sitedir}/ceph_detect_init -%{py_sitedir}/ceph_disk %{py_sitedir}/ceph_detect_init-1.0.1-py*.egg-info +%{py_sitedir}/ceph_disk %{py_sitedir}/ceph_disk-1.0.0-py*.egg-info -%{py_sitedir}/cephfs-0-py*.egg-info -%{py_sitedir}/rados-0-py*.egg-info -%{py_sitedir}/rbd-0-py*.egg-info +%{py_sitedir}/ceph_volume +%{py_sitedir}/ceph_volume-1.0.0-py*.egg-info +%{py_sitedir}/cephfs-2.0.0-py*.egg-info +%{py_sitedir}/rados-2.0.0-py*.egg-info +%{py_sitedir}/rbd-2.0.0-py*.egg-info +%{py_sitedir}/rgw-2.0.0-py*.egg-info %{py_sitescriptdir}/ceph_argparse.py[co] %{py_sitescriptdir}/ceph_daemon.py[co] %{py_sitescriptdir}/ceph_rest_api.py[co] %{py_sitescriptdir}/ceph_volume_client.py[co] +%files -n python3-ceph +%defattr(644,root,root,755) +%attr(755,root,root) %{py3_sitedir}/cephfs.cpython-*.so +%attr(755,root,root) %{py3_sitedir}/rados.cpython-*.so +%attr(755,root,root) %{py3_sitedir}/rbd.cpython-*.so +%attr(755,root,root) %{py3_sitedir}/rgw.cpython-*.so +%{py3_sitedir}/cephfs-2.0.0-py*.egg-info +%{py3_sitedir}/rados-2.0.0-py*.egg-info +%{py3_sitedir}/rbd-2.0.0-py*.egg-info +%{py3_sitedir}/rgw-2.0.0-py*.egg-info +%{py3_sitescriptdir}/ceph_argparse.py +%{py3_sitescriptdir}/ceph_daemon.py +%{py3_sitescriptdir}/ceph_volume_client.py +%{py3_sitescriptdir}/__pycache__/ceph_argparse.cpython-*.py[co] +%{py3_sitescriptdir}/__pycache__/ceph_daemon.cpython-*.py[co] +%{py3_sitescriptdir}/__pycache__/ceph_volume_client.cpython-*.py[co] + %if %{with java} %files -n java-cephfs %defattr(644,root,root,755) @@ -582,6 +635,7 @@ fi %attr(755,root,root) %ghost %{_libdir}/libcephfs_jni.so.1 %attr(755,root,root) %{_libdir}/libcephfs_jni.so %{_javadir}/libcephfs.jar +%{_javadir}/libcephfs-test.jar %endif %files fuse @@ -593,11 +647,15 @@ fi %defattr(644,root,root,755) %attr(755,root,root) %{_bindir}/radosgw %attr(755,root,root) %{_bindir}/radosgw-admin +%attr(755,root,root) %{_bindir}/radosgw-es %attr(755,root,root) %{_bindir}/radosgw-object-expirer %attr(755,root,root) %{_bindir}/radosgw-token %{systemdunitdir}/ceph-radosgw.target %{systemdunitdir}/ceph-radosgw@.service %{_sysconfdir}/bash_completion.d/radosgw-admin +%dir %{_localstatedir}/lib/ceph/radosgw +%{_mandir}/man8/radosgw.8* +%{_mandir}/man8/radosgw-admin.8* %files resource-agents %defattr(644,root,root,755) -- 2.44.0