Vasum wrapper #8: implement socket related functions, obsolete vasum-daemon
[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
12 Name:           vasum
13 Epoch:          1
14 Version:        0.1.1
15 Release:        0
16 Source0:        %{name}-%{version}.tar.gz
17 License:        Apache-2.0
18 Group:          Security/Other
19 Summary:        Daemon for managing zones
20 BuildRequires:  cmake
21 BuildRequires:  boost-devel
22 BuildRequires:  libjson-devel >= 0.10
23 BuildRequires:  lxc-devel
24 BuildRequires:  pkgconfig(glib-2.0)
25 BuildRequires:  pkgconfig(sqlite3)
26 Requires(post): libcap-tools
27 Requires:       iproute2
28 Requires:       libjson >= 0.10
29 Obsoletes:      vasum-daemon < 1:0
30
31 %description
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.
35
36 %files
37 %manifest packaging/vasum.manifest
38 %defattr(644,root,root,755)
39 %attr(755,root,root) %{_bindir}/vasum-server
40 %dir /etc/vasum
41 %dir /etc/vasum/zones
42 %dir /etc/vasum/templates
43 %config /etc/vasum/daemon.conf
44 %attr(755,root,root) /etc/vasum/templates/*.sh
45 %config /etc/vasum/templates/*.conf
46 %{_unitdir}/vasum.service
47 %{_unitdir}/vasum.socket
48 %{_unitdir}/multi-user.target.wants/vasum.service
49 %config /etc/dbus-1/system.d/org.tizen.vasum.host.conf
50 %dir %{_datadir}/.zones
51
52 %prep
53 %setup -q
54
55 %build
56 %{!?build_type:%define build_type "RELEASE"}
57
58 %if %{build_type} == "DEBUG" || %{build_type} == "PROFILING"
59     CFLAGS="$CFLAGS -Wp,-U_FORTIFY_SOURCE"
60     CXXFLAGS="$CXXFLAGS -Wp,-U_FORTIFY_SOURCE"
61 %endif
62
63 %cmake . -DVERSION=%{version} \
64          -DCMAKE_BUILD_TYPE=%{build_type} \
65          -DSCRIPT_INSTALL_DIR=%{script_dir} \
66          -DSYSTEMD_UNIT_DIR=%{_unitdir} \
67          -DDATA_DIR=%{_datadir} \
68          -DPYTHON_SITELIB=%{python_sitelib} \
69          -DVASUM_USER=%{vsm_user} \
70          -DINPUT_EVENT_GROUP=%{input_event_group} \
71          -DDISK_GROUP=%{disk_group} \
72          -DTTY_GROUP=%{tty_group} \
73          -DWITHOUT_DBUS=%{?without_dbus}
74 make -k %{?jobs:-j%jobs}
75
76 %install
77 %make_install
78 mkdir -p %{buildroot}/%{_unitdir}/multi-user.target.wants
79 ln -s ../vasum.service %{buildroot}/%{_unitdir}/multi-user.target.wants/vasum.service
80 mkdir -p %{buildroot}/%{_datadir}/.zones
81
82 %clean
83 rm -rf %{buildroot}
84
85 %post
86 # Refresh systemd services list after installation
87 if [ $1 == 1 ]; then
88     systemctl daemon-reload || :
89 fi
90 # set needed caps on the binary to allow restart without loosing them
91 setcap CAP_SYS_ADMIN,CAP_MAC_OVERRIDE,CAP_SYS_TTY_CONFIG+ei %{_bindir}/vasum-server
92
93 %preun
94 # Stop the service before uninstall
95 if [ $1 == 0 ]; then
96      systemctl stop vasum.service || :
97 fi
98
99 %postun
100 # Refresh systemd services list after uninstall/upgrade
101 systemctl daemon-reload || :
102 if [ $1 -ge 1 ]; then
103     # TODO: at this point an appropriate notification should show up
104     eval `systemctl show vasum --property=MainPID`
105     if [ -n "$MainPID" -a "$MainPID" != "0" ]; then
106         kill -USR1 $MainPID
107     fi
108     echo "Vasum updated. Reboot is required for the changes to take effect..."
109 else
110     echo "Vasum removed. Reboot is required for the changes to take effect..."
111 fi
112
113 ## Client Package ##############################################################
114 %package client
115 Summary:          Vasum Client
116 Group:            Development/Libraries
117 Requires:         vasum = %{epoch}:%{version}-%{release}
118 Obsoletes:        vasum < 1:0
119 Requires(post):   /sbin/ldconfig
120 Requires(postun): /sbin/ldconfig
121
122 %description client
123 Library interface to the vasum daemon
124
125 %post -n vasum-client -p /sbin/ldconfig
126
127 %postun -n vasum-client -p /sbin/ldconfig
128
129 %files client
130 %manifest packaging/libvasum-client.manifest
131 %defattr(644,root,root,755)
132 %attr(755,root,root) %{_libdir}/libvasum-client.so.%{version}
133 %{_libdir}/libvasum-client.so.0
134 %attr(755,root,root) %{_libdir}/libvasum.so.%{version}
135 %{_libdir}/libvasum.so.0
136
137
138 ## Devel Package ###############################################################
139 %package devel
140 Summary:          Vasum Client Devel
141 Group:            Development/Libraries
142 Requires:         vasum = %{epoch}:%{version}-%{release}
143 Requires:         vasum-client = %{epoch}:%{version}-%{release}
144
145 %description devel
146 Development package including the header files for the client library
147
148 %files devel
149 %manifest packaging/vasum.manifest
150 %defattr(644,root,root,755)
151 %{_libdir}/libvasum-client.so
152 %{_libdir}/libvasum.so
153 %{_includedir}/vasum
154 %{_libdir}/pkgconfig/vasum-client.pc
155 %{_libdir}/pkgconfig/vasum.pc
156
157
158 ## Zone Support Package ###################################################
159 %package zone-support
160 Summary:          Vasum Support
161 Group:            Security/Other
162
163 %description zone-support
164 Zones support installed inside every zone.
165
166 %files zone-support
167 %manifest packaging/vasum-zone-support.manifest
168 %defattr(644,root,root,755)
169 %config /etc/dbus-1/system.d/org.tizen.vasum.zone.conf
170
171
172 ## Zone Daemon Package ####################################################
173 %package zone-daemon
174 Summary:          Vasum Zones Daemon
175 Group:            Security/Other
176 Requires:         vasum-zone-support = %{epoch}:%{version}-%{release}
177
178 %description zone-daemon
179 Daemon running inside every zone.
180
181 %files zone-daemon
182 %manifest packaging/vasum-zone-daemon.manifest
183 %defattr(644,root,root,755)
184 %attr(755,root,root) %{_bindir}/vasum-zone-daemon
185 %config /etc/dbus-1/system.d/org.tizen.vasum.zone.daemon.conf
186
187
188 ## Command Line Interface ######################################################
189 %package cli
190 Summary:          Vasum Command Line Interface
191 Group:            Security/Other
192 Requires:         vasum-client = %{epoch}:%{version}-%{release}
193
194 %description cli
195 Command Line Interface for vasum.
196
197 %files cli
198 %defattr(644,root,root,755)
199 %attr(755,root,root) %{_bindir}/vasum-cli
200
201 %package cli-completion
202 Summary:          Vasum Command Line Interface bash completion
203 Group:            Security/Other
204 Requires:         vasum-cli = %{epoch}:%{version}-%{release}
205 #Requires:         bash-completion
206
207 %description cli-completion
208 Command Line Interface bash completion for vasum.
209
210 %files cli-completion
211 %attr(755,root,root) %{_sysconfdir}/bash_completion.d/vasum-cli-completion.sh
212
213 ## Test Package ################################################################
214 %package tests
215 Summary:          Vasum Tests
216 Group:            Development/Libraries
217 Requires:         vasum = %{epoch}:%{version}-%{release}
218 Requires:         vasum-client = %{epoch}:%{version}-%{release}
219 Requires:         python
220 Requires:         python-xml
221 Requires:         boost-test
222
223 %description tests
224 Unit tests for both: server and client and integration tests.
225
226 %post tests
227 systemctl daemon-reload
228 systemctl enable vasum-socket-test.socket
229 systemctl start vasum-socket-test.socket
230
231 %preun tests
232 systemctl stop vasum-socket-test.socket
233 systemctl disable vasum-socket-test.socket
234
235 %postun tests
236 systemctl daemon-reload
237
238 %files tests
239 %manifest packaging/vasum-server-tests.manifest
240 %defattr(644,root,root,755)
241 %attr(755,root,root) %{_bindir}/vasum-server-unit-tests
242 %attr(755,root,root) %{_bindir}/vasum-socket-test
243 %attr(755,root,root) %{script_dir}/vsm_all_tests.py
244 %attr(755,root,root) %{script_dir}/vsm_int_tests.py
245 %attr(755,root,root) %{script_dir}/vsm_launch_test.py
246 %{script_dir}/vsm_test_parser.py
247 %config /etc/vasum/tests/*.conf
248 %config /etc/vasum/tests/dbus/*.conf
249 %config /etc/vasum/tests/provision/*.conf
250 %config /etc/vasum/tests/templates/*.conf
251 %attr(755,root,root) /etc/vasum/tests/templates/*.sh
252 %config /etc/vasum/tests/utils/*.txt
253 %{python_sitelib}/vsm_integration_tests
254 %config /etc/dbus-1/system.d/org.tizen.vasum.tests.conf
255 %{_unitdir}/vasum-socket-test.socket
256 %{_unitdir}/vasum-socket-test.service
257
258 ## libLogger Package ###########################################################
259 %package -n libLogger
260 Summary:            Logger library
261 Group:              Security/Other
262 BuildRequires:      pkgconfig(libsystemd-journal)
263 Requires(post):     /sbin/ldconfig
264 Requires(postun):   /sbin/ldconfig
265
266 %description -n libLogger
267 The package provides libLogger library.
268
269 %post -n libLogger -p /sbin/ldconfig
270
271 %postun -n libLogger -p /sbin/ldconfig
272
273 %files -n libLogger
274 %defattr(644,root,root,755)
275 %{_libdir}/libLogger.so.0
276 %attr(755,root,root) %{_libdir}/libLogger.so.%{version}
277
278 %package -n libLogger-devel
279 Summary:        Development logger library
280 Group:          Development/Libraries
281 Requires:       libLogger = %{epoch}:%{version}-%{release}
282
283 %description -n libLogger-devel
284 The package provides libLogger development tools and libs.
285
286 %files -n libLogger-devel
287 %defattr(644,root,root,755)
288 %{_libdir}/libLogger.so
289 %{_includedir}/vasum-tools/logger
290 %{_libdir}/pkgconfig/libLogger.pc
291
292 ## libSimpleDbus Package #######################################################
293 %package -n libSimpleDbus
294 Summary:            Simple dbus library
295 Group:              Security/Other
296 Requires(post):     /sbin/ldconfig
297 Requires(postun):   /sbin/ldconfig
298
299 %description -n libSimpleDbus
300 The package provides libSimpleDbus library.
301
302 %post -n libSimpleDbus -p /sbin/ldconfig
303
304 %postun -n libSimpleDbus -p /sbin/ldconfig
305
306 %files -n libSimpleDbus
307 %defattr(644,root,root,755)
308 %{_libdir}/libSimpleDbus.so.0
309 %attr(755,root,root) %{_libdir}/libSimpleDbus.so.%{version}
310
311 %package -n libSimpleDbus-devel
312 Summary:        Development Simple dbus library
313 Group:          Development/Libraries
314 Requires:       libSimpleDbus = %{epoch}:%{version}-%{release}
315 Requires:       pkgconfig(libLogger)
316
317 %description -n libSimpleDbus-devel
318 The package provides libSimpleDbus development tools and libs.
319
320 %files -n libSimpleDbus-devel
321 %defattr(644,root,root,755)
322 %{_libdir}/libSimpleDbus.so
323 %{_includedir}/vasum-tools/dbus
324 %{_libdir}/pkgconfig/libSimpleDbus.pc
325
326 ## libConfig Package ##########################################################
327 %package -n libConfig
328 Summary:            Config library
329 Group:              Security/Other
330 Requires(post):     /sbin/ldconfig
331 Requires(postun):   /sbin/ldconfig
332
333 %description -n libConfig
334 The package provides libConfig library.
335
336 %post -n libConfig -p /sbin/ldconfig
337
338 %postun -n libConfig -p /sbin/ldconfig
339
340 %files -n libConfig
341 %defattr(644,root,root,755)
342 %{_libdir}/libConfig.so.0
343 %attr(755,root,root) %{_libdir}/libConfig.so.%{version}
344
345 %package -n libConfig-devel
346 Summary:        Development Config library
347 Group:          Development/Libraries
348 Requires:       libConfig = %{epoch}:%{version}-%{release}
349 Requires:       boost-devel
350 Requires:       pkgconfig(libLogger)
351 Requires:       libjson-devel
352
353 %description -n libConfig-devel
354 The package provides libConfig development tools and libs.
355
356 %files -n libConfig-devel
357 %defattr(644,root,root,755)
358 %{_libdir}/libConfig.so
359 %{_includedir}/vasum-tools/config
360 %{_libdir}/pkgconfig/libConfig.pc
361
362 ## libIpc Package #######################################################
363 %package -n libIpc
364 Summary:            IPC library
365 Group:              Security/Other
366 BuildRequires:      pkgconfig(libsystemd-daemon)
367 Requires:           libConfig
368 Requires(post):     /sbin/ldconfig
369 Requires(postun):   /sbin/ldconfig
370
371 %description -n libIpc
372 The package provides libIpc library.
373
374 %post -n libIpc -p /sbin/ldconfig
375
376 %postun -n libIpc -p /sbin/ldconfig
377
378 %files -n libIpc
379 %defattr(644,root,root,755)
380 %{_libdir}/libIpc.so.0
381 %attr(755,root,root) %{_libdir}/libIpc.so.%{version}
382
383 %package -n libIpc-devel
384 Summary:        Development IPC library
385 Group:          Development/Libraries
386 Requires:       libIpc = %{epoch}:%{version}-%{release}
387 Requires:       pkgconfig(libLogger)
388 Requires:       pkgconfig(libConfig)
389
390 %description -n libIpc-devel
391 The package provides libIpc development tools and libs.
392
393 %files -n libIpc-devel
394 %defattr(644,root,root,755)
395 %{_libdir}/libIpc.so
396 %{_includedir}/vasum-tools/ipc
397 %{_libdir}/pkgconfig/libIpc.pc