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
31 Requires: lxc-templates
33 Requires(post): libcap
35 Obsoletes: vasum-daemon < 1:0
38 This package provides a daemon used to manage zones - start, stop and switch
39 between them. A process from inside a zone can request a switch of context
40 (display, input devices) to the other zone.
43 %if %{platform_type} == "TIZEN"
44 %manifest packaging/vasum.manifest
46 %defattr(644,root,root,755)
47 %attr(755,root,root) %{_bindir}/vasum-server
48 %attr(755,root,root) %{_sbindir}/vasum-check-env
50 %dir /etc/vasum/templates
51 %config /etc/vasum/daemon.conf
52 %attr(755,root,root) /etc/vasum/templates/*.sh
53 %config /etc/vasum/templates/*.conf
54 %{_unitdir}/vasum.service
55 %{_unitdir}/vasum.socket
56 %{_unitdir}/multi-user.target.wants/vasum.service
57 %config /etc/dbus-1/system.d/org.tizen.vasum.host.conf
58 %dir %{_datadir}/zones
64 %{!?build_type:%define build_type "RELEASE"}
66 %if %{build_type} == "DEBUG" || %{build_type} == "PROFILING"
67 CFLAGS="$CFLAGS -Wp,-U_FORTIFY_SOURCE"
68 CXXFLAGS="$CXXFLAGS -Wp,-U_FORTIFY_SOURCE"
71 %cmake . -DVERSION=%{version} \
72 -DCMAKE_BUILD_TYPE=%{build_type} \
73 -DSCRIPT_INSTALL_DIR=%{script_dir} \
74 -DSYSTEMD_UNIT_DIR=%{_unitdir} \
75 -DDATA_DIR=%{_datadir} \
76 -DPYTHON_SITELIB=%{python_sitelib} \
77 -DVASUM_USER=%{vsm_user} \
78 -DINPUT_EVENT_GROUP=%{input_event_group} \
79 -DDISK_GROUP=%{disk_group} \
80 -DTTY_GROUP=%{tty_group} \
81 -DWITHOUT_DBUS=%{?without_dbus}
82 make -k %{?jobs:-j%jobs}
86 mkdir -p %{buildroot}/%{_unitdir}/multi-user.target.wants
87 ln -s ../vasum.service %{buildroot}/%{_unitdir}/multi-user.target.wants/vasum.service
88 mkdir -p %{buildroot}/%{_datadir}/zones
94 # Refresh systemd services list after installation
96 systemctl daemon-reload || :
98 # set needed caps on the binary to allow restart without loosing them
99 setcap CAP_SYS_ADMIN,CAP_MAC_OVERRIDE,CAP_SYS_TTY_CONFIG+ei %{_bindir}/vasum-server
102 # Stop the service before uninstall
104 systemctl stop vasum.service || :
108 # Refresh systemd services list after uninstall/upgrade
109 systemctl daemon-reload || :
110 if [ $1 -ge 1 ]; then
111 # TODO: at this point an appropriate notification should show up
112 eval `systemctl show vasum --property=MainPID`
113 if [ -n "$MainPID" -a "$MainPID" != "0" ]; then
116 echo "Vasum updated. Reboot is required for the changes to take effect..."
118 echo "Vasum removed. Reboot is required for the changes to take effect..."
121 ## Client Package ##############################################################
123 Summary: Vasum Client
124 Group: Development/Libraries
125 Requires: vasum = %{epoch}:%{version}-%{release}
126 Obsoletes: vasum < 1:0
127 Requires(post): /sbin/ldconfig
128 Requires(postun): /sbin/ldconfig
131 Library interface to the vasum daemon
133 %post -n vasum-client -p /sbin/ldconfig
135 %postun -n vasum-client -p /sbin/ldconfig
138 %if %{platform_type} == "TIZEN"
139 %manifest packaging/libvasum-client.manifest
141 %defattr(644,root,root,755)
142 %attr(755,root,root) %{_libdir}/libvasum-client.so.%{version}
143 %{_libdir}/libvasum-client.so.0
144 %attr(755,root,root) %{_libdir}/libvasum.so.%{version}
145 %{_libdir}/libvasum.so.0
148 ## Devel Package ###############################################################
150 Summary: Vasum Client Devel
151 Group: Development/Libraries
152 Requires: vasum = %{epoch}:%{version}-%{release}
153 Requires: vasum-client = %{epoch}:%{version}-%{release}
156 Development package including the header files for the client library
159 %if %{platform_type} == "TIZEN"
160 %manifest packaging/vasum.manifest
162 %defattr(644,root,root,755)
163 %{_libdir}/libvasum-client.so
164 %{_libdir}/libvasum.so
166 %{_libdir}/pkgconfig/vasum-client.pc
167 %{_libdir}/pkgconfig/vasum.pc
170 ## Zone Support Package ###################################################
171 %package zone-support
172 Summary: Vasum Support
173 Group: Security/Other
175 %description zone-support
176 Zones support installed inside every zone.
179 %if %{platform_type} == "TIZEN"
180 %manifest packaging/vasum-zone-support.manifest
182 %defattr(644,root,root,755)
183 %config /etc/dbus-1/system.d/org.tizen.vasum.zone.conf
186 ## Zone Daemon Package ####################################################
188 Summary: Vasum Zones Daemon
189 Group: Security/Other
190 Requires: vasum-zone-support = %{epoch}:%{version}-%{release}
192 %description zone-daemon
193 Daemon running inside every zone.
196 %if %{platform_type} == "TIZEN"
197 %manifest packaging/vasum-zone-daemon.manifest
199 %defattr(644,root,root,755)
200 %attr(755,root,root) %{_bindir}/vasum-zone-daemon
201 %config /etc/dbus-1/system.d/org.tizen.vasum.zone.daemon.conf
204 ## Command Line Interface ######################################################
206 Summary: Vasum Command Line Interface
207 Group: Security/Other
208 Requires: vasum-client = %{epoch}:%{version}-%{release}
211 Command Line Interface for vasum.
214 %defattr(644,root,root,755)
215 %attr(755,root,root) %{_bindir}/vasum-cli
217 %package cli-completion
218 Summary: Vasum Command Line Interface bash completion
219 Group: Security/Other
220 Requires: vasum-cli = %{epoch}:%{version}-%{release}
221 #Requires: bash-completion
223 %description cli-completion
224 Command Line Interface bash completion for vasum.
226 %files cli-completion
227 %attr(755,root,root) %{_sysconfdir}/bash_completion.d/vasum-cli-completion.sh
229 ## Test Package ################################################################
232 Group: Development/Libraries
233 Requires: vasum = %{epoch}:%{version}-%{release}
234 Requires: vasum-client = %{epoch}:%{version}-%{release}
236 %if %{platform_type} == "TIZEN"
242 Unit tests for both: server and client and integration tests.
245 systemctl daemon-reload
246 systemctl enable vasum-socket-test.socket
247 systemctl start vasum-socket-test.socket
250 systemctl stop vasum-socket-test.socket
251 systemctl disable vasum-socket-test.socket
254 systemctl daemon-reload
257 %if %{platform_type} == "TIZEN"
258 %manifest packaging/vasum-server-tests.manifest
260 %defattr(644,root,root,755)
261 %attr(755,root,root) %{_bindir}/vasum-server-unit-tests
262 %attr(755,root,root) %{_bindir}/vasum-socket-test
263 %attr(755,root,root) %{script_dir}/vsm_all_tests.py
264 %attr(755,root,root) %{script_dir}/vsm_int_tests.py
265 %attr(755,root,root) %{script_dir}/vsm_launch_test.py
266 %{script_dir}/vsm_test_parser.py
267 %config /etc/vasum/tests/*.conf
268 %config /etc/vasum/tests/dbus/*.conf
269 %config /etc/vasum/tests/provision/*.conf
270 %config /etc/vasum/tests/templates/*.conf
271 %attr(755,root,root) /etc/vasum/tests/templates/*.sh
272 %config /etc/vasum/tests/utils/*.txt
273 %{python_sitelib}/vsm_integration_tests
274 %config /etc/dbus-1/system.d/org.tizen.vasum.tests.conf
275 %{_unitdir}/vasum-socket-test.socket
276 %{_unitdir}/vasum-socket-test.service
278 ## libLogger Package ###########################################################
279 %package -n libLogger
280 Summary: Logger library
281 Group: Security/Other
282 BuildRequires: pkgconfig(libsystemd-journal)
283 Requires(post): /sbin/ldconfig
284 Requires(postun): /sbin/ldconfig
286 %description -n libLogger
287 The package provides libLogger library.
289 %post -n libLogger -p /sbin/ldconfig
291 %postun -n libLogger -p /sbin/ldconfig
294 %defattr(644,root,root,755)
295 %{_libdir}/libLogger.so.0
296 %attr(755,root,root) %{_libdir}/libLogger.so.%{version}
298 %package -n libLogger-devel
299 Summary: Development logger library
300 Group: Development/Libraries
301 Requires: libLogger = %{epoch}:%{version}-%{release}
303 %description -n libLogger-devel
304 The package provides libLogger development tools and libs.
306 %files -n libLogger-devel
307 %defattr(644,root,root,755)
308 %{_libdir}/libLogger.so
309 %{_includedir}/vasum-tools/logger
310 %{_libdir}/pkgconfig/libLogger.pc
312 ## libSimpleDbus Package #######################################################
313 %package -n libSimpleDbus
314 Summary: Simple dbus library
315 Group: Security/Other
316 Requires(post): /sbin/ldconfig
317 Requires(postun): /sbin/ldconfig
319 %description -n libSimpleDbus
320 The package provides libSimpleDbus library.
322 %post -n libSimpleDbus -p /sbin/ldconfig
324 %postun -n libSimpleDbus -p /sbin/ldconfig
326 %files -n libSimpleDbus
327 %defattr(644,root,root,755)
328 %{_libdir}/libSimpleDbus.so.0
329 %attr(755,root,root) %{_libdir}/libSimpleDbus.so.%{version}
331 %package -n libSimpleDbus-devel
332 Summary: Development Simple dbus library
333 Group: Development/Libraries
334 Requires: libSimpleDbus = %{epoch}:%{version}-%{release}
335 Requires: pkgconfig(libLogger)
337 %description -n libSimpleDbus-devel
338 The package provides libSimpleDbus development tools and libs.
340 %files -n libSimpleDbus-devel
341 %defattr(644,root,root,755)
342 %{_libdir}/libSimpleDbus.so
343 %{_includedir}/vasum-tools/dbus
344 %{_libdir}/pkgconfig/libSimpleDbus.pc
346 ## libConfig Package ##########################################################
347 %package -n libConfig
348 Summary: Config library
349 Group: Security/Other
350 BuildRequires: pkgconfig(sqlite3)
351 %if %{platform_type} == "TIZEN"
352 BuildRequires: libjson-devel >= 0.10
353 Requires: libjson >= 0.10
355 BuildRequires: json-c-devel
358 Requires(post): /sbin/ldconfig
359 Requires(postun): /sbin/ldconfig
361 %description -n libConfig
362 The package provides libConfig library.
364 %post -n libConfig -p /sbin/ldconfig
366 %postun -n libConfig -p /sbin/ldconfig
369 %defattr(644,root,root,755)
370 %{_libdir}/libConfig.so.0
371 %attr(755,root,root) %{_libdir}/libConfig.so.%{version}
373 %package -n libConfig-devel
374 Summary: Development Config library
375 Group: Development/Libraries
376 Requires: libConfig = %{epoch}:%{version}-%{release}
377 Requires: boost-devel
378 Requires: pkgconfig(libLogger)
379 %if %{platform_type} == "TIZEN"
380 Requires: libjson-devel >= 0.10
382 Requires: json-c-devel
385 %description -n libConfig-devel
386 The package provides libConfig development tools and libs.
388 %files -n libConfig-devel
389 %defattr(644,root,root,755)
390 %{_libdir}/libConfig.so
391 %{_includedir}/vasum-tools/config
392 %{_libdir}/pkgconfig/libConfig.pc
394 ## libIpc Package #######################################################
397 Group: Security/Other
398 BuildRequires: pkgconfig(libsystemd-daemon)
400 Requires(post): /sbin/ldconfig
401 Requires(postun): /sbin/ldconfig
403 %description -n libIpc
404 The package provides libIpc library.
406 %post -n libIpc -p /sbin/ldconfig
408 %postun -n libIpc -p /sbin/ldconfig
411 %defattr(644,root,root,755)
412 %{_libdir}/libIpc.so.0
413 %attr(755,root,root) %{_libdir}/libIpc.so.%{version}
415 %package -n libIpc-devel
416 Summary: Development IPC library
417 Group: Development/Libraries
418 Requires: libIpc = %{epoch}:%{version}-%{release}
419 Requires: pkgconfig(libLogger)
420 Requires: pkgconfig(libConfig)
422 %description -n libIpc-devel
423 The package provides libIpc development tools and libs.
425 %files -n libIpc-devel
426 %defattr(644,root,root,755)
428 %{_includedir}/vasum-tools/ipc
429 %{_libdir}/pkgconfig/libIpc.pc