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