aboutsummaryrefslogtreecommitdiff
path: root/net/ceph14/Makefile
blob: 9badb3c7dbeca7c2fcbd6b8ae1e5ef1265e5b224 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
# Created by: Willem Jan Withagen <wjw@digiware.nl>

PORTNAME=	ceph
DISTVERSIONPREFIX=	v
DISTVERSION=	14.2.21
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 powerpc64 powerpc64le

BUILD_DEPENDS=	\
	bash:shells/bash \
	git:devel/git \
	gperf:devel/gperf \
	yasm:devel/yasm \
	${PYTHON_PKGNAMEPREFIX}sphinx>=2.1.2,1:textproc/py-sphinx@${PY_FLAVOR} \
	${LOCALBASE}/lib/libatomic_ops.a:devel/libatomic_ops \
	${LOCALBASE}/bin/ld:devel/binutils
LIB_DEPENDS=	\
	${PY_BOOST} \
	libboost_thread.so:devel/boost-libs \
	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 \
	libfmt.so:devel/libfmt
#	libleveldb.so:databases/leveldb \
RUN_DEPENDS=	\
	bash:shells/bash \
	flock:sysutils/flock \
	jq:textproc/jq \
	smartctl:sysutils/smartmontools \
	xml:textproc/xmlstarlet \
	${LOCALBASE}/bin/getopt:misc/getopt \
	${PYTHON_PKGNAMEPREFIX}grpcio>=0:devel/py-grpcio@${PY_FLAVOR} \
	${PYTHON_PKGNAMEPREFIX}prettytable>=0:devel/py-prettytable@${PY_FLAVOR} \
	${PYTHON_PKGNAMEPREFIX}six>=0:devel/py-six@${PY_FLAVOR} \
	${PYTHON_PKGNAMEPREFIX}virtualenv>=0:devel/py-virtualenv@${PY_FLAVOR} \
	${PYTHON_PKGNAMEPREFIX}protobuf>=0:devel/py-protobuf@${PY_FLAVOR} \
	${PYTHON_PKGNAMEPREFIX}bcrypt>=0:security/py-bcrypt@${PY_FLAVOR} \
	${PYTHON_PKGNAMEPREFIX}openssl>=0:security/py-openssl@${PY_FLAVOR} \
	${PYTHON_PKGNAMEPREFIX}pyjwt>=0:www/py-pyjwt@${PY_FLAVOR} \
	${PYTHON_PKGNAMEPREFIX}werkzeug>=0:www/py-werkzeug@${PY_FLAVOR} \
	${PYTHON_PKGNAMEPREFIX}cherrypy>=0:www/py-cherrypy@${PY_FLAVOR} \
	${PYTHON_PKGNAMEPREFIX}pecan>=0:www/py-pecan@${PY_FLAVOR} \
	${PYTHON_PKGNAMEPREFIX}requests>=0:www/py-requests@${PY_FLAVOR} \
	${PYTHON_PKGNAMEPREFIX}routes>=0:www/py-routes@${PY_FLAVOR}

USES=		cmake:noninja compiler:c++17-lang dos2unix fuse gettext-runtime gmake ncurses \
		pkgconfig python:3.7+ readline shebangfix ssl
USE_PYTHON=	cython py3kplist
USE_OPENLDAP=	yes
USE_GITHUB=	yes
GH_ACCOUNT=	ceph:DEFAULT
DOS2UNIX_FILES=	src/pybind/mgr/diskprediction_cloud/common/__init__.py

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
GH_TUPLE+=	ceph:spawn:5f4742f:spawn/src/spawn

OPTIONS_DEFINE=	TESTS
OPTIONS_SUB=	yes

CMAKE_BUILD_TYPE=	Release
CMAKE_ON=	WITH_SYSTEM_BOOST WITH_BOOST_CONTEXT WITH_FUSE WITH_PYTHON3
CMAKE_OFF=	WITH_LTTNG WITH_BABELTRACE WITH_KRBD WITH_XFS WITH_LEVELDB \
		WITH_SPDK WITH_RDMA WITH_MGR_DASHBOARD_FRONTEND WITH_PYTHON2 \
		WITH_RADOSGW_KAFKA_ENDPOINT WITH_LEVELDB
CMAKE_ARGS=	-DMGR_PYTHON_VERSION=${PYTHON_VER} \
		-DCEPH_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

TESTS_DESC=	Build test/debug tools (Broken with Clang)
TESTS_CMAKE_ON=	-DWITH_TESTS:BOOL=ON
TESTS_CMAKE_OFF=-DWITH_TESTS:BOOL=OFF

USE_CXXSTD=	gnu++17

USE_RC_SUBR=	ceph
USE_LDCONFIG=	yes

USERS=		ceph
GROUPS=		ceph

BINARY_ALIAS=	sphinx-build=sphinx-build-${PYTHON_VER}

# PLIST_SUB=CMAKE_BUILD_TYPE_regex="[[:<:]]debug[[:>:]]"

.include <bsd.port.options.mk>

.if ${ARCH} != amd64
PLIST_SUB+=	NO_AMD64="@comment "
.else
PLIST_SUB+=	NO_AMD64=""
.endif

pre-configure:
	[ -e ${WRKSRC}/build ] || ${LN} -s ${CONFIGURE_WRKSRC} ${WRKSRC}/build
	${CP} files/file-git_version ${WRKSRC}/src/.git_version
	# Use the module finders that come with Cmake for Boost and Python
	${RM} ${WRKSRC}/cmake/modules/FindBoost.cmake || true
	# Cleanup after patching
	${RM} ${WRKSRC}/src/pybind/mgr/diskprediction_cloud/common/__init__.py.orig

post-install:
	# To install a ceph.conf sample
	${MKDIR} ${STAGEDIR}${PREFIX}/etc/ceph
	${INSTALL_DATA} ${WRKSRC}/src/sample.ceph.conf ${STAGEDIR}${PREFIX}/etc/ceph/ceph.conf.sample
	# Get logging and rotation working
	${MKDIR} ${STAGEDIR}/var/log/ceph
	${MKDIR} ${STAGEDIR}${PREFIX}/etc/newsyslog.conf.d
	${INSTALL_DATA} files/file-newsyslog_ceph-log.conf ${STAGEDIR}${PREFIX}/etc/newsyslog.conf.d
	# Create directories used bij daemons
	${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
	# For PID files and command sockets and log files
	${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
	${RM} ${STAGEDIR}${PREFIX}/sbin/ceph-volume-systemd
	${RM} -rf ${STAGEDIR}${PREFIX}/libexec/systemd
	${RMDIR} ${STAGEDIR}${PREFIX}/etc/init.d

.include <bsd.port.mk>