diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2003-08-19T09·04+0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2003-08-19T09·04+0000 |
commit | 2de850479101e5a378c87d1392ea03c63ce224cf (patch) | |
tree | 4a7782e4ec3439cc73311d68e272546c486f9116 | |
parent | 31e4aa64396858e3b6ef8477397c84cbd80670fc (diff) |
* Delete the temporary directories of failed builds by default, and an
option `--keep-failed' to override this behaviour.
-rw-r--r-- | doc/manual/nix-reference.xml | 17 | ||||
-rw-r--r-- | src/exec.cc | 6 | ||||
-rw-r--r-- | src/globals.cc | 3 | ||||
-rw-r--r-- | src/globals.hh | 6 | ||||
-rw-r--r-- | src/nix-help.txt | 1 | ||||
-rw-r--r-- | src/nix.cc | 2 |
6 files changed, 34 insertions, 1 deletions
diff --git a/doc/manual/nix-reference.xml b/doc/manual/nix-reference.xml index 75009b1d04bc..d9c78ff07344 100644 --- a/doc/manual/nix-reference.xml +++ b/doc/manual/nix-reference.xml @@ -15,6 +15,10 @@ <arg><option>--verbose</option></arg> <arg><option>-v</option></arg> </group> + <group choice='opt' rep='repeat'> + <arg><option>--keep-failed</option></arg> + <arg><option>-K</option></arg> + </group> <arg choice='plain'><replaceable>operation</replaceable></arg> <arg rep='repeat'><replaceable>options</replaceable></arg> <arg rep='repeat'><replaceable>arguments</replaceable></arg> @@ -121,6 +125,19 @@ </listitem> </varlistentry> + + <varlistentry> + <term><option>--keep-failed</option></term> + <listitem> + <para> + Specifies that in case of a build failure, the temporary directory + (usually in <filename>/tmp</filename>) in which the build takes + place should not be deleted. The path of the build directory is + printed as an informational message. + </para> + </listitem> + </varlistentry> + </variablelist> </refsect1> diff --git a/src/exec.cc b/src/exec.cc index d82f5effaaea..fdfb467cca71 100644 --- a/src/exec.cc +++ b/src/exec.cc @@ -122,7 +122,11 @@ void runProgram(const string & program, throw Error("unable to wait for child"); if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) { - delTmpDir.cancel(); + if (keepFailed) { + msg(lvlTalkative, + format("build failed; keeping build directory `%1%'") % tmpDir); + delTmpDir.cancel(); + } throw Error("unable to build package"); } } diff --git a/src/globals.cc b/src/globals.cc index 1ec0c4f9ba21..f21820f59771 100644 --- a/src/globals.cc +++ b/src/globals.cc @@ -17,6 +17,9 @@ string nixLogDir = "/UNINIT"; string nixDBPath = "/UNINIT"; +bool keepFailed = false; + + void openDB() { nixDB.open(nixDBPath); diff --git a/src/globals.hh b/src/globals.hh index 2c4d3392077d..107d617bc895 100644 --- a/src/globals.hh +++ b/src/globals.hh @@ -69,6 +69,12 @@ extern string nixLogDir; extern string nixDBPath; +/* Misc. global flags. */ + +/* Whether to keep temporary directories of failed builds. */ +extern bool keepFailed; + + /* Open the database environment. */ void openDB(); diff --git a/src/nix-help.txt b/src/nix-help.txt index 0e54d162de05..4e1d707c8926 100644 --- a/src/nix-help.txt +++ b/src/nix-help.txt @@ -34,3 +34,4 @@ Query flags: Options: --verbose / -v: verbose operation (may be repeated) + --keep-failed / -K: keep temporary directories of failed builds diff --git a/src/nix.cc b/src/nix.cc index 4beeb5da8943..704442c313e4 100644 --- a/src/nix.cc +++ b/src/nix.cc @@ -372,6 +372,8 @@ void run(Strings args) pathArgs = true; else if (arg == "--verbose" || arg == "-v") verbosity = (Verbosity) ((int) verbosity + 1); + else if (arg == "--keep-failed" || arg == "-K") + keepFailed = true; else if (arg == "--help") printHelp(); else if (arg[0] == '-') |