Release 0.4.0
[platform/core/security/cynara.git] / packaging / cynara.spec
1 Name:       cynara
2 Summary:    Cynara service with client libraries
3 Version:    0.4.0
4 Release:    1
5 Group:      Security/Application Privilege
6 License:    Apache-2.0
7 Source0:    %{name}-%{version}.tar.gz
8 Source1000:    %{name}-rpmlintrc
9 Source1001:    cynara.manifest
10 Source1002:    libcynara-client.manifest
11 Source1003:    libcynara-client-async.manifest
12 Source1004:    libcynara-admin.manifest
13 Source1005:    cynara-tests.manifest
14 Source1006:    libcynara-agent.manifest
15 Source1007:    libcynara-client-commons.manifest
16 Source1008:    libcynara-commons.manifest
17 Source1009:    libcynara-creds-commons.manifest
18 Source1010:    libcynara-creds-dbus.manifest
19 Source1011:    libcynara-creds-socket.manifest
20 Source1012:    libcynara-session.manifest
21 Source1013:    libcynara-storage.manifest
22 Source1014:    cynara-db-migration.manifest
23 Requires:      default-ac-domains
24 Requires(pre): pwdutils
25 Requires(pre): cynara-db-migration >= %{version}-%{release}
26 Requires(post):   smack
27 Requires(postun): pwdutils
28 Requires(postun): cynara-db-migration >= %{version}-%{release}
29 BuildRequires: cmake
30 BuildRequires: zip
31 BuildRequires: pkgconfig(libsystemd-daemon)
32 BuildRequires: pkgconfig(libsystemd-journal)
33 %{?systemd_requires}
34
35 %global user_name %{name}
36 %global group_name %{name}
37
38 %global state_path %{_localstatedir}/%{name}/
39 %global tests_dir %{_datarootdir}/%{name}/tests/
40 %global conf_path %{_sysconfdir}/%{name}/
41
42 %if !%{defined build_type}
43 %define build_type RELEASE
44 %endif
45
46 %if %{?build_type} == "DEBUG"
47
48 BuildRequires: libdw-devel
49 BuildRequires: pkgconfig(libunwind)
50
51 %endif
52
53 %description
54 service, client libraries (libcynara-client, libcynara-client-async, libcynara-admin),
55 agent library, helper libraries (libcynara-session, libcynara-creds-common, libcynara-creds-dbus,
56 libcynara-creds-socket) and tests (cynara-tests)
57
58 #######################################################
59 %package -n libcynara-client
60 Summary:    Cynara - client library
61 Requires:   cynara = %{version}-%{release}
62
63 %description -n libcynara-client
64 client library for checking policies
65
66 %package -n libcynara-client-devel
67 Summary:    Cynara - client library (devel)
68 Requires:   libcynara-client = %{version}-%{release}
69 Requires:   libcynara-client-commons-devel = %{version}-%{release}
70
71 %description -n libcynara-client-devel
72 client library (devel) for checking policies
73
74 #######################################################
75 %package -n libcynara-client-async
76 Summary:    Cynara - asynchronous client library
77 Requires:   cynara = %{version}-%{release}
78
79 %description -n libcynara-client-async
80 asynchronous client library for checking policies
81
82 %package -n libcynara-client-async-devel
83 Summary:    Cynara - asynchronous client library (devel)
84 Requires:   libcynara-client-async = %{version}-%{release}
85 Requires:   libcynara-client-commons-devel = %{version}-%{release}
86
87 %description -n libcynara-client-async-devel
88 asynchronous client library (devel) for checking policies
89
90 #######################################################
91 %package -n libcynara-client-commons
92 Summary:    Cynara - client commons library
93
94 %description -n libcynara-client-commons
95 client commons library with common functionalities
96
97 %package -n libcynara-client-commons-devel
98 Summary:    Cynara - client commons library (devel)
99 Requires:   libcynara-client-commons = %{version}-%{release}
100
101 %description -n libcynara-client-commons-devel
102 client commons library (devel) with common functionalities
103
104 #######################################################
105 %package -n libcynara-admin
106 Summary:    Cynara - admin client library
107 Requires:   cynara = %{version}-%{release}
108
109 %description -n libcynara-admin
110 admin client library for setting, listing and removing policies
111
112 %package -n libcynara-admin-devel
113 Summary:    Cynara - admin client library (devel)
114 Requires:   libcynara-admin = %{version}-%{release}
115 Requires:   libcynara-commons-devel = %{version}-%{release}
116
117 %description -n libcynara-admin-devel
118 admin client library (devel) for setting, listing and removing policies
119
120 #######################################################
121 %package -n libcynara-agent
122 Summary:    Cynara - agent client library
123 Requires:   cynara = %{version}-%{release}
124
125 %description -n libcynara-agent
126 agent client library for communication with cynara service and plugins
127
128 %package -n libcynara-agent-devel
129 Summary:    Cynara - agent client library (devel)
130 Requires:   libcynara-agent = %{version}-%{release}
131 Requires:   libcynara-client-commons-devel = %{version}-%{release}
132
133 %description -n libcynara-agent-devel
134 agent client library (devel) for communication with cynara service and plugins
135
136 #######################################################
137 %package -n libcynara-storage
138 Summary:    Cynara - storage
139
140 %description -n libcynara-storage
141 cynara common storage library with common storage functionalities
142
143 %package -n libcynara-storage-devel
144 Summary:    Cynara - storage-devel
145 Requires:   cynara = %{version}-%{release}
146
147 %description -n libcynara-storage-devel
148 cynara common storage library (devel) with common storage functionalities
149
150 #######################################################
151 %package -n libcynara-commons
152 Summary:    Cynara - cynara commons library
153
154 %description -n libcynara-commons
155 cynara common library with common functionalities
156
157 %package -n libcynara-commons-devel
158 Summary:    Cynara - cynara commons library (devel)
159 Requires:   libcynara-commons = %{version}-%{release}
160
161 %description -n libcynara-commons-devel
162 cynara common library (devel) with common functionalities
163
164 #######################################################
165 %package -n libcynara-plugin-devel
166 Summary:    Cynara - cynara plugin library (devel)
167 Requires:   libcynara-commons-devel = %{version}-%{release}
168
169 %description -n libcynara-plugin-devel
170 cynara plugin library (devel) with plugin definitions
171
172 #######################################################
173 %package -n libcynara-creds-commons
174 Summary:    Base library for cynara credentials helpers
175
176 %description -n libcynara-creds-commons
177 Base library for cynara credentials helpers
178
179 %package -n libcynara-creds-commons-devel
180 Summary:    Base library for cynara credentials helpers (devel)
181 Requires:   libcynara-creds-commons = %{version}-%{release}
182 Requires:   libcynara-client-commons-devel = %{version}-%{release}
183
184 %description -n libcynara-creds-commons-devel
185 Base library for cynara credentials helpers (devel)
186
187 #######################################################
188 %package -n libcynara-creds-dbus
189 Summary:    Cynara credentials helpers library for dbus clients
190 BuildRequires: pkgconfig(dbus-1)
191 Requires:   dbus
192
193 %description -n libcynara-creds-dbus
194 Cynara credentials helpers library for dbus clients
195
196 %package -n libcynara-creds-dbus-devel
197 Summary:    Cynara credentials helpers library for dbus clients (devel)
198 Requires:   libcynara-creds-dbus = %{version}-%{release}
199 Requires:   libcynara-creds-commons-devel = %{version}-%{release}
200
201 %description -n libcynara-creds-dbus-devel
202 Cynara credentials helpers library for dbus clients (devel)
203
204 #######################################################
205 %package -n libcynara-creds-socket
206 Summary:    Cynara credentials helpers library for socket clients
207
208 %description -n libcynara-creds-socket
209 Cynara credentials helpers library for socket clients
210
211 %package -n libcynara-creds-socket-devel
212 Summary:    Cynara credentials helpers library for socket clients (devel)
213 Requires:   libcynara-creds-socket = %{version}-%{release}
214 Requires:   libcynara-creds-commons-devel = %{version}-%{release}
215
216 %description -n libcynara-creds-socket-devel
217 Cynara credentials helpers library for socket clients (devel)
218
219 #######################################################
220 %package -n libcynara-session
221 Summary:    Cynara helper client session string creation library
222
223 %description -n libcynara-session
224 Cynara helper client session string creation library
225
226 %package -n libcynara-session-devel
227 Summary:    Cynara helper client session string creation library (devel)
228 Requires:   libcynara-session = %{version}-%{release}
229
230 %description -n libcynara-session-devel
231 Cynara helper client session string creation library (devel)
232
233 #######################################################
234 %package -n cynara-tests
235 Summary:    Cynara - cynara test binaries
236 BuildRequires: pkgconfig(gmock)
237
238 %description -n cynara-tests
239 Cynara tests
240
241 #######################################################
242 %package -n cynara-devel
243 Summary:    Cynara service (devel)
244 Requires:   cynara = %{version}-%{release}
245
246 %description -n cynara-devel
247 service (devel version)
248
249 #######################################################
250 %package -n cynara-db-migration
251 Summary:    Migration tools for Cynara's database
252
253 %description -n cynara-db-migration
254 Migration tools for Cynara's database
255
256 %prep
257 %setup -q
258 cp -a %{SOURCE1001} .
259 cp -a %{SOURCE1002} .
260 cp -a %{SOURCE1003} .
261 cp -a %{SOURCE1004} .
262 cp -a %{SOURCE1005} .
263 cp -a %{SOURCE1006} .
264 cp -a %{SOURCE1007} .
265 cp -a %{SOURCE1008} .
266 cp -a %{SOURCE1009} .
267 cp -a %{SOURCE1010} .
268 cp -a %{SOURCE1011} .
269 cp -a %{SOURCE1012} .
270 cp -a %{SOURCE1013} .
271 cp -a %{SOURCE1014} .
272 cp -a test/db/db* .
273
274 %build
275 %if 0%{?sec_build_binary_debug_enable}
276 export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE"
277 %endif
278
279 %if %{?build_type} == "DEBUG"
280 export CXXFLAGS="$CXXFLAGS -Wp,-U_FORTIFY_SOURCE"
281 %endif
282
283 export CXXFLAGS="$CXXFLAGS -DCYNARA_STATE_PATH=\\\"%{state_path}\\\" \
284                            -DCYNARA_TESTS_DIR=\\\"%{tests_dir}\\\" \
285                            -DCYNARA_CONFIGURATION_DIR=\\\"%{conf_path}\\\""
286 export LDFLAGS+="-Wl,--rpath=%{_libdir}"
287
288 %cmake . \
289         -DBUILD_TESTS=ON \
290         -DCMAKE_BUILD_TYPE=%{?build_type} \
291         -DCMAKE_VERBOSE_MAKEFILE=ON
292 make %{?jobs:-j%jobs}
293
294 %install
295 rm -rf %{buildroot}
296 %make_install
297
298 mkdir -p %{buildroot}/%{conf_path}
299 cp ./conf/creds.conf %{buildroot}/%{conf_path}/creds.conf
300
301 mkdir -p %{buildroot}/usr/lib/systemd/system/sockets.target.wants
302 mkdir -p %{buildroot}/%{state_path}
303 mkdir -p %{buildroot}/%{tests_dir}/empty_db
304 cp -a db* %{buildroot}/%{tests_dir}
305 ln -s ../cynara.socket %{buildroot}/usr/lib/systemd/system/sockets.target.wants/cynara.socket
306 ln -s ../cynara-admin.socket %{buildroot}/usr/lib/systemd/system/sockets.target.wants/cynara-admin.socket
307 ln -s ../cynara-agent.socket %{buildroot}/usr/lib/systemd/system/sockets.target.wants/cynara-agent.socket
308
309 %pre
310 id -g %{group_name} > /dev/null 2>&1
311 if [ $? -eq 1 ]; then
312     groupadd %{group_name} -r > /dev/null 2>&1
313 fi
314
315 id -u %{user_name} > /dev/null 2>&1
316 if [ $? -eq 1 ]; then
317     useradd -d /var/lib/empty -s /sbin/nologin -r -g %{group_name} %{user_name} > /dev/null 2>&1
318 fi
319
320 if [ $1 -gt 1 ] ; then
321     OLDVERSION="$(rpm -q --qf '%%{version}' %{name})"
322     %{_sbindir}/cynara/cynara-db-migration.sh upgrade -f ${OLDVERSION} -t %{version}
323 else
324     %{_sbindir}/cynara/cynara-db-migration.sh install -t %{version}
325 fi
326
327 %post
328 ### Add file capabilities if needed
329 ### setcap/getcap binary are useful. To use them you must install libcap and libcap-tools packages
330 ### In such case uncomment Requires with those packages
331
332 systemctl daemon-reload
333
334 if [ $1 = 1 ]; then
335     systemctl enable %{name}.service
336 fi
337
338 chsmack -a System %{state_path}
339
340 systemctl restart %{name}.service
341
342 %preun
343 if [ $1 = 0 ]; then
344     # unistall
345     systemctl stop cynara.service
346 fi
347
348 %postun
349 if [ $1 = 0 ]; then
350     %{_sbindir}/cynara/cynara-db-migration.sh uninstall -f %{version}
351     userdel -r %{user_name} > /dev/null 2>&1
352     groupdel %{user_name} > /dev/null 2>&1
353     systemctl daemon-reload
354 fi
355
356 %post -n libcynara-client -p /sbin/ldconfig
357
358 %postun -n libcynara-client -p /sbin/ldconfig
359
360 %post -n libcynara-client-async -p /sbin/ldconfig
361
362 %postun -n libcynara-client-async -p /sbin/ldconfig
363
364 %post -n libcynara-client-commons -p /sbin/ldconfig
365
366 %postun -n libcynara-client-commons -p /sbin/ldconfig
367
368 %post -n libcynara-admin -p /sbin/ldconfig
369
370 %postun -n libcynara-admin -p /sbin/ldconfig
371
372 %post -n libcynara-agent -p /sbin/ldconfig
373
374 %postun -n libcynara-agent -p /sbin/ldconfig
375
376 %post -n libcynara-storage -p /sbin/ldconfig
377
378 %postun -n libcynara-storage -p /sbin/ldconfig
379
380 %post -n libcynara-storage-devel -p /sbin/ldconfig
381
382 %postun -n libcynara-storage-devel -p /sbin/ldconfig
383
384 %post -n libcynara-commons -p /sbin/ldconfig
385
386 %postun -n libcynara-commons -p /sbin/ldconfig
387
388 %post -n libcynara-client-devel -p /sbin/ldconfig
389
390 %postun -n libcynara-client-devel -p /sbin/ldconfig
391
392 %post -n libcynara-client-async-devel -p /sbin/ldconfig
393
394 %postun -n libcynara-client-async-devel -p /sbin/ldconfig
395
396 %post -n libcynara-client-commons-devel -p /sbin/ldconfig
397
398 %postun -n libcynara-client-commons-devel -p /sbin/ldconfig
399
400 %post -n libcynara-admin-devel -p /sbin/ldconfig
401
402 %postun -n libcynara-admin-devel -p /sbin/ldconfig
403
404 %post -n libcynara-agent-devel -p /sbin/ldconfig
405
406 %postun -n libcynara-agent-devel -p /sbin/ldconfig
407
408 %post -n libcynara-commons-devel -p /sbin/ldconfig
409
410 %postun -n libcynara-commons-devel -p /sbin/ldconfig
411
412 %post -n libcynara-creds-commons -p /sbin/ldconfig
413
414 %postun -n libcynara-creds-commons -p /sbin/ldconfig
415
416 %post -n libcynara-creds-commons-devel -p /sbin/ldconfig
417
418 %postun -n libcynara-creds-commons-devel -p /sbin/ldconfig
419
420 %post -n libcynara-creds-dbus -p /sbin/ldconfig
421
422 %postun -n libcynara-creds-dbus -p /sbin/ldconfig
423
424 %post -n libcynara-creds-dbus-devel -p /sbin/ldconfig
425
426 %postun -n libcynara-creds-dbus-devel -p /sbin/ldconfig
427
428 %post -n libcynara-creds-socket -p /sbin/ldconfig
429
430 %postun -n libcynara-creds-socket -p /sbin/ldconfig
431
432 %post -n libcynara-creds-socket-devel -p /sbin/ldconfig
433
434 %postun -n libcynara-creds-socket-devel -p /sbin/ldconfig
435
436 %post -n libcynara-session -p /sbin/ldconfig
437
438 %postun -n libcynara-session -p /sbin/ldconfig
439
440 %post -n libcynara-session-devel -p /sbin/ldconfig
441
442 %postun -n libcynara-session-devel -p /sbin/ldconfig
443
444 %files -n cynara
445 %manifest cynara.manifest
446 %license LICENSE
447 %attr(755,root,root) /usr/bin/cynara
448 %attr(-,root,root) /usr/lib/systemd/system/cynara.service
449 %attr(-,root,root) /usr/lib/systemd/system/cynara.target
450 %attr(-,root,root) /usr/lib/systemd/system/sockets.target.wants/cynara.socket
451 %attr(-,root,root) /usr/lib/systemd/system/cynara.socket
452 %attr(-,root,root) /usr/lib/systemd/system/sockets.target.wants/cynara-admin.socket
453 %attr(-,root,root) /usr/lib/systemd/system/cynara-admin.socket
454 %attr(-,root,root) /usr/lib/systemd/system/sockets.target.wants/cynara-agent.socket
455 %attr(-,root,root) /usr/lib/systemd/system/cynara-agent.socket
456 %dir %attr(700,cynara,cynara) %{state_path}
457
458 %files -n libcynara-client
459 %manifest libcynara-client.manifest
460 %license LICENSE
461 %{_libdir}/libcynara-client.so.*
462
463 %files -n libcynara-client-devel
464 %{_includedir}/cynara/cynara-client.h
465 %{_libdir}/pkgconfig/cynara-client.pc
466 %{_libdir}/libcynara-client.so
467
468 %files -n libcynara-client-async
469 %manifest libcynara-client-async.manifest
470 %license LICENSE
471 %{_libdir}/libcynara-client-async.so.*
472
473 %files -n libcynara-client-async-devel
474 %{_includedir}/cynara/cynara-client-async.h
475 %{_libdir}/pkgconfig/cynara-client-async.pc
476 %{_libdir}/libcynara-client-async.so
477
478 %files -n libcynara-client-commons
479 %manifest libcynara-client-commons.manifest
480 %license LICENSE
481 %{_libdir}/libcynara-client-commons.so.*
482
483 %files -n libcynara-client-commons-devel
484 %{_includedir}/cynara/cynara-error.h
485 %{_libdir}/libcynara-client-commons.so
486
487 %files -n libcynara-admin
488 %manifest libcynara-admin.manifest
489 %license LICENSE
490 %{_libdir}/libcynara-admin.so.*
491
492 %files -n libcynara-admin-devel
493 %{_includedir}/cynara/cynara-admin.h
494 %{_includedir}/cynara/cynara-admin-types.h
495 %{_libdir}/libcynara-admin.so
496 %{_libdir}/pkgconfig/cynara-admin.pc
497
498 %files -n libcynara-agent
499 %manifest libcynara-agent.manifest
500 %license LICENSE
501 %{_libdir}/libcynara-agent.so.*
502
503 %files -n libcynara-agent-devel
504 %{_includedir}/cynara/cynara-agent.h
505 %{_libdir}/libcynara-agent.so
506 %{_libdir}/pkgconfig/cynara-agent.pc
507
508 %files -n libcynara-storage
509 %manifest libcynara-storage.manifest
510 %license LICENSE
511 %{_libdir}/libcynara-storage.so.*
512
513 %files -n libcynara-storage-devel
514 %{_libdir}/libcynara-storage.so
515
516 %files -n libcynara-commons
517 %manifest libcynara-commons.manifest
518 %license LICENSE
519 %{_libdir}/libcynara-commons.so.*
520
521 %files -n libcynara-commons-devel
522 %{_includedir}/cynara/cynara-policy-types.h
523 %{_includedir}/cynara/plugin/ExternalPluginInterface.h
524 %{_includedir}/cynara/types/PolicyResult.h
525 %{_includedir}/cynara/types/PolicyType.h
526 %{_libdir}/libcynara-commons.so
527
528 %files -n libcynara-plugin-devel
529 %{_includedir}/cynara/cynara-plugin.h
530 %{_includedir}/cynara/cynara-client-plugin.h
531 %{_libdir}/pkgconfig/cynara-plugin.pc
532
533 %files -n cynara-tests
534 %manifest cynara-tests.manifest
535 %attr(755,root,root) /usr/bin/cynara-tests
536 %attr(755,root,root) %{tests_dir}/db*/*
537 %dir %attr(755,root,root) %{tests_dir}/empty_db
538
539 %files -n libcynara-creds-commons
540 %manifest libcynara-creds-commons.manifest
541 %license LICENSE
542 %{_libdir}/libcynara-creds-commons.so.*
543 %{conf_path}creds.conf
544
545 %files -n libcynara-creds-commons-devel
546 %{_includedir}/cynara/cynara-creds-commons.h
547 %{_libdir}/libcynara-creds-commons.so
548 %{_libdir}/pkgconfig/cynara-creds-commons.pc
549
550 %files -n libcynara-creds-dbus
551 %manifest libcynara-creds-dbus.manifest
552 %license LICENSE
553 %{_libdir}/libcynara-creds-dbus.so.*
554
555 %files -n libcynara-creds-dbus-devel
556 %{_includedir}/cynara/cynara-creds-dbus.h
557 %{_libdir}/libcynara-creds-dbus.so
558 %{_libdir}/pkgconfig/cynara-creds-dbus.pc
559
560 %files -n libcynara-creds-socket
561 %manifest libcynara-creds-socket.manifest
562 %license LICENSE
563 %{_libdir}/libcynara-creds-socket.so.*
564
565 %files -n libcynara-creds-socket-devel
566 %{_includedir}/cynara/cynara-creds-socket.h
567 %{_libdir}/libcynara-creds-socket.so
568 %{_libdir}/pkgconfig/cynara-creds-socket.pc
569
570 %files -n libcynara-session
571 %manifest libcynara-session.manifest
572 %license LICENSE
573 %{_libdir}/libcynara-session.so.*
574
575 %files -n libcynara-session-devel
576 %{_includedir}/cynara/cynara-session.h
577 %{_libdir}/libcynara-session.so
578 %{_libdir}/pkgconfig/cynara-session.pc
579
580 %files -n cynara-db-migration
581 %manifest cynara-db-migration.manifest
582 %attr(744,root,root) %{_sbindir}/cynara/cynara-db-migration.sh