c3986bbfc2d774fcafd74f2e2584b09f899d3657
[platform/core/system/dlog.git] / packaging / dlog.spec
1 Name:       dlog
2 Summary:    Logging service
3 Version:    9.0.1
4 Release:    1
5 Group:      System/Libraries
6 License:    Apache-2.0, MIT
7 Source0:    %{name}-%{version}.tar.gz
8 Source101:  packaging/dlog.manifest
9 Source501:  packaging/01-dlog.rules
10
11 # NOTE: hardcoded instead of a build dependency on libudev.
12 #       Needed to prevent a cyclic build dependency in case
13 #       dlog is used in a package dependent on libsystemd,
14 #       since libudev is a part of it
15 %define _udevrulesdir %{_prefix}/lib/udev/rules.d
16
17 BuildRequires: autoconf
18 BuildRequires: automake
19 BuildRequires: libtool
20 BuildRequires: pkgconfig(capi-base-common)
21 BuildRequires: pkgconfig(libtzplatform-config)
22 BuildRequires: linux-tizen-modules-headers
23 %if 0%{?lowmem_notification:1}
24 BuildRequires: pkgconfig(vconf)
25 BuildRequires: pkgconfig(gio-2.0)
26 %endif
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 %if 0%{?lowmem_notification:1}
72 Requires:   pkgconf(gio-2.0)
73 %endif
74 %description logger
75
76 %package -n dlogutil
77 Summary:    print log data to the screen
78 Group:      Development/Libraries
79 %description -n dlogutil
80
81 %package    config-backend-zero-copy
82 License:    Apache-2.0
83 Summary:    Force usage of zero-copy dlog backend
84 Group:      Base/Startup
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
88 dynamic filtering)
89
90 %package config-syslog
91 License:    Apache-2.0
92 Summary:    Logger: syslog-source logging via dlog
93 Group:      Base/Startup
94 Provides:   tizen-log-syslog
95 %description config-syslog
96 Systemd unit for syslog socket configation to use with dlog
97
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/)
102
103 %package config-qos
104 Summary: enable quality of service module
105 %description config-qos
106 Enables Quality of Service module in dlog
107
108 %package doc
109 Summary: dlog documentation
110 BuildRequires: doxygen
111 %description doc
112 Documentation for dlog
113
114 %package tests
115 Summary: dlog integration tests
116 Requires: lib%{name} = %{version}-%{release}
117 Requires(post): /usr/bin/chsmack
118 %description tests
119 Integration tests for dlog.
120
121 %if 0%{?gcov:1}
122 %package gcov
123 Summary:  gcov files for libdlog
124 Group:    Development/Libraries
125 %description gcov
126 This package contains gcov code coverage/profiling files for libdlog.
127 %endif
128
129 %package unittests
130 Summary: Coverage tests
131
132 %description unittests
133 Not actually unit tests, named that way just to conform to specification
134
135 %isu_package
136
137 %prep
138 %setup -q
139
140 %build
141 # TODO: Respect the defaults, and have all custom flags in one place
142 CFLAGS="-Wno-gnu-variable-sized-type-not-at-end -g"
143 TEST_CFLAGS="-Wno-gnu-variable-sized-type-not-at-end -Wno-logical-op-parentheses"
144
145 %if 0%{?gcov:1}
146 export CAPI_GCOV_CFLAGS="$CFLAGS -fprofile-arcs -ftest-coverage"
147 export CAPI_GCOV_CXXFLAGS="$CXXFLAGS -fprofile-arcs -ftest-coverage"
148 export CAPI_GCOV_LDFLAGS="$LDFLAGS -lgcov"
149 TEST_CFLAGS+=" -ftest-coverage"
150 %endif
151
152 %if 0%{?asan:1}
153 export CFLAGS+=" -DASAN_BUILD=True"
154 export CXXFLAGS+=" -DASAN_BUILD=True"
155 TEST_CFLAGS+=" -DASAN_BUILD=True"
156 %endif
157
158 cp %{SOURCE101} .
159
160 %autogen --disable-static
161 %configure --disable-static \
162 %if 0%{?lowmem_notification:1}
163 --enable-lowmem-notification
164 %endif
165
166 make %{?jobs:-j%jobs} CFLAGS+='-D__DLOG_VERSION=\"%{version}\" -D__DLOG_RELEASE=\"%{release}\"'
167
168 # autoconf adds a bunch of flags, including -O2.
169 # Clear those so that test coverage can be measured properly
170 CFLAGS="$TEST_CFLAGS"
171 make check CFLAGS+='-D__DLOG_VERSION=\"%{version}\" -D__DLOG_RELEASE=\"%{release}\"'
172
173 make dox
174
175 %if 0%{?gcov:1}
176 %check -n libdlog
177 lcov -c --ignore-errors graph --no-external -q -d ./src -o dlog.info
178 genhtml dlog.info -o dlog.out
179 zip -r dlog.zip dlog.out dlog.info
180 install -m 0644 dlog.zip %{buildroot}%{_datadir}/gcov/
181 %endif
182
183 %install
184 rm -rf %{buildroot}
185
186 %make_install
187 mkdir -p %{buildroot}/usr/bin/
188
189 mkdir -p %{buildroot}/usr/share/doc/dlog
190 cp -r documentation/* %{buildroot}/usr/share/doc/dlog
191
192 mkdir -p %{buildroot}%{_unitdir}/basic.target.wants/
193 mkdir -p %{buildroot}%{_unitdir}/sockets.target.wants/
194 ln -s ../dlog_logger.service %{buildroot}%{_unitdir}/basic.target.wants/dlog_logger.service
195 ln -s ../dlog_dev-log.socket %{buildroot}%{_unitdir}/sockets.target.wants/dlog_dev-log.socket
196
197 mkdir -p %{buildroot}%{_udevrulesdir}
198 install -m 0644 %SOURCE501 %{buildroot}%{_udevrulesdir}/01-dlog.rules
199
200 mkdir -p %{buildroot}/var/log/dlog
201
202 mkdir -p %{buildroot}/var/lib/dlog-tests
203 mkdir -p %{buildroot}/usr/share/dlog-filters.conf.test
204 mkdir -p %{buildroot}/var/lib/dlog-unittests
205 mkdir -p %{buildroot}/usr/share/dlog-filters.conf.unittest
206
207 %if 0%{?gcov:1}
208 builddir=$(basename $PWD)
209 gcno_obj_dir=%{buildroot}%{_datadir}/gcov/obj/%{name}/"$builddir"
210 mkdir -p "$gcno_obj_dir"
211 find . -name '*.gcno' -exec cp --parents '{}' "$gcno_obj_dir" ';'
212 %endif
213
214 %files -n dlogutil
215 %manifest dlog.manifest
216 %license LICENSE.APACHE2.0 LICENSE.MIT
217 %attr(750,log,log) %{_bindir}/dlogutil
218 %attr(755,log,log) %{_bindir}/dlogsend
219 %attr(750,log,log) %{_bindir}/dlog_cleanup
220 %attr(750,log,log) %{_bindir}/dlogmetrics
221 %attr(755,log,log) %{_bindir}/dlog_redirect_stdout
222 %{_unitdir}/dlog_cleanup.service
223 %attr(750,log,log) %{_bindir}/dlogctl
224
225 %post -n dlogutil
226 chsmack %{_bindir}/dlogctl -a "System::Tools"
227
228 %post -n libdlog -p /sbin/ldconfig
229
230 %post
231 chsmack -a System /var/log/dlog
232 # set timestamp to beginning of the unix epoch to make rotation work even if we are run on system with no/broken rtc
233 touch -m -t 197001010000.01 /var/log/dlog/critical.a
234 touch -m -t 197001010000.00 /var/log/dlog/critical.b
235 chmod 660 /var/log/dlog/critical*
236 chown log:log /var/log/dlog/critical*
237 chsmack -e 'System' %{_libexecdir}/dlog-log-critical
238
239 %files
240 %manifest dlog.manifest
241 %license LICENSE.APACHE2.0
242 %{_sysconfdir}/dlog.conf
243 %{_sysconfdir}/dlog.conf.d/20-pipe.conf
244 %{_sysconfdir}/dlog.conf.d/25-logger.conf
245 # not in a separate package for debugging convenience
246 %{_sysconfdir}/dlog.conf.d/86-disable-dlog.conf_inactive
247 %attr(755,log,log) /var/log/dlog
248 %attr(2551,log,log) %{_libexecdir}/dlog-log-critical
249 /usr/lib/tmpfiles.d/dlog-run.conf
250 %{_udevrulesdir}/01-dlog.rules
251
252 %files -n libdlog
253 %manifest dlog.manifest
254 %license LICENSE.MIT
255 %{_libdir}/libdlog.so.0
256 %{_libdir}/libdlog.so.0.0.0
257 %{_libdir}/libdlogutil.so.*
258 %{_libdir}/libdlog_redirect_stdout.so.*
259
260 %files -n libdlog-devel
261 %manifest dlog.manifest
262 %license LICENSE.MIT
263 %{_includedir}/dlog/dlog.h
264 %{_includedir}/dlog/dlog-internal.h
265 %{_includedir}/dlog/dlogutil.h
266 %{_includedir}/dlog/dlog-redirect-stdout.h
267 %{_libdir}/libdlog.so
268 %{_libdir}/libdlogutil.so
269 %{_libdir}/libdlog_redirect_stdout.so
270 %{_libdir}/pkgconfig/dlog.pc
271 %{_libdir}/pkgconfig/dlogutil.pc
272 %{_libdir}/pkgconfig/dlog-redirect-stdout.pc
273
274 %files unittests
275 %{_bindir}/tizen-unittests/%{name}/run-unittest.sh
276 %{_bindir}/tizen-unittests/%{name}/test_capi_coverage
277 %{_bindir}/tizen-unittests/%{name}/test_libdlogutil_cov
278 %{_datadir}/dlog-coverage.conf
279 %dir %attr(755,log,log) /var/lib/dlog-unittests
280 %dir %attr(755,log,log) /usr/share/dlog-filters.conf.unittest
281
282 %files logger
283 %manifest dlog.manifest
284 %license LICENSE.APACHE2.0
285 %attr(750,log,log) %{_bindir}/dlog_logger
286 %{_unitdir}/basic.target.wants/dlog_logger.service
287 %{_unitdir}/dlog_logger.service
288 /usr/lib/systemd/system-generators/dlog-unit-generator
289
290 %files config-backend-zero-copy
291 %manifest dlog.manifest
292 %license LICENSE.APACHE2.0 LICENSE.MIT
293 /usr/lib/modules/modules-load.d/tizen-modules-dlog-zero-copy.conf
294 %{_sysconfdir}/dlog.conf.d/30-zero-copy.conf
295
296 %files config-syslog
297 %manifest dlog.manifest
298 %license LICENSE.APACHE2.0 LICENSE.MIT
299 %{_unitdir}/sockets.target.wants/dlog_dev-log.socket
300 %{_unitdir}/dlog_dev-log.socket
301
302 %files config-persistent-logs
303 %{_sysconfdir}/dlog.conf.d/10-persistent-logs.conf
304
305 %files config-qos
306 %{_sysconfdir}/dlog.conf.d/15-qos.conf
307
308 %files doc
309 %manifest dlog.manifest
310 %license LICENSE.APACHE2.0 LICENSE.MIT
311 /usr/share/doc/dlog
312
313 %files tests
314 %manifest dlog.manifest
315 %license LICENSE.APACHE2.0 LICENSE.MIT
316 %{_bindir}/dlog_test
317 %{_bindir}/dlog_test_header
318 %{_bindir}/dlog_test_daemon_early_quit
319 %{_bindir}/dlog_test_backend_autodetection
320 %{_bindir}/dlog_test_tid_filtering_secure_logging
321 %{_bindir}/dlog_test_stdout_redirect
322 %{_bindir}/dlog_test_logger_buffering_logging
323 %{_bindir}/dlog_cpu
324 /usr/share/doc/dlog/README.testsuite
325 %{_libexecdir}/libdlog/perf_libdlog
326 %{_libexecdir}/libdlog/dlog_stdout_benchmark
327 %{_libexecdir}/libdlog/dlog_compression_benchmark
328 %{_libexecdir}/libdlog/test_libdlog
329 %{_libexecdir}/libdlog/test_libdlogutil
330 %{_libexecdir}/libdlog/test_verifytime
331 %{_libexecdir}/libdlog/test_libredirect
332 %{_libexecdir}/libdlog/test_libredirect_multi
333 %{_libexecdir}/libdlog/test_filters
334 %{_libexecdir}/libdlog/test_config_redirect
335 %{_datadir}/dlog-pipe.conf.test
336 %{_datadir}/dlog-logger.conf.test
337 %{_datadir}/dlog-zero-copy.conf.test
338 %{_datadir}/dlog-logger.conf.alias
339 %{_datadir}/dlog-pipe.conf.cpu
340 %{_datadir}/dlog-logger.conf.cpu
341 %{_datadir}/dlog-pipe.conf.qos
342 %{_datadir}/dlog-logger.conf.qos
343 %{_datadir}/dlog-pipe.conf.plog
344 %{_datadir}/dlog-logger.conf.plog
345 %{_datadir}/dlog-pipe.conf.autodetect
346 %{_datadir}/dlog-logger.conf.autodetect
347 %{_datadir}/dlog-logger.conf.stdout_enable.1
348 %{_datadir}/dlog-logger.conf.stdout_enable.2
349 %{_datadir}/dlog-logger.conf.stdout_enable.3
350 %{_datadir}/dlog-pipe.conf.stdout_enable.1
351 %{_datadir}/dlog-pipe.conf.stdout_enable.2
352 %{_datadir}/dlog-pipe.conf.stdout_enable.3
353 %{_datadir}/dlog-zero-copy.conf.stdout_enable.1
354 %{_datadir}/dlog-zero-copy.conf.stdout_enable.2
355 %{_datadir}/dlog-zero-copy.conf.stdout_enable.3
356 %{_datadir}/dlog-logger.conf.compress
357 %{_datadir}/dlog-pipe.conf.compress
358 %{_sysconfdir}/dlog.conf.d/99-dlog-logger.disable-platform-logging-for-testsuite.conf
359 %dir %attr(755,log,log) /var/lib/dlog-tests
360 %dir %attr(755,log,log) /usr/share/dlog-filters.conf.test
361
362 %post tests
363 chsmack -a System /var/lib/dlog-tests
364 echo "Warning! Installation of dlog-tests will break platform logging."
365 echo "This is done intentionally, to make logger and zero-copy backend testing possible."
366 echo "To restore normal behavior, please uninstall dlog-tests package."
367 echo ""
368 echo "For more information please read the /usr/share/doc/dlog/README.testsuite file"
369 echo ""
370 echo "A reboot is required to properly configure logger and zero-copy backend for testing."
371
372 %if 0%{?gcov:1}
373 %files gcov
374 %{_datadir}/gcov/*
375 %endif