LTTng Trace Control
----------------

Please visit https://lttng.org for more information. The current maintainer is
David Goulet <dgoulet@efficios.com>.

Latest development can be found at:

    * Gitweb :  https://git.lttng.org/?p=lttng-tools.git;a=summary
    * Git :     git://git.lttng.org/lttng-tools.git

REQUIREMENTS:

    - Linux kernel >= 2.6.27
      For epoll() support, at least this version is needed. However, poll() is
      also supported by running "./configure --disable-epoll". Using that, the
      kernel version can probably be older but we can't provide any guarantee.
      Please let us know if you are able to go lower without any problems.

    - liburcu
      Userspace RCU library, by Mathieu Desnoyers and Paul E. McKenney

      -> Tested with liburcu 0.7.x stable.

      * Debian/Ubuntu package: liburcu-dev
      * Git : git://git.lttng.org/userspace-rcu.git
      * Website:  https://lttng.org/urcu

    - libpopt >= 1.13
      Library for parsing command line parameters

      * Debian/Ubuntu package: libpopt-dev

    - libuuid
      Universally unique id library

      * Debian/Ubuntu package: uuid-dev

    - Babeltrace (optional)
      Trace viewer. Enable the use of "lttng view" command

      * Debian/Ubuntu package: babeltrace

    - Perl (optional)
      Needed for make check and tests.

    - Python >= 3.0 (optional)
      Needed for make check and tests.

      * Debian/Ubuntu package: python3

    - SWIG >= 2.0 (optional)
      Needed for Python bindings (--enable-python-bindings).

      * Debian/Ubuntu package: swig2.0

    - python-dev (optional)
      Python headers

      * Debian/Ubuntu package: python3-dev

    - For kernel tracing: modprobe

    - bash
      Needed for running "make check".

For developers using the git tree:

This source tree is based on the autotools suite from GNU to simplify
portability. Here are some things you should have on your system in order to
compile the git repository tree :

- GNU autotools (automake >=1.10, autoconf >=2.50, autoheader >=2.50)
  (make sure your system wide "automake" points to a recent version!)
- GNU Libtool >=2.2
  (for more information, go to https://www.gnu.org/software/autoconf/)
- flex >= 2.5.35
- bison >= 2.4

If you use GNU gold, which is NOT mandatory, make sure you have this version:
- GNU gold >= 2.22
(Before this version we hit a known bug documented at:
 http://sourceware.org/bugzilla/show_bug.cgi?id=11317)
Be advise that with GNU gold, you'll might have to specify -L/usr/local/lib in
LDFLAGS.

If you get the tree from the repository, you will need to use the "bootstrap"
script in the root of the tree. It calls all the GNU tools needed to prepare
the tree configuration.

INSTALLATION INSTRUCTIONS:

  - Download, compile and install the prerequisites.
  Then:
  $ ./boostrap
  $ ./configure
  $ make
  $ sudo make install
  $ sudo ldconfig

  If compiling from the git repository, run ./bootstrap before running
  the configure script, to generate it.

  If you want Python bindings, run ./configure --enable-python-bindings.
  Please note that some distributions will need the following
  environment variables set before running configure:

    export PYTHON="python3"
    export PYTHON_CONFIG="/usr/bin/python3-config"

USAGE:

Please see doc/quickstart.txt to help you start tracing. You can also use the
-h/--help command on 'lttng' and all other commands offered in this tool (Ex:
lttng enable-event -h).

A network streaming HOWTO can be found in doc/streaming-howto.txt which quickly
helps you understand how to stream a LTTng 2.0 trace.

A Python HOWTO can be found in doc/python-howto.txt which quickly
helps you understand how to use the Python module to control the LTTng API.

PACKAGE CONTENTS:

    This package contains the following elements:

    - liblttng-ctl (public API)
      The LTTng tracing control library.

    - libsessiond-comm (internal)
      The lttng-sessiond communication library. In order to talk with
      lttng-sessiond, this library must be used.

    - libkernel-ctl (internal)
      Kernel tracer control and ioctl definitions.

    - libconsumer (internal)
      Library for Kernel and (optionally) UST trace consumer.

    - libkernel-consumer (internal)
      Library for Kernel consumer control

    - libust-consumer (internal)
      Library for UST consumer control

    - libhashtable (internal)
      Library wrapper over URCU hashtables.

    - libcommon (internal)
      Contains multiple useful function call used by the whole tree.

    - libcompat (internal)
      Compatibility library mostly for FreeBSD and Linux.

    - librelayd (internal)
      Library for all relayd interactions over the network.

    - lttng-relayd
      The relay daemon used for network streaming

    - lttng-consumerd
      The consumer daemon which uses libconsumer.

    - lttng-sessiond
      The LTTng session daemon binary.

    - lttng
      The LTTng tracer command line control tool.

    - include (installed in $(includedir)/lttng/)
      The liblttngctl API header file.

    - tests
      Various test programs.

    - doc
      Various documentations and quickstart guide.

    - extras
      Contains extra data such as bash completion file. Python bindings for
      liblttng-ctl are also available there.
