Remove libcap_ng and replace it with syscalls
[platform/core/security/vasum.git] / packaging / vasum.spec
1 %define script_dir %{_sbindir}
2 # Vasum Server's user info - it should already exist in the system
3 %define vsm_user          security-containers
4 # The group that has read and write access to /dev/input/event* devices.
5 # It may vary between platforms.
6 %define input_event_group input
7 # The group has access to /dev/loop* devices.
8 %define disk_group disk
9 # The group that has write access to /dev/tty* devices.
10 %define tty_group tty
11
12 Name:           vasum
13 Epoch:          1
14 Version:        0.1.1
15 Release:        0
16 Source0:        %{name}-%{version}.tar.gz
17 License:        Apache-2.0
18 Group:          Security/Other
19 Summary:        Daemon for managing zones
20 BuildRequires:  cmake
21 BuildRequires:  boost-devel
22 BuildRequires:  libjson-devel >= 0.10
23 BuildRequires:  lxc-devel
24 BuildRequires:  pkgconfig(glib-2.0)
25 BuildRequires:  pkgconfig(sqlite3)
26 Requires(post): libcap-tools
27 Requires:       iproute2
28 Requires:       libjson >= 0.10
29
30 %description
31 This package provides a daemon used to manage zones - start, stop and switch
32 between them. A process from inside a zone can request a switch of context
33 (display, input devices) to the other zone.
34
35 %files
36 %manifest packaging/vasum.manifest
37 %defattr(644,root,root,755)
38 %attr(755,root,root) %{_bindir}/vasum-server
39 %dir /etc/vasum
40 %dir /etc/vasum/zones
41 %dir /etc/vasum/templates
42 %config /etc/vasum/daemon.conf
43 %attr(755,root,root) /etc/vasum/templates/*.sh
44 %config /etc/vasum/templates/*.conf
45 %{_unitdir}/vasum.service
46 %{_unitdir}/vasum.socket
47 %{_unitdir}/multi-user.target.wants/vasum.service
48 %config /etc/dbus-1/system.d/org.tizen.vasum.host.conf
49 %dir %{_datadir}/.zones
50
51 %prep
52 %setup -q
53
54 %build
55 %{!?build_type:%define build_type "RELEASE"}
56
57 %if %{build_type} == "DEBUG" || %{build_type} == "PROFILING"
58     CFLAGS="$CFLAGS -Wp,-U_FORTIFY_SOURCE"
59     CXXFLAGS="$CXXFLAGS -Wp,-U_FORTIFY_SOURCE"
60 %endif
61
62 %cmake . -DVERSION=%{version} \
63          -DCMAKE_BUILD_TYPE=%{build_type} \
64          -DSCRIPT_INSTALL_DIR=%{script_dir} \
65          -DSYSTEMD_UNIT_DIR=%{_unitdir} \
66          -DDATA_DIR=%{_datadir} \
67          -DPYTHON_SITELIB=%{python_sitelib} \
68          -DVASUM_USER=%{vsm_user} \
69          -DINPUT_EVENT_GROUP=%{input_event_group} \
70          -DDISK_GROUP=%{disk_group} \
71          -DTTY_GROUP=%{tty_group} \
72          -DWITHOUT_DBUS=%{?without_dbus}
73 make -k %{?jobs:-j%jobs}
74
75 %install
76 %make_install
77 mkdir -p %{buildroot}/%{_unitdir}/multi-user.target.wants
78 ln -s ../vasum.service %{buildroot}/%{_unitdir}/multi-user.target.wants/vasum.service
79 mkdir -p %{buildroot}/%{_datadir}/.zones
80
81 %clean
82 rm -rf %{buildroot}
83
84 %post
85 # Refresh systemd services list after installation
86 if [ $1 == 1 ]; then
87     systemctl daemon-reload || :
88 fi
89 # set needed caps on the binary to allow restart without loosing them
90 setcap CAP_SYS_ADMIN,CAP_MAC_OVERRIDE,CAP_SYS_TTY_CONFIG+ei %{_bindir}/vasum-server
91
92 %preun
93 # Stop the service before uninstall
94 if [ $1 == 0 ]; then
95      systemctl stop vasum.service || :
96 fi
97
98 %postun
99 # Refresh systemd services list after uninstall/upgrade
100 systemctl daemon-reload || :
101 if [ $1 -ge 1 ]; then
102     # TODO: at this point an appropriate notification should show up
103     eval `systemctl show vasum --property=MainPID`
104     if [ -n "$MainPID" -a "$MainPID" != "0" ]; then
105         kill -USR1 $MainPID
106     fi
107     echo "Vasum updated. Reboot is required for the changes to take effect..."
108 else
109     echo "Vasum removed. Reboot is required for the changes to take effect..."
110 fi
111
112 ## Client Package ##############################################################
113 %package client
114 Summary:          Vasum Client
115 Group:            Development/Libraries
116 Requires:         vasum = %{epoch}:%{version}-%{release}
117 Obsoletes:        vasum < 1:0
118 Requires(post):   /sbin/ldconfig
119 Requires(postun): /sbin/ldconfig
120
121 %description client
122 Library interface to the vasum daemon
123
124 %post -n vasum-client -p /sbin/ldconfig
125
126 %postun -n vasum-client -p /sbin/ldconfig
127
128 %files client
129 %manifest packaging/libvasum-client.manifest
130 %defattr(644,root,root,755)
131 %attr(755,root,root) %{_libdir}/libvasum-client.so.%{version}
132 %{_libdir}/libvasum-client.so.0
133 %attr(755,root,root) %{_libdir}/libvasum.so.%{version}
134 %{_libdir}/libvasum.so.0
135
136
137 ## Devel Package ###############################################################
138 %package devel
139 Summary:          Vasum Client Devel
140 Group:            Development/Libraries
141 Requires:         vasum = %{epoch}:%{version}-%{release}
142 Requires:         vasum-client = %{epoch}:%{version}-%{release}
143
144 %description devel
145 Development package including the header files for the client library
146
147 %files devel
148 %manifest packaging/vasum.manifest
149 %defattr(644,root,root,755)
150 %{_libdir}/libvasum-client.so
151 %{_libdir}/libvasum.so
152 %{_includedir}/vasum
153 %{_libdir}/pkgconfig/vasum-client.pc
154 %{_libdir}/pkgconfig/vasum.pc
155
156
157 ## Zone Support Package ###################################################
158 %package zone-support
159 Summary:          Vasum Support
160 Group:            Security/Other
161
162 %description zone-support
163 Zones support installed inside every zone.
164
165 %files zone-support
166 %manifest packaging/vasum-zone-support.manifest
167 %defattr(644,root,root,755)
168 %config /etc/dbus-1/system.d/org.tizen.vasum.zone.conf
169
170
171 ## Zone Daemon Package ####################################################
172 %package zone-daemon
173 Summary:          Vasum Zones Daemon
174 Group:            Security/Other
175 Requires:         vasum-zone-support = %{epoch}:%{version}-%{release}
176
177 %description zone-daemon
178 Daemon running inside every zone.
179
180 %files zone-daemon
181 %manifest packaging/vasum-zone-daemon.manifest
182 %defattr(644,root,root,755)
183 %attr(755,root,root) %{_bindir}/vasum-zone-daemon
184 %config /etc/dbus-1/system.d/org.tizen.vasum.zone.daemon.conf
185
186
187 ## Command Line Interface ######################################################
188 %package cli
189 Summary:          Vasum Command Line Interface
190 Group:            Security/Other
191 Requires:         vasum-client = %{epoch}:%{version}-%{release}
192
193 %description cli
194 Command Line Interface for vasum.
195
196 %files cli
197 %defattr(644,root,root,755)
198 %attr(755,root,root) %{_bindir}/vasum-cli
199
200 %package cli-completion
201 Summary:          Vasum Command Line Interface bash completion
202 Group:            Security/Other
203 Requires:         vasum-cli = %{epoch}:%{version}-%{release}
204 #Requires:         bash-completion
205
206 %description cli-completion
207 Command Line Interface bash completion for vasum.
208
209 %files cli-completion
210 %attr(755,root,root) %{_sysconfdir}/bash_completion.d/vasum-cli-completion.sh
211
212 ## Test Package ################################################################
213 %package tests
214 Summary:          Vasum Tests
215 Group:            Development/Libraries
216 Requires:         vasum = %{epoch}:%{version}-%{release}
217 Requires:         vasum-client = %{epoch}:%{version}-%{release}
218 Requires:         python
219 Requires:         python-xml
220 Requires:         boost-test
221
222 %description tests
223 Unit tests for both: server and client and integration tests.
224
225 %post tests
226 systemctl daemon-reload
227 systemctl enable vasum-socket-test.socket
228 systemctl start vasum-socket-test.socket
229
230 %preun tests
231 systemctl stop vasum-socket-test.socket
232 systemctl disable vasum-socket-test.socket
233
234 %postun tests
235 systemctl daemon-reload
236
237 %files tests
238 %manifest packaging/vasum-server-tests.manifest
239 %defattr(644,root,root,755)
240 %attr(755,root,root) %{_bindir}/vasum-server-unit-tests
241 %attr(755,root,root) %{_bindir}/vasum-socket-test
242 %attr(755,root,root) %{script_dir}/vsm_all_tests.py
243 %attr(755,root,root) %{script_dir}/vsm_int_tests.py
244 %attr(755,root,root) %{script_dir}/vsm_launch_test.py
245 %{script_dir}/vsm_test_parser.py
246 %config /etc/vasum/tests/*.conf
247 %config /etc/vasum/tests/dbus/*.conf
248 %config /etc/vasum/tests/provision/*.conf
249 %config /etc/vasum/tests/templates/*.conf
250 %attr(755,root,root) /etc/vasum/tests/templates/*.sh
251 %config /etc/vasum/tests/utils/*.txt
252 %{python_sitelib}/vsm_integration_tests
253 %config /etc/dbus-1/system.d/org.tizen.vasum.tests.conf
254 %{_unitdir}/vasum-socket-test.socket
255 %{_unitdir}/vasum-socket-test.service
256
257 ## libLogger Package ###########################################################
258 %package -n libLogger
259 Summary:            Logger library
260 Group:              Security/Other
261 BuildRequires:      pkgconfig(libsystemd-journal)
262 Requires(post):     /sbin/ldconfig
263 Requires(postun):   /sbin/ldconfig
264
265 %description -n libLogger
266 The package provides libLogger library.
267
268 %post -n libLogger -p /sbin/ldconfig
269
270 %postun -n libLogger -p /sbin/ldconfig
271
272 %files -n libLogger
273 %defattr(644,root,root,755)
274 %{_libdir}/libLogger.so.0
275 %attr(755,root,root) %{_libdir}/libLogger.so.%{version}
276
277 %package -n libLogger-devel
278 Summary:        Development logger library
279 Group:          Development/Libraries
280 Requires:       libLogger = %{epoch}:%{version}-%{release}
281
282 %description -n libLogger-devel
283 The package provides libLogger development tools and libs.
284
285 %files -n libLogger-devel
286 %defattr(644,root,root,755)
287 %{_libdir}/libLogger.so
288 %{_includedir}/vasum-tools/logger
289 %{_libdir}/pkgconfig/libLogger.pc
290
291 ## libSimpleDbus Package #######################################################
292 %package -n libSimpleDbus
293 Summary:            Simple dbus library
294 Group:              Security/Other
295 Requires(post):     /sbin/ldconfig
296 Requires(postun):   /sbin/ldconfig
297
298 %description -n libSimpleDbus
299 The package provides libSimpleDbus library.
300
301 %post -n libSimpleDbus -p /sbin/ldconfig
302
303 %postun -n libSimpleDbus -p /sbin/ldconfig
304
305 %files -n libSimpleDbus
306 %defattr(644,root,root,755)
307 %{_libdir}/libSimpleDbus.so.0
308 %attr(755,root,root) %{_libdir}/libSimpleDbus.so.%{version}
309
310 %package -n libSimpleDbus-devel
311 Summary:        Development Simple dbus library
312 Group:          Development/Libraries
313 Requires:       libSimpleDbus = %{epoch}:%{version}-%{release}
314 Requires:       pkgconfig(libLogger)
315
316 %description -n libSimpleDbus-devel
317 The package provides libSimpleDbus development tools and libs.
318
319 %files -n libSimpleDbus-devel
320 %defattr(644,root,root,755)
321 %{_libdir}/libSimpleDbus.so
322 %{_includedir}/vasum-tools/dbus
323 %{_libdir}/pkgconfig/libSimpleDbus.pc
324
325 ## libConfig Package ##########################################################
326 %package -n libConfig
327 Summary:            Config library
328 Group:              Security/Other
329 Requires(post):     /sbin/ldconfig
330 Requires(postun):   /sbin/ldconfig
331
332 %description -n libConfig
333 The package provides libConfig library.
334
335 %post -n libConfig -p /sbin/ldconfig
336
337 %postun -n libConfig -p /sbin/ldconfig
338
339 %files -n libConfig
340 %defattr(644,root,root,755)
341 %{_libdir}/libConfig.so.0
342 %attr(755,root,root) %{_libdir}/libConfig.so.%{version}
343
344 %package -n libConfig-devel
345 Summary:        Development Config library
346 Group:          Development/Libraries
347 Requires:       libConfig = %{epoch}:%{version}-%{release}
348 Requires:       boost-devel
349 Requires:       pkgconfig(libLogger)
350 Requires:       libjson-devel
351
352 %description -n libConfig-devel
353 The package provides libConfig development tools and libs.
354
355 %files -n libConfig-devel
356 %defattr(644,root,root,755)
357 %{_libdir}/libConfig.so
358 %{_includedir}/vasum-tools/config
359 %{_libdir}/pkgconfig/libConfig.pc
360
361 ## libIpc Package #######################################################
362 %package -n libIpc
363 Summary:            IPC library
364 Group:              Security/Other
365 BuildRequires:      pkgconfig(libsystemd-daemon)
366 Requires:           libConfig
367 Requires(post):     /sbin/ldconfig
368 Requires(postun):   /sbin/ldconfig
369
370 %description -n libIpc
371 The package provides libIpc library.
372
373 %post -n libIpc -p /sbin/ldconfig
374
375 %postun -n libIpc -p /sbin/ldconfig
376
377 %files -n libIpc
378 %defattr(644,root,root,755)
379 %{_libdir}/libIpc.so.0
380 %attr(755,root,root) %{_libdir}/libIpc.so.%{version}
381
382 %package -n libIpc-devel
383 Summary:        Development IPC library
384 Group:          Development/Libraries
385 Requires:       libIpc = %{epoch}:%{version}-%{release}
386 Requires:       pkgconfig(libLogger)
387 Requires:       pkgconfig(libConfig)
388
389 %description -n libIpc-devel
390 The package provides libIpc development tools and libs.
391
392 %files -n libIpc-devel
393 %defattr(644,root,root,755)
394 %{_libdir}/libIpc.so
395 %{_includedir}/vasum-tools/ipc
396 %{_libdir}/pkgconfig/libIpc.pc