2036d617adb7a9f3556f985d35e89bc2f95deaef
[platform/core/security/cynara.git] / packaging / cynara.spec
1 Name:       cynara
2 Summary:    Cynara service with client libraries
3 Version:    0.2.2
4 Release:    1
5 Group:      Security/Access Control
6 License:    Apache-2.0
7 Source0:    %{name}-%{version}.tar.gz
8 Source1001:    cynara.manifest
9 Source1002:    libcynara-client.manifest
10 Source1003:    libcynara-admin.manifest
11 Source1004:    cynara-tests.manifest
12 Source1005:    libcynara-client-commons.manifest
13 Source1006:    libcynara-commons.manifest
14 Source1007:    libcynara-creds-commons.manifest
15 Source1008:    libcynara-creds-dbus.manifest
16 Source1009:    libcynara-creds-socket.manifest
17 Source1010:    libcynara-session.manifest
18 Requires:      default-ac-domains
19 Requires(pre): pwdutils
20 Requires(post):   smack
21 Requires(postun): pwdutils
22 BuildRequires: cmake
23 BuildRequires: zip
24 BuildRequires: pkgconfig(libsystemd-daemon)
25 BuildRequires: pkgconfig(libsystemd-journal)
26 %{?systemd_requires}
27
28 %global user_name %{name}
29 %global group_name %{name}
30
31 %global state_path %{_localstatedir}/%{name}/
32
33 %global build_type %{?build_type:%build_type}%{!?build_type:RELEASE}
34
35 %if %{?build_type} == "DEBUG"
36
37 BuildRequires: pkgconfig(libunwind)
38
39 %endif
40
41 %description
42 service, client libraries (libcynara-client, libcynara-admin),
43 helper libraries (libcynara-session, libcynara-creds-common, libcynara-creds-dbus,
44 libcynara-creds-socket)
45 and tests (cynara-tests)
46
47 #######################################################
48 %package -n libcynara-client
49 Summary:    Cynara - client library
50 Requires:   cynara = %{version}-%{release}
51
52 %description -n libcynara-client
53 client library for checking policies
54
55 %package -n libcynara-client-devel
56 Summary:    Cynara - client library (devel)
57 Requires:   libcynara-client = %{version}-%{release}
58 Requires:   libcynara-client-commons-devel = %{version}-%{release}
59
60 %description -n libcynara-client-devel
61 client library (devel) for checking policies
62
63 #######################################################
64 %package -n libcynara-client-commons
65 Summary:    Cynara - client commons library
66 Requires:   cynara = %{version}-%{release}
67
68 %description -n libcynara-client-commons
69 client commons library with common functionalities
70
71 %package -n libcynara-client-commons-devel
72 Summary:    Cynara - client commons library (devel)
73 Requires:   libcynara-client-commons = %{version}-%{release}
74
75 %description -n libcynara-client-commons-devel
76 client commons library (devel) with common functionalities
77
78 #######################################################
79 %package -n libcynara-admin
80 Summary:    Cynara - admin client library
81 Requires:   cynara = %{version}-%{release}
82
83 %description -n libcynara-admin
84 admin client library for setting, listing and removing policies
85
86 %package -n libcynara-admin-devel
87 Summary:    Cynara - admin client library (devel)
88 Requires:   libcynara-admin = %{version}-%{release}
89
90 %description -n libcynara-admin-devel
91 admin client library (devel) for setting, listing and removing policies
92
93 #######################################################
94 %package -n libcynara-commons
95 Summary:    Cynara - cynara commons library
96 Requires:   cynara = %{version}-%{release}
97
98 %description -n libcynara-commons
99 cynara common library with common functionalities
100
101 %package -n libcynara-commons-devel
102 Summary:    Cynara - cynara commons library (devel)
103 Requires:   libcynara-commons = %{version}-%{release}
104
105 %description -n libcynara-commons-devel
106 cynara common library (devel) with common functionalities
107
108 #######################################################
109 %package -n libcynara-creds-commons
110 Summary:    Base library for cynara credentials helpers
111
112 %description -n libcynara-creds-commons
113 Base library for cynara credentials helpers
114
115 %package -n libcynara-creds-commons-devel
116 Summary:    Base library for cynara credentials helpers (devel)
117 Requires:   libcynara-creds-commons = %{version}-%{release}
118 Requires:   libcynara-client-commons-devel = %{version}-%{release}
119
120 %description -n libcynara-creds-commons-devel
121 Base library for cynara credentials helpers (devel)
122
123 #######################################################
124 %package -n libcynara-creds-dbus
125 Summary:    Cynara credentials helpers library for dbus clients
126 BuildRequires: pkgconfig(dbus-1)
127 Requires:   dbus
128
129 %description -n libcynara-creds-dbus
130 Cynara credentials helpers library for dbus clients
131
132 %package -n libcynara-creds-dbus-devel
133 Summary:    Cynara credentials helpers library for dbus clients (devel)
134 Requires:   libcynara-creds-dbus = %{version}-%{release}
135
136 %description -n libcynara-creds-dbus-devel
137 Cynara credentials helpers library for dbus clients (devel)
138
139 #######################################################
140 %package -n libcynara-creds-socket
141 Summary:    Cynara credentials helpers library for socket clients
142
143 %description -n libcynara-creds-socket
144 Cynara credentials helpers library for socket clients
145
146 %package -n libcynara-creds-socket-devel
147 Summary:    Cynara credentials helpers library for socket clients (devel)
148 Requires:   libcynara-creds-socket = %{version}-%{release}
149
150 %description -n libcynara-creds-socket-devel
151 Cynara credentials helpers library for socket clients (devel)
152
153 #######################################################
154 %package -n libcynara-session
155 Summary:    Cynara helper client session string creation library
156
157 %description -n libcynara-session
158 Cynara helper client session string creation library
159
160 %package -n libcynara-session-devel
161 Summary:    Cynara helper client session string creation library (devel)
162 Requires:   libcynara-session = %{version}-%{release}
163
164 %description -n libcynara-session-devel
165 Cynara helper client session string creation library (devel)
166
167 #######################################################
168 %package -n cynara-tests
169 Summary:    Cynara - cynara test binaries
170 BuildRequires: pkgconfig(gmock)
171
172 %description -n cynara-tests
173 Cynara tests
174
175 #######################################################
176
177 %package -n cynara-devel
178 Summary:    Cynara service (devel)
179 Requires:   cynara = %{version}-%{release}
180
181 %description -n cynara-devel
182 service (devel version)
183
184 %prep
185 %setup -q
186 cp -a %{SOURCE1001} .
187 cp -a %{SOURCE1002} .
188 cp -a %{SOURCE1003} .
189 cp -a %{SOURCE1004} .
190 cp -a %{SOURCE1005} .
191 cp -a %{SOURCE1006} .
192 cp -a %{SOURCE1007} .
193 cp -a %{SOURCE1008} .
194 cp -a %{SOURCE1009} .
195 cp -a %{SOURCE1010} .
196
197 %build
198 %if 0%{?sec_build_binary_debug_enable}
199 export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE"
200 %endif
201
202 %if %{?build_type} == "DEBUG"
203 export CXXFLAGS="$CXXFLAGS -Wp,-U_FORTIFY_SOURCE"
204 %endif
205
206 export CXXFLAGS="$CXXFLAGS -DCYNARA_STATE_PATH=\\\"%{state_path}\\\""
207 export LDFLAGS+="-Wl,--rpath=%{_libdir}"
208
209 %cmake . \
210         -DCMAKE_BUILD_TYPE=%{?build_type} \
211         -DCMAKE_VERBOSE_MAKEFILE=ON
212 make %{?jobs:-j%jobs}
213
214 %install
215
216 rm -rf %{buildroot}
217 %make_install
218
219 mkdir -p %{buildroot}/usr/lib/systemd/system/sockets.target.wants
220 mkdir -p %{buildroot}/%{state_path}
221 ln -s ../cynara.socket %{buildroot}/usr/lib/systemd/system/sockets.target.wants/cynara.socket
222 ln -s ../cynara-admin.socket %{buildroot}/usr/lib/systemd/system/sockets.target.wants/cynara-admin.socket
223
224 %pre
225 id -g %{group_name} > /dev/null 2>&1
226 if [ $? -eq 1 ]; then
227     groupadd %{group_name} -r > /dev/null 2>&1
228 fi
229
230 id -u %{user_name} > /dev/null 2>&1
231 if [ $? -eq 1 ]; then
232     useradd -m %{user_name} -r > /dev/null 2>&1
233 fi
234
235 %post
236 ### Add file capabilities if needed
237 ### setcap/getcap binary are useful. To use them you must install libcap and libcap-tools packages
238 ### In such case uncomment Requires with those packages
239
240 systemctl daemon-reload
241
242 if [ $1 = 1 ]; then
243     systemctl enable %{name}.service
244 fi
245
246 chsmack -a System %{state_path}
247
248 systemctl restart %{name}.service
249
250 %preun
251 if [ $1 = 0 ]; then
252     # unistall
253     systemctl stop cynara.service
254 fi
255
256 %postun
257 if [ $1 = 0 ]; then
258     userdel -r %{user_name} > /dev/null 2>&1
259     groupdel %{user_name} > /dev/null 2>&1
260     systemctl daemon-reload
261 fi
262
263 %post -n libcynara-client -p /sbin/ldconfig
264
265 %postun -n libcynara-client -p /sbin/ldconfig
266
267 %post -n libcynara-client-commons -p /sbin/ldconfig
268
269 %postun -n libcynara-client-commons -p /sbin/ldconfig
270
271 %post -n libcynara-admin -p /sbin/ldconfig
272
273 %postun -n libcynara-admin -p /sbin/ldconfig
274
275 %post -n libcynara-commons -p /sbin/ldconfig
276
277 %postun -n libcynara-commons -p /sbin/ldconfig
278
279 %post -n libcynara-client-devel -p /sbin/ldconfig
280
281 %postun -n libcynara-client-devel -p /sbin/ldconfig
282
283 %post -n libcynara-client-commons-devel -p /sbin/ldconfig
284
285 %postun -n libcynara-client-commons-devel -p /sbin/ldconfig
286
287 %post -n libcynara-admin-devel -p /sbin/ldconfig
288
289 %postun -n libcynara-admin-devel -p /sbin/ldconfig
290
291 %post -n libcynara-commons-devel -p /sbin/ldconfig
292
293 %postun -n libcynara-commons-devel -p /sbin/ldconfig
294
295 %post -n libcynara-creds-commons -p /sbin/ldconfig
296
297 %postun -n libcynara-creds-commons -p /sbin/ldconfig
298
299 %post -n libcynara-creds-commons-devel -p /sbin/ldconfig
300
301 %postun -n libcynara-creds-commons-devel -p /sbin/ldconfig
302
303 %post -n libcynara-creds-dbus -p /sbin/ldconfig
304
305 %postun -n libcynara-creds-dbus -p /sbin/ldconfig
306
307 %post -n libcynara-creds-dbus-devel -p /sbin/ldconfig
308
309 %postun -n libcynara-creds-dbus-devel -p /sbin/ldconfig
310
311 %post -n libcynara-creds-socket -p /sbin/ldconfig
312
313 %postun -n libcynara-creds-socket -p /sbin/ldconfig
314
315 %post -n libcynara-creds-socket-devel -p /sbin/ldconfig
316
317 %postun -n libcynara-creds-socket-devel -p /sbin/ldconfig
318
319 %post -n libcynara-session -p /sbin/ldconfig
320
321 %postun -n libcynara-session -p /sbin/ldconfig
322
323 %post -n libcynara-session-devel -p /sbin/ldconfig
324
325 %postun -n libcynara-session-devel -p /sbin/ldconfig
326
327 %files -n cynara
328 %manifest cynara.manifest
329 %license LICENSE
330 %attr(755,root,root) /usr/bin/cynara
331 %attr(-,root,root) /usr/lib/systemd/system/cynara.service
332 %attr(-,root,root) /usr/lib/systemd/system/cynara.target
333 %attr(-,root,root) /usr/lib/systemd/system/sockets.target.wants/cynara.socket
334 %attr(-,root,root) /usr/lib/systemd/system/cynara.socket
335 %attr(-,root,root) /usr/lib/systemd/system/sockets.target.wants/cynara-admin.socket
336 %attr(-,root,root) /usr/lib/systemd/system/cynara-admin.socket
337 %dir %attr(700,cynara,cynara) %{state_path}
338
339 %files -n libcynara-client
340 %manifest libcynara-client.manifest
341 %license LICENSE
342 %{_libdir}/libcynara-client.so.*
343
344 %files -n libcynara-client-devel
345 %{_includedir}/cynara/cynara-client.h
346 %{_libdir}/pkgconfig/cynara-client.pc
347 %{_libdir}/libcynara-client.so
348
349 %files -n libcynara-client-commons
350 %manifest libcynara-client-commons.manifest
351 %license LICENSE
352 %{_libdir}/libcynara-client-commons.so.*
353
354 %files -n libcynara-client-commons-devel
355 %{_includedir}/cynara/cynara-client-error.h
356 %{_libdir}/libcynara-client-commons.so
357
358 %files -n libcynara-admin
359 %manifest libcynara-admin.manifest
360 %license LICENSE
361 %{_libdir}/libcynara-admin.so.*
362
363 %files -n libcynara-admin-devel
364 %{_includedir}/cynara/cynara-admin.h
365 %{_includedir}/cynara/cynara-admin-error.h
366 %{_libdir}/libcynara-admin.so
367 %{_libdir}/pkgconfig/cynara-admin.pc
368
369 %files -n libcynara-commons
370 %manifest libcynara-commons.manifest
371 %license LICENSE
372 %{_libdir}/libcynara-commons.so.*
373
374 %files -n libcynara-commons-devel
375 %{_libdir}/libcynara-commons.so
376
377 %files -n cynara-tests
378 %manifest cynara-tests.manifest
379 %attr(755,root,root) /usr/bin/cynara-tests
380
381 %files -n libcynara-creds-commons
382 %manifest libcynara-creds-commons.manifest
383 %license LICENSE
384 %{_libdir}/libcynara-creds-commons.so.*
385
386 %files -n libcynara-creds-commons-devel
387 %{_includedir}/cynara/cynara-creds-commons.h
388 %{_libdir}/libcynara-creds-commons.so
389 %{_libdir}/pkgconfig/cynara-creds-commons.pc
390
391 %files -n libcynara-creds-dbus
392 %manifest libcynara-creds-dbus.manifest
393 %license LICENSE
394 %{_libdir}/libcynara-creds-dbus.so.*
395
396 %files -n libcynara-creds-dbus-devel
397 %{_includedir}/cynara/cynara-creds-dbus.h
398 %{_libdir}/libcynara-creds-dbus.so
399 %{_libdir}/pkgconfig/cynara-creds-dbus.pc
400
401 %files -n libcynara-creds-socket
402 %manifest libcynara-creds-socket.manifest
403 %license LICENSE
404 %{_libdir}/libcynara-creds-socket.so.*
405
406 %files -n libcynara-creds-socket-devel
407 %{_includedir}/cynara/cynara-creds-socket.h
408 %{_libdir}/libcynara-creds-socket.so
409 %{_libdir}/pkgconfig/cynara-creds-socket.pc
410
411 %files -n libcynara-session
412 %manifest libcynara-session.manifest
413 %license LICENSE
414 %{_libdir}/libcynara-session.so.*
415
416 %files -n libcynara-session-devel
417 %{_includedir}/cynara/cynara-session.h
418 %{_libdir}/libcynara-session.so
419 %{_libdir}/pkgconfig/cynara-session.pc