In my day to day job at EfficiOS, I often
have to manually test different versions and configurations of LTTng.
The typical way to test LTTng 2.7 if LTTng 2.8 is installed,
for example, is, for each of the three LTTng projects (LTTng-tools,
LTTng-UST, and LTTng-modules):
- Uninstall the current version (2.8).
- Check out version 2.7.
- Configure, build, and install version 2.7.
This whole manual process becomes painful over time. I'm not even
mentioning the situations where I also need to test different versions
of the tools' dependencies, like Glib and Libxml2. The same laborious
process applies to Babeltrace.
In an ideal world, I would have multiple environments containing
different versions and configurations of the tools and dependencies
which form the LTTng ecosystem. This is totally possible with the
various environment variables and configure flags (--prefix,
--with-lttng-ust-prefix, and the rest) of the projects. And this is
exactly what vlttng exploits to
achieve this. vlttng is a project I've been working on in my spare time.
In this article I explain what vlttng is exactly, after which I show
a concrete example.