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