Vasum Wrapper: wrap old api client library #2
[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 %files client
129 %manifest packaging/libvasum-client.manifest
130 %defattr(644,root,root,755)
131 %attr(755,root,root) %{_libdir}/libvasum-client.so.0.1.1
132 %{_libdir}/libvasum-client.so.0
133 %attr(755,root,root) %{_libdir}/libvasum.so.0.1.1
134 %{_libdir}/libvasum.so.0
135
136 %post client -p /sbin/ldconfig
137
138 %postun client -p /sbin/ldconfig
139
140
141 ## Devel Package ###############################################################
142 %package devel
143 Summary:          Vasum Client Devel
144 Group:            Development/Libraries
145 Requires:         vasum = %{version}-%{release}
146 Requires:         vasum-client = %{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.pc
158
159
160 ## Zone Support Package ###################################################
161 %package zone-support
162 Summary:          Vasum Support
163 Group:            Security/Other
164
165 %description zone-support
166 Zones support installed inside every zone.
167
168 %files zone-support
169 %manifest packaging/vasum-zone-support.manifest
170 %defattr(644,root,root,755)
171 %config /etc/dbus-1/system.d/org.tizen.vasum.zone.conf
172
173
174 ## Zone Daemon Package ####################################################
175 %package zone-daemon
176 Summary:          Vasum Zones Daemon
177 Group:            Security/Other
178 Requires:         vasum-zone-support = %{version}-%{release}
179
180 %description zone-daemon
181 Daemon running inside every zone.
182
183 %files zone-daemon
184 %manifest packaging/vasum-zone-daemon.manifest
185 %defattr(644,root,root,755)
186 %attr(755,root,root) %{_bindir}/vasum-zone-daemon
187 %config /etc/dbus-1/system.d/org.tizen.vasum.zone.daemon.conf
188
189
190 ## Command Line Interface ######################################################
191 %package cli
192 Summary:          Vasum Command Line Interface
193 Group:            Security/Other
194 Requires:         vasum-client = %{version}-%{release}
195
196 %description cli
197 Command Line Interface for vasum.
198
199 %files cli
200 %defattr(644,root,root,755)
201 %attr(755,root,root) %{_bindir}/vasum-cli
202
203 %package cli-completion
204 Summary:          Vasum Command Line Interface bash completion
205 Group:            Security/Other
206 Requires:         vasum-cli = %{version}-%{release}
207 #Requires:         bash-completion
208
209 %description cli-completion
210 Command Line Interface bash completion.
211
212 %files cli-completion
213 %attr(755,root,root) %{_sysconfdir}/bash_completion.d/vasum-cli-completion.sh
214
215 ## Test Package ################################################################
216 %package tests
217 Summary:          Vasum Tests
218 Group:            Development/Libraries
219 Requires:         vasum = %{version}-%{release}
220 Requires:         vasum-client = %{version}-%{release}
221 Requires:         python
222 Requires:         python-xml
223 Requires:         boost-test
224
225 %description tests
226 Unit tests for both: server and client and integration tests.
227
228 %post tests
229 systemctl daemon-reload
230 systemctl enable vasum-socket-test.socket
231 systemctl start vasum-socket-test.socket
232
233 %preun tests
234 systemctl stop vasum-socket-test.socket
235 systemctl disable vasum-socket-test.socket
236
237 %postun tests
238 systemctl daemon-reload
239
240 %files tests
241 %manifest packaging/vasum-server-tests.manifest
242 %defattr(644,root,root,755)
243 %attr(755,root,root) %{_bindir}/vasum-server-unit-tests
244 %attr(755,root,root) %{_bindir}/vasum-socket-test
245 %attr(755,root,root) %{script_dir}/vsm_all_tests.py
246 %attr(755,root,root) %{script_dir}/vsm_int_tests.py
247 %attr(755,root,root) %{script_dir}/vsm_launch_test.py
248 %{script_dir}/vsm_test_parser.py
249 %config /etc/vasum/tests
250 %attr(755,root,root) /etc/vasum/tests/lxc-templates
251 %{python_sitelib}/vsm_integration_tests
252 %config /etc/dbus-1/system.d/org.tizen.vasum.tests.conf
253 %{_unitdir}/vasum-socket-test.socket
254 %{_unitdir}/vasum-socket-test.service
255
256 ## libLogger Package ###########################################################
257 %package -n libLogger
258 Summary:            Logger library
259 Group:              Security/Other
260 Requires(post):     /sbin/ldconfig
261 Requires(postun):   /sbin/ldconfig
262
263 %description -n libLogger
264 The package provides libLogger library.
265
266 %post -n libLogger -p /sbin/ldconfig
267
268 %postun -n libLogger -p /sbin/ldconfig
269
270 %files -n libLogger
271 %defattr(644,root,root,755)
272 %{_libdir}/libLogger.so.0
273 %attr(755,root,root) %{_libdir}/libLogger.so.0.0.1
274
275 %package -n libLogger-devel
276 Summary:        Development logger library
277 Group:          Development/Libraries
278 Requires:       libLogger = %{version}-%{release}
279
280 %description -n libLogger-devel
281 The package provides libLogger development tools and libs.
282
283 %files -n libLogger-devel
284 %defattr(644,root,root,755)
285 %{_libdir}/libLogger.so
286 %{_includedir}/vasum-tools/logger
287 %{_libdir}/pkgconfig/libLogger.pc
288
289 ## libSimpleDbus Package #######################################################
290 %package -n libSimpleDbus
291 Summary:            Simple dbus library
292 Group:              Security/Other
293 Requires(post):     /sbin/ldconfig
294 Requires(postun):   /sbin/ldconfig
295
296 %description -n libSimpleDbus
297 The package provides libSimpleDbus library.
298
299 %post -n libSimpleDbus -p /sbin/ldconfig
300
301 %postun -n libSimpleDbus -p /sbin/ldconfig
302
303 %files -n libSimpleDbus
304 %defattr(644,root,root,755)
305 %{_libdir}/libSimpleDbus.so.0
306 %attr(755,root,root) %{_libdir}/libSimpleDbus.so.0.0.1
307
308 %package -n libSimpleDbus-devel
309 Summary:        Development Simple dbus library
310 Group:          Development/Libraries
311 Requires:       libSimpleDbus = %{version}-%{release}
312 Requires:       pkgconfig(libLogger)
313
314 %description -n libSimpleDbus-devel
315 The package provides libSimpleDbus development tools and libs.
316
317 %files -n libSimpleDbus-devel
318 %defattr(644,root,root,755)
319 %{_libdir}/libSimpleDbus.so
320 %{_includedir}/vasum-tools/dbus
321 %{_libdir}/pkgconfig/libSimpleDbus.pc
322
323 ## libConfig Package ##########################################################
324 %package -n libConfig
325 Summary:            Config library
326 Group:              Security/Other
327 Requires(post):     /sbin/ldconfig
328 Requires(postun):   /sbin/ldconfig
329
330 %description -n libConfig
331 The package provides libConfig library.
332
333 %post -n libConfig -p /sbin/ldconfig
334
335 %postun -n libConfig -p /sbin/ldconfig
336
337 %files -n libConfig
338 %defattr(644,root,root,755)
339 %{_libdir}/libConfig.so.0
340 %attr(755,root,root) %{_libdir}/libConfig.so.0.0.1
341
342 %package -n libConfig-devel
343 Summary:        Development Config library
344 Group:          Development/Libraries
345 Requires:       libConfig = %{version}-%{release}
346 Requires:       boost-devel
347 Requires:       pkgconfig(libLogger)
348 Requires:       libjson-devel
349
350 %description -n libConfig-devel
351 The package provides libConfig development tools and libs.
352
353 %files -n libConfig-devel
354 %defattr(644,root,root,755)
355 %{_libdir}/libConfig.so
356 %{_includedir}/vasum-tools/config
357 %{_libdir}/pkgconfig/libConfig.pc
358
359