Add wrapper for lxc-fedora template
[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 # Default platform is Tizen, setup Fedora with --define 'platform_type FEDORA'
12 %{!?platform_type:%define platform_type "TIZEN"}
13
14 Name:           vasum
15 Epoch:          1
16 Version:        0.1.1
17 Release:        0
18 Source0:        %{name}-%{version}.tar.gz
19 License:        Apache-2.0
20 Group:          Security/Other
21 Summary:        Daemon for managing zones
22 BuildRequires:  cmake
23 BuildRequires:  boost-devel
24 BuildRequires:  pkgconfig(glib-2.0)
25 BuildRequires:  lxc-devel
26 Requires:       lxc
27 %if %{platform_type} == "TIZEN"
28 Requires:       iproute2
29 Requires(post): libcap-tools
30 %else
31 Requires:       lxc-templates
32 Requires:       iproute
33 Requires(post): libcap
34 %endif
35 Obsoletes:      vasum-daemon < 1:0
36
37 %description
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.
41
42 %files
43 %if %{platform_type} == "TIZEN"
44 %manifest packaging/vasum.manifest
45 %endif
46 %defattr(644,root,root,755)
47 %attr(755,root,root) %{_bindir}/vasum-server
48 %attr(755,root,root) %{_sbindir}/vasum-check-env
49 %dir /etc/vasum
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
59
60 %prep
61 %setup -q
62
63 %build
64 %{!?build_type:%define build_type "RELEASE"}
65
66 %if %{build_type} == "DEBUG" || %{build_type} == "PROFILING"
67     CFLAGS="$CFLAGS -Wp,-U_FORTIFY_SOURCE"
68     CXXFLAGS="$CXXFLAGS -Wp,-U_FORTIFY_SOURCE"
69 %endif
70
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}
83
84 %install
85 %make_install
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
89
90 %clean
91 rm -rf %{buildroot}
92
93 %post
94 # Refresh systemd services list after installation
95 if [ $1 == 1 ]; then
96     systemctl daemon-reload || :
97 fi
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
100
101 %preun
102 # Stop the service before uninstall
103 if [ $1 == 0 ]; then
104      systemctl stop vasum.service || :
105 fi
106
107 %postun
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
114         kill -USR1 $MainPID
115     fi
116     echo "Vasum updated. Reboot is required for the changes to take effect..."
117 else
118     echo "Vasum removed. Reboot is required for the changes to take effect..."
119 fi
120
121 ## Client Package ##############################################################
122 %package client
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
129
130 %description client
131 Library interface to the vasum daemon
132
133 %post -n vasum-client -p /sbin/ldconfig
134
135 %postun -n vasum-client -p /sbin/ldconfig
136
137 %files client
138 %if %{platform_type} == "TIZEN"
139 %manifest packaging/libvasum-client.manifest
140 %endif
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
146
147
148 ## Devel Package ###############################################################
149 %package devel
150 Summary:          Vasum Client Devel
151 Group:            Development/Libraries
152 Requires:         vasum = %{epoch}:%{version}-%{release}
153 Requires:         vasum-client = %{epoch}:%{version}-%{release}
154
155 %description devel
156 Development package including the header files for the client library
157
158 %files devel
159 %if %{platform_type} == "TIZEN"
160 %manifest packaging/vasum.manifest
161 %endif
162 %defattr(644,root,root,755)
163 %{_libdir}/libvasum-client.so
164 %{_libdir}/libvasum.so
165 %{_includedir}/vasum
166 %{_libdir}/pkgconfig/vasum-client.pc
167 %{_libdir}/pkgconfig/vasum.pc
168
169
170 ## Zone Support Package ###################################################
171 %package zone-support
172 Summary:          Vasum Support
173 Group:            Security/Other
174
175 %description zone-support
176 Zones support installed inside every zone.
177
178 %files zone-support
179 %if %{platform_type} == "TIZEN"
180 %manifest packaging/vasum-zone-support.manifest
181 %endif
182 %defattr(644,root,root,755)
183 %config /etc/dbus-1/system.d/org.tizen.vasum.zone.conf
184
185
186 ## Zone Daemon Package ####################################################
187 %package zone-daemon
188 Summary:          Vasum Zones Daemon
189 Group:            Security/Other
190 Requires:         vasum-zone-support = %{epoch}:%{version}-%{release}
191
192 %description zone-daemon
193 Daemon running inside every zone.
194
195 %files zone-daemon
196 %if %{platform_type} == "TIZEN"
197 %manifest packaging/vasum-zone-daemon.manifest
198 %endif
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
202
203
204 ## Command Line Interface ######################################################
205 %package cli
206 Summary:          Vasum Command Line Interface
207 Group:            Security/Other
208 Requires:         vasum-client = %{epoch}:%{version}-%{release}
209
210 %description cli
211 Command Line Interface for vasum.
212
213 %files cli
214 %defattr(644,root,root,755)
215 %attr(755,root,root) %{_bindir}/vasum-cli
216
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
222
223 %description cli-completion
224 Command Line Interface bash completion for vasum.
225
226 %files cli-completion
227 %attr(755,root,root) %{_sysconfdir}/bash_completion.d/vasum-cli-completion.sh
228
229 ## Test Package ################################################################
230 %package tests
231 Summary:          Vasum Tests
232 Group:            Development/Libraries
233 Requires:         vasum = %{epoch}:%{version}-%{release}
234 Requires:         vasum-client = %{epoch}:%{version}-%{release}
235 Requires:         python
236 %if %{platform_type} == "TIZEN"
237 Requires:         python-xml
238 %endif
239 Requires:         boost-test
240
241 %description tests
242 Unit tests for both: server and client and integration tests.
243
244 %post tests
245 systemctl daemon-reload
246 systemctl enable vasum-socket-test.socket
247 systemctl start vasum-socket-test.socket
248
249 %preun tests
250 systemctl stop vasum-socket-test.socket
251 systemctl disable vasum-socket-test.socket
252
253 %postun tests
254 systemctl daemon-reload
255
256 %files tests
257 %if %{platform_type} == "TIZEN"
258 %manifest packaging/vasum-server-tests.manifest
259 %endif
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
277
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
285
286 %description -n libLogger
287 The package provides libLogger library.
288
289 %post -n libLogger -p /sbin/ldconfig
290
291 %postun -n libLogger -p /sbin/ldconfig
292
293 %files -n libLogger
294 %defattr(644,root,root,755)
295 %{_libdir}/libLogger.so.0
296 %attr(755,root,root) %{_libdir}/libLogger.so.%{version}
297
298 %package -n libLogger-devel
299 Summary:        Development logger library
300 Group:          Development/Libraries
301 Requires:       libLogger = %{epoch}:%{version}-%{release}
302
303 %description -n libLogger-devel
304 The package provides libLogger development tools and libs.
305
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
311
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
318
319 %description -n libSimpleDbus
320 The package provides libSimpleDbus library.
321
322 %post -n libSimpleDbus -p /sbin/ldconfig
323
324 %postun -n libSimpleDbus -p /sbin/ldconfig
325
326 %files -n libSimpleDbus
327 %defattr(644,root,root,755)
328 %{_libdir}/libSimpleDbus.so.0
329 %attr(755,root,root) %{_libdir}/libSimpleDbus.so.%{version}
330
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)
336
337 %description -n libSimpleDbus-devel
338 The package provides libSimpleDbus development tools and libs.
339
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
345
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
354 %else
355 BuildRequires:      json-c-devel
356 Requires:           json-c
357 %endif
358 Requires(post):     /sbin/ldconfig
359 Requires(postun):   /sbin/ldconfig
360
361 %description -n libConfig
362 The package provides libConfig library.
363
364 %post -n libConfig -p /sbin/ldconfig
365
366 %postun -n libConfig -p /sbin/ldconfig
367
368 %files -n libConfig
369 %defattr(644,root,root,755)
370 %{_libdir}/libConfig.so.0
371 %attr(755,root,root) %{_libdir}/libConfig.so.%{version}
372
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
381 %else
382 Requires:       json-c-devel
383 %endif
384
385 %description -n libConfig-devel
386 The package provides libConfig development tools and libs.
387
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
393
394 ## libIpc Package #######################################################
395 %package -n libIpc
396 Summary:            IPC library
397 Group:              Security/Other
398 BuildRequires:      pkgconfig(libsystemd-daemon)
399 Requires:           libConfig
400 Requires(post):     /sbin/ldconfig
401 Requires(postun):   /sbin/ldconfig
402
403 %description -n libIpc
404 The package provides libIpc library.
405
406 %post -n libIpc -p /sbin/ldconfig
407
408 %postun -n libIpc -p /sbin/ldconfig
409
410 %files -n libIpc
411 %defattr(644,root,root,755)
412 %{_libdir}/libIpc.so.0
413 %attr(755,root,root) %{_libdir}/libIpc.so.%{version}
414
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)
421
422 %description -n libIpc-devel
423 The package provides libIpc development tools and libs.
424
425 %files -n libIpc-devel
426 %defattr(644,root,root,755)
427 %{_libdir}/libIpc.so
428 %{_includedir}/vasum-tools/ipc
429 %{_libdir}/pkgconfig/libIpc.pc