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