1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-02-03 11:12:13 +00:00

Add net/ceph14, Ceph delivers object, block, and file storage

Submitted by:	wjw@digiware.nl
Differential Revision:	https://reviews.freebsd.org/D21815
This commit is contained in:
Li-Wen Hsu 2019-10-23 15:34:25 +00:00
parent b7bd652799
commit 2308f044d0
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=515266
13 changed files with 1792 additions and 0 deletions

View File

@ -77,6 +77,7 @@
SUBDIR += ccxstream
SUBDIR += ceph12
SUBDIR += ceph13
SUBDIR += ceph14
SUBDIR += cf
SUBDIR += charm
SUBDIR += chrony

154
net/ceph14/Makefile Normal file
View File

@ -0,0 +1,154 @@
# Created by: Willem Jan Withagen <wjw@digiware.nl>
# $FreeBSD$
PORTNAME= ceph
DISTVERSIONPREFIX= v
DISTVERSION= 14.2.4
CATEGORIES= net
PKGNAMESUFFIX= 14
MAINTAINER= wjw@digiware.nl
COMMENT= Ceph delivers object, block, and file storage in a unified system
LICENSE= GPLv2 LGPL3
LICENSE_COMB= dual
# even though i386 will build, it is not really advised.
ONLY_FOR_ARCHS= amd64
BUILD_DEPENDS= \
bash:shells/bash \
git:devel/git \
yasm:devel/yasm \
${PYTHON_PKGNAMEPREFIX}sphinx>0:textproc/py-sphinx@${PY_FLAVOR} \
gperf:devel/gperf \
${LOCALBASE}/lib/libatomic_ops.a:devel/libatomic_ops \
${LOCALBASE}/bin/ld:devel/binutils
LIB_DEPENDS= \
${PY_BOOST} \
libboost_thread.so:devel/boost-libs \
libleveldb.so:databases/leveldb \
libnss3.so:security/nss \
libcryptopp.so:security/cryptopp \
liboath.so:security/oath-toolkit \
libsnappy.so:archivers/snappy \
libcurl.so:ftp/curl \
libxml2.so:textproc/libxml2 \
libexpat.so:textproc/expat2 \
liblz4.so:archivers/liblz4 \
libplds4.so:devel/nspr \
libtcmalloc.so:devel/google-perftools \
librabbitmq.so:net/rabbitmq-c
RUN_DEPENDS= \
bash:shells/bash \
${LOCALBASE}/bin/getopt:misc/getopt \
xml:textproc/xmlstarlet \
jq:textproc/jq \
flock:sysutils/flock \
${PYTHON_PKGNAMEPREFIX}virtualenv>=0:devel/py-virtualenv@${PY_FLAVOR} \
${PYTHON_PKGNAMEPREFIX}prettytable>=0:devel/py-prettytable@${PY_FLAVOR}
USES= cmake:noninja fuse gettext-runtime gmake pkgconfig python:3.6 \
shebangfix ssl
USE_PYTHON= cython
USE_OPENLDAP= yes
USE_GITHUB= yes
GH_ACCOUNT= ceph:DEFAULT
CONFLICTS_INSTALL= ceph
PORTSCOUT= limit:^v14\.
GH_TUPLE+= ceph:ceph-erasure-code-corpus:2d7d78b:ceph_erasure_code_corpus/ceph-erasure-code-corpus
GH_TUPLE+= ceph:ceph-object-corpus:e32bf8c:ceph_object_corpus/ceph-object-corpus
GH_TUPLE+= ceph:civetweb:bb99e93:civetweb/src/civetweb
GH_TUPLE+= 01org:isa-l_crypto:603529a:isa_l_crypto/src/crypto/isa-l/isa-l_crypto
GH_TUPLE+= ceph:dmclock:4496dbc:dmclock/src/dmclock
GH_TUPLE+= ceph:gf-complete:7e61b44:gf_complete/src/erasure-code/jerasure/gf-complete
GH_TUPLE+= ceph:jerasure:96c76b8:jerasure/src/erasure-code/jerasure/jerasure
GH_TUPLE+= ceph:googletest:fdb8504:googletest/src/googletest
GH_TUPLE+= ceph:isa-l:7e1a337:isa_l/src/isa-l
GH_TUPLE+= ceph:lua:1fce39c:lua/src/lua
GH_TUPLE+= ceph:rapidjson:f54b0e4:rapidjson/src/rapidjson
GH_TUPLE+= ceph:rocksdb:4c736f1:rocksdb/src/rocksdb
GH_TUPLE+= ceph:xxHash:1f40c65:xxHash/src/xxHash
GH_TUPLE+= facebook:zstd:f4340f4:zstd/src/zstd
CMAKE_BUILD_TYPE= Release
CMAKE_ON= WITH_SYSTEM_BOOST WITH_FUSE
CMAKE_OFF= WITH_BOOST_CONTEXT WITH_LTTNG WITH_BABELTRACE WITH_KRBD WITH_XFS WITH_KVS \
WITH_SPDK WITH_RDMA WITH_LIBCEPHFS WITH_CEPHFS WITH_RADOSGW_BEAST_FRONTEND \
WITH_MGR_DASHBOARD_FRONTEND
CMAKE_ARGS= \
-D WITH_PYTHON2=OFF -D WITH_PYTHON3=ON -DMGR_PYTHON_VERSION=3.6 \
-D CEPH_MAN_DIR:STRING=man
SHEBANG_FILES= src/rbdmap src/ceph-post-file.in src/rbd-replay-many \
src/tools/ceph-monstore-update-crush.sh src/mount.fuse.ceph \
src/ceph-create-keys
USE_RC_SUBR= ceph
USE_LDCONFIG= yes
USERS= ceph
GROUPS= ceph
.include <bsd.port.options.mk>
# 12.0 RELEASE has clang60 and will give versioning errors
.if ${OSVERSION} >= 1200000 && ${OSVERSION} < 1200099
BUILD_DEPENDS+= ${LOCALBASE}/bin/clang80:devel/llvm80
CC= clang80
CXX= clang++80
ASM= clang80
.endif
.include <bsd.port.pre.mk>
pre-configure:
[ -e ${WRKSRC}/build ] || ${LN} -s ${CONFIGURE_WRKSRC} ${WRKSRC}/build
${CP} files/file-git_version ${WRKSRC}/src/.git_version
post-install:
${MKDIR} ${STAGEDIR}${PREFIX}/etc/ceph
${MKDIR} ${STAGEDIR}/var/lib/ceph/bootstrap-mds
${MKDIR} ${STAGEDIR}/var/lib/ceph/bootstrap-osd
${MKDIR} ${STAGEDIR}/var/lib/ceph/bootstrap-rgw
${MKDIR} ${STAGEDIR}/var/lib/ceph/bootstrap-mgr
${MKDIR} ${STAGEDIR}/var/lib/ceph/mds
${MKDIR} ${STAGEDIR}/var/lib/ceph/mon
${MKDIR} ${STAGEDIR}/var/lib/ceph/osd
${MKDIR} ${STAGEDIR}/var/lib/ceph/mgr
${MKDIR} ${STAGEDIR}/var/lib/ceph/tmp
${MKDIR} ${STAGEDIR}/var/lib/ceph/radosgw
${MKDIR} ${STAGEDIR}/var/log/ceph
${MKDIR} ${STAGEDIR}/var/run/ceph
# Use the Ceph init.d script as the interface to regular
# starting and stopping daemons. rc.d work is done thru
# a separate rc.d/ceph script calling init-ceph again.
${MV} ${STAGEDIR}${PREFIX}/etc/init.d/ceph ${STAGEDIR}${PREFIX}/bin/init-ceph
# remove files not packaged
${RM} ${STAGEDIR}${DOCSDIR}/sample.fetch_config
${RM} ${STAGEDIR}${DOCSDIR}/sample.ceph.conf
${RMDIR} ${STAGEDIR}${DOCSDIR}
${RM} ${STAGEDIR}${PREFIX}/bin/ceph_bench_log
${RM} ${STAGEDIR}${PREFIX}/bin/ceph_multi_stress_watch
${RM} ${STAGEDIR}${PREFIX}/bin/ceph_perf*
${RM} ${STAGEDIR}${PREFIX}/bin/ceph_psim
${RM} ${STAGEDIR}${PREFIX}/bin/ceph_scratchtoolpp
${RM} ${STAGEDIR}${PREFIX}/bin/ceph_smalliobench*
${RM} ${STAGEDIR}${PREFIX}/bin/ceph_test*
${RM} ${STAGEDIR}${PREFIX}/bin/ceph_tpbench
${RM} ${STAGEDIR}${PREFIX}/bin/ceph_xattr_bench
${RM} ${STAGEDIR}${PREFIX}/sbin/ceph-disk-udev
# ceph-volume does not support ZFS
${RM} -rf ${STAGEDIR}${PYTHON_SITELIBDIR}/ceph_volume-*
${RM} -rf ${STAGEDIR}${PYTHON_SITELIBDIR}/ceph_volume/
${RM} ${STAGEDIR}${PREFIX}/sbin/ceph-volume
${RM} ${STAGEDIR}${PREFIX}/man/man8/ceph-volume*
${RM} ${STAGEDIR}${PREFIX}/sbin/ceph-volume-systemd
${RM} -rf ${STAGEDIR}${PREFIX}/libexec/systemd
${RMDIR} ${STAGEDIR}${PREFIX}/etc/init.d
${INSTALL_DATA} ${WRKSRC}/src/sample.ceph.conf ${STAGEDIR}${PREFIX}/etc/ceph/ceph.conf.sample
.include <bsd.port.post.mk>

31
net/ceph14/distinfo Normal file
View File

@ -0,0 +1,31 @@
TIMESTAMP = 1568802415
SHA256 (ceph-ceph-v14.2.4_GH0.tar.gz) = 17b826b7dca4df6205651f703edac93d19b2fa5542f8a130c03d1009193587c1
SIZE (ceph-ceph-v14.2.4_GH0.tar.gz) = 21008519
SHA256 (ceph-ceph-erasure-code-corpus-2d7d78b_GH0.tar.gz) = 8ab8f36f3e0a720c882b8bb4abb3f2e26bd6b025cc263119207f7d2eb3b1e490
SIZE (ceph-ceph-erasure-code-corpus-2d7d78b_GH0.tar.gz) = 3685656
SHA256 (ceph-ceph-object-corpus-e32bf8c_GH0.tar.gz) = 79ff0d1b9f959c9f5264a0dff193105d71885615deaa9c8469902400fd82d214
SIZE (ceph-ceph-object-corpus-e32bf8c_GH0.tar.gz) = 1838192
SHA256 (ceph-civetweb-bb99e93_GH0.tar.gz) = 1f8498176bf27381fb5516abae0e9068315e20f233cf5270123f38caa68691b0
SIZE (ceph-civetweb-bb99e93_GH0.tar.gz) = 11349651
SHA256 (01org-isa-l_crypto-603529a_GH0.tar.gz) = 52708b98c832bb7e6db60c949ece261d9609c822ae55239b0f2133cec2b3d155
SIZE (01org-isa-l_crypto-603529a_GH0.tar.gz) = 439149
SHA256 (ceph-dmclock-4496dbc_GH0.tar.gz) = 17f31174445058d76bb1895865d9def549fe668a050a8cea9ddd7b34125659d7
SIZE (ceph-dmclock-4496dbc_GH0.tar.gz) = 69730
SHA256 (ceph-gf-complete-7e61b44_GH0.tar.gz) = 7b0e5c1b41399d2c7d97ed7a7547ebf40023bcd104ed9a8b2b75bdee440c1a4d
SIZE (ceph-gf-complete-7e61b44_GH0.tar.gz) = 342303
SHA256 (ceph-jerasure-96c76b8_GH0.tar.gz) = 06edaeb8cb5c3076e34cb53dd91c91d54d46fb8c3b837c6280ea2ed076556beb
SIZE (ceph-jerasure-96c76b8_GH0.tar.gz) = 806334
SHA256 (ceph-googletest-fdb8504_GH0.tar.gz) = ece3265dae4d0fe5a52e7164432bb416de8bdb45e1c8cf8f361bbe893db30bb8
SIZE (ceph-googletest-fdb8504_GH0.tar.gz) = 1281068
SHA256 (ceph-isa-l-7e1a337_GH0.tar.gz) = 8099bc6ca3ca6ed9376f6cc5072a84d7a1863e2d7f2344bf08682d4efb7ae788
SIZE (ceph-isa-l-7e1a337_GH0.tar.gz) = 458398
SHA256 (ceph-lua-1fce39c_GH0.tar.gz) = fb5f778ce4da349ca903512a2fdb3987b12e3f0a52ab088fb011a8e4dd55848c
SIZE (ceph-lua-1fce39c_GH0.tar.gz) = 366778
SHA256 (ceph-rapidjson-f54b0e4_GH0.tar.gz) = 35c330d40ed9def99e8dea8f3b0e4fda7610b813b6f4aac9a70ffefcb9ab1f1e
SIZE (ceph-rapidjson-f54b0e4_GH0.tar.gz) = 1019457
SHA256 (ceph-rocksdb-4c736f1_GH0.tar.gz) = 7216de17b5cf49d75ba309175d9fc576a5e08a450b4dced532e6e9f71aca8b90
SIZE (ceph-rocksdb-4c736f1_GH0.tar.gz) = 5468514
SHA256 (ceph-xxHash-1f40c65_GH0.tar.gz) = 809e06b7493ed01f13c7ba972393a5a6d23dd92fd6b884381aa907005e569372
SIZE (ceph-xxHash-1f40c65_GH0.tar.gz) = 25484
SHA256 (facebook-zstd-f4340f4_GH0.tar.gz) = 0db909a46914eb7800bce044b86fcf595451713e56a2b131ace6f70ff25c1c4d
SIZE (facebook-zstd-f4340f4_GH0.tar.gz) = 1619022

36
net/ceph14/files/ceph.in Normal file
View File

@ -0,0 +1,36 @@
#!/bin/sh
#
# $FreeBSD$
#
# PROVIDE: ceph
# REQUIRE: LOGIN
# BEFORE: securelevel
# KEYWORD: shutdown
# Add the following lines to /etc/rc.conf to enable `ceph':
#
# ceph_enable="YES"
#
. /etc/rc.subr
PATH=$PATH:%%PREFIX%%/bin:%%PREFIX%%/sbin
name="ceph"
rcvar=${name}_enable
extra_commands="condrestart"
load_rc_config ${name}
# read configuration and set defaults
: ${ceph_enable="NO"}
: ${ceph_configfile:=%%PREFIX%%/etc/ceph/ceph.conf}
start_cmd="%%PREFIX%%/bin/init-ceph $*"
stop_cmd="%%PREFIX%%/bin/init-ceph $*"
restart_cmd="%%PREFIX%%/bin/init-ceph $*"
condrestart_cmd="%%PREFIX%%/bin/init-ceph $*"
run_rc_command "$1"

View File

@ -0,0 +1,45 @@
diff --git a/do_freebsd.sh b/do_freebsd.sh
index b0f0f5dab3..6fff34d829 100755
--- a/do_freebsd.sh
+++ b/do_freebsd.sh
@@ -22,18 +22,21 @@ CMAKE_C_FLAGS_DEBUG="$C_FLAGS_DEBUG $COMPILE_FLAGS"
#
# On FreeBSD we need to preinstall all the tools that are required for building
# dashboard, because versions fetched are not working on FreeBSD.
-
+echo Keeping the old build
+if [ -d build.old ]; then
+ sudo mv build.old build.del
+ sudo rm -rf build.del &
+fi
if [ -d build ]; then
- mv build build.remove
- rm -f build.remove &
+ sudo mv build build.old
fi
./do_cmake.sh "$*" \
-D WITH_CCACHE=ON \
-D CMAKE_BUILD_TYPE=Debug \
- -D CMAKE_CXX_FLAGS_DEBUG="$CXX_FLAGS_DEBUG" \
- -D CMAKE_C_FLAGS_DEBUG="$C_FLAGS_DEBUG" \
+ -D CMAKE_CXX_FLAGS_DEBUG="$CMAKE_CXX_FLAGS_DEBUG" \
+ -D CMAKE_C_FLAGS_DEBUG="$CMAKE_C_FLAGS_DEBUG" \
-D ENABLE_GIT_VERSION=OFF \
-D WITH_RADOSGW_AMQP_ENDPOINT=OFF \
-D WITH_SYSTEM_BOOST=ON \
@@ -52,11 +55,12 @@ fi
-D WITH_MGR=YES \
-D WITH_RDMA=OFF \
-D WITH_SPDK=OFF \
+ -D WITH_RADOSGW_BEAST_FRONTEND=OFF \
2>&1 | tee cmake.log
echo start building
date
-(cd build; gmake -j$NPROC $BUILDOPTS )
+(cd build; gmake -j$NPROC $BUILDOPTS VERBOSE=1)
echo start testing
date

View File

@ -0,0 +1,2 @@
534c2f14693439413791049826ca23d1706c7a8d
v14.2.4-44-g534c2f1469

View File

@ -0,0 +1,36 @@
git diff src/CMakeLists.txt
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 60e261b10e..287ecc6600 100644
*** src/CMakeLists.txt.org 2019-09-27 10:19:32.501849000 +0200
--- src/CMakeLists.txt 2019-09-27 10:18:05.318965000 +0200
***************
*** 58,63 ****
--- 58,68 ----
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-varargs")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-gnu-designator")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-braces -Wno-parentheses -Wno-deprecated-register")
+ if(FREEBSD)
+ # Need to use the GNU binutils linker to get versioning right.
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=/usr/local/bin/ld -Wno-unused-command-line-argument")
+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=/usr/local/bin/ld -Wno-unused-command-line-argument")
+ endif()
if(APPLE)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -undefined dynamic_lookup")
endif()
***************
*** 516,522 ****
INSTALL_RPATH "")
install(TARGETS ceph-osd DESTINATION bin)
! if (WITH_CEPHFS)
add_subdirectory(mds)
set(ceph_mds_srcs
ceph_mds.cc)
--- 521,527 ----
INSTALL_RPATH "")
install(TARGETS ceph-osd DESTINATION bin)
! if (WITH_CEPHFS OR FREEBSD)
add_subdirectory(mds)
set(ceph_mds_srcs
ceph_mds.cc)

View File

@ -0,0 +1,17 @@
diff --git a/src/auth/KeyRing.cc b/src/auth/KeyRing.cc
index a2833183633a..c4fc15a2380b 100644
--- src/auth/KeyRing.cc
+++ src/auth/KeyRing.cc
@@ -203,6 +203,12 @@ void KeyRing::decode(bufferlist::const_iterator& bl) {
} catch (buffer::error& err) {
keys.clear();
decode_plaintext(start_pos);
+ }catch (buffer::end_of_buffer& err) {
+ keys.clear();
+ decode_plaintext(start_pos);
+ } catch (exception& e){
+ keys.clear();
+ decode_plaintext(start_pos);
}
}

View File

@ -0,0 +1,13 @@
diff --git a/src/rgw/rgw_rest_conn.h b/src/rgw/rgw_rest_conn.h
index 82047d24e5..9a210292b2 100644
--- src/rgw/rgw_rest_conn.h
+++ src/rgw/rgw_rest_conn.h
@@ -438,7 +438,7 @@ public:
int wait(T *dest, E *err_result = nullptr);
};
-template <class T, class E=int>
+template <class T, class E>
int RGWRESTSendResource::wait(T *dest, E *err_result)
{
int ret = req.wait();

View File

@ -0,0 +1,27 @@
diff --git a/src/test/rgw/CMakeLists.txt b/src/test/rgw/CMakeLists.txt
index 36df883a66..efb6c4b5b8 100644
--- src/test/rgw/CMakeLists.txt
+++ src/test/rgw/CMakeLists.txt
@@ -138,14 +138,14 @@ add_executable(unittest_rgw_string test_rgw_string.cc)
add_ceph_unittest(unittest_rgw_string)
# unitttest_rgw_dmclock_queue
-add_executable(unittest_rgw_dmclock_scheduler test_rgw_dmclock_scheduler.cc $<TARGET_OBJECTS:unit-main>)
-add_ceph_unittest(unittest_rgw_dmclock_scheduler)
-
-target_link_libraries(unittest_rgw_dmclock_scheduler radosgw_a dmclock)
-if(WITH_BOOST_CONTEXT)
- target_compile_definitions(unittest_rgw_dmclock_scheduler PRIVATE BOOST_COROUTINES_NO_DEPRECATION_WARNING)
- target_link_libraries(unittest_rgw_dmclock_scheduler Boost::coroutine Boost::context)
-endif()
+# add_executable(unittest_rgw_dmclock_scheduler test_rgw_dmclock_scheduler.cc $<TARGET_OBJECTS:unit-main>)
+# add_ceph_unittest(unittest_rgw_dmclock_scheduler)
+#
+# target_link_libraries(unittest_rgw_dmclock_scheduler radosgw_a dmclock)
+# if(WITH_BOOST_CONTEXT)
+# target_compile_definitions(unittest_rgw_dmclock_scheduler PRIVATE BOOST_COROUTINES_NO_DEPRECATION_WARNING)
+# target_link_libraries(unittest_rgw_dmclock_scheduler Boost::coroutine Boost::context)
+# endif()
if(WITH_RADOSGW_AMQP_ENDPOINT)
add_executable(unittest_rgw_amqp test_rgw_amqp.cc)

View File

@ -0,0 +1,31 @@
diff --git a/src/tools/rbd_ggate/main.cc b/src/tools/rbd_ggate/main.cc
index 67fe81942b4f..5ed582fbf81c 100644
--- src/tools/rbd_ggate/main.cc
+++ src/tools/rbd_ggate/main.cc
@@ -102,14 +102,13 @@ static int do_map(int argc, const char *argv[])
std::cerr << err << std::endl;
return r;
}
-
if (forker.is_parent()) {
- global_init_postfork_start(g_ceph_context);
if (forker.parent_wait(err) != 0) {
return -ENXIO;
}
return 0;
}
+ global_init_postfork_start(g_ceph_context);
}
common_init_finish(g_ceph_context);
@@ -204,9 +203,8 @@ static int do_map(int argc, const char *argv[])
std::cout << "/dev/" << drv->get_devname() << std::endl;
if (g_conf()->daemonize) {
- forker.daemonize();
- global_init_postfork_start(g_ceph_context);
global_init_postfork_finish(g_ceph_context);
+ forker.daemonize();
}
init_async_signal_handler();

21
net/ceph14/pkg-descr Normal file
View File

@ -0,0 +1,21 @@
Ceph is a distributed object store and file system designed to provide
excellent performance, reliability and scalability.
* Object Storage
Ceph provides seamless access to objects using native language bindings or
radosgw, a REST interface for applications written with S3 and Swift.
* Block Storage
Ceph's RADOS Block Device (RBD) provides access to block device images
that are striped and replicated across the entire storage cluster.
* File System
Ceph provides a POSIX-compliant network file system aiming for large data
storage, high performance, and maximum compatibility with legacy applications.
This FreeBSD build will build most of the tools in Ceph:
* Mon, OSD, rados, RadosGW, rbd
* init-ceph, and etc/rc.d/ceph on top of that
* ceph-disk {prepare, activate}
With these tools one can build a multi server, multi osd cluster fully
running on FreeBSD and do some testing...
WWW: https://ceph.com/

1378
net/ceph14/pkg-plist Normal file

File diff suppressed because it is too large Load Diff