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-admin.manifest
12 Source1004: cynara-tests.manifest
13 Source1005: libcynara-agent.manifest
14 Source1006: libcynara-commons.manifest
15 Source1007: libcynara-creds-commons.manifest
16 Source1008: libcynara-creds-dbus.manifest
17 Source1009: libcynara-creds-socket.manifest
18 Source1010: libcynara-session.manifest
19 Source1011: cynara-db-migration.manifest
20 Requires: default-ac-domains
21 Requires(pre): pwdutils
22 Requires(pre): cynara-db-migration >= %{version}-%{release}
24 Requires(postun): pwdutils
25 Requires(postun): cynara-db-migration >= %{version}-%{release}
28 BuildRequires: pkgconfig(libsystemd-daemon)
29 BuildRequires: pkgconfig(libsystemd-journal)
32 %global user_name %{name}
33 %global group_name %{name}
35 %global state_path %{_localstatedir}/%{name}/
36 %global lib_path %{_libdir}/%{name}/
37 %global tests_dir %{_datarootdir}/%{name}/tests/
38 %global conf_path %{_sysconfdir}/%{name}/
40 %if !%{defined build_type}
41 %define build_type RELEASE
44 %if %{?build_type} == "DEBUG"
46 BuildRequires: libdw-devel
47 BuildRequires: pkgconfig(libunwind)
52 service, client libraries (libcynara-client, libcynara-admin),
53 agent library, helper libraries (libcynara-session, libcynara-creds-common, libcynara-creds-dbus,
54 libcynara-creds-socket) and tests (cynara-tests)
57 Summary: Cynara development files
58 Requires: libcynara-admin = %{version}-%{release}
59 Requires: libcynara-agent = %{version}-%{release}
60 Requires: libcynara-client = %{version}-%{release}
61 Requires: libcynara-commons = %{version}-%{release}
62 Requires: libcynara-creds-commons = %{version}-%{release}
63 Requires: libcynara-creds-dbus = %{version}-%{release}
64 Requires: libcynara-creds-socket = %{version}-%{release}
65 Requires: libcynara-session = %{version}-%{release}
66 Requires: pkgconfig(dbus-1)
69 Cynara development files
72 Summary: Cynara - cynara test binaries
73 BuildRequires: pkgconfig(gmock)
78 %package -n libcynara-client
79 Summary: Cynara - client libraries
80 Requires: cynara = %{version}-%{release}
81 Obsoletes: libcynara-client-commons
82 Obsoletes: libcynara-client-async
84 %description -n libcynara-client
85 Client libraries for checking policies: synchronous and asynchronous
87 %package -n libcynara-admin
88 Summary: Cynara - admin client library
89 Requires: cynara = %{version}-%{release}
91 %description -n libcynara-admin
92 admin client library for setting, listing and removing policies
94 %package -n libcynara-agent
95 Summary: Cynara - agent client library
96 Requires: cynara = %{version}-%{release}
98 %description -n libcynara-agent
99 agent client library for communication with cynara service and plugins
101 %package -n libcynara-commons
102 Summary: Cynara - cynara commons library
103 Obsoletes: libcynara-storage
105 %description -n libcynara-commons
106 cynara common library with common functionalities
108 %package -n libcynara-creds-commons
109 Summary: Base library for cynara credentials helpers
111 %description -n libcynara-creds-commons
112 Base library for cynara credentials helpers
114 %package -n libcynara-creds-dbus
115 Summary: Cynara credentials helpers library for dbus clients
116 BuildRequires: pkgconfig(dbus-1)
119 %description -n libcynara-creds-dbus
120 Cynara credentials helpers library for dbus clients
122 %package -n libcynara-creds-socket
123 Summary: Cynara credentials helpers library for socket clients
125 %description -n libcynara-creds-socket
126 Cynara credentials helpers library for socket clients
128 %package -n libcynara-session
129 Summary: Cynara helper client session string creation library
131 %description -n libcynara-session
132 Cynara helper client session string creation library
134 %package -n cynara-db-migration
135 Summary: Migration tools for Cynara's database
137 %description -n cynara-db-migration
138 Migration tools for Cynara's database
142 cp -a %{SOURCE1001} .
143 cp -a %{SOURCE1002} .
144 cp -a %{SOURCE1003} .
145 cp -a %{SOURCE1004} .
146 cp -a %{SOURCE1005} .
147 cp -a %{SOURCE1006} .
148 cp -a %{SOURCE1007} .
149 cp -a %{SOURCE1008} .
150 cp -a %{SOURCE1009} .
151 cp -a %{SOURCE1010} .
152 cp -a %{SOURCE1011} .
156 %if 0%{?sec_build_binary_debug_enable}
157 export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE"
160 %if %{?build_type} == "DEBUG"
161 export CXXFLAGS="$CXXFLAGS -Wp,-U_FORTIFY_SOURCE"
164 export CXXFLAGS="$CXXFLAGS -DCYNARA_STATE_PATH=\\\"%{state_path}\\\" \
165 -DCYNARA_LIB_PATH=\\\"%{lib_path}\\\" \
166 -DCYNARA_TESTS_DIR=\\\"%{tests_dir}\\\" \
167 -DCYNARA_CONFIGURATION_DIR=\\\"%{conf_path}\\\""
168 export LDFLAGS+="-Wl,--rpath=%{_libdir}"
172 -DCMAKE_BUILD_TYPE=%{?build_type} \
173 -DCMAKE_VERBOSE_MAKEFILE=ON
174 make %{?jobs:-j%jobs}
180 mkdir -p %{buildroot}/%{conf_path}
181 cp ./conf/creds.conf %{buildroot}/%{conf_path}/creds.conf
183 mkdir -p %{buildroot}/usr/lib/systemd/system/sockets.target.wants
184 mkdir -p %{buildroot}/%{state_path}
185 mkdir -p %{buildroot}/%{tests_dir}/empty_db
186 mkdir -p %{buildroot}/%{lib_path}/plugin/client
187 mkdir -p %{buildroot}/%{lib_path}/plugin/service
189 cp -a db* %{buildroot}/%{tests_dir}
190 ln -s ../cynara.socket %{buildroot}/usr/lib/systemd/system/sockets.target.wants/cynara.socket
191 ln -s ../cynara-admin.socket %{buildroot}/usr/lib/systemd/system/sockets.target.wants/cynara-admin.socket
192 ln -s ../cynara-agent.socket %{buildroot}/usr/lib/systemd/system/sockets.target.wants/cynara-agent.socket
195 id -g %{group_name} > /dev/null 2>&1
196 if [ $? -eq 1 ]; then
197 groupadd %{group_name} -r > /dev/null 2>&1
200 id -u %{user_name} > /dev/null 2>&1
201 if [ $? -eq 1 ]; then
202 useradd -d /var/lib/empty -s /sbin/nologin -r -g %{group_name} %{user_name} > /dev/null 2>&1
205 if [ $1 -gt 1 ] ; then
206 OLDVERSION="$(rpm -q --qf '%%{version}' %{name})"
207 %{_sbindir}/cynara/cynara-db-migration.sh upgrade -f ${OLDVERSION} -t %{version}
209 %{_sbindir}/cynara/cynara-db-migration.sh install -t %{version}
213 ### Add file capabilities if needed
214 ### setcap/getcap binary are useful. To use them you must install libcap and libcap-tools packages
215 ### In such case uncomment Requires with those packages
217 systemctl daemon-reload
220 systemctl enable %{name}.service
223 chsmack -a System %{state_path}
225 systemctl restart %{name}.service
230 systemctl stop cynara.service
235 %{_sbindir}/cynara/cynara-db-migration.sh uninstall -f %{version}
236 userdel -r %{user_name} > /dev/null 2>&1
237 groupdel %{user_name} > /dev/null 2>&1
238 systemctl daemon-reload
241 %post -n libcynara-client -p /sbin/ldconfig
243 %postun -n libcynara-client -p /sbin/ldconfig
245 %post -n libcynara-admin -p /sbin/ldconfig
247 %postun -n libcynara-admin -p /sbin/ldconfig
249 %post -n libcynara-agent -p /sbin/ldconfig
251 %postun -n libcynara-agent -p /sbin/ldconfig
253 %post -n libcynara-commons -p /sbin/ldconfig
255 %postun -n libcynara-commons -p /sbin/ldconfig
257 %post -n libcynara-creds-commons -p /sbin/ldconfig
259 %postun -n libcynara-creds-commons -p /sbin/ldconfig
261 %post -n libcynara-creds-dbus -p /sbin/ldconfig
263 %postun -n libcynara-creds-dbus -p /sbin/ldconfig
265 %post -n libcynara-creds-socket -p /sbin/ldconfig
267 %postun -n libcynara-creds-socket -p /sbin/ldconfig
269 %post -n libcynara-session -p /sbin/ldconfig
271 %postun -n libcynara-session -p /sbin/ldconfig
274 %manifest cynara.manifest
276 %attr(755,root,root) /usr/bin/cynara
277 %attr(-,root,root) /usr/lib/systemd/system/cynara.service
278 %attr(-,root,root) /usr/lib/systemd/system/cynara.target
279 %attr(-,root,root) /usr/lib/systemd/system/sockets.target.wants/cynara.socket
280 %attr(-,root,root) /usr/lib/systemd/system/cynara.socket
281 %attr(-,root,root) /usr/lib/systemd/system/sockets.target.wants/cynara-admin.socket
282 %attr(-,root,root) /usr/lib/systemd/system/cynara-admin.socket
283 %attr(-,root,root) /usr/lib/systemd/system/sockets.target.wants/cynara-agent.socket
284 %attr(-,root,root) /usr/lib/systemd/system/cynara-agent.socket
285 %dir %attr(700,cynara,cynara) %{state_path}
286 %dir %attr(755,cynara,cynara) %{lib_path}/plugin/service
288 %files -n cynara-devel
289 %{_includedir}/cynara/*.h
290 %{_includedir}/cynara/plugin/*.h
291 %{_includedir}/cynara/types/*.h
292 %{_libdir}/pkgconfig/*.pc
295 %files -n cynara-tests
296 %manifest cynara-tests.manifest
297 %attr(755,root,root) /usr/bin/cynara-tests
298 %attr(755,root,root) %{tests_dir}/db*/*
299 %dir %attr(755,root,root) %{tests_dir}/empty_db
301 %files -n libcynara-client
302 %manifest libcynara-client.manifest
304 %{_libdir}/libcynara-client.so.*
305 %{_libdir}/libcynara-client-async.so.*
306 %{_libdir}/libcynara-client-commons.so.*
307 %dir %attr(755,cynara,cynara) %{lib_path}/plugin/client
309 %files -n libcynara-admin
310 %manifest libcynara-admin.manifest
312 %{_libdir}/libcynara-admin.so.*
314 %files -n libcynara-agent
315 %manifest libcynara-agent.manifest
317 %{_libdir}/libcynara-agent.so.*
319 %files -n libcynara-commons
320 %manifest libcynara-commons.manifest
322 %{_libdir}/libcynara-commons.so.*
323 %{_libdir}/libcynara-storage.so.*
325 %files -n libcynara-creds-commons
326 %manifest libcynara-creds-commons.manifest
328 %{_libdir}/libcynara-creds-commons.so.*
329 %{conf_path}creds.conf
331 %files -n libcynara-creds-dbus
332 %manifest libcynara-creds-dbus.manifest
334 %{_libdir}/libcynara-creds-dbus.so.*
336 %files -n libcynara-creds-socket
337 %manifest libcynara-creds-socket.manifest
339 %{_libdir}/libcynara-creds-socket.so.*
341 %files -n libcynara-session
342 %manifest libcynara-session.manifest
344 %{_libdir}/libcynara-session.so.*
346 %files -n cynara-db-migration
347 %manifest cynara-db-migration.manifest
348 %attr(744,root,root) %{_sbindir}/cynara/cynara-db-migration.sh