Fix post install section for cynara package
[scm/bb/meta-tizen.git] / meta-tizen-common-base / recipes-security / cynara / cynara.inc
1 DESCRIPTION = "Cynara service with client libraries"
2 HOMEPAGE = "http://nohomepage.org"
3 SECTION = "Security/Application Privilege"
4 LICENSE = "Apache-2.0"
5 PV = "0.6.1"
6
7 SRC_URI = ""
8
9 S = "${WORKDIR}/git"
10
11 inherit manifest autotools-brokensep
12
13 BBCLASSEXTEND = ""
14 PROVIDES = ""
15
16 CXXFLAGS_prepend = " -DCYNARA_STATE_PATH='\"${localstatedir}/cynara/\"' -DCYNARA_LIB_PATH='\"${prefix}/lib/cynara/\"' -DCYNARA_TESTS_DIR='\"${prefix}/share/cynara/tests/\"' -DCYNARA_CONFIGURATION_DIR='\"${sysconfdir}/cynara/\"' -DCYNARA_VERSION='\"0.6.1\"'"
17
18
19 #PROVIDES by libcynara-creds-socket
20 PROVIDES += "libcynara-creds-socket"
21
22
23 #PROVIDES by cynara-tests
24 PROVIDES += "cynara-tests"
25
26
27 #PROVIDES by libcynara-client
28 PROVIDES += "libcynara-client"
29
30
31 #PROVIDES by libcynara-creds-dbus
32 PROVIDES += "libcynara-creds-dbus"
33
34
35 #PROVIDES by cynara
36
37
38 #PROVIDES by cynara-dev
39 PROVIDES += "cynara-dev"
40
41
42 #PROVIDES by cyad
43 PROVIDES += "cyad"
44
45
46 #PROVIDES by libcynara-commons
47 PROVIDES += "libcynara-commons"
48
49
50 #PROVIDES by libcynara-admin
51 PROVIDES += "libcynara-admin"
52
53
54 #PROVIDES by libcynara-creds-commons
55 PROVIDES += "libcynara-creds-commons"
56
57
58 #PROVIDES by cynara-db-migration
59 PROVIDES += "cynara-db-migration"
60
61
62 #PROVIDES by libcynara-agent
63 PROVIDES += "libcynara-agent"
64
65
66 #PROVIDES by libcynara-session
67 PROVIDES += "libcynara-session"
68
69
70 RDEPENDS = ""
71 #RDEPENDS of cynara (${PN})
72 RDEPENDS_${PN} += "systemd"
73 RDEPENDS_${PN} += "default-ac-domains"
74 RDEPENDS_${PN} += "cynara-db-migration"
75 RDEPENDS_${PN} += "smack"
76 RDEPENDS_${PN} += "shadow"
77
78 #RDEPENDS of libcynara-client (lib${PN}-client)
79 RDEPENDS_lib${PN}-client += "cynara"
80
81 #RDEPENDS of libcynara-creds-dbus (lib${PN}-creds-dbus)
82 RDEPENDS_lib${PN}-creds-dbus += "dbus"
83
84 #RDEPENDS of cynara-dev (${PN}-dev)
85 RDEPENDS_${PN}-dev += "systemd"
86 RDEPENDS_${PN}-dev += "libcynara-client"
87 RDEPENDS_${PN}-dev += "dbus"
88 RDEPENDS_${PN}-dev += "libcynara-creds-dbus"
89 RDEPENDS_${PN}-dev += "libcynara-creds-commons"
90 RDEPENDS_${PN}-dev += "libcynara-commons"
91 RDEPENDS_${PN}-dev += "libcynara-admin"
92 RDEPENDS_${PN}-dev += "libcynara-creds-socket"
93 RDEPENDS_${PN}-dev += "libcynara-agent"
94 RDEPENDS_${PN}-dev += "libcynara-session"
95
96 #RDEPENDS of libcynara-admin (lib${PN}-admin)
97 RDEPENDS_lib${PN}-admin += "cynara"
98
99 #RDEPENDS of libcynara-agent (lib${PN}-agent)
100 RDEPENDS_lib${PN}-agent += "cynara"
101
102
103 DEPENDS = ""
104 #DEPENDS of cynara-tests
105 #DEPENDS of cynara
106 #DEPENDS of libcynara-creds-dbus
107 DEPENDS += "systemd"
108 inherit tizen_cmake
109 DEPENDS += "zip"
110 DEPENDS += "dbus"
111 inherit pkgconfig
112 DEPENDS += "gmock"
113 DEPENDS += "gtest"
114
115 CFLAGS_prepend = "-I ${S}/include "
116
117
118 do_prep() {
119  cd ${S}
120  chmod -Rf a+rX,u+w,g-w,o-w ${S}
121  #setup -q
122  cp -a ${S}/packaging/cynara.manifest .
123  cp -a ${S}/packaging/libcynara-client.manifest .
124  cp -a ${S}/packaging/libcynara-admin.manifest .
125  cp -a ${S}/packaging/cynara-tests.manifest .
126  cp -a ${S}/packaging/libcynara-agent.manifest .
127  cp -a ${S}/packaging/libcynara-commons.manifest .
128  cp -a ${S}/packaging/libcynara-creds-commons.manifest .
129  cp -a ${S}/packaging/libcynara-creds-dbus.manifest .
130  cp -a ${S}/packaging/libcynara-creds-socket.manifest .
131  cp -a ${S}/packaging/libcynara-session.manifest .
132  cp -a ${S}/packaging/cynara-db-migration.manifest .
133  cp -a ${S}/packaging/cyad.manifest .
134  cp -a ${S}/packaging/cynara-db-chsgen.manifest .
135  cp -a test/db/db* .
136  
137  
138 }
139 do_patch_append() {
140     bb.build.exec_func('do_prep', d)
141 }
142
143 do_configure() {
144 }
145
146 do_compile() {
147  cd ${S}
148  LANG=C
149  export LANG
150  unset DISPLAY
151  LD_AS_NEEDED=1; export LD_AS_NEEDED ;
152  
153  
154  
155  export CXXFLAGS="$CXXFLAGS -DCYNARA_STATE_PATH=\\\"${localstatedir}/cynara/\\\" \
156                             -DCYNARA_LIB_PATH=\\\"${prefix}/lib/cynara/\\\" \
157                             -DCYNARA_TESTS_DIR=\\\"${prefix}/share/cynara/tests/\\\" \
158                             -DCYNARA_CONFIGURATION_DIR=\\\"${sysconfdir}/cynara/\\\" \
159                             -DCYNARA_VERSION=\\\"${PV}\\\""
160
161
162  export LDFLAGS="${LDFLAGS} -Wl,--rpath=${prefix}/lib "
163  
164  
165    cmake \
166          -DCMAKE_VERBOSE_MAKEFILE=ON \
167          -DCMAKE_INSTALL_PREFIX:PATH=${prefix} \
168          -DCMAKE_INSTALL_LIBDIR:PATH=${prefix}/lib \
169          -DINCLUDE_INSTALL_DIR:PATH=${prefix}/include \
170          -DLIB_INSTALL_DIR:PATH=${prefix}/lib \
171          -DSYSCONF_INSTALL_DIR:PATH=${sysconfdir} \
172          -DSHARE_INSTALL_PREFIX:PATH=${prefix}/share \
173          -DCMAKE_SKIP_RPATH:BOOL=ON \
174          -DBUILD_SHARED_LIBS:BOOL=ON \
175          -DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain.cmake \
176          ${EXTRA_OECMAKE} . \
177          -DBUILD_TESTS=OFF \
178          -DCMAKE_BUILD_TYPE=RELEASE \
179          -DCMAKE_VERBOSE_MAKEFILE=ON \
180          -DDB_FILES_SMACK_LABEL="System"
181          
182 oe_runmake
183  
184  
185  
186 }
187
188 do_install() {
189  export RPM_BUILD_ROOT=${D}
190  cd ${S}
191  LANG=C
192  export LANG
193  unset DISPLAY
194  rm -rf ${D}
195  mkdir -p ${D}
196  
197  rm -rf ${D}
198  
199    oe_runmake \
200          DESTDIR=${D} \
201          INSTALL_ROOT=${D} \
202          BINDIR=${prefix}/bin \
203    install  
204    rm -f ${D}${infodir}/dir 
205    find ${D} -regex ".*\.la$" | xargs rm -f -- 
206    find ${D} -regex ".*\.a$" | xargs rm -f --
207  
208  mkdir -p ${D}/${sysconfdir}/cynara/
209  cp ./conf/creds.conf ${D}/${sysconfdir}/cynara//creds.conf
210  
211  mkdir -p ${D}/usr/lib/systemd/system/sockets.target.wants
212  mkdir -p ${D}/${localstatedir}/cynara/
213  mkdir -p ${D}${prefix}/share/cynara/tests//empty_db
214  mkdir -p ${D}${prefix}/lib/cynara//plugin/client
215  mkdir -p ${D}${prefix}/lib/cynara//plugin/service
216  
217  cp -a db* ${D}${prefix}/share/cynara/tests/
218  ln -s ../cynara.socket ${D}/usr/lib/systemd/system/sockets.target.wants/cynara.socket
219  ln -s ../cynara-admin.socket ${D}/usr/lib/systemd/system/sockets.target.wants/cynara-admin.socket
220  ln -s ../cynara-agent.socket ${D}/usr/lib/systemd/system/sockets.target.wants/cynara-agent.socket
221  
222  
223 }
224
225 pkg_preinst_${PN}() {
226     #!/bin/sh -e
227
228     id -g cynara > /dev/null 2>&1
229     if [ $? -eq 1 ]; then
230         groupadd cynara -r > /dev/null 2>&1
231     fi
232     id -u cynara > /dev/null 2>&1
233     if [ $? -eq 1 ]; then
234         useradd -d /var/lib/empty -s /sbin/nologin -r -g cynara cynara > /dev/null 2>&1
235     fi
236     if [ $1 -gt 1 ] ; then
237         OLDVERSION="$(rpm -q --qf '%{version}' cynara)"
238         $D${prefix}/sbin/cynara/cynara-db-migration upgrade -f 0.0.0 -t ${PV}
239     else
240         $D${prefix}/sbin/cynara/cynara-db-migration install -t ${PV}
241     fi
242
243 }
244
245 pkg_postinst_libcynara-agent() {
246     #!/bin/sh -e
247
248     [ "x$D" == "x" ] && ldconfig
249 }
250
251 pkg_postinst_${PN}() {
252     #!/bin/sh -e
253
254     ### Add file capabilities if needed
255     ### setcap/getcap binary are useful. To use them you must install libcap and libcap-tools packages
256     ### In such case uncomment Requires with those packages
257     systemctl daemon-reload
258     if [ $1 == 1 ]; then
259         systemctl enable cynara.service
260     fi
261     chsmack -a System ${localstatedir}/cynara/
262     systemctl restart cynara.service
263
264 }
265
266 pkg_postinst_libcynara-creds-socket() {
267     #!/bin/sh -e
268
269     [ "x$D" == "x" ] && ldconfig
270 }
271
272 pkg_postinst_libcynara-client() {
273     #!/bin/sh -e
274
275     [ "x$D" == "x" ] && ldconfig
276 }
277
278 pkg_postinst_libcynara-creds-dbus() {
279     #!/bin/sh -e
280
281     [ "x$D" == "x" ] && ldconfig
282 }
283
284 pkg_postinst_libcynara-session() {
285     #!/bin/sh -e
286
287     [ "x$D" == "x" ] && ldconfig
288 }
289
290 pkg_postinst_libcynara-admin() {
291     #!/bin/sh -e
292
293     [ "x$D" == "x" ] && ldconfig
294 }
295
296 pkg_postinst_libcynara-creds-commons() {
297     #!/bin/sh -e
298
299     [ "x$D" == "x" ] && ldconfig
300 }
301
302 pkg_postinst_libcynara-commons() {
303     #!/bin/sh -e
304
305     [ "x$D" == "x" ] && ldconfig
306 }
307
308 pkg_prerm_${PN}() {
309     #!/bin/sh -e
310
311     if [ $1 = 0 ]; then
312         # unistall
313         systemctl stop cynara.service
314     fi
315
316 }
317
318 pkg_postrm_libcynara-creds-commons() {
319     #!/bin/sh -e
320
321     [ "x$D" == "x" ] && ldconfig
322 }
323
324 pkg_postrm_libcynara-creds-socket() {
325     #!/bin/sh -e
326
327     [ "x$D" == "x" ] && ldconfig
328 }
329
330 pkg_postrm_libcynara-agent() {
331     #!/bin/sh -e
332
333     [ "x$D" == "x" ] && ldconfig
334 }
335
336 pkg_postrm_libcynara-admin() {
337     #!/bin/sh -e
338
339     [ "x$D" == "x" ] && ldconfig
340 }
341
342 pkg_postrm_${PN}() {
343     #!/bin/sh -e
344
345     if [ $1 == 0 ]; then
346         $D${prefix}/sbin/cynara/cynara-db-migration uninstall -f ${PV}
347         userdel -r cynara > /dev/null 2>&1
348         groupdel cynara > /dev/null 2>&1
349         systemctl daemon-reload
350     fi
351
352 }
353
354 pkg_postrm_libcynara-creds-dbus() {
355     #!/bin/sh -e
356
357     [ "x$D" == "x" ] && ldconfig
358 }
359
360 pkg_postrm_libcynara-session() {
361     #!/bin/sh -e
362
363     [ "x$D" == "x" ] && ldconfig
364 }
365
366 pkg_postrm_libcynara-client() {
367     #!/bin/sh -e
368
369     [ "x$D" == "x" ] && ldconfig
370 }
371
372 pkg_postrm_libcynara-commons() {
373     #!/bin/sh -e
374
375     [ "x$D" == "x" ] && ldconfig
376 }
377
378 PACKAGES = "${PN}-dbg ${PN}-doc ${PN}-locale"
379 PACKAGES += " cynara-tests "
380 PACKAGES += " libcynara-client "
381 PACKAGES += " libcynara-creds-dbus "
382 PACKAGES += " cynara-db-migration "
383 PACKAGES += " cynara-dev "
384 PACKAGES += " cyad "
385 PACKAGES += " cynara "
386 PACKAGES += " libcynara-commons "
387 PACKAGES += " libcynara-admin "
388 PACKAGES += " libcynara-creds-commons "
389 PACKAGES += " libcynara-creds-socket "
390 PACKAGES += " libcynara-agent "
391 PACKAGES += " libcynara-session "
392
393 cynara-tests_files = ""
394 cynara-tests_files += "/usr/bin/cynara-tests"
395 cynara-tests_files += "/usr/bin/cynara-db-migration-tests"
396 cynara-tests_files += "${prefix}/share/cynara/tests/db*/*"
397 cynara-tests_files += "%attr(755,root,root) ${prefix}/share/cynara/tests/empty_db"
398 MANIFESTFILES_${PN}-tests = "cynara-tests.manifest"
399 DIRFILES_${PN}-tests = ""
400 DIRFILES_${PN}-tests += "%attr(755,root,root) ${prefix}/share/cynara/tests/empty_db"
401
402 libcynara-client_files = ""
403 libcynara-client_files += "${prefix}/lib/libcynara-client.so.*"
404 libcynara-client_files += "${prefix}/lib/libcynara-client-async.so.*"
405 libcynara-client_files += "${prefix}/lib/libcynara-client-commons.so.*"
406 libcynara-client_files += "%attr(755,cynara,cynara) ${prefix}/lib/cynara/plugin/client"
407 MANIFESTFILES_lib${PN}-client = "libcynara-client.manifest"
408 DIRFILES_lib${PN}-client = ""
409 DIRFILES_lib${PN}-client += "%attr(755,cynara,cynara) ${prefix}/lib/cynara/plugin/client"
410
411 libcynara-creds-dbus_files = ""
412 libcynara-creds-dbus_files += "${prefix}/lib/libcynara-creds-dbus.so.*"
413 MANIFESTFILES_lib${PN}-creds-dbus = "libcynara-creds-dbus.manifest"
414
415 cynara-db-migration_files = ""
416 cynara-db-migration_files += "${prefix}/sbin/cynara-db-migration"
417 cynara-db-migration_files += "${prefix}/sbin/cynara-db-chsgen"
418 MANIFESTFILES_${PN}-db-migration = "cynara-db-migration.manifest"
419
420 cynara-dev_files = ""
421 cynara-dev_files += "${prefix}/include/cynara/*.h"
422 cynara-dev_files += "${prefix}/include/cynara/log/*.h"
423 cynara-dev_files += "${prefix}/include/cynara/plugin/*.h"
424 cynara-dev_files += "${prefix}/include/cynara/types/*.h"
425 cynara-dev_files += "${prefix}/lib/pkgconfig/*.pc"
426 cynara-dev_files += "${prefix}/lib/*.so"
427
428 cyad_files = ""
429 cyad_files += "${prefix}/sbin/cyad"
430 MANIFESTFILES_cyad = "cyad.manifest"
431
432 cynara_files = ""
433 cynara_files += "/usr/bin/cynara"
434 cynara_files += "/usr/lib/systemd/system/cynara.service"
435 cynara_files += "/usr/lib/systemd/system/cynara.target"
436 cynara_files += "/usr/lib/systemd/system/sockets.target.wants/cynara.socket"
437 cynara_files += "/usr/lib/systemd/system/cynara.socket"
438 cynara_files += "/usr/lib/systemd/system/sockets.target.wants/cynara-admin.socket"
439 cynara_files += "/usr/lib/systemd/system/cynara-admin.socket"
440 cynara_files += "/usr/lib/systemd/system/sockets.target.wants/cynara-agent.socket"
441 cynara_files += "/usr/lib/systemd/system/cynara-agent.socket"
442 cynara_files += "%attr(700,cynara,cynara) ${localstatedir}/cynara/"
443 cynara_files += "%attr(755,cynara,cynara) ${prefix}/lib/cynara/plugin/service"
444 MANIFESTFILES_${PN} = "cynara.manifest"
445 DIRFILES_${PN} = ""
446 DIRFILES_${PN} += "%attr(700,cynara,cynara) ${localstatedir}/cynara/"
447 DIRFILES_${PN} += "%attr(755,cynara,cynara) ${prefix}/lib/cynara/plugin/service"
448
449 libcynara-commons_files = ""
450 libcynara-commons_files += "${prefix}/lib/libcynara-commons.so.*"
451 libcynara-commons_files += "${prefix}/lib/libcynara-storage.so.*"
452 MANIFESTFILES_lib${PN}-commons = "libcynara-commons.manifest"
453
454 libcynara-admin_files = ""
455 libcynara-admin_files += "${prefix}/lib/libcynara-admin.so.*"
456 MANIFESTFILES_lib${PN}-admin = "libcynara-admin.manifest"
457
458 libcynara-creds-commons_files = ""
459 libcynara-creds-commons_files += "${prefix}/lib/libcynara-creds-commons.so.*"
460 libcynara-creds-commons_files += "${sysconfdir}/cynara/creds.conf"
461 MANIFESTFILES_lib${PN}-creds-commons = "libcynara-creds-commons.manifest"
462
463 libcynara-creds-socket_files = ""
464 libcynara-creds-socket_files += "${prefix}/lib/libcynara-creds-socket.so.*"
465 MANIFESTFILES_lib${PN}-creds-socket = "libcynara-creds-socket.manifest"
466
467 libcynara-agent_files = ""
468 libcynara-agent_files += "${prefix}/lib/libcynara-agent.so.*"
469 MANIFESTFILES_lib${PN}-agent = "libcynara-agent.manifest"
470
471 libcynara-session_files = ""
472 libcynara-session_files += "${prefix}/lib/libcynara-session.so.*"
473 MANIFESTFILES_lib${PN}-session = "libcynara-session.manifest"
474
475 FILES_${PN}-tests = "${cynara-tests_files}"
476 FILES_lib${PN}-client = "${libcynara-client_files}"
477 FILES_lib${PN}-creds-dbus = "${libcynara-creds-dbus_files}"
478 FILES_${PN}-db-migration = "${cynara-db-migration_files}"
479 FILES_${PN}-dev = "${cynara-dev_files}"
480 FILES_cyad = "${cyad_files}"
481 FILES_${PN} = "${cynara_files}"
482 FILES_lib${PN}-commons = "${libcynara-commons_files}"
483 FILES_lib${PN}-admin = "${libcynara-admin_files}"
484 FILES_lib${PN}-creds-commons = "${libcynara-creds-commons_files}"
485 FILES_lib${PN}-creds-socket = "${libcynara-creds-socket_files}"
486 FILES_lib${PN}-agent = "${libcynara-agent_files}"
487 FILES_lib${PN}-session = "${libcynara-session_files}"
488
489 PKG_cynara-tests= "cynara-tests"
490 PKG_libcynara-client= "libcynara-client"
491 PKG_libcynara-creds-dbus= "libcynara-creds-dbus"
492 PKG_cynara-db-migration= "cynara-db-migration"
493 PKG_cynara-dev= "cynara-dev"
494 PKG_cyad= "cyad"
495 PKG_cynara= "cynara"
496 PKG_libcynara-commons= "libcynara-commons"
497 PKG_libcynara-admin= "libcynara-admin"
498 PKG_libcynara-creds-commons= "libcynara-creds-commons"
499 PKG_libcynara-creds-socket= "libcynara-creds-socket"
500 PKG_libcynara-agent= "libcynara-agent"
501 PKG_libcynara-session= "libcynara-session"
502
503 require cynara-extraconf.inc
504