Fix some bugs when testing opensds ansible
[stor4nfv.git] / src / ceph / alpine / APKBUILD.in
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_EMBEDDED=OFF \
146                 -DWITH_TESTS=${_with_tests:-OFF} \
147                 || return 1
148         make -j${JOBS:-2} || return 1
149
150         if [ -n "$MAKE_CHECK" ]; then
151                 ctest -j${JOBS:-2}
152         fi
153 }
154
155 package() {
156         cd $builddir/build
157         make DESTDIR=$pkgdir install || return 1
158         cd ..
159
160         rm -f $pkgdir$_sysconfdir/init.d/ceph
161
162         install -m 0644 -D src/etc-rbdmap $pkgdir$_sysconfdir/ceph/rbdmap \
163                 || return 1
164
165         install -m 0644 -D src/logrotate.conf $pkgdir$_sysconfdir/logrotate.d/ceph \
166                 || return 1
167
168         chmod 0644 $pkgdir$_docdir/ceph/sample.ceph.conf || return 1
169
170         # udev rules
171         install -m 0644 -D udev/50-rbd.rules $pkgdir$_udevrulesdir/50-rbd.rules || return 1
172         install -m 0644 -D udev/60-ceph-by-parttypeuuid.rules  \
173                 $pkgdir$_udevrulesdir/60-ceph-by-parttypeuuid.rules || return 1
174         install -m 0644 -D udev/95-ceph-osd.rules \
175                 $pkgdir$_udevrulesdir/95-ceph-osd.rules
176 }
177
178 base() {
179         pkgdesc="Base is the package that includes all the files shared amongst ceph servers"
180         depends="
181                 ceph-common
182                 cryptsetup
183                 librbd
184                 librados
185                 libcephfs
186                 librgw
187                 logrotate
188                 py-requests
189                 py-setuptools
190                 util-linux
191                 xfsprogs
192         "
193
194         _pkg $_bindir crushtool monmaptool osdmaptool ceph-run ceph-detect-init
195         _pkg $_sbindir ceph-create-keys mount.ceph
196         _pkg $_libexecdir/ceph ceph_common.sh
197         _pkg $_libdir/rados-classes *.so*
198         _pkg $_libdir/ceph/erasure-code libec_*.so*
199         _pkg $_libdir/ceph/compressor libceph_*.so*
200         _pkg $_sysconfdir/logrotate.d ceph
201         _pkg $_python_sitelib ceph_detect_init* ceph_disk*
202         for dir in tmp bootstrap-osd bootstrap-mds bootstrap-rgw; do
203         install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
204                 $subpkgdir$_localstatedir/lib/ceph/$dir || return 1
205         done
206 }
207
208 common() {
209         pkgdesc="Common utilities to mount and interact with a ceph storage cluster."
210         depends="py-rados py-rbd py-cephfs"
211         install="$pkgname-common.pre-install"
212
213         _pkg $_bindir ceph \
214                 ceph-authtool \
215                 ceph-conf \
216                 ceph-dencoder \
217                 ceph-rbdnamer \
218                 ceph-syn \
219                 ceph-crush-location \
220                 cephfs-data-scan \
221                 cephfs-journal-tool \
222                 cephfs-table-tool \
223                 rados \
224                 rbd \
225                 rbd-replay \
226                 rbd-replay-many \
227                 rbdmap \
228                 ceph-post-file \
229                 ceph-brag
230         _pkg $_datadir/ceph known_hosts_drop.ceph.com id_rsa_drop.ceph.com \
231                 id_rsa_drop.ceph.com.pub
232         _pkg $_sysconfdir/ceph rbdmap
233         _pkg $_python_sitelib ceph_argparse.py* ceph_daemon.py*
234         _pkg $_udevrulesdir 50-rbd.rules
235         install -m 3770 -o $_ceph_uid -g $_ceph_gid -d \
236                 $subpkgdir$_localstatedir/log/ceph || return 1
237         install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
238                 $subpkgdir$_localstatedir/lib/ceph
239 }
240
241 mds() {
242         pkgdesc="Metadata server daemon for the Ceph distributed file system."
243         depends="ceph-base"
244
245         _pkg $_bindir ceph-mds
246         install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
247                 $subpkgdir$_localstatedir/lib/ceph/mds
248 }
249
250 mon() {
251         pkgdesc="Cluster monitor daemon for the Ceph distributed file system."
252         depends="ceph-base"
253
254         _pkg $_bindir ceph-mon ceph-rest-api
255         _pkg $_python_sitelib ceph_rest_api.py*
256         install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
257                 $subpkgdir$_localstatedir/lib/ceph/mon
258 }
259
260 ceph_fuse() {
261         pkgdesc="FUSE based client for Ceph distributed network file system."
262
263         _pkg $_bindir ceph-fuse
264         _pkg $_sbindir mount.fuse.ceph
265 }
266
267 rbd_fuse() {
268         pkgdesc="FUSE based client to map Ceph rbd images to files."
269         depends="librados librbd"
270
271         _pkg $_bindir rbd-fuse
272 }
273
274 rbd_mirror() {
275         pkgdesc="Daemon for mirroring RBD images between Ceph clusters."
276         depends="ceph-common librados"
277
278         _pkg $_bindir rbd-mirror
279 }
280
281 rbd_nbd() {
282         pkgdesc="NBD based client to map Ceph rbd images to local device."
283         depends="librbd librados"
284
285         _pkg $_bindir rbd-nbd
286 }
287
288 radosgw() {
289         pkgdesc="Rados REST gateway which implements Amazon's S3 and OpenStack's Swift APIs."
290         depends="ceph-common"
291
292         _pkg $_bindir radosgw radosgw-admin radosgw-token radosgw-es radosgw-object-expirer
293         mkdir -p $subpkgdir$_localstatedir/lib/ceph/radosgw
294 }
295
296 osd() {
297         pkgdesc="Object storage daemon for the Ceph distributed file system."
298         depends="ceph-base parted gptfdisk"
299
300         _pkg $_bindir ceph-clsinfo ceph-bluefs-tool ceph-objectstore-tool ceph-osd
301         _pkg $_sbindir ceph-disk
302         _pkg $_libexecdir/ceph ceph-osd-prestart.sh
303         _pkg $_udevrulesdir 60-ceph-by-parttypeuuid.rules 95-ceph-osd.rules
304         install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
305                 $subpkgdir$_localstatedir/lib/ceph/osd
306 }
307
308 librados() {
309         pkgdesc="RADOS distributed object store client library"
310
311         _pkg $_libdir librados.so.*
312 }
313
314 librados_dev() {
315         pkgdesc="RADOS distributed object store client library headers"
316         depends="librados"
317
318         _pkg $_includedir/rados librados.h \
319                 librados.hpp \
320                 buffer.h \
321                 buffer_fwd.h \
322                 inline_memory.h \
323                 page.h \
324                 crc32c.h \
325                 rados_types.h \
326                 rados_types.hpp \
327                 memory.h
328         _pkg $_libdir librados.so
329         _pkg $_bindir librados-config
330 }
331
332 librgw() {
333         pkgdesc="RADOS gateway client library"
334         depends="librados"
335
336         _pkg $_libdir librgw.so.*
337 }
338
339 librgw_dev() {
340         pkgdesc="RADOS gateway client library headers"
341         depends="librados"
342
343         _pkg $_includedir/rados librgw.h rgw_file.h
344         _pkg $_libdir librgw.so
345 }
346
347 py_rgw() {
348         pkgdesc="Python 2 libraries for the RADOS gateway"
349         depends="librgw py-rados"
350
351         _pkg $_python_sitelib rgw.so rgw-*.egg-info
352 }
353
354 py_rados() {
355         pkgdesc="Python libraries for the RADOS object store"
356         depends="librados"
357
358         _pkg $_python_sitelib rados.so rados-*.egg-info
359 }
360
361 libradosstriper() {
362         pkgdesc="RADOS striping library"
363         depends="librados"
364
365         _pkg $_libdir libradosstriper.so.*
366 }
367
368 libradosstriper_dev() {
369         pkgdesc="RADOS striping library headers"
370         depends="libradosstriper librados-dev"
371
372         _pkg $_includedir/radosstriper libradosstriper.h libradosstriper.hpp
373         _pkg $_libdir libradosstriper.so
374 }
375
376 librbd() {
377         pkgdesc="RADOS block device client library"
378         depends="librados"
379
380         _pkg $_libdir librbd.so.*
381 }
382
383 librbd_dev() {
384         pkgdesc="RADOS block device client library headers"
385         depends="librbd librados-dev"
386
387         _pkg $_includedir/rbd features.h librbd.h librbd.hpp
388         _pkg $_libdir librbd.so
389 }
390
391 py_rbd() {
392         pkgdesc="Python libraries for the RADOS block device"
393         depends="librbd py-rados"
394
395         _pkg $_python_sitelib rbd.so rbd-*.egg-info
396 }
397
398 libcephfs() {
399         pkgdesc="Ceph distributed file system client library"
400
401         _pkg $_libdir libcephfs.so.*
402 }
403
404 libcephfs_dev() {
405         pkgdesc="Ceph distributed file system client library headers"
406         depends="libcephfs librados-devel"
407
408         _pkg $_includedir/cephfs ceph_statx.h libcephfs.h
409         _pkg $_libdir libcephfs.so
410 }
411
412 py_cephfs() {
413         pkgdesc="Python libraries for Ceph distributed file system"
414         depends="libcephfs py-rados"
415
416         _pkg $_python_sitelib cephfs.so cephfs-*.egg-info ceph_volume_client.py*
417 }
418
419 ceph_test() {
420         pkgdesc="Ceph benchmarks and test tools"
421         depends="ceph-common xmlstarlet"
422
423         _pkg $_bindir ceph-client-debug \
424                 ceph_bench_log \
425                 ceph_kvstorebench \
426                 ceph_multi_stress_watch \
427                 ceph_erasure_code \
428                 ceph_erasure_code_benchmark \
429                 ceph_omapbench \
430                 ceph_objectstore_bench \
431                 ceph_perf_objectstore \
432                 ceph_perf_local \
433                 ceph_perf_msgr_client \
434                 ceph_perf_msgr_server \
435                 ceph_psim \
436                 ceph_radosacl \
437                 ceph_rgw_jsonparser \
438                 ceph_rgw_multiparser \
439                 ceph_scratchtool \
440                 ceph_scratchtoolpp \
441                 ceph_smalliobench \
442                 ceph_smalliobenchdumb \
443                 ceph_smalliobenchfs \
444                 ceph_smalliobenchrbd \
445                 ceph_test_* \
446                 ceph_tpbench \
447                 ceph_xattr_bench \
448                 ceph-coverage \
449                 ceph-monstore-tool \
450                 ceph-osdomap-tool \
451                 ceph-kvstore-tool \
452                 ceph-debugpack
453
454         _pkg $_libdir ceph/ceph-monstore-update-crush.sh
455 }
456
457 bash_completion() {
458         depends="bash-completion"
459         pkgdesc="Bash completions for Ceph"
460         _pkg $_sysconfdir/bash_completion.d ceph rados radosgw-admin rbd
461 }
462
463 mgr() {
464         pkgdesc="Ceph Manager Daemon"
465         depends="ceph-base"
466
467         _pkg $_bindir ceph-mgr
468         _pkg $_libdir/ceph mgr
469
470         install -m 750 -o $_ceph_uid -g $_ceph_gid -d \
471                 $subpkgdir$_localstatedir/lib/ceph/mgr
472 }
473
474 _pkg() {
475         local path=$1
476         shift
477         local files=$@
478         mkdir -p $subpkgdir$path || exit 1
479         for _file in $files; do
480                 mv $pkgdir$path/$_file $subpkgdir$path || exit 1
481         done
482 }