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.
11 # Default platform is Tizen, setup Fedora with --define 'platform_type FEDORA'
12 %{!?platform_type:%define platform_type "TIZEN"}
18 Source0: %{name}-%{version}.tar.gz
21 Summary: Daemon for managing zones
23 BuildRequires: boost-devel
24 BuildRequires: pkgconfig(glib-2.0)
25 BuildRequires: lxc-devel
27 %if %{platform_type} == "TIZEN"
29 Requires(post): libcap-tools
32 Requires(post): libcap
34 Obsoletes: vasum-daemon < 1:0
37 This package provides a daemon used to manage zones - start, stop and switch
38 between them. A process from inside a zone can request a switch of context
39 (display, input devices) to the other zone.
42 %if %{platform_type} == "TIZEN"
43 %manifest packaging/vasum.manifest
45 %defattr(644,root,root,755)
46 %attr(755,root,root) %{_bindir}/vasum-server
48 %dir /etc/vasum/templates
49 %config /etc/vasum/daemon.conf
50 %attr(755,root,root) /etc/vasum/templates/*.sh
51 %config /etc/vasum/templates/*.conf
52 %{_unitdir}/vasum.service
53 %{_unitdir}/vasum.socket
54 %{_unitdir}/multi-user.target.wants/vasum.service
55 %config /etc/dbus-1/system.d/org.tizen.vasum.host.conf
56 %dir %{_datadir}/zones
62 %{!?build_type:%define build_type "RELEASE"}
64 %if %{build_type} == "DEBUG" || %{build_type} == "PROFILING"
65 CFLAGS="$CFLAGS -Wp,-U_FORTIFY_SOURCE"
66 CXXFLAGS="$CXXFLAGS -Wp,-U_FORTIFY_SOURCE"
69 %cmake . -DVERSION=%{version} \
70 -DCMAKE_BUILD_TYPE=%{build_type} \
71 -DSCRIPT_INSTALL_DIR=%{script_dir} \
72 -DSYSTEMD_UNIT_DIR=%{_unitdir} \
73 -DDATA_DIR=%{_datadir} \
74 -DPYTHON_SITELIB=%{python_sitelib} \
75 -DVASUM_USER=%{vsm_user} \
76 -DINPUT_EVENT_GROUP=%{input_event_group} \
77 -DDISK_GROUP=%{disk_group} \
78 -DTTY_GROUP=%{tty_group} \
79 -DWITHOUT_DBUS=%{?without_dbus}
80 make -k %{?jobs:-j%jobs}
84 mkdir -p %{buildroot}/%{_unitdir}/multi-user.target.wants
85 ln -s ../vasum.service %{buildroot}/%{_unitdir}/multi-user.target.wants/vasum.service
86 mkdir -p %{buildroot}/%{_datadir}/zones
92 # Refresh systemd services list after installation
94 systemctl daemon-reload || :
96 # set needed caps on the binary to allow restart without loosing them
97 setcap CAP_SYS_ADMIN,CAP_MAC_OVERRIDE,CAP_SYS_TTY_CONFIG+ei %{_bindir}/vasum-server
100 # Stop the service before uninstall
102 systemctl stop vasum.service || :
106 # Refresh systemd services list after uninstall/upgrade
107 systemctl daemon-reload || :
108 if [ $1 -ge 1 ]; then
109 # TODO: at this point an appropriate notification should show up
110 eval `systemctl show vasum --property=MainPID`
111 if [ -n "$MainPID" -a "$MainPID" != "0" ]; then
114 echo "Vasum updated. Reboot is required for the changes to take effect..."
116 echo "Vasum removed. Reboot is required for the changes to take effect..."
119 ## Client Package ##############################################################
121 Summary: Vasum Client
122 Group: Development/Libraries
123 Requires: vasum = %{epoch}:%{version}-%{release}
124 Obsoletes: vasum < 1:0
125 Requires(post): /sbin/ldconfig
126 Requires(postun): /sbin/ldconfig
129 Library interface to the vasum daemon
131 %post -n vasum-client -p /sbin/ldconfig
133 %postun -n vasum-client -p /sbin/ldconfig
136 %if %{platform_type} == "TIZEN"
137 %manifest packaging/libvasum-client.manifest
139 %defattr(644,root,root,755)
140 %attr(755,root,root) %{_libdir}/libvasum-client.so.%{version}
141 %{_libdir}/libvasum-client.so.0
142 %attr(755,root,root) %{_libdir}/libvasum.so.%{version}
143 %{_libdir}/libvasum.so.0
146 ## Devel Package ###############################################################
148 Summary: Vasum Client Devel
149 Group: Development/Libraries
150 Requires: vasum = %{epoch}:%{version}-%{release}
151 Requires: vasum-client = %{epoch}:%{version}-%{release}
154 Development package including the header files for the client library
157 %if %{platform_type} == "TIZEN"
158 %manifest packaging/vasum.manifest
160 %defattr(644,root,root,755)
161 %{_libdir}/libvasum-client.so
162 %{_libdir}/libvasum.so
164 %{_libdir}/pkgconfig/vasum-client.pc
165 %{_libdir}/pkgconfig/vasum.pc
168 ## Zone Support Package ###################################################
169 %package zone-support
170 Summary: Vasum Support
171 Group: Security/Other
173 %description zone-support
174 Zones support installed inside every zone.
177 %if %{platform_type} == "TIZEN"
178 %manifest packaging/vasum-zone-support.manifest
180 %defattr(644,root,root,755)
181 %config /etc/dbus-1/system.d/org.tizen.vasum.zone.conf
184 ## Zone Daemon Package ####################################################
186 Summary: Vasum Zones Daemon
187 Group: Security/Other
188 Requires: vasum-zone-support = %{epoch}:%{version}-%{release}
190 %description zone-daemon
191 Daemon running inside every zone.
194 %if %{platform_type} == "TIZEN"
195 %manifest packaging/vasum-zone-daemon.manifest
197 %defattr(644,root,root,755)
198 %attr(755,root,root) %{_bindir}/vasum-zone-daemon
199 %config /etc/dbus-1/system.d/org.tizen.vasum.zone.daemon.conf
202 ## Command Line Interface ######################################################
204 Summary: Vasum Command Line Interface
205 Group: Security/Other
206 Requires: vasum-client = %{epoch}:%{version}-%{release}
209 Command Line Interface for vasum.
212 %defattr(644,root,root,755)
213 %attr(755,root,root) %{_bindir}/vasum-cli
215 %package cli-completion
216 Summary: Vasum Command Line Interface bash completion
217 Group: Security/Other
218 Requires: vasum-cli = %{epoch}:%{version}-%{release}
219 #Requires: bash-completion
221 %description cli-completion
222 Command Line Interface bash completion for vasum.
224 %files cli-completion
225 %attr(755,root,root) %{_sysconfdir}/bash_completion.d/vasum-cli-completion.sh
227 ## Test Package ################################################################
230 Group: Development/Libraries
231 Requires: vasum = %{epoch}:%{version}-%{release}
232 Requires: vasum-client = %{epoch}:%{version}-%{release}
234 %if %{platform_type} == "TIZEN"
240 Unit tests for both: server and client and integration tests.
243 systemctl daemon-reload
244 systemctl enable vasum-socket-test.socket
245 systemctl start vasum-socket-test.socket
248 systemctl stop vasum-socket-test.socket
249 systemctl disable vasum-socket-test.socket
252 systemctl daemon-reload
255 %if %{platform_type} == "TIZEN"
256 %manifest packaging/vasum-server-tests.manifest
258 %defattr(644,root,root,755)
259 %attr(755,root,root) %{_bindir}/vasum-server-unit-tests
260 %attr(755,root,root) %{_bindir}/vasum-socket-test
261 %attr(755,root,root) %{script_dir}/vsm_all_tests.py
262 %attr(755,root,root) %{script_dir}/vsm_int_tests.py
263 %attr(755,root,root) %{script_dir}/vsm_launch_test.py
264 %{script_dir}/vsm_test_parser.py
265 %config /etc/vasum/tests/*.conf
266 %config /etc/vasum/tests/dbus/*.conf
267 %config /etc/vasum/tests/provision/*.conf
268 %config /etc/vasum/tests/templates/*.conf
269 %attr(755,root,root) /etc/vasum/tests/templates/*.sh
270 %config /etc/vasum/tests/utils/*.txt
271 %{python_sitelib}/vsm_integration_tests
272 %config /etc/dbus-1/system.d/org.tizen.vasum.tests.conf
273 %{_unitdir}/vasum-socket-test.socket
274 %{_unitdir}/vasum-socket-test.service
276 ## libLogger Package ###########################################################
277 %package -n libLogger
278 Summary: Logger library
279 Group: Security/Other
280 BuildRequires: pkgconfig(libsystemd-journal)
281 Requires(post): /sbin/ldconfig
282 Requires(postun): /sbin/ldconfig
284 %description -n libLogger
285 The package provides libLogger library.
287 %post -n libLogger -p /sbin/ldconfig
289 %postun -n libLogger -p /sbin/ldconfig
292 %defattr(644,root,root,755)
293 %{_libdir}/libLogger.so.0
294 %attr(755,root,root) %{_libdir}/libLogger.so.%{version}
296 %package -n libLogger-devel
297 Summary: Development logger library
298 Group: Development/Libraries
299 Requires: libLogger = %{epoch}:%{version}-%{release}
301 %description -n libLogger-devel
302 The package provides libLogger development tools and libs.
304 %files -n libLogger-devel
305 %defattr(644,root,root,755)
306 %{_libdir}/libLogger.so
307 %{_includedir}/vasum-tools/logger
308 %{_libdir}/pkgconfig/libLogger.pc
310 ## libSimpleDbus Package #######################################################
311 %package -n libSimpleDbus
312 Summary: Simple dbus library
313 Group: Security/Other
314 Requires(post): /sbin/ldconfig
315 Requires(postun): /sbin/ldconfig
317 %description -n libSimpleDbus
318 The package provides libSimpleDbus library.
320 %post -n libSimpleDbus -p /sbin/ldconfig
322 %postun -n libSimpleDbus -p /sbin/ldconfig
324 %files -n libSimpleDbus
325 %defattr(644,root,root,755)
326 %{_libdir}/libSimpleDbus.so.0
327 %attr(755,root,root) %{_libdir}/libSimpleDbus.so.%{version}
329 %package -n libSimpleDbus-devel
330 Summary: Development Simple dbus library
331 Group: Development/Libraries
332 Requires: libSimpleDbus = %{epoch}:%{version}-%{release}
333 Requires: pkgconfig(libLogger)
335 %description -n libSimpleDbus-devel
336 The package provides libSimpleDbus development tools and libs.
338 %files -n libSimpleDbus-devel
339 %defattr(644,root,root,755)
340 %{_libdir}/libSimpleDbus.so
341 %{_includedir}/vasum-tools/dbus
342 %{_libdir}/pkgconfig/libSimpleDbus.pc
344 ## libConfig Package ##########################################################
345 %package -n libConfig
346 Summary: Config library
347 Group: Security/Other
348 BuildRequires: pkgconfig(sqlite3)
349 %if %{platform_type} == "TIZEN"
350 BuildRequires: libjson-devel >= 0.10
351 Requires: libjson >= 0.10
353 BuildRequires: json-c-devel
356 Requires(post): /sbin/ldconfig
357 Requires(postun): /sbin/ldconfig
359 %description -n libConfig
360 The package provides libConfig library.
362 %post -n libConfig -p /sbin/ldconfig
364 %postun -n libConfig -p /sbin/ldconfig
367 %defattr(644,root,root,755)
368 %{_libdir}/libConfig.so.0
369 %attr(755,root,root) %{_libdir}/libConfig.so.%{version}
371 %package -n libConfig-devel
372 Summary: Development Config library
373 Group: Development/Libraries
374 Requires: libConfig = %{epoch}:%{version}-%{release}
375 Requires: boost-devel
376 Requires: pkgconfig(libLogger)
377 %if %{platform_type} == "TIZEN"
378 Requires: libjson-devel >= 0.10
380 Requires: json-c-devel
383 %description -n libConfig-devel
384 The package provides libConfig development tools and libs.
386 %files -n libConfig-devel
387 %defattr(644,root,root,755)
388 %{_libdir}/libConfig.so
389 %{_includedir}/vasum-tools/config
390 %{_libdir}/pkgconfig/libConfig.pc
392 ## libIpc Package #######################################################
395 Group: Security/Other
396 BuildRequires: pkgconfig(libsystemd-daemon)
398 Requires(post): /sbin/ldconfig
399 Requires(postun): /sbin/ldconfig
401 %description -n libIpc
402 The package provides libIpc library.
404 %post -n libIpc -p /sbin/ldconfig
406 %postun -n libIpc -p /sbin/ldconfig
409 %defattr(644,root,root,755)
410 %{_libdir}/libIpc.so.0
411 %attr(755,root,root) %{_libdir}/libIpc.so.%{version}
413 %package -n libIpc-devel
414 Summary: Development IPC library
415 Group: Development/Libraries
416 Requires: libIpc = %{epoch}:%{version}-%{release}
417 Requires: pkgconfig(libLogger)
418 Requires: pkgconfig(libConfig)
420 %description -n libIpc-devel
421 The package provides libIpc development tools and libs.
423 %files -n libIpc-devel
424 %defattr(644,root,root,755)
426 %{_includedir}/vasum-tools/ipc
427 %{_libdir}/pkgconfig/libIpc.pc