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.
16 Source0: %{name}-%{version}.tar.gz
19 Summary: Daemon for managing zones
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
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.
39 %manifest packaging/vasum.manifest
40 %defattr(644,root,root,755)
41 %attr(755,root,root) %{_bindir}/vasum-server
44 %dir /etc/vasum/lxc-templates
45 %dir /etc/vasum/templates
46 %config /etc/vasum/daemon.conf
47 %attr(755,root,root) /etc/vasum/lxc-templates/*.sh
48 %config /etc/vasum/templates/*.conf
49 %{_unitdir}/vasum.service
50 %{_unitdir}/vasum.socket
51 %{_unitdir}/multi-user.target.wants/vasum.service
52 %config /etc/dbus-1/system.d/org.tizen.vasum.host.conf
53 %dir %{_datadir}/.zones
59 %{!?build_type:%define build_type "RELEASE"}
61 %if %{build_type} == "DEBUG" || %{build_type} == "PROFILING"
62 CFLAGS="$CFLAGS -Wp,-U_FORTIFY_SOURCE"
63 CXXFLAGS="$CXXFLAGS -Wp,-U_FORTIFY_SOURCE"
66 %cmake . -DVERSION=%{version} \
67 -DCMAKE_BUILD_TYPE=%{build_type} \
68 -DSCRIPT_INSTALL_DIR=%{script_dir} \
69 -DSYSTEMD_UNIT_DIR=%{_unitdir} \
70 -DDATA_DIR=%{_datadir} \
71 -DPYTHON_SITELIB=%{python_sitelib} \
72 -DVASUM_USER=%{vsm_user} \
73 -DINPUT_EVENT_GROUP=%{input_event_group} \
74 -DDISK_GROUP=%{disk_group} \
75 -DTTY_GROUP=%{tty_group} \
76 -DWITHOUT_DBUS=%{?without_dbus}
77 make -k %{?jobs:-j%jobs}
81 mkdir -p %{buildroot}/%{_unitdir}/multi-user.target.wants
82 ln -s ../vasum.service %{buildroot}/%{_unitdir}/multi-user.target.wants/vasum.service
83 mkdir -p %{buildroot}/%{_datadir}/.zones
89 # Refresh systemd services list after installation
91 systemctl daemon-reload || :
93 # set needed caps on the binary to allow restart without loosing them
94 setcap CAP_SYS_ADMIN,CAP_MAC_OVERRIDE,CAP_SYS_TTY_CONFIG+ei %{_bindir}/vasum-server
97 # Stop the service before uninstall
99 systemctl stop vasum.service || :
103 # Refresh systemd services list after uninstall/upgrade
104 systemctl daemon-reload || :
105 if [ $1 -ge 1 ]; then
106 # TODO: at this point an appropriate notification should show up
107 eval `systemctl show vasum --property=MainPID`
108 if [ -n "$MainPID" -a "$MainPID" != "0" ]; then
111 echo "Vasum updated. Reboot is required for the changes to take effect..."
113 echo "Vasum removed. Reboot is required for the changes to take effect..."
116 ## Client Package ##############################################################
118 Summary: Vasum Client
119 Group: Development/Libraries
120 Requires: vasum = %{epoch}:%{version}-%{release}
121 Obsoletes: vasum < 1:0
122 Requires(post): /sbin/ldconfig
123 Requires(postun): /sbin/ldconfig
126 Library interface to the vasum daemon
128 %post -n vasum-client -p /sbin/ldconfig
130 %postun -n vasum-client -p /sbin/ldconfig
133 %manifest packaging/libvasum-client.manifest
134 %defattr(644,root,root,755)
135 %attr(755,root,root) %{_libdir}/libvasum-client.so.%{version}
136 %{_libdir}/libvasum-client.so.0
137 %attr(755,root,root) %{_libdir}/libvasum.so.%{version}
138 %{_libdir}/libvasum.so.0
141 ## Devel Package ###############################################################
143 Summary: Vasum Client Devel
144 Group: Development/Libraries
145 Requires: vasum = %{epoch}:%{version}-%{release}
146 Requires: vasum-client = %{epoch}:%{version}-%{release}
149 Development package including the header files for the client library
152 %manifest packaging/vasum.manifest
153 %defattr(644,root,root,755)
154 %{_libdir}/libvasum-client.so
155 %{_libdir}/libvasum.so
157 %{_libdir}/pkgconfig/vasum-client.pc
158 %{_libdir}/pkgconfig/vasum.pc
161 ## Zone Support Package ###################################################
162 %package zone-support
163 Summary: Vasum Support
164 Group: Security/Other
166 %description zone-support
167 Zones support installed inside every zone.
170 %manifest packaging/vasum-zone-support.manifest
171 %defattr(644,root,root,755)
172 %config /etc/dbus-1/system.d/org.tizen.vasum.zone.conf
175 ## Zone Daemon Package ####################################################
177 Summary: Vasum Zones Daemon
178 Group: Security/Other
179 Requires: vasum-zone-support = %{epoch}:%{version}-%{release}
181 %description zone-daemon
182 Daemon running inside every zone.
185 %manifest packaging/vasum-zone-daemon.manifest
186 %defattr(644,root,root,755)
187 %attr(755,root,root) %{_bindir}/vasum-zone-daemon
188 %config /etc/dbus-1/system.d/org.tizen.vasum.zone.daemon.conf
191 ## Command Line Interface ######################################################
193 Summary: Vasum Command Line Interface
194 Group: Security/Other
195 Requires: vasum-client = %{epoch}:%{version}-%{release}
198 Command Line Interface for vasum.
201 %defattr(644,root,root,755)
202 %attr(755,root,root) %{_bindir}/vasum-cli
204 %package cli-completion
205 Summary: Vasum Command Line Interface bash completion
206 Group: Security/Other
207 Requires: vasum-cli = %{epoch}:%{version}-%{release}
208 #Requires: bash-completion
210 %description cli-completion
211 Command Line Interface bash completion for vasum.
213 %files cli-completion
214 %attr(755,root,root) %{_sysconfdir}/bash_completion.d/vasum-cli-completion.sh
216 ## Test Package ################################################################
219 Group: Development/Libraries
220 Requires: vasum = %{epoch}:%{version}-%{release}
221 Requires: vasum-client = %{epoch}:%{version}-%{release}
227 Unit tests for both: server and client and integration tests.
230 systemctl daemon-reload
231 systemctl enable vasum-socket-test.socket
232 systemctl start vasum-socket-test.socket
235 systemctl stop vasum-socket-test.socket
236 systemctl disable vasum-socket-test.socket
239 systemctl daemon-reload
242 %manifest packaging/vasum-server-tests.manifest
243 %defattr(644,root,root,755)
244 %attr(755,root,root) %{_bindir}/vasum-server-unit-tests
245 %attr(755,root,root) %{_bindir}/vasum-socket-test
246 %attr(755,root,root) %{script_dir}/vsm_all_tests.py
247 %attr(755,root,root) %{script_dir}/vsm_int_tests.py
248 %attr(755,root,root) %{script_dir}/vsm_launch_test.py
249 %{script_dir}/vsm_test_parser.py
250 %config /etc/vasum/tests
251 %attr(755,root,root) /etc/vasum/tests/lxc-templates
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
257 ## libLogger Package ###########################################################
258 %package -n libLogger
259 Summary: Logger library
260 Group: Security/Other
261 Requires(post): /sbin/ldconfig
262 Requires(postun): /sbin/ldconfig
264 %description -n libLogger
265 The package provides libLogger library.
267 %post -n libLogger -p /sbin/ldconfig
269 %postun -n libLogger -p /sbin/ldconfig
272 %defattr(644,root,root,755)
273 %{_libdir}/libLogger.so.0
274 %attr(755,root,root) %{_libdir}/libLogger.so.%{version}
276 %package -n libLogger-devel
277 Summary: Development logger library
278 Group: Development/Libraries
279 Requires: libLogger = %{epoch}:%{version}-%{release}
281 %description -n libLogger-devel
282 The package provides libLogger development tools and libs.
284 %files -n libLogger-devel
285 %defattr(644,root,root,755)
286 %{_libdir}/libLogger.so
287 %{_includedir}/vasum-tools/logger
288 %{_libdir}/pkgconfig/libLogger.pc
290 ## libSimpleDbus Package #######################################################
291 %package -n libSimpleDbus
292 Summary: Simple dbus library
293 Group: Security/Other
294 Requires(post): /sbin/ldconfig
295 Requires(postun): /sbin/ldconfig
297 %description -n libSimpleDbus
298 The package provides libSimpleDbus library.
300 %post -n libSimpleDbus -p /sbin/ldconfig
302 %postun -n libSimpleDbus -p /sbin/ldconfig
304 %files -n libSimpleDbus
305 %defattr(644,root,root,755)
306 %{_libdir}/libSimpleDbus.so.0
307 %attr(755,root,root) %{_libdir}/libSimpleDbus.so.%{version}
309 %package -n libSimpleDbus-devel
310 Summary: Development Simple dbus library
311 Group: Development/Libraries
312 Requires: libSimpleDbus = %{epoch}:%{version}-%{release}
313 Requires: pkgconfig(libLogger)
315 %description -n libSimpleDbus-devel
316 The package provides libSimpleDbus development tools and libs.
318 %files -n libSimpleDbus-devel
319 %defattr(644,root,root,755)
320 %{_libdir}/libSimpleDbus.so
321 %{_includedir}/vasum-tools/dbus
322 %{_libdir}/pkgconfig/libSimpleDbus.pc
324 ## libConfig Package ##########################################################
325 %package -n libConfig
326 Summary: Config library
327 Group: Security/Other
328 Requires(post): /sbin/ldconfig
329 Requires(postun): /sbin/ldconfig
331 %description -n libConfig
332 The package provides libConfig library.
334 %post -n libConfig -p /sbin/ldconfig
336 %postun -n libConfig -p /sbin/ldconfig
339 %defattr(644,root,root,755)
340 %{_libdir}/libConfig.so.0
341 %attr(755,root,root) %{_libdir}/libConfig.so.%{version}
343 %package -n libConfig-devel
344 Summary: Development Config library
345 Group: Development/Libraries
346 Requires: libConfig = %{epoch}:%{version}-%{release}
347 Requires: boost-devel
348 Requires: pkgconfig(libLogger)
349 Requires: libjson-devel
351 %description -n libConfig-devel
352 The package provides libConfig development tools and libs.
354 %files -n libConfig-devel
355 %defattr(644,root,root,755)
356 %{_libdir}/libConfig.so
357 %{_includedir}/vasum-tools/config
358 %{_libdir}/pkgconfig/libConfig.pc