2 Summary: Cynara service with client libraries
5 Group: Security/Application Privilege
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}
27 Requires(postun): pwdutils
28 Requires(postun): cynara-db-migration >= %{version}-%{release}
31 BuildRequires: pkgconfig(libsystemd-daemon)
32 BuildRequires: pkgconfig(libsystemd-journal)
35 %global user_name %{name}
36 %global group_name %{name}
38 %global state_path %{_localstatedir}/%{name}/
39 %global tests_dir %{_datarootdir}/%{name}/tests/
40 %global conf_path %{_sysconfdir}/%{name}/
42 %if !%{defined build_type}
43 %define build_type RELEASE
46 %if %{?build_type} == "DEBUG"
48 BuildRequires: libdw-devel
49 BuildRequires: pkgconfig(libunwind)
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)
58 #######################################################
59 %package -n libcynara-client
60 Summary: Cynara - client library
61 Requires: cynara = %{version}-%{release}
63 %description -n libcynara-client
64 client library for checking policies
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}
71 %description -n libcynara-client-devel
72 client library (devel) for checking policies
74 #######################################################
75 %package -n libcynara-client-async
76 Summary: Cynara - asynchronous client library
77 Requires: cynara = %{version}-%{release}
79 %description -n libcynara-client-async
80 asynchronous client library for checking policies
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}
87 %description -n libcynara-client-async-devel
88 asynchronous client library (devel) for checking policies
90 #######################################################
91 %package -n libcynara-client-commons
92 Summary: Cynara - client commons library
94 %description -n libcynara-client-commons
95 client commons library with common functionalities
97 %package -n libcynara-client-commons-devel
98 Summary: Cynara - client commons library (devel)
99 Requires: libcynara-client-commons = %{version}-%{release}
101 %description -n libcynara-client-commons-devel
102 client commons library (devel) with common functionalities
104 #######################################################
105 %package -n libcynara-admin
106 Summary: Cynara - admin client library
107 Requires: cynara = %{version}-%{release}
109 %description -n libcynara-admin
110 admin client library for setting, listing and removing policies
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}
117 %description -n libcynara-admin-devel
118 admin client library (devel) for setting, listing and removing policies
120 #######################################################
121 %package -n libcynara-agent
122 Summary: Cynara - agent client library
123 Requires: cynara = %{version}-%{release}
125 %description -n libcynara-agent
126 agent client library for communication with cynara service and plugins
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}
133 %description -n libcynara-agent-devel
134 agent client library (devel) for communication with cynara service and plugins
136 #######################################################
137 %package -n libcynara-storage
138 Summary: Cynara - storage
140 %description -n libcynara-storage
141 cynara common storage library with common storage functionalities
143 %package -n libcynara-storage-devel
144 Summary: Cynara - storage-devel
145 Requires: cynara = %{version}-%{release}
147 %description -n libcynara-storage-devel
148 cynara common storage library (devel) with common storage functionalities
150 #######################################################
151 %package -n libcynara-commons
152 Summary: Cynara - cynara commons library
154 %description -n libcynara-commons
155 cynara common library with common functionalities
157 %package -n libcynara-commons-devel
158 Summary: Cynara - cynara commons library (devel)
159 Requires: libcynara-commons = %{version}-%{release}
161 %description -n libcynara-commons-devel
162 cynara common library (devel) with common functionalities
164 #######################################################
165 %package -n libcynara-plugin-devel
166 Summary: Cynara - cynara plugin library (devel)
167 Requires: libcynara-commons-devel = %{version}-%{release}
169 %description -n libcynara-plugin-devel
170 cynara plugin library (devel) with plugin definitions
172 #######################################################
173 %package -n libcynara-creds-commons
174 Summary: Base library for cynara credentials helpers
176 %description -n libcynara-creds-commons
177 Base library for cynara credentials helpers
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}
184 %description -n libcynara-creds-commons-devel
185 Base library for cynara credentials helpers (devel)
187 #######################################################
188 %package -n libcynara-creds-dbus
189 Summary: Cynara credentials helpers library for dbus clients
190 BuildRequires: pkgconfig(dbus-1)
193 %description -n libcynara-creds-dbus
194 Cynara credentials helpers library for dbus clients
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}
201 %description -n libcynara-creds-dbus-devel
202 Cynara credentials helpers library for dbus clients (devel)
204 #######################################################
205 %package -n libcynara-creds-socket
206 Summary: Cynara credentials helpers library for socket clients
208 %description -n libcynara-creds-socket
209 Cynara credentials helpers library for socket clients
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}
216 %description -n libcynara-creds-socket-devel
217 Cynara credentials helpers library for socket clients (devel)
219 #######################################################
220 %package -n libcynara-session
221 Summary: Cynara helper client session string creation library
223 %description -n libcynara-session
224 Cynara helper client session string creation library
226 %package -n libcynara-session-devel
227 Summary: Cynara helper client session string creation library (devel)
228 Requires: libcynara-session = %{version}-%{release}
230 %description -n libcynara-session-devel
231 Cynara helper client session string creation library (devel)
233 #######################################################
234 %package -n cynara-tests
235 Summary: Cynara - cynara test binaries
236 BuildRequires: pkgconfig(gmock)
238 %description -n cynara-tests
241 #######################################################
242 %package -n cynara-devel
243 Summary: Cynara service (devel)
244 Requires: cynara = %{version}-%{release}
246 %description -n cynara-devel
247 service (devel version)
249 #######################################################
250 %package -n cynara-db-migration
251 Summary: Migration tools for Cynara's database
253 %description -n cynara-db-migration
254 Migration tools for Cynara's database
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} .
275 %if 0%{?sec_build_binary_debug_enable}
276 export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE"
279 %if %{?build_type} == "DEBUG"
280 export CXXFLAGS="$CXXFLAGS -Wp,-U_FORTIFY_SOURCE"
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}"
290 -DCMAKE_BUILD_TYPE=%{?build_type} \
291 -DCMAKE_VERBOSE_MAKEFILE=ON
292 make %{?jobs:-j%jobs}
298 mkdir -p %{buildroot}/%{conf_path}
299 cp ./conf/creds.conf %{buildroot}/%{conf_path}/creds.conf
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
310 id -g %{group_name} > /dev/null 2>&1
311 if [ $? -eq 1 ]; then
312 groupadd %{group_name} -r > /dev/null 2>&1
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
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}
324 %{_sbindir}/cynara/cynara-db-migration.sh install -t %{version}
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
332 systemctl daemon-reload
335 systemctl enable %{name}.service
338 chsmack -a System %{state_path}
340 systemctl restart %{name}.service
345 systemctl stop cynara.service
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
356 %post -n libcynara-client -p /sbin/ldconfig
358 %postun -n libcynara-client -p /sbin/ldconfig
360 %post -n libcynara-client-async -p /sbin/ldconfig
362 %postun -n libcynara-client-async -p /sbin/ldconfig
364 %post -n libcynara-client-commons -p /sbin/ldconfig
366 %postun -n libcynara-client-commons -p /sbin/ldconfig
368 %post -n libcynara-admin -p /sbin/ldconfig
370 %postun -n libcynara-admin -p /sbin/ldconfig
372 %post -n libcynara-agent -p /sbin/ldconfig
374 %postun -n libcynara-agent -p /sbin/ldconfig
376 %post -n libcynara-storage -p /sbin/ldconfig
378 %postun -n libcynara-storage -p /sbin/ldconfig
380 %post -n libcynara-storage-devel -p /sbin/ldconfig
382 %postun -n libcynara-storage-devel -p /sbin/ldconfig
384 %post -n libcynara-commons -p /sbin/ldconfig
386 %postun -n libcynara-commons -p /sbin/ldconfig
388 %post -n libcynara-client-devel -p /sbin/ldconfig
390 %postun -n libcynara-client-devel -p /sbin/ldconfig
392 %post -n libcynara-client-async-devel -p /sbin/ldconfig
394 %postun -n libcynara-client-async-devel -p /sbin/ldconfig
396 %post -n libcynara-client-commons-devel -p /sbin/ldconfig
398 %postun -n libcynara-client-commons-devel -p /sbin/ldconfig
400 %post -n libcynara-admin-devel -p /sbin/ldconfig
402 %postun -n libcynara-admin-devel -p /sbin/ldconfig
404 %post -n libcynara-agent-devel -p /sbin/ldconfig
406 %postun -n libcynara-agent-devel -p /sbin/ldconfig
408 %post -n libcynara-commons-devel -p /sbin/ldconfig
410 %postun -n libcynara-commons-devel -p /sbin/ldconfig
412 %post -n libcynara-creds-commons -p /sbin/ldconfig
414 %postun -n libcynara-creds-commons -p /sbin/ldconfig
416 %post -n libcynara-creds-commons-devel -p /sbin/ldconfig
418 %postun -n libcynara-creds-commons-devel -p /sbin/ldconfig
420 %post -n libcynara-creds-dbus -p /sbin/ldconfig
422 %postun -n libcynara-creds-dbus -p /sbin/ldconfig
424 %post -n libcynara-creds-dbus-devel -p /sbin/ldconfig
426 %postun -n libcynara-creds-dbus-devel -p /sbin/ldconfig
428 %post -n libcynara-creds-socket -p /sbin/ldconfig
430 %postun -n libcynara-creds-socket -p /sbin/ldconfig
432 %post -n libcynara-creds-socket-devel -p /sbin/ldconfig
434 %postun -n libcynara-creds-socket-devel -p /sbin/ldconfig
436 %post -n libcynara-session -p /sbin/ldconfig
438 %postun -n libcynara-session -p /sbin/ldconfig
440 %post -n libcynara-session-devel -p /sbin/ldconfig
442 %postun -n libcynara-session-devel -p /sbin/ldconfig
445 %manifest cynara.manifest
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}
458 %files -n libcynara-client
459 %manifest libcynara-client.manifest
461 %{_libdir}/libcynara-client.so.*
463 %files -n libcynara-client-devel
464 %{_includedir}/cynara/cynara-client.h
465 %{_libdir}/pkgconfig/cynara-client.pc
466 %{_libdir}/libcynara-client.so
468 %files -n libcynara-client-async
469 %manifest libcynara-client-async.manifest
471 %{_libdir}/libcynara-client-async.so.*
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
478 %files -n libcynara-client-commons
479 %manifest libcynara-client-commons.manifest
481 %{_libdir}/libcynara-client-commons.so.*
483 %files -n libcynara-client-commons-devel
484 %{_includedir}/cynara/cynara-error.h
485 %{_libdir}/libcynara-client-commons.so
487 %files -n libcynara-admin
488 %manifest libcynara-admin.manifest
490 %{_libdir}/libcynara-admin.so.*
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
498 %files -n libcynara-agent
499 %manifest libcynara-agent.manifest
501 %{_libdir}/libcynara-agent.so.*
503 %files -n libcynara-agent-devel
504 %{_includedir}/cynara/cynara-agent.h
505 %{_libdir}/libcynara-agent.so
506 %{_libdir}/pkgconfig/cynara-agent.pc
508 %files -n libcynara-storage
509 %manifest libcynara-storage.manifest
511 %{_libdir}/libcynara-storage.so.*
513 %files -n libcynara-storage-devel
514 %{_libdir}/libcynara-storage.so
516 %files -n libcynara-commons
517 %manifest libcynara-commons.manifest
519 %{_libdir}/libcynara-commons.so.*
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
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
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
539 %files -n libcynara-creds-commons
540 %manifest libcynara-creds-commons.manifest
542 %{_libdir}/libcynara-creds-commons.so.*
543 %{conf_path}creds.conf
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
550 %files -n libcynara-creds-dbus
551 %manifest libcynara-creds-dbus.manifest
553 %{_libdir}/libcynara-creds-dbus.so.*
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
560 %files -n libcynara-creds-socket
561 %manifest libcynara-creds-socket.manifest
563 %{_libdir}/libcynara-creds-socket.so.*
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
570 %files -n libcynara-session
571 %manifest libcynara-session.manifest
573 %{_libdir}/libcynara-session.so.*
575 %files -n libcynara-session-devel
576 %{_includedir}/cynara/cynara-session.h
577 %{_libdir}/libcynara-session.so
578 %{_libdir}/pkgconfig/cynara-session.pc
580 %files -n cynara-db-migration
581 %manifest cynara-db-migration.manifest
582 %attr(744,root,root) %{_sbindir}/cynara/cynara-db-migration.sh