configure: remove -Wno-format-nonliteral
[babeltrace.git] / README.adoc
CommitLineData
94313b56
PP
1// Render with Asciidoctor
2
3= Babeltrace
415 October 2019
5:btversion: 2.0
6:bt2: Babeltrace{nbsp}2
7
8
9Babeltrace /ˈbæbəltreɪs/, an
10https://efficios.com/[EfficiOS] project, is an open-source
11https://en.wikipedia.org/wiki/Tracing_(software)[trace]
12manipulation framework.
13
14https://ci.lttng.org/job/babeltrace_master_build[image:https://img.shields.io/jenkins/s/https/ci.lttng.org/babeltrace_master_build.svg[]]
15https://scan.coverity.com/projects/babeltrace[image:https://img.shields.io/coverity/scan/babeltrace.svg[]]
16
17The **_{bt2}_** project offers a library with a
fe0b4563
PP
18https://babeltrace.org/docs/v{btversion}/libbabeltrace2[C{nbsp}API],
19https://babeltrace.org/docs/v{btversion}/python/bt2[Python{nbsp}3 bindings],
94313b56 20and a
fe0b4563 21https://babeltrace.org/docs/v{btversion}/man1/babeltrace2.1/[command-line tool]
94313b56
PP
22(CLI) which makes it very easy for mere mortals to view, convert,
23transform, and analyze traces.
24
25{bt2} is also the reference parser implementation of the
26https://diamon.org/ctf/[Common Trace Format] (CTF), a versatile
27trace format produced by various tracers and tools such as
28https://lttng.org/[LTTng] and
29https://barectf.org/[barectf]. The {bt2} library and its Python bindings
30can read and write CTF traces.
31
fe0b4563 32See Babeltrace's https://babeltrace.org[official website], in
94313b56 33particular the
fe0b4563 34https://babeltrace.org/docs/v{btversion}/man7/babeltrace2-intro.7[`**babeltrace2-intro**(7)`]
94313b56
PP
35manual page, to learn more about the project.
36
37[NOTE]
38.Babeltrace{nbsp}1 vs. {bt2}
39====
2f06de00 40The Babeltrace project exists since 2010. In 2020, {bt2} was
94313b56
PP
41released. {bt2} is a complete rewrite of the library, Python
42bindings, and CLI. It is plugin-based and offers much more features and
43potential than Babeltrace{nbsp}1 while showing comparable performance.
44
45Because {bt2} is still a young major release, some
46distributions still provide packages for the Babeltrace{nbsp}1 project.
47Both projects can coexist on the same system as there are no common
48files.
49
50This file documents the **{bt2}** project.
51====
52
53
54== Build Babeltrace{nbsp}{btversion} from source
55
56=== Build-time requirements
57
58To build Babeltrace{nbsp}{btversion}, you need:
59
60Compiler::
61 * Any https://gcc.gnu.org/[GCC]-like compiler with C99 and
62 https://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html[GNU extension]
63 support.
64+
65https://clang.llvm.org/[Clang] is one of those.
66
67Tools::
68 * https://www.gnu.org/software/make/[GNU Make]
69 * **If you build from a Git clone**:
70 ** https://www.gnu.org/software/automake/[GNU Automake]{nbsp}≥{nbsp}1.10
71 ** https://www.gnu.org/software/autoconf/[GNU Autoconf]{nbsp}≥{nbsp}2.64
72 ** https://www.gnu.org/software/libtool/[GNU Libtool]{nbsp}≥{nbsp}2.2
73 ** https://github.com/westes/flex[flex]{nbsp}≥{nbsp}2.5.35
74 ** https://www.gnu.org/software/bison/bison.html[GNU Bison]{nbsp}≥{nbsp}2.4
75
76Libraries::
77 * A C library (for example,
78 https://www.gnu.org/software/libc/[GNU{nbsp}C Library],
79 https://www.musl-libc.org/[musl libc])
ef9559ae 80 * https://developer.gnome.org/glib/[GLib]{nbsp}≥{nbsp}2.28
94313b56
PP
81 (Debian/Ubuntu: `libglib2.0-dev`; Fedora: `glib2-devel`)
82
83_**If you need the `bt2` Python bindings**_::
84 * https://www.python.org[Python]{nbsp}≥{nbsp}3.4 (development
85 libraries and `python3-config`)
86 (Debian/Ubuntu: `python3-dev`; Fedora: `python3-devel`)
87 * http://www.swig.org[SWIG]{nbsp}≥{nbsp}3.0
88
fe0b4563 89_**If you need the https://lttng.org/[LTTng] debug information filter component class (https://babeltrace.org/docs/v{btversion}/man7/babeltrace2-filter.lttng-utils.debug-info.7/[`filter.lttng-utils.debug-info`])**_::
94313b56
PP
90 * https://sourceware.org/elfutils/[elfutils]{nbsp}≥{nbsp}0.154
91 (Debian/Ubuntu: `libelf-dev` and `libdw-dev`;
92 Fedora: `elfutils-devel` and `elfutils-libelf-devel`)
93
94313b56
PP
94_**If you need the {bt2}{nbsp}C{nbsp}API HTML documentation**_::
95 * http://www.doxygen.nl/[Doxygen]{nbsp}≥{nbsp}1.8.6
96
97_**If you need the {bt2} manual pages**_::
98 * https://www.methods.co.nz/asciidoc/[Asciidoc]{nbsp}≥{nbsp}8.6.8
99 * https://pagure.io/xmlto[xmlto]{nbsp}≥{nbsp}0.0.25
100
101
102=== Procedure
103
104To build {bt2}:
105
106. **If you build from a Git clone**, do:
107+
108[role="term"]
109----
110$ ./bootstrap
111----
112+
113This generates the `configure` script and other important files.
114
115. [[conf]]Configure the project:
116+
117[role="term"]
118----
119$ ./configure
120----
121+
122--
123The following options can modify the build:
124
125`--enable-api-doc`::
126 Build the {bt2}{nbsp}C{nbsp}API HTML documentation.
127
128`--enable-debug-info`::
129 Build the https://lttng.org/[LTTng] debug information filter
130 component class
fe0b4563 131 (https://babeltrace.org/docs/v{btversion}/man7/babeltrace2-filter.lttng-utils.debug-info.7/[`filter.lttng-utils.debug-info`]).
94313b56
PP
132
133`--enable-man-pages`::
134 Build the {bt2} manual pages.
135
136`--enable-python-bindings`::
137 Build the `bt2` Python bindings.
138+
139You can set the path to custom `python3` and `python3-config` programs
140with the `PYTHON` and `PYTHON_CONFIG` environment variable.
141
142`--enable-python-bindings-doc`::
143 Build the `bt2` Python bindings documentation.
144
145`--enable-python-plugins`::
146 Build support for {bt2} Python plugins.
147
148The following environment variables can modify the build:
149
150`BABELTRACE_DEBUG_MODE`::
151 Set to `1` to enable the debug mode.
152+
153The debug mode enables more run-time assertions to detect bugs in the
154{bt2} project.
155
156`BABELTRACE_DEV_MODE`::
157 Set to `1` to enable the <<dev-mode,developer mode>>.
158+
159The {bt2} developer mode enables more precondition and postcondition
160assertions to detect programming errors.
161
162`BABELTRACE_MINIMAL_LOG_LEVEL`::
163 Set the build-time, minimal logging level for all the project's
164 modules.
165+
166Set to `TRACE`, `DEBUG`, or `INFO`.
167
168`BABELTRACE_PLUGIN_PROVIDERS_DIR`::
169 Installation directory of {bt2} plugin providers.
170
171`BABELTRACE_PLUGINS_DIR`::
172 Installation directory of {bt2} project plugins.
173
174See `./configure --help` to list all the available options and
175environment variables.
176--
177
178. Build {bt2}:
179+
180[role="term"]
181----
182$ make
183----
184
185To install {bt2}:
186
187* Do:
188+
189[role="term"]
190----
191# make install
192----
193
194
195[[dev-mode]]
196=== Build {bt2} for plugin or application development
197
198If you are developing a {bt2} plugin or an application which uses
199libbabeltrace2, we recommend that:
200
201* You build {bt2} from source in _developer mode_.
202+
203The {bt2} developer mode enables more precondition and postcondition
204assertions to detect programming errors.
205+
206Set `BABELTRACE_DEV_MODE=1` when you <<conf,configure>> the {bt2} build.
207
208* You use _TRACE_ as the minimal logging level at build time to have
209 access to more logging, should you need it to debug your plugin or
210 application.
211+
212Set `BABELTRACE_MINIMAL_LOG_LEVEL=TRACE` when you <<conf,configure>>
213the {bt2} build.
214
215{bt2} development build configuration command line example:
216
217[role="term"]
218----
219$ BABELTRACE_DEV_MODE=1 BABELTRACE_MINIMAL_LOG_LEVEL=TRACE ./configure
220----
221
222{bt2} development build configuration with Python support example:
223
224[role="term"]
225----
226$ BABELTRACE_DEV_MODE=1 BABELTRACE_MINIMAL_LOG_LEVEL=TRACE ./configure \
227 --enable-python-bindings --enable-python-plugins
228----
229
230See the
fe0b4563 231https://babeltrace.org/docs/v{btversion}/libbabeltrace2[{bt2}{nbsp}C{nbsp}API]
94313b56
PP
232documentation for more information.
233
234
235== Use Babeltrace{nbsp}{btversion}
236
fe0b4563 237See the https://babeltrace.org[Babeltrace website] to learn how
94313b56
PP
238to use the different parts of the project.
239
240
241=== Run-time requirements
242
243Libraries::
244 * A C library (for example,
245 https://www.gnu.org/software/libc/[GNU{nbsp}C Library],
246 https://www.musl-libc.org/[musl libc])
ef9559ae 247 * https://developer.gnome.org/glib/[GLib]{nbsp}≥{nbsp}2.28
94313b56
PP
248 (Debian/Ubuntu: `libglib2.0-0`; Fedora: `glib2`)
249
250_**If you need the `bt2` Python bindings**_::
251 * https://www.python.org[Python]{nbsp}≥{nbsp}3.4
252 (Debian/Ubuntu/Fedora: `python3`)
253
fe0b4563 254_**If you need the https://lttng.org/[LTTng] debug information filter component class (https://babeltrace.org/docs/v{btversion}/man7/babeltrace2-filter.lttng-utils.debug-info.7/[`filter.lttng-utils.debug-info`])**_::
94313b56
PP
255 * https://sourceware.org/elfutils/[elfutils]{nbsp}≥{nbsp}0.154
256 (Debian/Ubuntu: `libelf` and `libdw`; Fedora: `elfutils-libs` and
257 `elfutils-libelf`)
258
259
260== Community
261
262[NOTE]
263====
264Babeltrace was born to parse CTF traces produced by LTTng{nbsp}2.0 and
265pretty-print their events.
266
b48c8cb5 267Even though Babeltrace is independent from the LTTng project today,
94313b56
PP
268their communities remain very close, which is why they share some
269communication channels and services.
270====
271
272Mailing list::
273 https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev[lttng-dev]
274 (mailto:lttng-dev@lists.lttng.org[lttng-dev@lists.lttng.org])
275
276IRC channel::
277 irc://irc.oftc.net/lttng[`#lttng`] on the OFTC network
278
279Bug tracker::
280 https://bugs.lttng.org/projects/babeltrace[Babeltrace bug tracker]
281
282GitHub project::
283 https://github.com/efficios/babeltrace/[efficios/babeltrace]
284
285Continuous integration::
286 https://ci.lttng.org/job/babeltrace_master_build/[Babeltrace's master build]
287 on LTTng's CI
288
289Code review::
290 https://review.lttng.org/q/project:babeltrace[_babeltrace_ project]
291 on LTTng Review
This page took 0.040434 seconds and 4 git commands to generate.