1 %define _with_dlog_dynamic_filters on
2 %bcond_with dlog_dynamic_filters
5 Summary: Logging service
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
14 # NOTE: hardcoded instead of a build dependency on libudev.
15 # Needed to prevent a cyclic build dependency in case
16 # dlog is used in a package dependent on libsystemd,
17 # since libudev is a part of it
18 %define _udevrulesdir %{_prefix}/lib/udev/rules.d
20 BuildRequires: autoconf
21 BuildRequires: automake
22 BuildRequires: libtool
23 BuildRequires: pkgconfig(capi-base-common)
24 BuildRequires: pkgconfig(libtzplatform-config)
25 BuildRequires: linux-tizen-modules-headers
26 BuildRequires: pkgconfig(vconf)
27 BuildRequires: pkgconfig(gio-2.0)
33 Requires: %{name}-config-persistent-logs
34 Obsoletes: %{name}-common < 6.5.3
37 Shared files between libdlog and service
40 Summary: dlog library APIs
42 Group: Development/Libraries
43 Requires(pre): coreutils
44 Requires(post): coreutils
45 Requires(post): /sbin/ldconfig
46 Requires(post): /usr/bin/chsmack
47 Requires(postun): /sbin/ldconfig
48 Requires: %{name} = %{version}-%{release}
49 Requires: %{name}-logger = %{version}-%{release}
50 Obsoletes: libdlogutil < 6.5.3
51 Obsoletes: libdlog-redirect-stdout < 6.5.3
52 %description -n libdlog
53 * libdlog - client API
54 * libdlogutil - log retrieval library
55 * libdlog_redirect_stdout - client library for attaching stdout/stderr
57 %package -n libdlog-devel
58 Summary: Logging service dlog API
60 Group: Development/Libraries
61 Requires: libdlog = %{version}-%{release}
62 Requires: pkgconfig(capi-base-common)
63 Obsoletes: libdlogutil-devel < 6.5.3
64 Obsoletes: libdlog-redirect-stdout-devel < 6.5.3
65 %description -n libdlog-devel
68 Summary: Logger service
70 Group: Development/Libraries
71 Requires: %{name} = %{version}-%{release}
72 Requires: pkgconfig(vconf)
73 Requires: pkgconf(gio-2.0)
77 Summary: print log data to the screen
78 Group: Development/Libraries
79 %description -n dlogutil
81 %package config-backend-zero-copy
83 Summary: Force usage of zero-copy dlog backend
85 %description config-backend-zero-copy
86 Provides dlog config to enable zero-copy backend and tunes libdlog
87 performance while sacrificing some of dlog features (static and
90 %package config-syslog
92 Summary: Logger: syslog-source logging via dlog
94 Provides: tizen-log-syslog
95 %description config-syslog
96 Systemd unit for syslog socket configation to use with dlog
98 %package config-persistent-logs
99 Summary: enable persistent storage of logs
100 %description config-persistent-logs
101 Enable persistent logs in dlog (stored in /var/log/dlog/)
104 Summary: enable quality of service module
105 %description config-qos
106 Enables Quality of Service module in dlog
109 Summary: dlog documentation
110 BuildRequires: doxygen
112 Documentation for dlog
115 Summary: dlog integration tests
116 Requires: lib%{name} = %{version}-%{release}
117 Requires(post): /usr/bin/chsmack
119 Integration tests for dlog.
123 Summary: gcov files for libdlog
124 Group: Development/Libraries
126 This package contains gcov code coverage/profiling files for libdlog.
133 # TODO: Respect the defaults, and have all custom flags in one place
134 CFLAGS="-Wno-gnu-variable-sized-type-not-at-end -g"
135 TEST_CFLAGS="-Wno-gnu-variable-sized-type-not-at-end -Wno-logical-op-parentheses"
138 export CFLAGS+=" -fprofile-arcs -ftest-coverage"
139 export CXXFLAGS+=" -fprofile-arcs -ftest-coverage"
140 export LDFLAGS+=" -lgcov"
141 TEST_CFLAGS+=" -ftest-coverage"
145 export CFLAGS+=" -DASAN_BUILD=True"
146 export CXXFLAGS+=" -DASAN_BUILD=True"
147 TEST_CFLAGS+=" -DASAN_BUILD=True"
152 %autogen --disable-static
153 %configure --disable-static \
154 %if %{without dlog_dynamic_filters}
155 --disable-dynamic-filters
157 --enable-dynamic-filters
160 make %{?jobs:-j%jobs} CFLAGS+='-D__DLOG_VERSION=\"%{version}\" -D__DLOG_RELEASE=\"%{release}\"'
162 # autoconf adds a bunch of flags, including -O2.
163 # Clear those so that test coverage can be measured properly
164 CFLAGS="$TEST_CFLAGS"
165 make check CFLAGS+='-D__DLOG_VERSION=\"%{version}\" -D__DLOG_RELEASE=\"%{release}\"'
171 lcov -c --ignore-errors graph --no-external -q -d ./src -o dlog.info
172 genhtml dlog.info -o dlog.out
173 zip -r dlog.zip dlog.out dlog.info
174 install -m 0644 dlog.zip %{buildroot}%{_datadir}/gcov/
181 mkdir -p %{buildroot}/usr/bin/
183 mkdir -p %{buildroot}/usr/share/doc/dlog
184 cp -r documentation/* %{buildroot}/usr/share/doc/dlog
186 mkdir -p %{buildroot}%{_unitdir}/basic.target.wants/
187 mkdir -p %{buildroot}%{_unitdir}/sockets.target.wants/
188 ln -s ../dlog_logger.service %{buildroot}%{_unitdir}/basic.target.wants/dlog_logger.service
189 ln -s ../dlog_dev-log.socket %{buildroot}%{_unitdir}/sockets.target.wants/dlog_dev-log.socket
191 mkdir -p %{buildroot}%{_udevrulesdir}
192 install -m 0644 %SOURCE501 %{buildroot}%{_udevrulesdir}/01-dlog.rules
194 mkdir -p %{buildroot}/var/log/dlog
196 mkdir -p %{buildroot}/var/lib/dlog-tests
197 mkdir -p %{buildroot}/usr/share/dlog-filters.conf.test
199 %if %{without dlog_dynamic_filters}
200 rm -f %{buildroot}%{_bindir}/dlogctl
201 sed -i -e 's,^\(dynamic_config_path=\),#\1,g' -e 's,^\(limiter_apply_to_all_buffers=\),#\1,g' %{buildroot}%{_sysconfdir}/dlog.conf
205 builddir=$(basename $PWD)
206 gcno_obj_dir=%{buildroot}%{_datadir}/gcov/obj/%{name}/"$builddir"
207 mkdir -p "$gcno_obj_dir"
208 find . -name '*.gcno' -exec cp --parents '{}' "$gcno_obj_dir" ';'
212 %manifest dlog.manifest
213 %license LICENSE.APACHE2.0 LICENSE.MIT
214 %attr(750,log,log) %{_bindir}/dlogutil
215 %attr(755,log,log) %{_bindir}/dlogsend
216 %attr(750,log,log) %{_bindir}/dlog_cleanup
217 %attr(750,log,log) %{_bindir}/dlogmetrics
218 %attr(755,log,log) %{_bindir}/dlog_redirect_stdout
219 %{_unitdir}/dlog_cleanup.service
221 %if %{with dlog_dynamic_filters}
222 %attr(750,log,log) %{_bindir}/dlogctl
226 %if %{with dlog_dynamic_filters}
227 chsmack %{_bindir}/dlogctl -a "System::Tools"
230 %post -n libdlog -p /sbin/ldconfig
233 chsmack -a System /var/log/dlog
234 # set timestamp to beginning of the unix epoch to make rotation work even if we are run on system with no/broken rtc
235 touch -m -t 197001010000.01 /var/log/dlog/critical.a
236 touch -m -t 197001010000.00 /var/log/dlog/critical.b
237 chmod 660 /var/log/dlog/critical*
238 chown log:log /var/log/dlog/critical*
239 chsmack -e 'System' %{_libexecdir}/dlog-log-critical
242 %manifest dlog.manifest
243 %license LICENSE.APACHE2.0
244 %{_sysconfdir}/dlog.conf
245 %{_sysconfdir}/dlog.conf.d/20-pipe.conf
246 %{_sysconfdir}/dlog.conf.d/25-logger.conf
247 # not in a separate package for debugging convenience
248 %{_sysconfdir}/dlog.conf.d/86-disable-dlog.conf_inactive
249 %attr(755,log,log) /var/log/dlog
250 %attr(2551,log,log) %{_libexecdir}/dlog-log-critical
251 /usr/lib/tmpfiles.d/dlog-run.conf
252 %{_udevrulesdir}/01-dlog.rules
255 %manifest dlog.manifest
257 %{_libdir}/libdlog.so.0
258 %{_libdir}/libdlog.so.0.0.0
259 %{_libdir}/libdlogutil.so.*
260 %{_libdir}/libdlog_redirect_stdout.so.*
262 %files -n libdlog-devel
263 %manifest dlog.manifest
265 %{_includedir}/dlog/dlog.h
266 %{_includedir}/dlog/dlog-internal.h
267 %{_includedir}/dlog/dlogutil.h
268 %{_includedir}/dlog/dlog-redirect-stdout.h
269 %{_libdir}/libdlog.so
270 %{_libdir}/libdlogutil.so
271 %{_libdir}/libdlog_redirect_stdout.so
272 %{_libdir}/pkgconfig/dlog.pc
273 %{_libdir}/pkgconfig/dlogutil.pc
274 %{_libdir}/pkgconfig/dlog-redirect-stdout.pc
277 %manifest dlog.manifest
278 %license LICENSE.APACHE2.0
279 %attr(750,log,log) %{_bindir}/dlog_logger
280 %{_unitdir}/basic.target.wants/dlog_logger.service
281 %{_unitdir}/dlog_logger.service
282 /usr/lib/systemd/system-generators/dlog-unit-generator
284 %files config-backend-zero-copy
285 %manifest dlog.manifest
286 %license LICENSE.APACHE2.0 LICENSE.MIT
287 /usr/lib/modules/modules-load.d/tizen-modules-dlog-zero-copy.conf
288 %{_sysconfdir}/dlog.conf.d/30-zero-copy.conf
291 %manifest dlog.manifest
292 %license LICENSE.APACHE2.0 LICENSE.MIT
293 %{_unitdir}/sockets.target.wants/dlog_dev-log.socket
294 %{_unitdir}/dlog_dev-log.socket
296 %files config-persistent-logs
297 %{_sysconfdir}/dlog.conf.d/10-persistent-logs.conf
300 %{_sysconfdir}/dlog.conf.d/15-qos.conf
303 %manifest dlog.manifest
304 %license LICENSE.APACHE2.0 LICENSE.MIT
308 %manifest dlog.manifest
309 %license LICENSE.APACHE2.0 LICENSE.MIT
311 %{_bindir}/dlog_test_header
313 /usr/share/doc/dlog/README.testsuite
314 %{_libexecdir}/libdlog/perf_libdlog
315 %{_libexecdir}/libdlog/dlog_stdout_benchmark
316 %{_libexecdir}/libdlog/dlog_compression_benchmark
317 %{_libexecdir}/libdlog/test_libdlog
318 %{_libexecdir}/libdlog/test_libdlogutil
319 %{_libexecdir}/libdlog/test_verifytime
320 %{_libexecdir}/libdlog/test_libredirect
321 %{_libexecdir}/libdlog/test_libredirect_multi
322 %{_libexecdir}/libdlog/test_filters
323 %{_libexecdir}/libdlog/test_config_redirect
324 %{_datadir}/dlog-pipe.conf.test
325 %{_datadir}/dlog-logger.conf.test
326 %{_datadir}/dlog-zero-copy.conf.test
327 %{_datadir}/dlog-logger.conf.alias
328 %{_datadir}/dlog-pipe.conf.cpu
329 %{_datadir}/dlog-logger.conf.cpu
330 %{_datadir}/dlog-pipe.conf.qos
331 %{_datadir}/dlog-logger.conf.qos
332 %{_datadir}/dlog-pipe.conf.plog
333 %{_datadir}/dlog-logger.conf.plog
334 %{_datadir}/dlog-pipe.conf.autodetect
335 %{_datadir}/dlog-logger.conf.autodetect
336 %{_datadir}/dlog-logger.conf.stdout_enable.1
337 %{_datadir}/dlog-logger.conf.stdout_enable.2
338 %{_datadir}/dlog-logger.conf.stdout_enable.3
339 %{_datadir}/dlog-pipe.conf.stdout_enable.1
340 %{_datadir}/dlog-pipe.conf.stdout_enable.2
341 %{_datadir}/dlog-pipe.conf.stdout_enable.3
342 %{_datadir}/dlog-logger.conf.compress
343 %{_datadir}/dlog-pipe.conf.compress
344 %{_sysconfdir}/dlog.conf.d/99-dlog-logger.disable-platform-logging-for-testsuite.conf
345 %dir %attr(755,log,log) /var/lib/dlog-tests
346 %dir %attr(755,log,log) /usr/share/dlog-filters.conf.test
349 chsmack -a System /var/lib/dlog-tests
350 echo "Warning! Installation of dlog-tests will break platform logging."
351 echo "This is done intentionally, to make logger and zero-copy backend testing possible."
352 echo "To restore normal behavior, please uninstall dlog-tests package."
354 echo "For more information please read the /usr/share/doc/dlog/README.testsuite file"
356 echo "A reboot is required to properly configure logger and zero-copy backend for testing."