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