Fix gcov build error
[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.7
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 -n libdlog-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:  libdlogutil-devel < 6.5.3
63 Obsoletes:  libdlog-redirect-stdout-devel < 6.5.3
64 %description -n libdlog-devel
65
66 %package    logger
67 Summary:    Logger service
68 License:    Apache-2.0
69 Group:      Development/Libraries
70 Requires:   %{name} = %{version}-%{release}
71 %description logger
72
73 %package -n dlogutil
74 Summary:    print log data to the screen
75 Group:      Development/Libraries
76 %description -n dlogutil
77
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)
82
83 %package config-syslog
84 License:    Apache-2.0
85 Summary:    Logger: syslog-source logging via dlog
86 Group:      Base/Startup
87 Provides:   tizen-log-syslog
88 %description config-syslog
89 Systemd unit for syslog socket configation to use with dlog
90
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/)
95
96 %package config-qos
97 Summary: enable quality of service module
98 %description config-qos
99 Enables Quality of Service module in dlog
100
101 %package doc
102 Summary: dlog documentation
103 BuildRequires: doxygen
104 %description doc
105 Documentation for dlog
106
107 %package tests
108 Summary: dlog integration tests
109 Requires: lib%{name} = %{version}-%{release}
110 Requires(post): /usr/bin/chsmack
111 %description tests
112 Integration tests for dlog.
113
114 %if 0%{?gcov:1}
115 %package gcov
116 Summary:  gcov files for libdlog
117 Group:    Development/Libraries
118 %description gcov
119 This package contains gcov code coverage/profiling files for libdlog.
120 %endif
121
122 %prep
123 %setup -q
124
125 %build
126 # TODO: Respect the defaults, and have all custom flags in one place
127 CFLAGS="-Wno-gnu-variable-sized-type-not-at-end -g"
128
129 %if 0%{?gcov:1}
130 export CFLAGS+=" -fprofile-arcs -ftest-coverage"
131 export CXXFLAGS+=" -fprofile-arcs -ftest-coverage"
132 export LDFLAGS+=" -lgcov"
133 %endif
134
135
136 cp %{SOURCE101} .
137
138 %autogen --disable-static
139 %configure --disable-static \
140 %if %{without dlog_dynamic_filters}
141 --disable-dynamic-filters
142 %else
143 --enable-dynamic-filters
144 %endif
145
146 make %{?jobs:-j%jobs} CFLAGS+='-D__DLOG_VERSION=\"%{version}\" -D__DLOG_RELEASE=\"%{release}\"'
147
148 # autoconf adds a bunch of flags, including -O2.
149 # Clear those so that test coverage can be measured properly
150 %if 0%{?gcov:1}
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}\"'
152 %else
153 make check CFLAGS='-Wno-gnu-variable-sized-type-not-at-end -Wno-logical-op-parentheses -D__DLOG_VERSION=\"%{version}\" -D__DLOG_RELEASE=\"%{release}\"'
154 %endif
155
156 make dox
157
158 %if 0%{?gcov:1}
159 mkdir -p gcov-obj
160 find ./src/libdlog -name '*.gcno' -exec cp '{}' gcov-obj ';'
161 %endif
162
163 %if 0%{?gcov:1}
164 %check -n libdlog
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/
169 %endif
170
171 %install
172 rm -rf %{buildroot}
173
174 %make_install
175 mkdir -p %{buildroot}/usr/bin/
176
177 mkdir -p %{buildroot}/usr/share/doc/dlog
178 cp -r documentation/* %{buildroot}/usr/share/doc/dlog
179
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
184
185 mkdir -p %{buildroot}%{_udevrulesdir}
186 install -m 0644 %SOURCE501 %{buildroot}%{_udevrulesdir}/01-dlog.rules
187
188 mkdir -p %{buildroot}%{_unitdir}/dlog_logger.service.d
189 install -m 0644 %SOURCE502 %{buildroot}%{_unitdir}/dlog_logger.service.d/logger-devices.conf
190
191 mkdir -p %{buildroot}/var/log/dlog
192
193 mkdir -p %{buildroot}/var/lib/dlog-tests
194 mkdir -p %{buildroot}/usr/share/dlog-filters.conf.test
195
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
199 %endif
200
201 %if 0%{?gcov:1}
202 mkdir -p %{buildroot}%{_datadir}/gcov/obj
203 install -m 0644 gcov-obj/* %{buildroot}%{_datadir}/gcov/obj
204 %endif
205
206 %files -n dlogutil
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
215
216 %if %{with dlog_dynamic_filters}
217 %attr(750,log,log) %{_bindir}/dlogctl
218 %endif
219
220 %post -n dlogutil
221 %if %{with dlog_dynamic_filters}
222 chsmack %{_bindir}/dlogctl -a "System::Tools"
223 %endif
224
225 %post -n libdlog -p /sbin/ldconfig
226
227 %post
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
235
236 %files
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
245
246 %files -n libdlog
247 %manifest dlog.manifest
248 %license LICENSE.MIT
249 %{_libdir}/libdlog.so.0
250 %{_libdir}/libdlog.so.0.0.0
251 %{_libdir}/libdlogutil.so.*
252 %{_libdir}/libdlog_redirect_stdout.so.*
253
254 %files -n libdlog-devel
255 %manifest dlog.manifest
256 %license LICENSE.MIT
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
267
268 %files logger
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
274
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
280
281 %files config-syslog
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
286
287 %files config-persistent-logs
288 %{_sysconfdir}/dlog.conf.d/10-persistent-logs.conf
289
290 %files config-qos
291 %{_sysconfdir}/dlog.conf.d/15-qos.conf
292
293 %files doc
294 %manifest dlog.manifest
295 %license LICENSE.APACHE2.0 LICENSE.MIT
296 /usr/share/doc/dlog
297
298 %files tests
299 %manifest dlog.manifest
300 %license LICENSE.APACHE2.0 LICENSE.MIT
301 %{_bindir}/dlog_test
302 %{_bindir}/dlog_cpu
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
319
320 %post tests
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."
325 echo ""
326 echo "For more information please read the /usr/share/doc/dlog/README.testsuite file"
327 echo ""
328 echo "A reboot is required to properly configure logger backend for testing."
329
330 %if 0%{?gcov:1}
331 %files gcov
332 %{_datadir}/gcov/*
333 %endif