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