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: libcap-devel
24 BuildRequires: libtool
25 BuildRequires: pkgconfig(capi-base-common)
26 BuildRequires: pkgconfig(libtzplatform-config)
32 Requires: %{name}-config-persistent-logs
33 Obsoletes: %{name}-common < 6.5.3
36 Shared files between libdlog and service
39 Summary: dlog library APIs
41 Group: Development/Libraries
42 Requires(pre): coreutils
43 Requires(post): coreutils
44 Requires(post): /sbin/ldconfig
45 Requires(post): /usr/bin/chsmack
46 Requires(postun): /sbin/ldconfig
47 Requires: %{name} = %{version}-%{release}
48 Requires: %{name}-logger = %{version}-%{release}
49 Obsoletes: libdlogutil < 6.5.3
50 Obsoletes: libdlog-redirect-stdout < 6.5.3
51 %description -n libdlog
52 * libdlog - client API
53 * libdlogutil - log retrieval library
54 * libdlog_redirect_stdout - client library for attaching stdout/stderr
56 %package -n libdlog-devel
57 Summary: Logging service dlog API
59 Group: Development/Libraries
60 Requires: libdlog = %{version}-%{release}
61 Requires: pkgconfig(capi-base-common)
62 Obsoletes: libdlogutil-devel < 6.5.3
63 Obsoletes: libdlog-redirect-stdout-devel < 6.5.3
64 %description -n libdlog-devel
67 Summary: Logger service
69 Group: Development/Libraries
70 Requires: %{name} = %{version}-%{release}
74 Summary: print log data to the screen
75 Group: Development/Libraries
76 %description -n dlogutil
78 %package config-backend-logger
79 Summary: Android-logger backend selection for dlog
80 %description config-backend-logger
81 Change dlog backend to logger backend. Require kernel support (Android-logger)
83 %package config-syslog
85 Summary: Logger: syslog-source logging via dlog
87 Provides: tizen-log-syslog
88 %description config-syslog
89 Systemd unit for syslog socket configation to use with dlog
91 %package config-persistent-logs
92 Summary: enable persistent storage of logs
93 %description config-persistent-logs
94 Enable persistent logs in dlog (stored in /var/log/dlog/)
97 Summary: enable quality of service module
98 %description config-qos
99 Enables Quality of Service module in dlog
102 Summary: dlog documentation
103 BuildRequires: doxygen
105 Documentation for dlog
108 Summary: dlog integration tests
109 Requires: lib%{name} = %{version}-%{release}
110 Requires(post): /usr/bin/chsmack
112 Integration tests for dlog.
116 Summary: gcov files for libdlog
117 Group: Development/Libraries
119 This package contains gcov code coverage/profiling files for libdlog.
126 # TODO: Respect the defaults, and have all custom flags in one place
127 CFLAGS="-Wno-gnu-variable-sized-type-not-at-end -g"
130 export CFLAGS+=" -fprofile-arcs -ftest-coverage"
131 export CXXFLAGS+=" -fprofile-arcs -ftest-coverage"
132 export LDFLAGS+=" -lgcov"
138 %autogen --disable-static
139 %configure --disable-static \
140 %if %{without dlog_dynamic_filters}
141 --disable-dynamic-filters
143 --enable-dynamic-filters
146 make %{?jobs:-j%jobs} CFLAGS+='-D__DLOG_VERSION=\"%{version}\" -D__DLOG_RELEASE=\"%{release}\"'
148 # autoconf adds a bunch of flags, including -O2.
149 # Clear those so that test coverage can be measured properly
151 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}\"'
153 make check CFLAGS='-Wno-gnu-variable-sized-type-not-at-end -Wno-logical-op-parentheses -D__DLOG_VERSION=\"%{version}\" -D__DLOG_RELEASE=\"%{release}\"'
160 find ./src/libdlog -name '*.gcno' -exec cp '{}' gcov-obj ';'
165 lcov -c --ignore-errors graph --no-external -q -d ./src/libdlog -o libdlog.info
166 genhtml libdlog.info -o libdlog.out
167 zip -r libdlog.zip libdlog.out libdlog.info
168 install -m 0644 libdlog.zip %{buildroot}%{_datadir}/gcov/
175 mkdir -p %{buildroot}/usr/bin/
177 mkdir -p %{buildroot}/usr/share/doc/dlog
178 cp -r documentation/* %{buildroot}/usr/share/doc/dlog
180 mkdir -p %{buildroot}%{_unitdir}/basic.target.wants/
181 mkdir -p %{buildroot}%{_unitdir}/sockets.target.wants/
182 ln -s ../dlog_logger.service %{buildroot}%{_unitdir}/basic.target.wants/dlog_logger.service
183 ln -s ../dlog_dev-log.socket %{buildroot}%{_unitdir}/sockets.target.wants/dlog_dev-log.socket
185 mkdir -p %{buildroot}%{_udevrulesdir}
186 install -m 0644 %SOURCE501 %{buildroot}%{_udevrulesdir}/01-dlog.rules
188 mkdir -p %{buildroot}%{_unitdir}/dlog_logger.service.d
189 install -m 0644 %SOURCE502 %{buildroot}%{_unitdir}/dlog_logger.service.d/logger-devices.conf
191 mkdir -p %{buildroot}/var/log/dlog
193 mkdir -p %{buildroot}/var/lib/dlog-tests
194 mkdir -p %{buildroot}/usr/share/dlog-filters.conf.test
196 %if %{without dlog_dynamic_filters}
197 rm -f %{buildroot}%{_bindir}/dlogctl
198 sed -i -e 's,^\(dynamic_config_path=\),#\1,g' -e 's,^\(limiter_apply_to_all_buffers=\),#\1,g' %{buildroot}%{_sysconfdir}/dlog.conf
202 mkdir -p %{buildroot}%{_datadir}/gcov/obj
203 install -m 0644 gcov-obj/* %{buildroot}%{_datadir}/gcov/obj
207 %manifest dlog.manifest
208 %license LICENSE.APACHE2.0 LICENSE.MIT
209 %attr(750,log,log) %{_bindir}/dlogutil
210 %attr(755,log,log) %{_bindir}/dlogsend
211 %attr(750,log,log) %{_bindir}/dlog_cleanup
212 %attr(750,log,log) %{_bindir}/dlogmetrics
213 %attr(755,log,log) %{_bindir}/dlog_redirect_stdout
214 %{_unitdir}/dlog_cleanup.service
216 %if %{with dlog_dynamic_filters}
217 %attr(750,log,log) %{_bindir}/dlogctl
221 %if %{with dlog_dynamic_filters}
222 chsmack %{_bindir}/dlogctl -a "System::Tools"
225 %post -n libdlog -p /sbin/ldconfig
228 chsmack -a System /var/log/dlog
229 # set timestamp to beginning of the unix epoch to make rotation work even if we are run on system with no/broken rtc
230 touch -m -t 197001010000.01 /var/log/dlog/critical.a
231 touch -m -t 197001010000.00 /var/log/dlog/critical.b
232 chmod 660 /var/log/dlog/critical*
233 chown log:log /var/log/dlog/critical*
234 chsmack -e 'System' %{_libexecdir}/dlog-log-critical
237 %manifest dlog.manifest
238 %license LICENSE.APACHE2.0
239 %{_sysconfdir}/dlog.conf
240 %{_sysconfdir}/dlog.conf.d/20-pipe.conf
241 %attr(755,log,log) /var/log/dlog
242 %attr(2551,log,log) %{_libexecdir}/dlog-log-critical
243 /usr/lib/tmpfiles.d/dlog-run.conf
244 %{_udevrulesdir}/01-dlog.rules
247 %manifest dlog.manifest
249 %{_libdir}/libdlog.so.0
250 %{_libdir}/libdlog.so.0.0.0
251 %{_libdir}/libdlogutil.so.*
252 %{_libdir}/libdlog_redirect_stdout.so.*
254 %files -n libdlog-devel
255 %manifest dlog.manifest
257 %{_includedir}/dlog/dlog.h
258 %{_includedir}/dlog/dlog-internal.h
259 %{_includedir}/dlog/dlogutil.h
260 %{_includedir}/dlog/dlog-redirect-stdout.h
261 %{_libdir}/libdlog.so
262 %{_libdir}/libdlogutil.so
263 %{_libdir}/libdlog_redirect_stdout.so
264 %{_libdir}/pkgconfig/dlog.pc
265 %{_libdir}/pkgconfig/dlogutil.pc
266 %{_libdir}/pkgconfig/dlog-redirect-stdout.pc
269 %manifest dlog.manifest
270 %license LICENSE.APACHE2.0
271 %attr(750,log,log) %{_bindir}/dlog_logger
272 %{_unitdir}/basic.target.wants/dlog_logger.service
273 %{_unitdir}/dlog_logger.service
275 %files config-backend-logger
276 %manifest dlog.manifest
277 %license LICENSE.APACHE2.0 LICENSE.MIT
278 %{_sysconfdir}/dlog.conf.d/25-logger.conf
279 %{_unitdir}/dlog_logger.service.d/logger-devices.conf
282 %manifest dlog.manifest
283 %license LICENSE.APACHE2.0 LICENSE.MIT
284 %{_unitdir}/sockets.target.wants/dlog_dev-log.socket
285 %{_unitdir}/dlog_dev-log.socket
287 %files config-persistent-logs
288 %{_sysconfdir}/dlog.conf.d/10-persistent-logs.conf
291 %{_sysconfdir}/dlog.conf.d/15-qos.conf
294 %manifest dlog.manifest
295 %license LICENSE.APACHE2.0 LICENSE.MIT
299 %manifest dlog.manifest
300 %license LICENSE.APACHE2.0 LICENSE.MIT
303 /usr/share/doc/dlog/README.testsuite
304 %{_libexecdir}/libdlog/perf_libdlog
305 %{_libexecdir}/libdlog/test_libdlog
306 %{_libexecdir}/libdlog/test_libdlogutil
307 %{_libexecdir}/libdlog/test_libredirect
308 %{_libexecdir}/libdlog/test_filters
309 %{_datadir}/dlog-pipe.conf.test
310 %{_datadir}/dlog-logger.conf.test
311 %{_datadir}/dlog-logger.conf.alias
312 %{_datadir}/dlog-pipe.conf.cpu
313 %{_datadir}/dlog-logger.conf.cpu
314 %{_datadir}/dlog-pipe.conf.qos
315 %{_datadir}/dlog-logger.conf.qos
316 %{_sysconfdir}/dlog.conf.d/99-dlog-logger.disable-platform-logging-for-testsuite.conf
317 %dir %attr(755,log,log) /var/lib/dlog-tests
318 %dir %attr(755,log,log) /usr/share/dlog-filters.conf.test
321 chsmack -a System /var/lib/dlog-tests
322 echo "Warning! Installation of dlog-tests will break platform logging."
323 echo "This is done intentionally, to make logger backend testing possible."
324 echo "To restore normal behavior, please uninstall dlog-tests package."
326 echo "For more information please read the /usr/share/doc/dlog/README.testsuite file"
328 echo "A reboot is required to properly configure logger backend for testing."