95d722dcb89ddb123614868354ce22b3be7e1a3f
[platform/core/security/cynara.git] / packaging / cynara.spec
1 Name:       cynara
2 Summary:    Cynara service with client libraries
3 Version:    0.4.1
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-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}
23 Requires(post):   smack
24 Requires(postun): pwdutils
25 Requires(postun): cynara-db-migration >= %{version}-%{release}
26 BuildRequires: cmake
27 BuildRequires: zip
28 BuildRequires: pkgconfig(libsystemd-daemon)
29 BuildRequires: pkgconfig(libsystemd-journal)
30 %{?systemd_requires}
31
32 %global user_name %{name}
33 %global group_name %{name}
34
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}/
39
40 %if !%{defined build_type}
41 %define build_type RELEASE
42 %endif
43
44 %if %{?build_type} == "DEBUG"
45
46 BuildRequires: libdw-devel
47 BuildRequires: pkgconfig(libunwind)
48
49 %endif
50
51 %description
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)
55
56 %package devel
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)
67 Obsoletes:  libcynara-admin-devel
68 Obsoletes:  libcynara-agent-devel
69 Obsoletes:  libcynara-client-async-devel
70 Obsoletes:  libcynara-client-commons-devel
71 Obsoletes:  libcynara-client-devel
72 Obsoletes:  libcynara-commons-devel
73 Obsoletes:  libcynara-creds-commons-devel
74 Obsoletes:  libcynara-creds-dbus-devel
75 Obsoletes:  libcynara-creds-socket-devel
76 Obsoletes:  libcynara-plugin-devel
77 Obsoletes:  libcynara-session-devel
78 Obsoletes:  libcynara-storage-devel
79
80 %description devel
81 Cynara development files
82
83 %package tests
84 Summary:    Cynara - cynara test binaries
85 BuildRequires: pkgconfig(gmock)
86
87 %description tests
88 Cynara tests
89
90 %package -n libcynara-client
91 Summary:    Cynara - client libraries
92 Requires:   cynara = %{version}-%{release}
93 Obsoletes:  libcynara-client-commons
94 Obsoletes:  libcynara-client-async
95
96 %description -n libcynara-client
97 Client libraries for checking policies: synchronous and asynchronous
98
99 %package -n libcynara-admin
100 Summary:    Cynara - admin client library
101 Requires:   cynara = %{version}-%{release}
102
103 %description -n libcynara-admin
104 admin client library for setting, listing and removing policies
105
106 %package -n libcynara-agent
107 Summary:    Cynara - agent client library
108 Requires:   cynara = %{version}-%{release}
109
110 %description -n libcynara-agent
111 agent client library for communication with cynara service and plugins
112
113 %package -n libcynara-commons
114 Summary:    Cynara - cynara commons library
115 Obsoletes:  libcynara-storage
116
117 %description -n libcynara-commons
118 cynara common library with common functionalities
119
120 %package -n libcynara-creds-commons
121 Summary:    Base library for cynara credentials helpers
122
123 %description -n libcynara-creds-commons
124 Base library for cynara credentials helpers
125
126 %package -n libcynara-creds-dbus
127 Summary:    Cynara credentials helpers library for dbus clients
128 BuildRequires: pkgconfig(dbus-1)
129 Requires:   dbus
130
131 %description -n libcynara-creds-dbus
132 Cynara credentials helpers library for dbus clients
133
134 %package -n libcynara-creds-socket
135 Summary:    Cynara credentials helpers library for socket clients
136
137 %description -n libcynara-creds-socket
138 Cynara credentials helpers library for socket clients
139
140 %package -n libcynara-session
141 Summary:    Cynara helper client session string creation library
142
143 %description -n libcynara-session
144 Cynara helper client session string creation library
145
146 %package -n cynara-db-migration
147 Summary:    Migration tools for Cynara's database
148
149 %description -n cynara-db-migration
150 Migration tools for Cynara's database
151
152 %prep
153 %setup -q
154 cp -a %{SOURCE1001} .
155 cp -a %{SOURCE1002} .
156 cp -a %{SOURCE1003} .
157 cp -a %{SOURCE1004} .
158 cp -a %{SOURCE1005} .
159 cp -a %{SOURCE1006} .
160 cp -a %{SOURCE1007} .
161 cp -a %{SOURCE1008} .
162 cp -a %{SOURCE1009} .
163 cp -a %{SOURCE1010} .
164 cp -a %{SOURCE1011} .
165 cp -a test/db/db* .
166
167 %build
168 %if 0%{?sec_build_binary_debug_enable}
169 export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE"
170 %endif
171
172 %if %{?build_type} == "DEBUG"
173 export CXXFLAGS="$CXXFLAGS -Wp,-U_FORTIFY_SOURCE"
174 %endif
175
176 export CXXFLAGS="$CXXFLAGS -DCYNARA_STATE_PATH=\\\"%{state_path}\\\" \
177                            -DCYNARA_LIB_PATH=\\\"%{lib_path}\\\" \
178                            -DCYNARA_TESTS_DIR=\\\"%{tests_dir}\\\" \
179                            -DCYNARA_CONFIGURATION_DIR=\\\"%{conf_path}\\\""
180 export LDFLAGS+="-Wl,--rpath=%{_libdir}"
181
182 %cmake . \
183         -DBUILD_TESTS=ON \
184         -DCMAKE_BUILD_TYPE=%{?build_type} \
185         -DCMAKE_VERBOSE_MAKEFILE=ON
186 make %{?jobs:-j%jobs}
187
188 %install
189 rm -rf %{buildroot}
190 %make_install
191
192 mkdir -p %{buildroot}/%{conf_path}
193 cp ./conf/creds.conf %{buildroot}/%{conf_path}/creds.conf
194
195 mkdir -p %{buildroot}/usr/lib/systemd/system/sockets.target.wants
196 mkdir -p %{buildroot}/%{state_path}
197 mkdir -p %{buildroot}/%{tests_dir}/empty_db
198 mkdir -p %{buildroot}/%{lib_path}/plugin/client
199 mkdir -p %{buildroot}/%{lib_path}/plugin/service
200
201 cp -a db* %{buildroot}/%{tests_dir}
202 ln -s ../cynara.socket %{buildroot}/usr/lib/systemd/system/sockets.target.wants/cynara.socket
203 ln -s ../cynara-admin.socket %{buildroot}/usr/lib/systemd/system/sockets.target.wants/cynara-admin.socket
204 ln -s ../cynara-agent.socket %{buildroot}/usr/lib/systemd/system/sockets.target.wants/cynara-agent.socket
205
206 %pre
207 id -g %{group_name} > /dev/null 2>&1
208 if [ $? -eq 1 ]; then
209     groupadd %{group_name} -r > /dev/null 2>&1
210 fi
211
212 id -u %{user_name} > /dev/null 2>&1
213 if [ $? -eq 1 ]; then
214     useradd -d /var/lib/empty -s /sbin/nologin -r -g %{group_name} %{user_name} > /dev/null 2>&1
215 fi
216
217 if [ $1 -gt 1 ] ; then
218     OLDVERSION="$(rpm -q --qf '%%{version}' %{name})"
219     %{_sbindir}/cynara/cynara-db-migration.sh upgrade -f ${OLDVERSION} -t %{version}
220 else
221     %{_sbindir}/cynara/cynara-db-migration.sh install -t %{version}
222 fi
223
224 %post
225 ### Add file capabilities if needed
226 ### setcap/getcap binary are useful. To use them you must install libcap and libcap-tools packages
227 ### In such case uncomment Requires with those packages
228
229 systemctl daemon-reload
230
231 if [ $1 = 1 ]; then
232     systemctl enable %{name}.service
233 fi
234
235 chsmack -a System %{state_path}
236
237 systemctl restart %{name}.service
238
239 %preun
240 if [ $1 = 0 ]; then
241     # unistall
242     systemctl stop cynara.service
243 fi
244
245 %postun
246 if [ $1 = 0 ]; then
247     %{_sbindir}/cynara/cynara-db-migration.sh uninstall -f %{version}
248     userdel -r %{user_name} > /dev/null 2>&1
249     groupdel %{user_name} > /dev/null 2>&1
250     systemctl daemon-reload
251 fi
252
253 %post -n libcynara-client -p /sbin/ldconfig
254
255 %postun -n libcynara-client -p /sbin/ldconfig
256
257 %post -n libcynara-admin -p /sbin/ldconfig
258
259 %postun -n libcynara-admin -p /sbin/ldconfig
260
261 %post -n libcynara-agent -p /sbin/ldconfig
262
263 %postun -n libcynara-agent -p /sbin/ldconfig
264
265 %post -n libcynara-commons -p /sbin/ldconfig
266
267 %postun -n libcynara-commons -p /sbin/ldconfig
268
269 %post -n libcynara-creds-commons -p /sbin/ldconfig
270
271 %postun -n libcynara-creds-commons -p /sbin/ldconfig
272
273 %post -n libcynara-creds-dbus -p /sbin/ldconfig
274
275 %postun -n libcynara-creds-dbus -p /sbin/ldconfig
276
277 %post -n libcynara-creds-socket -p /sbin/ldconfig
278
279 %postun -n libcynara-creds-socket -p /sbin/ldconfig
280
281 %post -n libcynara-session -p /sbin/ldconfig
282
283 %postun -n libcynara-session -p /sbin/ldconfig
284
285 %files
286 %manifest cynara.manifest
287 %license LICENSE
288 %attr(755,root,root) /usr/bin/cynara
289 %attr(-,root,root) /usr/lib/systemd/system/cynara.service
290 %attr(-,root,root) /usr/lib/systemd/system/cynara.target
291 %attr(-,root,root) /usr/lib/systemd/system/sockets.target.wants/cynara.socket
292 %attr(-,root,root) /usr/lib/systemd/system/cynara.socket
293 %attr(-,root,root) /usr/lib/systemd/system/sockets.target.wants/cynara-admin.socket
294 %attr(-,root,root) /usr/lib/systemd/system/cynara-admin.socket
295 %attr(-,root,root) /usr/lib/systemd/system/sockets.target.wants/cynara-agent.socket
296 %attr(-,root,root) /usr/lib/systemd/system/cynara-agent.socket
297 %dir %attr(700,cynara,cynara) %{state_path}
298 %dir %attr(755,cynara,cynara) %{lib_path}/plugin/service
299
300 %files -n cynara-devel
301 %{_includedir}/cynara/*.h
302 %{_includedir}/cynara/plugin/*.h
303 %{_includedir}/cynara/types/*.h
304 %{_libdir}/pkgconfig/*.pc
305 %{_libdir}/*.so
306
307 %files -n cynara-tests
308 %manifest cynara-tests.manifest
309 %attr(755,root,root) /usr/bin/cynara-tests
310 %attr(755,root,root) %{tests_dir}/db*/*
311 %dir %attr(755,root,root) %{tests_dir}/empty_db
312
313 %files -n libcynara-client
314 %manifest libcynara-client.manifest
315 %license LICENSE
316 %{_libdir}/libcynara-client.so.*
317 %{_libdir}/libcynara-client-async.so.*
318 %{_libdir}/libcynara-client-commons.so.*
319 %dir %attr(755,cynara,cynara) %{lib_path}/plugin/client
320
321 %files -n libcynara-admin
322 %manifest libcynara-admin.manifest
323 %license LICENSE
324 %{_libdir}/libcynara-admin.so.*
325
326 %files -n libcynara-agent
327 %manifest libcynara-agent.manifest
328 %license LICENSE
329 %{_libdir}/libcynara-agent.so.*
330
331 %files -n libcynara-commons
332 %manifest libcynara-commons.manifest
333 %license LICENSE
334 %{_libdir}/libcynara-commons.so.*
335 %{_libdir}/libcynara-storage.so.*
336
337 %files -n libcynara-creds-commons
338 %manifest libcynara-creds-commons.manifest
339 %license LICENSE
340 %{_libdir}/libcynara-creds-commons.so.*
341 %{conf_path}creds.conf
342
343 %files -n libcynara-creds-dbus
344 %manifest libcynara-creds-dbus.manifest
345 %license LICENSE
346 %{_libdir}/libcynara-creds-dbus.so.*
347
348 %files -n libcynara-creds-socket
349 %manifest libcynara-creds-socket.manifest
350 %license LICENSE
351 %{_libdir}/libcynara-creds-socket.so.*
352
353 %files -n libcynara-session
354 %manifest libcynara-session.manifest
355 %license LICENSE
356 %{_libdir}/libcynara-session.so.*
357
358 %files -n cynara-db-migration
359 %manifest cynara-db-migration.manifest
360 %attr(744,root,root) %{_sbindir}/cynara/cynara-db-migration.sh