Vasum wrapper #3, fixes, API update
[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:  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
32
33 %description
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.
37
38 %files
39 %manifest packaging/vasum.manifest
40 %defattr(644,root,root,755)
41 %attr(755,root,root) %{_bindir}/vasum-server
42 %dir /etc/vasum
43 %dir /etc/vasum/zones
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
54
55 %prep
56 %setup -q
57
58 %build
59 %{!?build_type:%define build_type "RELEASE"}
60
61 %if %{build_type} == "DEBUG" || %{build_type} == "PROFILING"
62     CFLAGS="$CFLAGS -Wp,-U_FORTIFY_SOURCE"
63     CXXFLAGS="$CXXFLAGS -Wp,-U_FORTIFY_SOURCE"
64 %endif
65
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}
78
79 %install
80 %make_install
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
84
85 %clean
86 rm -rf %{buildroot}
87
88 %post
89 # Refresh systemd services list after installation
90 if [ $1 == 1 ]; then
91     systemctl daemon-reload || :
92 fi
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
95
96 %preun
97 # Stop the service before uninstall
98 if [ $1 == 0 ]; then
99      systemctl stop vasum.service || :
100 fi
101
102 %postun
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
109         kill -USR1 $MainPID
110     fi
111     echo "Vasum updated. Reboot is required for the changes to take effect..."
112 else
113     echo "Vasum removed. Reboot is required for the changes to take effect..."
114 fi
115
116 ## Client Package ##############################################################
117 %package client
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
124
125 %description client
126 Library interface to the vasum daemon
127
128 %post -n vasum-client -p /sbin/ldconfig
129
130 %postun -n vasum-client -p /sbin/ldconfig
131
132 %files client
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
139
140
141 ## Devel Package ###############################################################
142 %package devel
143 Summary:          Vasum Client Devel
144 Group:            Development/Libraries
145 Requires:         vasum = %{epoch}:%{version}-%{release}
146 Requires:         vasum-client = %{epoch}:%{version}-%{release}
147
148 %description devel
149 Development package including the header files for the client library
150
151 %files devel
152 %manifest packaging/vasum.manifest
153 %defattr(644,root,root,755)
154 %{_libdir}/libvasum-client.so
155 %{_libdir}/libvasum.so
156 %{_includedir}/vasum
157 %{_libdir}/pkgconfig/vasum-client.pc
158 %{_libdir}/pkgconfig/vasum.pc
159
160
161 ## Zone Support Package ###################################################
162 %package zone-support
163 Summary:          Vasum Support
164 Group:            Security/Other
165
166 %description zone-support
167 Zones support installed inside every zone.
168
169 %files zone-support
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
173
174
175 ## Zone Daemon Package ####################################################
176 %package zone-daemon
177 Summary:          Vasum Zones Daemon
178 Group:            Security/Other
179 Requires:         vasum-zone-support = %{epoch}:%{version}-%{release}
180
181 %description zone-daemon
182 Daemon running inside every zone.
183
184 %files zone-daemon
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
189
190
191 ## Command Line Interface ######################################################
192 %package cli
193 Summary:          Vasum Command Line Interface
194 Group:            Security/Other
195 Requires:         vasum-client = %{epoch}:%{version}-%{release}
196
197 %description cli
198 Command Line Interface for vasum.
199
200 %files cli
201 %defattr(644,root,root,755)
202 %attr(755,root,root) %{_bindir}/vasum-cli
203
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
209
210 %description cli-completion
211 Command Line Interface bash completion for vasum.
212
213 %files cli-completion
214 %attr(755,root,root) %{_sysconfdir}/bash_completion.d/vasum-cli-completion.sh
215
216 ## Test Package ################################################################
217 %package tests
218 Summary:          Vasum Tests
219 Group:            Development/Libraries
220 Requires:         vasum = %{epoch}:%{version}-%{release}
221 Requires:         vasum-client = %{epoch}:%{version}-%{release}
222 Requires:         python
223 Requires:         python-xml
224 Requires:         boost-test
225
226 %description tests
227 Unit tests for both: server and client and integration tests.
228
229 %post tests
230 systemctl daemon-reload
231 systemctl enable vasum-socket-test.socket
232 systemctl start vasum-socket-test.socket
233
234 %preun tests
235 systemctl stop vasum-socket-test.socket
236 systemctl disable vasum-socket-test.socket
237
238 %postun tests
239 systemctl daemon-reload
240
241 %files tests
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
256
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
263
264 %description -n libLogger
265 The package provides libLogger library.
266
267 %post -n libLogger -p /sbin/ldconfig
268
269 %postun -n libLogger -p /sbin/ldconfig
270
271 %files -n libLogger
272 %defattr(644,root,root,755)
273 %{_libdir}/libLogger.so.0
274 %attr(755,root,root) %{_libdir}/libLogger.so.%{version}
275
276 %package -n libLogger-devel
277 Summary:        Development logger library
278 Group:          Development/Libraries
279 Requires:       libLogger = %{epoch}:%{version}-%{release}
280
281 %description -n libLogger-devel
282 The package provides libLogger development tools and libs.
283
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
289
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
296
297 %description -n libSimpleDbus
298 The package provides libSimpleDbus library.
299
300 %post -n libSimpleDbus -p /sbin/ldconfig
301
302 %postun -n libSimpleDbus -p /sbin/ldconfig
303
304 %files -n libSimpleDbus
305 %defattr(644,root,root,755)
306 %{_libdir}/libSimpleDbus.so.0
307 %attr(755,root,root) %{_libdir}/libSimpleDbus.so.%{version}
308
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)
314
315 %description -n libSimpleDbus-devel
316 The package provides libSimpleDbus development tools and libs.
317
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
323
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
330
331 %description -n libConfig
332 The package provides libConfig library.
333
334 %post -n libConfig -p /sbin/ldconfig
335
336 %postun -n libConfig -p /sbin/ldconfig
337
338 %files -n libConfig
339 %defattr(644,root,root,755)
340 %{_libdir}/libConfig.so.0
341 %attr(755,root,root) %{_libdir}/libConfig.so.%{version}
342
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
350
351 %description -n libConfig-devel
352 The package provides libConfig development tools and libs.
353
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
359
360