[Nix-dev] How can we test changes before pushing them to master?

Cillian de Róiste cillian.deroiste at gmail.com
Tue Jul 24 20:34:56 CEST 2012


Hi,

Over the last weekend in Munich Florian, Joachim and I planned to make
some invasive changes. Before opening a pull request we wanted to test
that we didn't break anything. We tried a variety of approaches, many
of which were discussed on IRC and on the mailing list but we still
haven't quite reached that goal.

We are looking for a way to tell Nix to build every available package
(not just the ones currently installed on the system) which depend in
any way on a particular change. Some recent examples where this would
also have been handy are the boost and ffmpeg upgrades. In our case we
want to see what happens when we change the buildPythonPackage
function. For example, we have no reason to test that haskell packages
build successfully, but we do want to test that mesa builds
successfully.

We have a nix expression which can return the attribute set of all
packages which directly depend on some particular input. This is
pretty useful, but we haven't figured out yet how to generate that
attribute set recursively and efficiently (see email from Florian
"extending release-lib and how to cache in nix").

We did try maintainers/scripts/rebuild-amount.sh but couldn't manage
to get any output from it. We also tried running the nix-instantiate
command which is run by that script (see email from Florian: "reverse
dependencies") but it dies as soon as it finds any expression that it
can't evaluate.

Perhaps other people already have similar scripts or workflows or
ideas of how we could go about this?

Cheers,
Cillian


More information about the nix-dev mailing list