ceph: use the sources from upstream git repos
[pti/rtp.git] / meta-stx / recipes-extended / ceph / ceph_13.2.2.bb
1 #
2 ## Copyright (C) 2019 Wind River Systems, Inc.
3 #
4 #  Licensed under the Apache License, Version 2.0 (the "License");
5 #  you may not use this file except in compliance with the License.
6 #  You may obtain a copy of the License at
7 #
8 #      http://www.apache.org/licenses/LICENSE-2.0
9 #
10 #  Unless required by applicable law or agreed to in writing, software
11 #  distributed under the License is distributed on an "AS IS" BASIS,
12 #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 #  See the License for the specific language governing permissions and
14 #  limitations under the License.
15
16 SUMMARY = "User space components of the Ceph file system"
17 DESCRIPTION = "\
18 Ceph is a massively scalable, open-source, distributed storage system that runs \
19 on commodity hardware and delivers object, block and file system storage. \
20 "
21 HOMEPAGE = "https://ceph.io"
22
23 LICENSE = "LGPLv2.1 & GPLv2 & Apache-2.0 & MIT"
24 LIC_FILES_CHKSUM = "\
25     file://COPYING-LGPL2.1;md5=fbc093901857fcd118f065f900982c24 \
26     file://COPYING-GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
27     file://COPYING;md5=92d301c8fccd296f2221a68a8dd53828 \
28 "
29
30 DEPENDS = "\
31     boost rdma-core bzip2 curl expat \
32     gperf-native keyutils libaio lz4 \
33     nspr nss oath openldap openssl \
34     python python-cython-native rocksdb \
35     snappy udev valgrind xfsprogs zlib \
36 "
37
38 S = "${WORKDIR}/git"
39 BRANCH = "stx/v${PV}"
40 SRCREV = "7567060fea1f8d719d317277f1eb01161cf3bfef"
41
42 BRANCH_lua = "lua-5.3-ceph"
43 SRCREV_lua = "1fce39c6397056db645718b8f5821571d97869a4"
44 DESTSUF_lua = "git/src/lua"
45
46 BRANCH_ceph-object-corpus = "master"
47 SRCREV_ceph-object-corpus = "e32bf8ca3dc6151ebe7f205ba187815bc18e1cef"
48 DESTSUF_ceph-object-corpus = "git/ceph-object-corpus"
49
50 BRANCH_civetweb = "ceph-mimic"
51 SRCREV_civetweb = "ff2881e2cd5869a71ca91083bad5d12cccd22136"
52 DESTSUF_civetweb = "git/src/civetweb"
53
54 BRANCH_jerasure = "v2-ceph"
55 SRCREV_jerasure = "96c76b89d661c163f65a014b8042c9354ccf7f31"
56 DESTSUF_jerasure = "git/src/erasure-code/jerasure/jerasure"
57
58 BRANCH_gf-complete = "v3-ceph"
59 SRCREV_gf-complete = "7e61b44404f0ed410c83cfd3947a52e88ae044e1"
60 DESTSUF_gf-complete = "git/src/erasure-code/jerasure/gf-complete"
61
62 BRANCH_xxHash = "master"
63 SRCREV_xxHash = "1f40c6511fa8dd9d2e337ca8c9bc18b3e87663c9"
64 DESTSUF_xxHash = "git/src/xxHash"
65
66 # the tag v1.3.2 is not on any branch
67 BRANCH_zstd = "nobranch=1"
68 SRCREV_zstd = "f4340f46b2387bc8de7d5320c0b83bb1499933ad"
69 DESTSUF_zstd = "git/src/zstd"
70
71 BRANCH_rocksdb = "ceph-mimic"
72 SRCREV_rocksdb = "f4a857da0b720691effc524469f6db895ad00d8e"
73 DESTSUF_rocksdb = "git/src/rocksdb"
74
75 BRANCH_ceph-erasure-code-corpus = "master"
76 SRCREV_ceph-erasure-code-corpus = "2d7d78b9cc52e8a9529d8cc2d2954c7d375d5dd7"
77 DESTSUF_ceph-erasure-code-corpus = "git/ceph-erasure-code-corpus"
78
79 BRANCH_spdk = "wip-25032-mimic"
80 SRCREV_spdk = "f474ce6930f0a44360e1cc4ecd606d2348481c4c"
81 DESTSUF_spdk = "git/src/spdk"
82
83 BRANCH_isa-l = "master"
84 SRCREV_isa-l = "7e1a337433a340bc0974ed0f04301bdaca374af6"
85 DESTSUF_isa-l = "git/src/isa-l"
86
87 BRANCH_blkin = "master"
88 SRCREV_blkin = "f24ceec055ea236a093988237a9821d145f5f7c8"
89 DESTSUF_blkin = "git/src/blkin"
90
91 BRANCH_rapidjson = "master"
92 SRCREV_rapidjson = "f54b0e47a08782a6131cc3d60f94d038fa6e0a51"
93 DESTSUF_rapidjson = "git/src/rapidjson"
94
95 BRANCH_googletest = "ceph-release-1.7.x"
96 SRCREV_googletest = "fdb850479284e2aae047b87df6beae84236d0135"
97 DESTSUF_googletest = "git/src/googletest"
98
99 BRANCH_crypto = "master"
100 SRCREV_crypto = "603529a4e06ac8a1662c13d6b31f122e21830352"
101 DESTSUF_crypto = "git/src/crypto/isa-l/isa-l_crypto"
102
103 BRANCH_rapidjson-gtest = "ceph-release-1.7.x"
104 SRCREV_rapidjson-gtest = "0a439623f75c029912728d80cb7f1b8b48739ca4"
105 DESTSUF_rapidjson-gtest = "git/src/rapidjson/thirdparty/gtest"
106
107
108 SRC_URI = "\
109     git://github.com/starlingx-staging/stx-ceph.git;branch=${BRANCH} \
110     git://github.com/ceph/lua;name=lua;branch=${BRANCH_lua};destsuffix=${DESTSUF_lua} \
111     git://github.com/ceph/ceph-object-corpus;name=ceph-object-corpus;branch=${BRANCH_ceph-object-corpus};destsuffix=${DESTSUF_ceph-object-corpus} \
112     git://github.com/ceph/civetweb;name=civetweb;branch=${BRANCH_civetweb};destsuffix=${DESTSUF_civetweb} \
113     git://github.com/ceph/jerasure;name=jerasure;branch=${BRANCH_jerasure};destsuffix=${DESTSUF_jerasure} \
114     git://github.com/ceph/gf-complete;name=gf-complete;branch=${BRANCH_gf-complete};destsuffix=${DESTSUF_gf-complete} \
115     git://github.com/ceph/xxHash;name=xxHash;branch=${BRANCH_xxHash};destsuffix=${DESTSUF_xxHash} \
116     git://github.com/facebook/zstd;name=zstd;${BRANCH_zstd};destsuffix=${DESTSUF_zstd} \
117     git://github.com/ceph/rocksdb;name=rocksdb;branch=${BRANCH_rocksdb};destsuffix=${DESTSUF_rocksdb} \
118     git://github.com/ceph/ceph-erasure-code-corpus;name=ceph-erasure-code-corpus;branch=${BRANCH_ceph-erasure-code-corpus};destsuffix=${DESTSUF_ceph-erasure-code-corpus} \
119     git://github.com/ceph/spdk;name=spdk;branch=${BRANCH_spdk};destsuffix=${DESTSUF_spdk} \
120     git://github.com/ceph/isa-l;name=isa-l;branch=${BRANCH_isa-l};destsuffix=${DESTSUF_isa-l} \
121     git://github.com/intel/isa-l_crypto;name=crypto;branch=${BRANCH_crypto};destsuffix=${DESTSUF_crypto} \
122     git://github.com/ceph/blkin;name=blkin;branch=${BRANCH_blkin};destsuffix=${DESTSUF_blkin} \
123     git://github.com/ceph/rapidjson;name=rapidjson;branch=${BRANCH_rapidjson};destsuffix=${DESTSUF_rapidjson} \
124     git://github.com/ceph/googletest;name=googletest;branch=${BRANCH_googletest};destsuffix=${DESTSUF_googletest} \
125     git://github.com/ceph/googletest;name=rapidjson-gtest;branch=${BRANCH_rapidjson-gtest};destsuffix=${DESTSUF_rapidjson-gtest} \
126     \
127     file://0001-Correct-the-path-to-find-version.h-in-rocksdb.patch \
128     file://0002-zstd-fix-error-for-cross-compile.patch \
129     file://0003-ceph-add-pybind-support-in-OE.patch \
130     file://0004-ceph-detect-init-correct-the-installation-for-OE.patch \
131     \
132     file://ceph-init-wrapper.sh \
133     file://ceph-manage-journal.py \
134     file://ceph-preshutdown.sh \
135     file://ceph-radosgw.service \
136     file://ceph.conf \
137     file://ceph.conf.pmon \
138     file://ceph.service \
139     file://ceph.sh \
140     file://mgr-restful-plugin.py \
141     file://mgr-restful-plugin.service \
142     file://starlingx-docker-override.conf \
143 "
144
145 inherit cmake pythonnative python-dir systemd
146
147 DISTRO_FEATURES_BACKFILL_CONSIDERED_remove = "sysvinit"
148
149 SYSTEMD_SERVICE_${PN} = " \
150     ceph-radosgw@.service \
151     ceph-radosgw.target \
152     ceph-mon@.service \
153     ceph-mon.target \
154     ceph-mds@.service \
155     ceph-mds.target \
156     ceph-disk@.service \
157     ceph-osd@.service \
158     ceph-osd.target \
159     ceph.target \
160     ceph-fuse@.service \
161     ceph-fuse.target \
162     ceph-rbd-mirror@.service \
163     ceph-rbd-mirror.target \
164     ceph-volume@.service \
165     ceph-mgr@.service \
166     ceph-mgr.target \
167     rbdmap.service \
168 "
169 SYSTEMD_AUTO_ENABLE = "disable"
170
171 OECMAKE_GENERATOR = "Unix Makefiles"
172
173 EXTRA_OECMAKE = "\
174     -DWITH_MANPAGE=OFF \
175     -DWITH_FUSE=OFF \
176     -DWITH_SPDK=OFF \
177     -DWITH_LEVELDB=OFF \
178     -DWITH_LTTNG=OFF \
179     -DWITH_BABELTRACE=OFF \
180     -DWITH_TESTS=OFF \
181     -DDEBUG_GATHER=OFF \
182     -DWITH_PYTHON2=ON \
183     -DWITH_MGR=ON \
184     -DMGR_PYTHON_VERSION=2.7 \
185     -DWITH_MGR_DASHBOARD_FRONTEND=OFF \
186     -DWITH_SYSTEM_BOOST=ON \
187     -DWITH_SYSTEM_ROCKSDB=ON \
188     -DCMAKE_INSTALL_INITCEPH=${sysconfdir}/init.d \
189 "
190
191 do_configure_prepend () {
192     echo "set( CMAKE_SYSROOT \"${RECIPE_SYSROOT}\" )" >> ${WORKDIR}/toolchain.cmake
193     echo "set( CMAKE_DESTDIR \"${D}\" )" >> ${WORKDIR}/toolchain.cmake
194     echo "set( PYTHON_SITEPACKAGES_DIR \"${PYTHON_SITEPACKAGES_DIR}\" )" >> ${WORKDIR}/toolchain.cmake
195     ln -sf ${STAGING_LIBDIR}/libboost_python27.so ${STAGING_LIBDIR}/libboost_python.so
196     echo ${SRCREV} > ${S}/src/.git_version
197     echo v${PV} >> ${S}/src/.git_version
198 }
199
200 do_install_append () {
201     mv ${D}${bindir}/ceph-disk ${D}${sbindir}/ceph-disk
202     sed -i -e 's:${WORKDIR}.*python2.7:${bindir}/python:' ${D}${sbindir}/ceph-disk
203     sed -i -e 's:${sbindir}/service:${bindir}/service:' ${D}/${libdir}/python2.7/site-packages/ceph_disk/main.py
204     sed -i -e 's:${WORKDIR}.*python2.7:${bindir}/python:' ${D}${bindir}/ceph
205     sed -i -e 's:${WORKDIR}.*python2.7:${bindir}/python:' ${D}${bindir}/ceph-detect-init
206     find ${D} -name SOURCES.txt | xargs sed -i -e 's:${WORKDIR}::'
207
208     install -d ${D}${systemd_unitdir}
209     mv ${D}${libexecdir}/systemd/system ${D}${systemd_unitdir}
210     mv ${D}${libexecdir}/ceph/ceph-osd-prestart.sh ${D}${libdir}/ceph
211     install -m 0755 ${D}${libexecdir}/ceph/ceph_common.sh ${D}${libdir}/ceph
212
213     install -d ${D}${sysconfdir}/ceph
214     install -m 0644 ${WORKDIR}/ceph.conf ${D}${sysconfdir}/ceph/
215     install -m 0644 ${WORKDIR}/ceph-radosgw.service ${D}${systemd_system_unitdir}/ceph-radosgw@.service
216     install -m 0644 ${WORKDIR}/ceph.service ${D}${systemd_system_unitdir}
217     install -m 0644 ${WORKDIR}/mgr-restful-plugin.service ${D}${systemd_system_unitdir}
218
219     install -m 0700 ${WORKDIR}/ceph-manage-journal.py ${D}${sbindir}/ceph-manage-journal
220     install -Dm 0750 ${WORKDIR}/mgr-restful-plugin.py  ${D}${sysconfdir}/rc.d/init.d/mgr-restful-plugin
221     install -Dm 0750 ${WORKDIR}/mgr-restful-plugin.py  ${D}${sysconfdir}/init.d/mgr-restful-plugin
222     install -m 0750 ${WORKDIR}/ceph.conf.pmon ${D}${sysconfdir}/ceph/
223
224     install -d -m 0750 ${D}${sysconfdir}/services.d/controller
225     install -d -m 0750 ${D}${sysconfdir}/services.d/storage
226     install -d -m 0750 ${D}${sysconfdir}/services.d/worker
227
228     install -m 0750 ${WORKDIR}/ceph.sh ${D}${sysconfdir}/services.d/controller
229     install -m 0750 ${WORKDIR}/ceph.sh ${D}${sysconfdir}/services.d/storage
230     install -m 0750 ${WORKDIR}/ceph.sh ${D}${sysconfdir}/services.d/worker
231
232     install -Dm 0750 ${WORKDIR}/ceph-init-wrapper.sh ${D}${sysconfdir}/rc.d/init.d/ceph-init-wrapper
233     install -Dm 0750 ${WORKDIR}/ceph-init-wrapper.sh ${D}${sysconfdir}/init.d/ceph-init-wrapper
234     sed -i -e 's|/usr/lib64|${libdir}|' ${D}${sysconfdir}/rc.d/init.d/ceph-init-wrapper ${D}${sysconfdir}/init.d/ceph-init-wrapper
235
236     install -m 0700 ${WORKDIR}/ceph-preshutdown.sh ${D}${sbindir}/ceph-preshutdown.sh
237     
238     install -Dm 0644 ${WORKDIR}/starlingx-docker-override.conf ${D}${systemd_system_unitdir}/docker.service.d/starlingx-docker-override.conf
239
240     install -m 0644 -D ${S}/src/etc-rbdmap ${D}${sysconfdir}/ceph/rbdmap 
241     install -m 0644 -D ${S}/etc/sysconfig/ceph ${D}${sysconfdir}/sysconfig/ceph
242     install -m 0644 -D ${S}/src/logrotate.conf ${D}${sysconfdir}/logrotate.d/ceph
243
244     install -m 0644 -D ${S}/COPYING ${D}${docdir}/ceph/COPYING    
245     install -m 0644 -D ${S}/etc/sysctl/90-ceph-osd.conf ${D}${libdir}/sysctl.d/90-ceph-osd.conf
246     install -m 0644 -D ${S}/udev/50-rbd.rules ${D}${libdir}/udev/rules.d/50-rbd.rules
247     install -m 0644 -D ${S}/udev/60-ceph-by-parttypeuuid.rules ${D}${libdir}/udev/rules.d/60-ceph-by-parttypeuuid.rules
248
249     mkdir -p ${D}${localstatedir}/ceph
250     mkdir -p ${D}${localstatedir}/log/ceph
251     mkdir -p ${D}${localstatedir}/lib/ceph/tmp
252     mkdir -p ${D}${localstatedir}/lib/ceph/mon
253     mkdir -p ${D}${localstatedir}/lib/ceph/osd
254     mkdir -p ${D}${localstatedir}/lib/ceph/mds
255     mkdir -p ${D}${localstatedir}/lib/ceph/mgr
256     mkdir -p ${D}${localstatedir}/lib/ceph/radosgw
257     mkdir -p ${D}${localstatedir}/lib/ceph/bootstrap-osd
258     mkdir -p ${D}${localstatedir}/lib/ceph/bootstrap-mds
259     mkdir -p ${D}${localstatedir}/lib/ceph/bootstrap-rgw
260     mkdir -p ${D}${localstatedir}/lib/ceph/bootstrap-mgr
261     mkdir -p ${D}${localstatedir}/lib/ceph/bootstrap-rbd
262
263     install -m 0755 -d ${D}/${sysconfdir}/tmpfiles.d
264     echo "d ${localstatedir}/run/ceph 0755 ceph ceph -" >> ${D}/${sysconfdir}/tmpfiles.d/ceph.conf
265
266     install -m 0750 -D ${S}/src/init-radosgw ${D}${sysconfdir}/rc.d/init.d/ceph-radosgw
267     install -m 0750 -D ${S}/src/init-radosgw ${D}${sysconfdir}/init.d/ceph-radosgw
268     sed -i '/### END INIT INFO/a SYSTEMCTL_SKIP_REDIRECT=1' ${D}${sysconfdir}/rc.d/init.d/ceph-radosgw
269     sed -i '/### END INIT INFO/a SYSTEMCTL_SKIP_REDIRECT=1' ${D}${sysconfdir}/init.d/ceph-radosgw
270     install -m 0750 -D ${S}/src/init-rbdmap ${D}${sysconfdir}/rc.d/init.d/rbdmap
271     install -m 0750 -D ${S}/src/init-rbdmap ${D}${sysconfdir}/init.d/rbdmap
272     install -m 0750 -D ${B}/bin/init-ceph ${D}${sysconfdir}/rc.d/init.d/ceph
273     install -m 0750 -D ${B}/bin/init-ceph ${D}${sysconfdir}/init.d/ceph
274     sed -i -e 's|/usr/lib64|${libdir}|' ${D}${sysconfdir}/init.d/ceph ${D}${sysconfdir}/rc.d/init.d/ceph
275     install -d -m 0750 ${D}${localstatedir}/log/radosgw
276 }
277
278 PACKAGES += " \
279     ${PN}-python \
280 "
281
282 FILES_${PN} += "\
283     ${libdir}/rados-classes/*.so.* \
284     ${libdir}/ceph/compressor/*.so \
285     ${libdir}/rados-classes/*.so \
286     ${libdir}/ceph/*.so \
287     ${localstatedir} \
288     ${docdir}/ceph/COPYING \
289     ${libdir}/sysctl.d/90-ceph-osd.conf \
290     ${libdir}/udev/rules.d/50-rbd.rules \
291     ${libdir}/udev/rules.d/60-ceph-by-parttypeuuid.rules \
292     ${systemd_system_unitdir}/mgr-restful-plugin.service \
293     ${systemd_system_unitdir}/ceph-radosgw@.service \
294     ${systemd_system_unitdir}/ceph.service \
295     ${systemd_system_unitdir}/docker.service.d/starlingx-docker-override.conf \
296 "
297 FILES_${PN}-python = "\
298     ${PYTHON_SITEPACKAGES_DIR}/* \
299 "
300
301 RDEPENDS_${PN} += "\
302     bash \
303     python \
304     python-misc \
305     python-modules \
306     python-prettytable \
307     rdma-core \
308     xfsprogs-mkfs \
309     ${PN}-python \
310 "
311
312 COMPATIBLE_HOST = "(x86_64).*"
313
314 INSANE_SKIP_${PN}-python += "ldflags"
315 INSANE_SKIP_${PN} += "dev-so"