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