Add linux kernel modules needed to do kernel tracing with LTTng.
To make them available to lttng in NixOS, add this to configuration.nix:
boot.extraModulePackages = [ pkgs.linuxPackages.lttngModules ];
Babeltrace is a command-line tool and library to read and convert LTTng
tracefiles. Give it a (binary) trace file/dir path and it will print a
human readable event log to standard out.
This is the Linux Trace Toolkit. Included in this package:
Command-line client:
lttng
Tracing daemons:
lttng-sessiond (automatically started by lttng)
lttng-relayd (remote trace collection daemon)
Userspace tracing can be done by using liblttng-ust. To do kernel
tracing we also need the LTTng kernel modules.
I've added a patch that changes "/sbin/modprobe" to just "modprobe".
It has been submitted for inclusion in mainline, so it will probably
make it into 3.11 (or 3.12 as 3.11 is fairly close to release).
It is very local, only affecting people who use the "send" feature.
Without it, send is unstable/unsafe to use incrementally.
It can probably be applied to 3.9 and 3.8 as well, but as I only
tested it against 3.10, so I didn't bother.
It turns out that the .deb only contains the changelog and some other docs.
Revert back to using the i686 version, but keep the double url for the future.
The script installed with this expression only copies a boostrapper and another
script to the user's home folder. Those also need to be patched to get on with
the installation.
Having N different copies of the NixOS kernel configuration is bad
because these copies tend to diverge. For instance, our 3.10 config
lacked some modules that were enabled in older configs, probably
because the 3.10 config had been copied off an earlier version of some
older kernel config.
So now there is a single kernel config in common-config.nix. It has a
few conditionals to deal with new/removed kernel options, but
otherwise it's pretty straightforward.
Also, a lot of cut&paste boilerplate between the kernel Nix
expressions is gone (such as preConfigure).
It doesn't make sense to build tools/applications with three different
python interpreter versions, so move them out of python modules list.
Also reverts 53ffc6e0ef.
We cannot import the packages from all of these three packages sets into
the global namespace, because they are indistinguishable. For example:
$ nix-env -qaP \* | grep pylint
pypyPackages.pylint pylint-0.26.0
python33Packages.pylint pylint-0.26.0
python27Packages.pylint pylint-0.26.0
When someone tries to install pylint by running "nix-env -i pylint",
then it's impossible to tell which one of these three versions was
chosen.
I can think of two ways to remedy this problem with recurseIntoAttrs:
1) Bake the name of the Python interpreter into every package's name,
i.e. offer "python27-pylint", "python33-pylint", and so on.
2) Ensure that all non-default package sets mark all their packages
'lowPrio' to unsure that the choice during installation is
deterministic.