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