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.
15 Source0: %{name}-%{version}.tar.gz
18 Summary: Daemon for managing zones
20 BuildRequires: boost-devel
21 BuildRequires: libjson-devel >= 0.10
22 BuildRequires: libcap-ng-devel
23 BuildRequires: lxc-devel
24 BuildRequires: pkgconfig(glib-2.0)
25 BuildRequires: pkgconfig(libsystemd-journal)
26 BuildRequires: pkgconfig(libsystemd-daemon)
27 BuildRequires: pkgconfig(sqlite3)
28 Requires(post): libcap-tools
29 Requires: bridge-utils
32 This package provides a daemon used to manage zones - start, stop and switch
33 between them. A process from inside a zone can request a switch of context
34 (display, input devices) to the other zone.
37 %manifest packaging/vasum.manifest
38 %defattr(644,root,root,755)
39 %attr(755,root,root) %{_bindir}/vasum-server
42 %dir /etc/vasum/lxc-templates
43 %dir /etc/vasum/templates
44 %config /etc/vasum/daemon.conf
45 %attr(755,root,root) /etc/vasum/lxc-templates/*.sh
46 %config /etc/vasum/templates/*.conf
47 %{_unitdir}/vasum.service
48 %{_unitdir}/vasum.socket
49 %{_unitdir}/multi-user.target.wants/vasum.service
50 %config /etc/dbus-1/system.d/org.tizen.vasum.host.conf
51 %dir %{_datadir}/.zones
57 %{!?build_type:%define build_type "RELEASE"}
59 %if %{build_type} == "DEBUG" || %{build_type} == "PROFILING"
60 CFLAGS="$CFLAGS -Wp,-U_FORTIFY_SOURCE"
61 CXXFLAGS="$CXXFLAGS -Wp,-U_FORTIFY_SOURCE"
64 %cmake . -DVERSION=%{version} \
65 -DCMAKE_BUILD_TYPE=%{build_type} \
66 -DSCRIPT_INSTALL_DIR=%{script_dir} \
67 -DSYSTEMD_UNIT_DIR=%{_unitdir} \
68 -DDATA_DIR=%{_datadir} \
69 -DPYTHON_SITELIB=%{python_sitelib} \
70 -DVASUM_USER=%{vsm_user} \
71 -DINPUT_EVENT_GROUP=%{input_event_group} \
72 -DDISK_GROUP=%{disk_group} \
73 -DTTY_GROUP=%{tty_group} \
74 -DWITHOUT_DBUS=%{?without_dbus}
75 make -k %{?jobs:-j%jobs}
79 mkdir -p %{buildroot}/%{_unitdir}/multi-user.target.wants
80 ln -s ../vasum.service %{buildroot}/%{_unitdir}/multi-user.target.wants/vasum.service
81 mkdir -p %{buildroot}/%{_datadir}/.zones
87 # Refresh systemd services list after installation
89 systemctl daemon-reload || :
91 # set needed caps on the binary to allow restart without loosing them
92 setcap CAP_SYS_ADMIN,CAP_MAC_OVERRIDE,CAP_SYS_TTY_CONFIG+ei %{_bindir}/vasum-server
95 # Stop the service before uninstall
97 systemctl stop vasum.service || :
101 # Refresh systemd services list after uninstall/upgrade
102 systemctl daemon-reload || :
103 if [ $1 -ge 1 ]; then
104 # TODO: at this point an appropriate notification should show up
105 eval `systemctl show vasum --property=MainPID`
106 if [ -n "$MainPID" -a "$MainPID" != "0" ]; then
109 echo "Vasum updated. Reboot is required for the changes to take effect..."
111 echo "Vasum removed. Reboot is required for the changes to take effect..."
114 ## Client Package ##############################################################
116 Summary: Vasum Client
117 Group: Development/Libraries
118 Requires: vasum = %{version}-%{release}
119 Requires(post): /sbin/ldconfig
120 Requires(postun): /sbin/ldconfig
123 Library interface to the vasum daemon
126 %manifest packaging/libvasum-client.manifest
127 %defattr(644,root,root,755)
128 %attr(755,root,root) %{_libdir}/libvasum.so.0.0.1
129 %{_libdir}/libvasum.so.0
131 %post client -p /sbin/ldconfig
133 %postun client -p /sbin/ldconfig
136 ## Devel Package ###############################################################
138 Summary: Vasum Client Devel
139 Group: Development/Libraries
140 Requires: vasum = %{version}-%{release}
141 Requires: vasum-client = %{version}-%{release}
144 Development package including the header files for the client library
147 %manifest packaging/vasum.manifest
148 %defattr(644,root,root,755)
149 %{_libdir}/libvasum.so
151 %{_libdir}/pkgconfig/vasum.pc
154 ## Zone Support Package ###################################################
155 %package zone-support
156 Summary: Vasum Support
157 Group: Security/Other
159 %description zone-support
160 Zones support installed inside every zone.
163 %manifest packaging/vasum-zone-support.manifest
164 %defattr(644,root,root,755)
165 %config /etc/dbus-1/system.d/org.tizen.vasum.zone.conf
168 ## Zone Daemon Package ####################################################
170 Summary: Vasum Zones Daemon
171 Group: Security/Other
172 Requires: vasum-zone-support = %{version}-%{release}
174 %description zone-daemon
175 Daemon running inside every zone.
178 %manifest packaging/vasum-zone-daemon.manifest
179 %defattr(644,root,root,755)
180 %attr(755,root,root) %{_bindir}/vasum-zone-daemon
181 %config /etc/dbus-1/system.d/org.tizen.vasum.zone.daemon.conf
184 ## Command Line Interface ######################################################
186 Summary: Vasum Command Line Interface
187 Group: Security/Other
188 Requires: vasum-client = %{version}-%{release}
191 Command Line Interface for vasum.
194 %defattr(644,root,root,755)
195 %attr(755,root,root) %{_bindir}/vasum-cli
197 %package cli-completion
198 Summary: Vasum Command Line Interface bash completion
199 Group: Security/Other
200 Requires: vasum-cli = %{version}-%{release}
201 #Requires: bash-completion
203 %description cli-completion
204 Command Line Interface bash completion.
206 %files cli-completion
207 %attr(755,root,root) %{_sysconfdir}/bash_completion.d/vasum-cli-completion.sh
209 ## Test Package ################################################################
212 Group: Development/Libraries
213 Requires: vasum = %{version}-%{release}
214 Requires: vasum-client = %{version}-%{release}
220 Unit tests for both: server and client and integration tests.
223 systemctl daemon-reload
224 systemctl enable vasum-socket-test.socket
225 systemctl start vasum-socket-test.socket
228 systemctl stop vasum-socket-test.socket
229 systemctl disable vasum-socket-test.socket
232 systemctl daemon-reload
235 %manifest packaging/vasum-server-tests.manifest
236 %defattr(644,root,root,755)
237 %attr(755,root,root) %{_bindir}/vasum-server-unit-tests
238 %attr(755,root,root) %{_bindir}/vasum-socket-test
239 %attr(755,root,root) %{script_dir}/vsm_all_tests.py
240 %attr(755,root,root) %{script_dir}/vsm_int_tests.py
241 %attr(755,root,root) %{script_dir}/vsm_launch_test.py
242 %{script_dir}/vsm_test_parser.py
243 %config /etc/vasum/tests
244 %attr(755,root,root) /etc/vasum/tests/lxc-templates
245 %{python_sitelib}/vsm_integration_tests
246 %config /etc/dbus-1/system.d/org.tizen.vasum.tests.conf
247 %{_unitdir}/vasum-socket-test.socket
248 %{_unitdir}/vasum-socket-test.service
250 ## libLogger Package ###########################################################
251 %package -n libLogger
252 Summary: Logger library
253 Group: Security/Other
254 Requires(post): /sbin/ldconfig
255 Requires(postun): /sbin/ldconfig
257 %description -n libLogger
258 The package provides libLogger library.
260 %post -n libLogger -p /sbin/ldconfig
262 %postun -n libLogger -p /sbin/ldconfig
265 %defattr(644,root,root,755)
266 %{_libdir}/libLogger.so.0
267 %attr(755,root,root) %{_libdir}/libLogger.so.0.0.1
269 %package -n libLogger-devel
270 Summary: Development logger library
271 Group: Development/Libraries
272 Requires: libLogger = %{version}-%{release}
274 %description -n libLogger-devel
275 The package provides libLogger development tools and libs.
277 %files -n libLogger-devel
278 %defattr(644,root,root,755)
279 %{_libdir}/libLogger.so
280 %{_includedir}/vasum-tools/logger
281 %{_libdir}/pkgconfig/libLogger.pc
283 ## libSimpleDbus Package #######################################################
284 %package -n libSimpleDbus
285 Summary: Simple dbus library
286 Group: Security/Other
287 Requires(post): /sbin/ldconfig
288 Requires(postun): /sbin/ldconfig
290 %description -n libSimpleDbus
291 The package provides libSimpleDbus library.
293 %post -n libSimpleDbus -p /sbin/ldconfig
295 %postun -n libSimpleDbus -p /sbin/ldconfig
297 %files -n libSimpleDbus
298 %defattr(644,root,root,755)
299 %{_libdir}/libSimpleDbus.so.0
300 %attr(755,root,root) %{_libdir}/libSimpleDbus.so.0.0.1
302 %package -n libSimpleDbus-devel
303 Summary: Development Simple dbus library
304 Group: Development/Libraries
305 Requires: libSimpleDbus = %{version}-%{release}
306 Requires: pkgconfig(libLogger)
308 %description -n libSimpleDbus-devel
309 The package provides libSimpleDbus development tools and libs.
311 %files -n libSimpleDbus-devel
312 %defattr(644,root,root,755)
313 %{_libdir}/libSimpleDbus.so
314 %{_includedir}/vasum-tools/dbus
315 %{_libdir}/pkgconfig/libSimpleDbus.pc
317 ## libConfig Package ##########################################################
318 %package -n libConfig
319 Summary: Config library
320 Group: Security/Other
321 Requires(post): /sbin/ldconfig
322 Requires(postun): /sbin/ldconfig
324 %description -n libConfig
325 The package provides libConfig library.
327 %post -n libConfig -p /sbin/ldconfig
329 %postun -n libConfig -p /sbin/ldconfig
332 %defattr(644,root,root,755)
333 %{_libdir}/libConfig.so.0
334 %attr(755,root,root) %{_libdir}/libConfig.so.0.0.1
336 %package -n libConfig-devel
337 Summary: Development Config library
338 Group: Development/Libraries
339 Requires: libConfig = %{version}-%{release}
340 Requires: boost-devel
341 Requires: pkgconfig(libLogger)
342 Requires: libjson-devel
344 %description -n libConfig-devel
345 The package provides libConfig development tools and libs.
347 %files -n libConfig-devel
348 %defattr(644,root,root,755)
349 %{_libdir}/libConfig.so
350 %{_includedir}/vasum-tools/config
351 %{_libdir}/pkgconfig/libConfig.pc