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
13 Source502: packaging/logger-devices.conf
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
21 BuildRequires: autoconf
22 BuildRequires: automake
23 BuildRequires: libtool
24 BuildRequires: pkgconfig(capi-base-common)
25 BuildRequires: pkgconfig(libtzplatform-config)
31 Requires: %{name}-config-persistent-logs
32 Obsoletes: %{name}-common < 6.5.3
35 Shared files between libdlog and service
38 Summary: dlog library APIs
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
55 %package -n libdlog-devel
56 Summary: Logging service dlog API
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
66 Summary: Logger service
68 Group: Development/Libraries
69 Requires: %{name} = %{version}-%{release}
73 Summary: print log data to the screen
74 Group: Development/Libraries
75 %description -n dlogutil
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)
82 %package config-syslog
84 Summary: Logger: syslog-source logging via dlog
86 Provides: tizen-log-syslog
87 %description config-syslog
88 Systemd unit for syslog socket configation to use with dlog
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/)
96 Summary: enable quality of service module
97 %description config-qos
98 Enables Quality of Service module in dlog
101 Summary: dlog documentation
102 BuildRequires: doxygen
104 Documentation for dlog
107 Summary: dlog integration tests
108 Requires: lib%{name} = %{version}-%{release}
109 Requires(post): /usr/bin/chsmack
111 Integration tests for dlog.
115 Summary: gcov files for libdlog
116 Group: Development/Libraries
118 This package contains gcov code coverage/profiling files for libdlog.
125 # TODO: Respect the defaults, and have all custom flags in one place
126 CFLAGS="-Wno-gnu-variable-sized-type-not-at-end -g"
129 export CFLAGS+=" -fprofile-arcs -ftest-coverage"
130 export CXXFLAGS+=" -fprofile-arcs -ftest-coverage"
131 export LDFLAGS+=" -lgcov"
137 %autogen --disable-static
138 %configure --disable-static \
139 %if %{without dlog_dynamic_filters}
140 --disable-dynamic-filters
142 --enable-dynamic-filters
145 make %{?jobs:-j%jobs} CFLAGS+='-D__DLOG_VERSION=\"%{version}\" -D__DLOG_RELEASE=\"%{release}\"'
147 # autoconf adds a bunch of flags, including -O2.
148 # Clear those so that test coverage can be measured properly
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}\"'
152 make check CFLAGS='-Wno-gnu-variable-sized-type-not-at-end -Wno-logical-op-parentheses -D__DLOG_VERSION=\"%{version}\" -D__DLOG_RELEASE=\"%{release}\"'
159 find ./src/libdlog -name '*.gcno' -exec cp '{}' gcov-obj ';'
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/
174 mkdir -p %{buildroot}/usr/bin/
176 mkdir -p %{buildroot}/usr/share/doc/dlog
177 cp -r documentation/* %{buildroot}/usr/share/doc/dlog
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
184 mkdir -p %{buildroot}%{_udevrulesdir}
185 install -m 0644 %SOURCE501 %{buildroot}%{_udevrulesdir}/01-dlog.rules
187 mkdir -p %{buildroot}%{_unitdir}/dlog_logger.service.d
188 install -m 0644 %SOURCE502 %{buildroot}%{_unitdir}/dlog_logger.service.d/logger-devices.conf
190 mkdir -p %{buildroot}/var/log/dlog
192 mkdir -p %{buildroot}/var/lib/dlog-tests
193 mkdir -p %{buildroot}/usr/share/dlog-filters.conf.test
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
201 mkdir -p %{buildroot}%{_datadir}/gcov/obj
202 install -m 0644 gcov-obj/* %{buildroot}%{_datadir}/gcov/obj
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
215 %if %{with dlog_dynamic_filters}
216 %attr(750,log,log) %{_bindir}/dlogctl
220 %if %{with dlog_dynamic_filters}
221 chsmack %{_bindir}/dlogctl -a "System::Tools"
224 %post -n libdlog -p /sbin/ldconfig
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
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
246 %manifest dlog.manifest
248 %{_libdir}/libdlog.so.0
249 %{_libdir}/libdlog.so.0.0.0
250 %{_libdir}/libdlogutil.so.*
251 %{_libdir}/libdlog_redirect_stdout.so.*
253 %files -n libdlog-devel
254 %manifest dlog.manifest
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
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
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
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
286 %files config-persistent-logs
287 %{_sysconfdir}/dlog.conf.d/10-persistent-logs.conf
290 %{_sysconfdir}/dlog.conf.d/15-qos.conf
293 %manifest dlog.manifest
294 %license LICENSE.APACHE2.0 LICENSE.MIT
298 %manifest dlog.manifest
299 %license LICENSE.APACHE2.0 LICENSE.MIT
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
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."
325 echo "For more information please read the /usr/share/doc/dlog/README.testsuite file"
327 echo "A reboot is required to properly configure logger backend for testing."