Various changes relating to build on Fedora Linux.
[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:       iproute
32 Requires(post): libcap
33 %endif
34 Obsoletes:      vasum-daemon < 1:0
35
36 %description
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.
40
41 %files
42 %if %{platform_type} == "TIZEN"
43 %manifest packaging/vasum.manifest
44 %endif
45 %defattr(644,root,root,755)
46 %attr(755,root,root) %{_bindir}/vasum-server
47 %dir /etc/vasum
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
57
58 %prep
59 %setup -q
60
61 %build
62 %{!?build_type:%define build_type "RELEASE"}
63
64 %if %{build_type} == "DEBUG" || %{build_type} == "PROFILING"
65     CFLAGS="$CFLAGS -Wp,-U_FORTIFY_SOURCE"
66     CXXFLAGS="$CXXFLAGS -Wp,-U_FORTIFY_SOURCE"
67 %endif
68
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}
81
82 %install
83 %make_install
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
87
88 %clean
89 rm -rf %{buildroot}
90
91 %post
92 # Refresh systemd services list after installation
93 if [ $1 == 1 ]; then
94     systemctl daemon-reload || :
95 fi
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
98
99 %preun
100 # Stop the service before uninstall
101 if [ $1 == 0 ]; then
102      systemctl stop vasum.service || :
103 fi
104
105 %postun
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
112         kill -USR1 $MainPID
113     fi
114     echo "Vasum updated. Reboot is required for the changes to take effect..."
115 else
116     echo "Vasum removed. Reboot is required for the changes to take effect..."
117 fi
118
119 ## Client Package ##############################################################
120 %package client
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
127
128 %description client
129 Library interface to the vasum daemon
130
131 %post -n vasum-client -p /sbin/ldconfig
132
133 %postun -n vasum-client -p /sbin/ldconfig
134
135 %files client
136 %if %{platform_type} == "TIZEN"
137 %manifest packaging/libvasum-client.manifest
138 %endif
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
144
145
146 ## Devel Package ###############################################################
147 %package devel
148 Summary:          Vasum Client Devel
149 Group:            Development/Libraries
150 Requires:         vasum = %{epoch}:%{version}-%{release}
151 Requires:         vasum-client = %{epoch}:%{version}-%{release}
152
153 %description devel
154 Development package including the header files for the client library
155
156 %files devel
157 %if %{platform_type} == "TIZEN"
158 %manifest packaging/vasum.manifest
159 %endif
160 %defattr(644,root,root,755)
161 %{_libdir}/libvasum-client.so
162 %{_libdir}/libvasum.so
163 %{_includedir}/vasum
164 %{_libdir}/pkgconfig/vasum-client.pc
165 %{_libdir}/pkgconfig/vasum.pc
166
167
168 ## Zone Support Package ###################################################
169 %package zone-support
170 Summary:          Vasum Support
171 Group:            Security/Other
172
173 %description zone-support
174 Zones support installed inside every zone.
175
176 %files zone-support
177 %if %{platform_type} == "TIZEN"
178 %manifest packaging/vasum-zone-support.manifest
179 %endif
180 %defattr(644,root,root,755)
181 %config /etc/dbus-1/system.d/org.tizen.vasum.zone.conf
182
183
184 ## Zone Daemon Package ####################################################
185 %package zone-daemon
186 Summary:          Vasum Zones Daemon
187 Group:            Security/Other
188 Requires:         vasum-zone-support = %{epoch}:%{version}-%{release}
189
190 %description zone-daemon
191 Daemon running inside every zone.
192
193 %files zone-daemon
194 %if %{platform_type} == "TIZEN"
195 %manifest packaging/vasum-zone-daemon.manifest
196 %endif
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
200
201
202 ## Command Line Interface ######################################################
203 %package cli
204 Summary:          Vasum Command Line Interface
205 Group:            Security/Other
206 Requires:         vasum-client = %{epoch}:%{version}-%{release}
207
208 %description cli
209 Command Line Interface for vasum.
210
211 %files cli
212 %defattr(644,root,root,755)
213 %attr(755,root,root) %{_bindir}/vasum-cli
214
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
220
221 %description cli-completion
222 Command Line Interface bash completion for vasum.
223
224 %files cli-completion
225 %attr(755,root,root) %{_sysconfdir}/bash_completion.d/vasum-cli-completion.sh
226
227 ## Test Package ################################################################
228 %package tests
229 Summary:          Vasum Tests
230 Group:            Development/Libraries
231 Requires:         vasum = %{epoch}:%{version}-%{release}
232 Requires:         vasum-client = %{epoch}:%{version}-%{release}
233 Requires:         python
234 %if %{platform_type} == "TIZEN"
235 Requires:         python-xml
236 %endif
237 Requires:         boost-test
238
239 %description tests
240 Unit tests for both: server and client and integration tests.
241
242 %post tests
243 systemctl daemon-reload
244 systemctl enable vasum-socket-test.socket
245 systemctl start vasum-socket-test.socket
246
247 %preun tests
248 systemctl stop vasum-socket-test.socket
249 systemctl disable vasum-socket-test.socket
250
251 %postun tests
252 systemctl daemon-reload
253
254 %files tests
255 %if %{platform_type} == "TIZEN"
256 %manifest packaging/vasum-server-tests.manifest
257 %endif
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
275
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
283
284 %description -n libLogger
285 The package provides libLogger library.
286
287 %post -n libLogger -p /sbin/ldconfig
288
289 %postun -n libLogger -p /sbin/ldconfig
290
291 %files -n libLogger
292 %defattr(644,root,root,755)
293 %{_libdir}/libLogger.so.0
294 %attr(755,root,root) %{_libdir}/libLogger.so.%{version}
295
296 %package -n libLogger-devel
297 Summary:        Development logger library
298 Group:          Development/Libraries
299 Requires:       libLogger = %{epoch}:%{version}-%{release}
300
301 %description -n libLogger-devel
302 The package provides libLogger development tools and libs.
303
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
309
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
316
317 %description -n libSimpleDbus
318 The package provides libSimpleDbus library.
319
320 %post -n libSimpleDbus -p /sbin/ldconfig
321
322 %postun -n libSimpleDbus -p /sbin/ldconfig
323
324 %files -n libSimpleDbus
325 %defattr(644,root,root,755)
326 %{_libdir}/libSimpleDbus.so.0
327 %attr(755,root,root) %{_libdir}/libSimpleDbus.so.%{version}
328
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)
334
335 %description -n libSimpleDbus-devel
336 The package provides libSimpleDbus development tools and libs.
337
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
343
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
352 %else
353 BuildRequires:      json-c-devel
354 Requires:           json-c
355 %endif
356 Requires(post):     /sbin/ldconfig
357 Requires(postun):   /sbin/ldconfig
358
359 %description -n libConfig
360 The package provides libConfig library.
361
362 %post -n libConfig -p /sbin/ldconfig
363
364 %postun -n libConfig -p /sbin/ldconfig
365
366 %files -n libConfig
367 %defattr(644,root,root,755)
368 %{_libdir}/libConfig.so.0
369 %attr(755,root,root) %{_libdir}/libConfig.so.%{version}
370
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
379 %else
380 Requires:       json-c-devel
381 %endif
382
383 %description -n libConfig-devel
384 The package provides libConfig development tools and libs.
385
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
391
392 ## libIpc Package #######################################################
393 %package -n libIpc
394 Summary:            IPC library
395 Group:              Security/Other
396 BuildRequires:      pkgconfig(libsystemd-daemon)
397 Requires:           libConfig
398 Requires(post):     /sbin/ldconfig
399 Requires(postun):   /sbin/ldconfig
400
401 %description -n libIpc
402 The package provides libIpc library.
403
404 %post -n libIpc -p /sbin/ldconfig
405
406 %postun -n libIpc -p /sbin/ldconfig
407
408 %files -n libIpc
409 %defattr(644,root,root,755)
410 %{_libdir}/libIpc.so.0
411 %attr(755,root,root) %{_libdir}/libIpc.so.%{version}
412
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)
419
420 %description -n libIpc-devel
421 The package provides libIpc development tools and libs.
422
423 %files -n libIpc-devel
424 %defattr(644,root,root,755)
425 %{_libdir}/libIpc.so
426 %{_includedir}/vasum-tools/ipc
427 %{_libdir}/pkgconfig/libIpc.pc