2014-08-27 18:41:09 +02:00
|
|
|
<section xmlns="http://docbook.org/ns/docbook"
|
|
|
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
|
|
xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
|
|
version="5.0"
|
|
|
|
xml:id="sec-debug-build">
|
|
|
|
|
|
|
|
<title>Debugging Build Failures</title>
|
|
|
|
|
2014-12-14 01:39:32 +01:00
|
|
|
<para>At the beginning of each phase of the build (such as unpacking,
|
|
|
|
building or installing), the set of all shell variables is written to
|
|
|
|
the file <filename>env-vars</filename> at the top-level build
|
|
|
|
directory. This is useful for debugging: it allows you to recreate
|
|
|
|
the environment in which a build was performed. For instance, if a
|
|
|
|
build fails, then assuming you used the <option>-K</option> flag, you
|
|
|
|
can go to the output directory and <quote>switch</quote> to the
|
|
|
|
environment of the builder:
|
2014-08-27 18:41:09 +02:00
|
|
|
|
|
|
|
<screen>
|
|
|
|
$ nix-build -K ./foo.nix
|
|
|
|
... fails, keeping build directory `/tmp/nix-1234-0'
|
|
|
|
|
|
|
|
$ cd /tmp/nix-1234-0
|
|
|
|
|
|
|
|
$ source env-vars
|
|
|
|
|
|
|
|
<lineannotation>(edit some files...)</lineannotation>
|
|
|
|
|
|
|
|
$ make
|
|
|
|
|
|
|
|
<lineannotation>(execution continues with the same GCC, make, etc.)</lineannotation></screen>
|
|
|
|
|
|
|
|
</para>
|
|
|
|
|
2014-12-14 01:39:32 +01:00
|
|
|
</section>
|