Remove `libcap` from build requirements
[platform/core/system/dlog.git] / packaging / dlog.spec
1 %define _with_dlog_dynamic_filters on
2 %bcond_with dlog_dynamic_filters
3
4 Name:       dlog
5 Summary:    Logging service
6 Version:    6.5.8
7 Release:    1
8 Group:      System/Libraries
9 License:    Apache-2.0, MIT
10 Source0:    %{name}-%{version}.tar.gz
11 Source101:  packaging/dlog.manifest
12 Source501:  packaging/01-dlog.rules
13 Source502:  packaging/logger-devices.conf
14
15 # NOTE: hardcoded instead of a build dependency on libudev.
16 #       Needed to prevent a cyclic build dependency in case
17 #       dlog is used in a package dependent on libsystemd,
18 #       since libudev is a part of it
19 %define _udevrulesdir %{_prefix}/lib/udev/rules.d
20
21 BuildRequires: autoconf
22 BuildRequires: automake
23 BuildRequires: libtool
24 BuildRequires: pkgconfig(capi-base-common)
25 BuildRequires: pkgconfig(libtzplatform-config)
26 %if 0%{?gcov:1}
27 BuildRequires: lcov
28 BuildRequires: zip
29 %endif
30
31 Requires:      %{name}-config-persistent-logs
32 Obsoletes:     %{name}-common < 6.5.3
33
34 %description
35 Shared files between libdlog and service
36
37 %package -n libdlog
38 Summary:    dlog library APIs
39 License:    MIT
40 Group:      Development/Libraries
41 Requires(pre): coreutils
42 Requires(post): coreutils
43 Requires(post): /sbin/ldconfig
44 Requires(post): /usr/bin/chsmack
45 Requires(postun): /sbin/ldconfig
46 Requires: %{name} = %{version}-%{release}
47 Requires: %{name}-logger = %{version}-%{release}
48 Obsoletes: libdlogutil < 6.5.3
49 Obsoletes: libdlog-redirect-stdout < 6.5.3
50 %description -n libdlog
51 * libdlog - client API
52 * libdlogutil - log retrieval library
53 * libdlog_redirect_stdout - client library for attaching stdout/stderr
54
55 %package -n libdlog-devel
56 Summary:    Logging service dlog API
57 License:    MIT
58 Group:      Development/Libraries
59 Requires:   libdlog = %{version}-%{release}
60 Requires:   pkgconfig(capi-base-common)
61 Obsoletes:  libdlogutil-devel < 6.5.3
62 Obsoletes:  libdlog-redirect-stdout-devel < 6.5.3
63 %description -n libdlog-devel
64
65 %package    logger
66 Summary:    Logger service
67 License:    Apache-2.0
68 Group:      Development/Libraries
69 Requires:   %{name} = %{version}-%{release}
70 %description logger
71
72 %package -n dlogutil
73 Summary:    print log data to the screen
74 Group:      Development/Libraries
75 %description -n dlogutil
76
77 %package    config-backend-logger
78 Summary:    Android-logger backend selection for dlog
79 %description config-backend-logger
80 Change dlog backend to logger backend. Require kernel support (Android-logger)
81
82 %package config-syslog
83 License:    Apache-2.0
84 Summary:    Logger: syslog-source logging via dlog
85 Group:      Base/Startup
86 Provides:   tizen-log-syslog
87 %description config-syslog
88 Systemd unit for syslog socket configation to use with dlog
89
90 %package config-persistent-logs
91 Summary: enable persistent storage of logs
92 %description config-persistent-logs
93 Enable persistent logs in dlog (stored in /var/log/dlog/)
94
95 %package config-qos
96 Summary: enable quality of service module
97 %description config-qos
98 Enables Quality of Service module in dlog
99
100 %package doc
101 Summary: dlog documentation
102 BuildRequires: doxygen
103 %description doc
104 Documentation for dlog
105
106 %package tests
107 Summary: dlog integration tests
108 Requires: lib%{name} = %{version}-%{release}
109 Requires(post): /usr/bin/chsmack
110 %description tests
111 Integration tests for dlog.
112
113 %if 0%{?gcov:1}
114 %package gcov
115 Summary:  gcov files for libdlog
116 Group:    Development/Libraries
117 %description gcov
118 This package contains gcov code coverage/profiling files for libdlog.
119 %endif
120
121 %prep
122 %setup -q
123
124 %build
125 # TODO: Respect the defaults, and have all custom flags in one place
126 CFLAGS="-Wno-gnu-variable-sized-type-not-at-end -g"
127
128 %if 0%{?gcov:1}
129 export CFLAGS+=" -fprofile-arcs -ftest-coverage"
130 export CXXFLAGS+=" -fprofile-arcs -ftest-coverage"
131 export LDFLAGS+=" -lgcov"
132 %endif
133
134
135 cp %{SOURCE101} .
136
137 %autogen --disable-static
138 %configure --disable-static \
139 %if %{without dlog_dynamic_filters}
140 --disable-dynamic-filters
141 %else
142 --enable-dynamic-filters
143 %endif
144
145 make %{?jobs:-j%jobs} CFLAGS+='-D__DLOG_VERSION=\"%{version}\" -D__DLOG_RELEASE=\"%{release}\"'
146
147 # autoconf adds a bunch of flags, including -O2.
148 # Clear those so that test coverage can be measured properly
149 %if 0%{?gcov:1}
150 make check CFLAGS='-Wno-gnu-variable-sized-type-not-at-end -Wno-logical-op-parentheses -ftest-coverage -D__DLOG_VERSION=\"%{version}\" -D__DLOG_RELEASE=\"%{release}\"'
151 %else
152 make check CFLAGS='-Wno-gnu-variable-sized-type-not-at-end -Wno-logical-op-parentheses -D__DLOG_VERSION=\"%{version}\" -D__DLOG_RELEASE=\"%{release}\"'
153 %endif
154
155 make dox
156
157 %if 0%{?gcov:1}
158 mkdir -p gcov-obj
159 find ./src/libdlog -name '*.gcno' -exec cp '{}' gcov-obj ';'
160 %endif
161
162 %if 0%{?gcov:1}
163 %check -n libdlog
164 lcov -c --ignore-errors graph --no-external -q -d ./src/libdlog -o dlog.info
165 genhtml dlog.info -o dlog.out
166 zip -r dlog.zip dlog.out dlog.info
167 install -m 0644 dlog.zip %{buildroot}%{_datadir}/gcov/
168 %endif
169
170 %install
171 rm -rf %{buildroot}
172
173 %make_install
174 mkdir -p %{buildroot}/usr/bin/
175
176 mkdir -p %{buildroot}/usr/share/doc/dlog
177 cp -r documentation/* %{buildroot}/usr/share/doc/dlog
178
179 mkdir -p %{buildroot}%{_unitdir}/basic.target.wants/
180 mkdir -p %{buildroot}%{_unitdir}/sockets.target.wants/
181 ln -s ../dlog_logger.service %{buildroot}%{_unitdir}/basic.target.wants/dlog_logger.service
182 ln -s ../dlog_dev-log.socket %{buildroot}%{_unitdir}/sockets.target.wants/dlog_dev-log.socket
183
184 mkdir -p %{buildroot}%{_udevrulesdir}
185 install -m 0644 %SOURCE501 %{buildroot}%{_udevrulesdir}/01-dlog.rules
186
187 mkdir -p %{buildroot}%{_unitdir}/dlog_logger.service.d
188 install -m 0644 %SOURCE502 %{buildroot}%{_unitdir}/dlog_logger.service.d/logger-devices.conf
189
190 mkdir -p %{buildroot}/var/log/dlog
191
192 mkdir -p %{buildroot}/var/lib/dlog-tests
193 mkdir -p %{buildroot}/usr/share/dlog-filters.conf.test
194
195 %if %{without dlog_dynamic_filters}
196 rm -f %{buildroot}%{_bindir}/dlogctl
197 sed -i -e 's,^\(dynamic_config_path=\),#\1,g' -e 's,^\(limiter_apply_to_all_buffers=\),#\1,g' %{buildroot}%{_sysconfdir}/dlog.conf
198 %endif
199
200 %if 0%{?gcov:1}
201 mkdir -p %{buildroot}%{_datadir}/gcov/obj
202 install -m 0644 gcov-obj/* %{buildroot}%{_datadir}/gcov/obj
203 %endif
204
205 %files -n dlogutil
206 %manifest dlog.manifest
207 %license LICENSE.APACHE2.0 LICENSE.MIT
208 %attr(750,log,log) %{_bindir}/dlogutil
209 %attr(755,log,log) %{_bindir}/dlogsend
210 %attr(750,log,log) %{_bindir}/dlog_cleanup
211 %attr(750,log,log) %{_bindir}/dlogmetrics
212 %attr(755,log,log) %{_bindir}/dlog_redirect_stdout
213 %{_unitdir}/dlog_cleanup.service
214
215 %if %{with dlog_dynamic_filters}
216 %attr(750,log,log) %{_bindir}/dlogctl
217 %endif
218
219 %post -n dlogutil
220 %if %{with dlog_dynamic_filters}
221 chsmack %{_bindir}/dlogctl -a "System::Tools"
222 %endif
223
224 %post -n libdlog -p /sbin/ldconfig
225
226 %post
227 chsmack -a System /var/log/dlog
228 # set timestamp to beginning of the unix epoch to make rotation work even if we are run on system with no/broken rtc
229 touch -m -t 197001010000.01 /var/log/dlog/critical.a
230 touch -m -t 197001010000.00 /var/log/dlog/critical.b
231 chmod 660 /var/log/dlog/critical*
232 chown log:log /var/log/dlog/critical*
233 chsmack -e 'System' %{_libexecdir}/dlog-log-critical
234
235 %files
236 %manifest dlog.manifest
237 %license LICENSE.APACHE2.0
238 %{_sysconfdir}/dlog.conf
239 %{_sysconfdir}/dlog.conf.d/20-pipe.conf
240 %attr(755,log,log) /var/log/dlog
241 %attr(2551,log,log) %{_libexecdir}/dlog-log-critical
242 /usr/lib/tmpfiles.d/dlog-run.conf
243 %{_udevrulesdir}/01-dlog.rules
244
245 %files -n libdlog
246 %manifest dlog.manifest
247 %license LICENSE.MIT
248 %{_libdir}/libdlog.so.0
249 %{_libdir}/libdlog.so.0.0.0
250 %{_libdir}/libdlogutil.so.*
251 %{_libdir}/libdlog_redirect_stdout.so.*
252
253 %files -n libdlog-devel
254 %manifest dlog.manifest
255 %license LICENSE.MIT
256 %{_includedir}/dlog/dlog.h
257 %{_includedir}/dlog/dlog-internal.h
258 %{_includedir}/dlog/dlogutil.h
259 %{_includedir}/dlog/dlog-redirect-stdout.h
260 %{_libdir}/libdlog.so
261 %{_libdir}/libdlogutil.so
262 %{_libdir}/libdlog_redirect_stdout.so
263 %{_libdir}/pkgconfig/dlog.pc
264 %{_libdir}/pkgconfig/dlogutil.pc
265 %{_libdir}/pkgconfig/dlog-redirect-stdout.pc
266
267 %files logger
268 %manifest dlog.manifest
269 %license LICENSE.APACHE2.0
270 %attr(750,log,log) %{_bindir}/dlog_logger
271 %{_unitdir}/basic.target.wants/dlog_logger.service
272 %{_unitdir}/dlog_logger.service
273
274 %files config-backend-logger
275 %manifest dlog.manifest
276 %license LICENSE.APACHE2.0 LICENSE.MIT
277 %{_sysconfdir}/dlog.conf.d/25-logger.conf
278 %{_unitdir}/dlog_logger.service.d/logger-devices.conf
279
280 %files config-syslog
281 %manifest dlog.manifest
282 %license LICENSE.APACHE2.0 LICENSE.MIT
283 %{_unitdir}/sockets.target.wants/dlog_dev-log.socket
284 %{_unitdir}/dlog_dev-log.socket
285
286 %files config-persistent-logs
287 %{_sysconfdir}/dlog.conf.d/10-persistent-logs.conf
288
289 %files config-qos
290 %{_sysconfdir}/dlog.conf.d/15-qos.conf
291
292 %files doc
293 %manifest dlog.manifest
294 %license LICENSE.APACHE2.0 LICENSE.MIT
295 /usr/share/doc/dlog
296
297 %files tests
298 %manifest dlog.manifest
299 %license LICENSE.APACHE2.0 LICENSE.MIT
300 %{_bindir}/dlog_test
301 %{_bindir}/dlog_cpu
302 /usr/share/doc/dlog/README.testsuite
303 %{_libexecdir}/libdlog/perf_libdlog
304 %{_libexecdir}/libdlog/test_libdlog
305 %{_libexecdir}/libdlog/test_libdlogutil
306 %{_libexecdir}/libdlog/test_libredirect
307 %{_libexecdir}/libdlog/test_filters
308 %{_datadir}/dlog-pipe.conf.test
309 %{_datadir}/dlog-logger.conf.test
310 %{_datadir}/dlog-logger.conf.alias
311 %{_datadir}/dlog-pipe.conf.cpu
312 %{_datadir}/dlog-logger.conf.cpu
313 %{_datadir}/dlog-pipe.conf.qos
314 %{_datadir}/dlog-logger.conf.qos
315 %{_sysconfdir}/dlog.conf.d/99-dlog-logger.disable-platform-logging-for-testsuite.conf
316 %dir %attr(755,log,log) /var/lib/dlog-tests
317 %dir %attr(755,log,log) /usr/share/dlog-filters.conf.test
318
319 %post tests
320 chsmack -a System /var/lib/dlog-tests
321 echo "Warning! Installation of dlog-tests will break platform logging."
322 echo "This is done intentionally, to make logger backend testing possible."
323 echo "To restore normal behavior, please uninstall dlog-tests package."
324 echo ""
325 echo "For more information please read the /usr/share/doc/dlog/README.testsuite file"
326 echo ""
327 echo "A reboot is required to properly configure logger backend for testing."
328
329 %if 0%{?gcov:1}
330 %files gcov
331 %{_datadir}/gcov/*
332 %endif