]>
Commit | Line | Data |
---|---|---|
1 | # Contributor: John Coyle <dx9err@gmail.com> | |
2 | # Maintainer: John Coyle <dx9err@gmail.com> | |
3 | pkgname=ceph | |
4 | pkgver=@VERSION@ | |
5 | pkgrel=@RPM_RELEASE@ | |
6 | pkgdesc="Ceph is a distributed object store and file system" | |
7 | pkgusers="ceph" | |
8 | pkggroups="ceph" | |
9 | url="http://ceph.com" | |
10 | arch="x86_64" | |
11 | license="LGPL-2.1 and CC-BY-SA-1.0 and GPL-2.0 and BSL-1.0 and \ | |
12 | GPL-2.0-with-autoconf-exception and BSD-3-Clause and MIT" | |
13 | depends="ceph-osd ceph-mds ceph-mgr ceph-mon" | |
14 | # grep --quiet option required | |
15 | # diffutils -y option required by osd-scrub-snaps.sh | |
16 | # util-linux uuidgen required | |
17 | makedepends=" | |
18 | acl-dev | |
19 | argp-standalone | |
20 | bc | |
21 | boost-dev | |
22 | btrfs-progs | |
23 | bzip2-dev | |
24 | cmake | |
25 | coreutils | |
26 | cryptsetup | |
27 | curl-dev | |
28 | cython-dev | |
29 | diffutils | |
30 | eudev-dev | |
31 | expat-dev | |
32 | fcgi-dev | |
33 | flex | |
34 | fuse-dev | |
35 | git | |
36 | grep | |
37 | jq | |
38 | keyutils-dev | |
39 | leveldb-dev | |
40 | libaio-dev | |
41 | libedit-dev | |
42 | libressl-dev | |
43 | libtirpc-dev | |
44 | libtool | |
45 | libxml2-dev | |
46 | linux-headers | |
47 | lvm2-dev | |
48 | nss-dev | |
49 | openldap-dev | |
50 | parted | |
51 | procps | |
52 | python-dev | |
53 | py-pip | |
54 | py-nose | |
55 | py-sphinx | |
56 | py-virtualenv | |
57 | readline-dev | |
58 | rpcgen | |
59 | snappy-dev | |
60 | userspace-rcu-dev | |
61 | util-linux | |
62 | xfsprogs-dev | |
63 | xmlstarlet | |
64 | yasm | |
65 | " | |
66 | source="@TARBALL_BASENAME@.tar.bz2" | |
67 | subpackages=" | |
68 | $pkgname-base | |
69 | $pkgname-common | |
70 | $pkgname-mds | |
71 | $pkgname-mgr | |
72 | $pkgname-mon | |
73 | $pkgname-fuse:ceph_fuse | |
74 | $pkgname-radosgw | |
75 | $pkgname-osd | |
76 | $pkgname-doc | |
77 | $pkgname-bash-completion:bash_completion | |
78 | rbd-fuse:rbd_fuse | |
79 | rbd-mirror:rbd_mirror | |
80 | rbd-nbd:rbd_nbd | |
81 | librbd | |
82 | librbd-dev:librbd_dev | |
83 | libcephfs | |
84 | libcephfs-dev:libcephfs_dev | |
85 | librados | |
86 | librados-dev:librados_dev | |
87 | librgw | |
88 | librgw-dev:librgw_dev | |
89 | py-rados:py_rados | |
90 | py-rgw:py_rgw | |
91 | libradosstriper | |
92 | libradosstriper-dev:libradosstriper_dev | |
93 | py-rbd:py_rbd | |
94 | py-cephfs:py_cephfs | |
95 | " | |
96 | ||
97 | if [ -n "$CEPH_TEST_PKG" ]; then | |
98 | subpackages="$subpackages $pkgname-test:ceph_test" | |
99 | fi | |
100 | ||
101 | _ceph_uid=167 | |
102 | _ceph_gid=167 | |
103 | ||
104 | _prefix=/usr | |
105 | _bindir=$_prefix/bin | |
106 | _datadir=$_prefix/share | |
107 | _docdir=$_datadir/doc | |
108 | _includedir=$_prefix/include | |
109 | _libdir=$_prefix/lib | |
110 | _libexecdir=$_prefix/libexec | |
111 | _localstatedir=/var | |
112 | _mandir=$_datadir/man | |
113 | _sbindir=/usr/sbin | |
114 | _sysconfdir=/etc | |
115 | ||
116 | _udevrulesdir=/etc/udev/rules.d | |
117 | _python_sitelib=/usr/lib/python2.7/site-packages | |
118 | ||
119 | builddir=$srcdir/@TARBALL_BASENAME@ | |
120 | ||
121 | build() { | |
122 | export CEPH_BUILD_VIRTUALENV=$builddir | |
123 | ||
124 | mkdir -p $builddir/build | |
125 | cd $builddir/build | |
126 | ||
127 | if [ -n "$MAKE_CHECK" ] || [ -n "$CEPH_TEST_PKG" ]; then | |
128 | local _with_tests=ON | |
129 | fi | |
130 | ||
131 | cmake .. \ | |
132 | -DCMAKE_INSTALL_PREFIX=$_prefix \ | |
133 | -DCMAKE_INSTALL_LIBDIR=$_libdir \ | |
134 | -DCMAKE_INSTALL_LIBEXECDIR=$_libexecdir \ | |
135 | -DCMAKE_INSTALL_LOCALSTATEDIR=$_localstatedir \ | |
136 | -DCMAKE_INSTALL_SYSCONFDIR=$_sysconfdir \ | |
137 | -DCMAKE_INSTALL_DOCDIR=$_docdir/ceph \ | |
138 | -DCMAKE_INSTALL_MANDIR=$_mandir \ | |
139 | -DWITH_REENTRANT_STRSIGNAL=ON \ | |
140 | -DWITH_THREAD_SAFE_RES_QUERY=ON \ | |
141 | -DWITH_MANPAGE=ON \ | |
142 | -DWITH_PYTHON3=OFF \ | |
143 | -DWITH_LTTNG=OFF \ | |
144 | -DWITH_SYSTEM_BOOST=ON \ | |
145 | -DWITH_TESTS=${_with_tests:-OFF} \ | |
146 | || return 1 | |
147 | make -j${JOBS:-2} || return 1 | |
148 | ||
149 | if [ -n "$MAKE_CHECK" ]; then | |
150 | ctest -j${JOBS:-2} | |
151 | fi | |
152 | } | |
153 | ||
154 | package() { | |
155 | cd $builddir/build | |
156 | make DESTDIR=$pkgdir install || return 1 | |
157 | cd .. | |
158 | ||
159 | rm -f $pkgdir$_sysconfdir/init.d/ceph | |
160 | ||
161 | install -m 0644 -D src/etc-rbdmap $pkgdir$_sysconfdir/ceph/rbdmap \ | |
162 | || return 1 | |
163 | ||
164 | install -m 0644 -D src/logrotate.conf $pkgdir$_sysconfdir/logrotate.d/ceph \ | |
165 | || return 1 | |
166 | ||
167 | chmod 0644 $pkgdir$_docdir/ceph/sample.ceph.conf || return 1 | |
168 | ||
169 | # udev rules | |
170 | install -m 0644 -D udev/50-rbd.rules $pkgdir$_udevrulesdir/50-rbd.rules || return 1 | |
171 | install -m 0644 -D udev/60-ceph-by-parttypeuuid.rules \ | |
172 | $pkgdir$_udevrulesdir/60-ceph-by-parttypeuuid.rules || return 1 | |
173 | install -m 0644 -D udev/95-ceph-osd.rules \ | |
174 | $pkgdir$_udevrulesdir/95-ceph-osd.rules | |
175 | } | |
176 | ||
177 | base() { | |
178 | pkgdesc="Base is the package that includes all the files shared amongst ceph servers" | |
179 | depends=" | |
180 | ceph-common | |
181 | cryptsetup | |
182 | librbd | |
183 | librados | |
184 | libcephfs | |
185 | librgw | |
186 | logrotate | |
187 | py-requests | |
188 | py-setuptools | |
189 | util-linux | |
190 | xfsprogs | |
191 | " | |
192 | ||
193 | _pkg $_bindir crushtool monmaptool osdmaptool ceph-run ceph-detect-init | |
194 | _pkg $_sbindir ceph-create-keys mount.ceph | |
195 | _pkg $_libexecdir/ceph ceph_common.sh | |
196 | _pkg $_libdir/rados-classes *.so* | |
197 | _pkg $_libdir/ceph/erasure-code libec_*.so* | |
198 | _pkg $_libdir/ceph/compressor libceph_*.so* | |
199 | _pkg $_sysconfdir/logrotate.d ceph | |
200 | _pkg $_python_sitelib ceph_detect_init* ceph_disk* | |
201 | for dir in tmp bootstrap-osd bootstrap-mds bootstrap-rgw; do | |
202 | install -m 750 -o $_ceph_uid -g $_ceph_gid -d \ | |
203 | $subpkgdir$_localstatedir/lib/ceph/$dir || return 1 | |
204 | done | |
205 | } | |
206 | ||
207 | common() { | |
208 | pkgdesc="Common utilities to mount and interact with a ceph storage cluster." | |
209 | depends="py-rados py-rbd py-cephfs" | |
210 | install="$pkgname-common.pre-install" | |
211 | ||
212 | _pkg $_bindir ceph \ | |
213 | ceph-authtool \ | |
214 | ceph-conf \ | |
215 | ceph-dencoder \ | |
216 | ceph-rbdnamer \ | |
217 | ceph-syn \ | |
218 | ceph-crush-location \ | |
219 | cephfs-data-scan \ | |
220 | cephfs-journal-tool \ | |
221 | cephfs-table-tool \ | |
222 | rados \ | |
223 | rbd \ | |
224 | rbd-replay \ | |
225 | rbd-replay-many \ | |
226 | rbdmap \ | |
227 | ceph-post-file \ | |
228 | ceph-brag | |
229 | _pkg $_datadir/ceph known_hosts_drop.ceph.com id_rsa_drop.ceph.com \ | |
230 | id_rsa_drop.ceph.com.pub | |
231 | _pkg $_sysconfdir/ceph rbdmap | |
232 | _pkg $_python_sitelib ceph_argparse.py* ceph_daemon.py* | |
233 | _pkg $_udevrulesdir 50-rbd.rules | |
234 | install -m 3770 -o $_ceph_uid -g $_ceph_gid -d \ | |
235 | $subpkgdir$_localstatedir/log/ceph || return 1 | |
236 | install -m 750 -o $_ceph_uid -g $_ceph_gid -d \ | |
237 | $subpkgdir$_localstatedir/lib/ceph | |
238 | } | |
239 | ||
240 | mds() { | |
241 | pkgdesc="Metadata server daemon for the Ceph distributed file system." | |
242 | depends="ceph-base" | |
243 | ||
244 | _pkg $_bindir ceph-mds | |
245 | install -m 750 -o $_ceph_uid -g $_ceph_gid -d \ | |
246 | $subpkgdir$_localstatedir/lib/ceph/mds | |
247 | } | |
248 | ||
249 | mon() { | |
250 | pkgdesc="Cluster monitor daemon for the Ceph distributed file system." | |
251 | depends="ceph-base" | |
252 | ||
253 | _pkg $_bindir ceph-mon ceph-rest-api | |
254 | _pkg $_python_sitelib ceph_rest_api.py* | |
255 | install -m 750 -o $_ceph_uid -g $_ceph_gid -d \ | |
256 | $subpkgdir$_localstatedir/lib/ceph/mon | |
257 | } | |
258 | ||
259 | ceph_fuse() { | |
260 | pkgdesc="FUSE based client for Ceph distributed network file system." | |
261 | ||
262 | _pkg $_bindir ceph-fuse | |
263 | _pkg $_sbindir mount.fuse.ceph | |
264 | } | |
265 | ||
266 | rbd_fuse() { | |
267 | pkgdesc="FUSE based client to map Ceph rbd images to files." | |
268 | depends="librados librbd" | |
269 | ||
270 | _pkg $_bindir rbd-fuse | |
271 | } | |
272 | ||
273 | rbd_mirror() { | |
274 | pkgdesc="Daemon for mirroring RBD images between Ceph clusters." | |
275 | depends="ceph-common librados" | |
276 | ||
277 | _pkg $_bindir rbd-mirror | |
278 | } | |
279 | ||
280 | rbd_nbd() { | |
281 | pkgdesc="NBD based client to map Ceph rbd images to local device." | |
282 | depends="librbd librados" | |
283 | ||
284 | _pkg $_bindir rbd-nbd | |
285 | } | |
286 | ||
287 | radosgw() { | |
288 | pkgdesc="Rados REST gateway which implements Amazon's S3 and OpenStack's Swift APIs." | |
289 | depends="ceph-common" | |
290 | ||
291 | _pkg $_bindir radosgw radosgw-admin radosgw-token radosgw-es radosgw-object-expirer | |
292 | mkdir -p $subpkgdir$_localstatedir/lib/ceph/radosgw | |
293 | } | |
294 | ||
295 | osd() { | |
296 | pkgdesc="Object storage daemon for the Ceph distributed file system." | |
297 | depends="ceph-base parted gptfdisk" | |
298 | ||
299 | _pkg $_bindir ceph-clsinfo ceph-bluefs-tool ceph-objectstore-tool ceph-osd | |
300 | _pkg $_sbindir ceph-disk | |
301 | _pkg $_libexecdir/ceph ceph-osd-prestart.sh | |
302 | _pkg $_udevrulesdir 60-ceph-by-parttypeuuid.rules 95-ceph-osd.rules | |
303 | install -m 750 -o $_ceph_uid -g $_ceph_gid -d \ | |
304 | $subpkgdir$_localstatedir/lib/ceph/osd | |
305 | } | |
306 | ||
307 | librados() { | |
308 | pkgdesc="RADOS distributed object store client library" | |
309 | ||
310 | _pkg $_libdir librados.so.* | |
311 | } | |
312 | ||
313 | librados_dev() { | |
314 | pkgdesc="RADOS distributed object store client library headers" | |
315 | depends="librados" | |
316 | ||
317 | _pkg $_includedir/rados librados.h \ | |
318 | librados.hpp \ | |
319 | buffer.h \ | |
320 | buffer_fwd.h \ | |
321 | inline_memory.h \ | |
322 | page.h \ | |
323 | crc32c.h \ | |
324 | rados_types.h \ | |
325 | rados_types.hpp \ | |
326 | memory.h | |
327 | _pkg $_libdir librados.so | |
328 | _pkg $_bindir librados-config | |
329 | } | |
330 | ||
331 | librgw() { | |
332 | pkgdesc="RADOS gateway client library" | |
333 | depends="librados" | |
334 | ||
335 | _pkg $_libdir librgw.so.* | |
336 | } | |
337 | ||
338 | librgw_dev() { | |
339 | pkgdesc="RADOS gateway client library headers" | |
340 | depends="librados" | |
341 | ||
342 | _pkg $_includedir/rados librgw.h rgw_file.h | |
343 | _pkg $_libdir librgw.so | |
344 | } | |
345 | ||
346 | py_rgw() { | |
347 | pkgdesc="Python 2 libraries for the RADOS gateway" | |
348 | depends="librgw py-rados" | |
349 | ||
350 | _pkg $_python_sitelib rgw.so rgw-*.egg-info | |
351 | } | |
352 | ||
353 | py_rados() { | |
354 | pkgdesc="Python libraries for the RADOS object store" | |
355 | depends="librados" | |
356 | ||
357 | _pkg $_python_sitelib rados.so rados-*.egg-info | |
358 | } | |
359 | ||
360 | libradosstriper() { | |
361 | pkgdesc="RADOS striping library" | |
362 | depends="librados" | |
363 | ||
364 | _pkg $_libdir libradosstriper.so.* | |
365 | } | |
366 | ||
367 | libradosstriper_dev() { | |
368 | pkgdesc="RADOS striping library headers" | |
369 | depends="libradosstriper librados-dev" | |
370 | ||
371 | _pkg $_includedir/radosstriper libradosstriper.h libradosstriper.hpp | |
372 | _pkg $_libdir libradosstriper.so | |
373 | } | |
374 | ||
375 | librbd() { | |
376 | pkgdesc="RADOS block device client library" | |
377 | depends="librados" | |
378 | ||
379 | _pkg $_libdir librbd.so.* | |
380 | } | |
381 | ||
382 | librbd_dev() { | |
383 | pkgdesc="RADOS block device client library headers" | |
384 | depends="librbd librados-dev" | |
385 | ||
386 | _pkg $_includedir/rbd features.h librbd.h librbd.hpp | |
387 | _pkg $_libdir librbd.so | |
388 | } | |
389 | ||
390 | py_rbd() { | |
391 | pkgdesc="Python libraries for the RADOS block device" | |
392 | depends="librbd py-rados" | |
393 | ||
394 | _pkg $_python_sitelib rbd.so rbd-*.egg-info | |
395 | } | |
396 | ||
397 | libcephfs() { | |
398 | pkgdesc="Ceph distributed file system client library" | |
399 | ||
400 | _pkg $_libdir libcephfs.so.* | |
401 | } | |
402 | ||
403 | libcephfs_dev() { | |
404 | pkgdesc="Ceph distributed file system client library headers" | |
405 | depends="libcephfs librados-devel" | |
406 | ||
407 | _pkg $_includedir/cephfs ceph_statx.h libcephfs.h | |
408 | _pkg $_libdir libcephfs.so | |
409 | } | |
410 | ||
411 | py_cephfs() { | |
412 | pkgdesc="Python libraries for Ceph distributed file system" | |
413 | depends="libcephfs py-rados" | |
414 | ||
415 | _pkg $_python_sitelib cephfs.so cephfs-*.egg-info ceph_volume_client.py* | |
416 | } | |
417 | ||
418 | ceph_test() { | |
419 | pkgdesc="Ceph benchmarks and test tools" | |
420 | depends="ceph-common xmlstarlet" | |
421 | ||
422 | _pkg $_bindir ceph-client-debug \ | |
423 | ceph_bench_log \ | |
424 | ceph_kvstorebench \ | |
425 | ceph_multi_stress_watch \ | |
426 | ceph_erasure_code \ | |
427 | ceph_erasure_code_benchmark \ | |
428 | ceph_omapbench \ | |
429 | ceph_objectstore_bench \ | |
430 | ceph_perf_objectstore \ | |
431 | ceph_perf_local \ | |
432 | ceph_perf_msgr_client \ | |
433 | ceph_perf_msgr_server \ | |
434 | ceph_psim \ | |
435 | ceph_radosacl \ | |
436 | ceph_rgw_jsonparser \ | |
437 | ceph_rgw_multiparser \ | |
438 | ceph_scratchtool \ | |
439 | ceph_scratchtoolpp \ | |
440 | ceph_smalliobench \ | |
441 | ceph_smalliobenchdumb \ | |
442 | ceph_smalliobenchfs \ | |
443 | ceph_smalliobenchrbd \ | |
444 | ceph_test_* \ | |
445 | ceph_tpbench \ | |
446 | ceph_xattr_bench \ | |
447 | ceph-coverage \ | |
448 | ceph-monstore-tool \ | |
449 | ceph-osdomap-tool \ | |
450 | ceph-kvstore-tool \ | |
451 | ceph-debugpack | |
452 | ||
453 | _pkg $_libdir ceph/ceph-monstore-update-crush.sh | |
454 | } | |
455 | ||
456 | bash_completion() { | |
457 | depends="bash-completion" | |
458 | pkgdesc="Bash completions for Ceph" | |
459 | _pkg $_sysconfdir/bash_completion.d ceph rados radosgw-admin rbd | |
460 | } | |
461 | ||
462 | mgr() { | |
463 | pkgdesc="Ceph Manager Daemon" | |
464 | depends="ceph-base" | |
465 | ||
466 | _pkg $_bindir ceph-mgr | |
467 | _pkg $_libdir/ceph mgr | |
468 | ||
469 | install -m 750 -o $_ceph_uid -g $_ceph_gid -d \ | |
470 | $subpkgdir$_localstatedir/lib/ceph/mgr | |
471 | } | |
472 | ||
473 | _pkg() { | |
474 | local path=$1 | |
475 | shift | |
476 | local files=$@ | |
477 | mkdir -p $subpkgdir$path || exit 1 | |
478 | for _file in $files; do | |
479 | mv $pkgdir$path/$_file $subpkgdir$path || exit 1 | |
480 | done | |
481 | } |