mirror of
https://github.com/NixOS/nix
synced 2025-06-25 02:21:16 +02:00
libutil: handle json builder log messages with unexpected format
Before this change, expressions like: with import <nixpkgs> {}; runCommand "foo" {} '' echo '@nix {}' >&$NIX_LOG_FD '' would result in Lix crashing, because accessing nonexistent fields of a JSON object throws an exception. Rather than handling each field individually, we just catch JSON exceptions wholesale. Since these log messages are an unusual circumstance, log a warning when this happens. Fixes #544. Change-Id: Idc2d8acf6e37046b3ec212f42e29269163dca893 (cherry picked from commit e55cd3beea710db727fd966f265a1b715b7285f3)
This commit is contained in:
parent
e82ff51726
commit
ee03fd478e
2 changed files with 50 additions and 29 deletions
|
@ -33,6 +33,18 @@ let
|
|||
outputHash = "1dq9p0hnm1y75q2x40fws5887bq1r840hzdxak0a9djbwvx0b16d";
|
||||
};
|
||||
|
||||
unusual-logging = mkDerivation {
|
||||
name = "unusual-logging";
|
||||
buildCommand = ''
|
||||
{
|
||||
echo "@nix 1"
|
||||
echo "@nix {}"
|
||||
echo '@nix {"action": null}'
|
||||
} >&$NIX_LOG_FD
|
||||
touch $out
|
||||
'';
|
||||
};
|
||||
|
||||
in
|
||||
mkDerivation {
|
||||
name = "dependencies-top";
|
||||
|
@ -42,6 +54,7 @@ mkDerivation {
|
|||
input1_drv = input1;
|
||||
input2_drv = input2;
|
||||
input0_drv = input0;
|
||||
unusual_logging_drv = unusual-logging;
|
||||
fod_input_drv = fod_input;
|
||||
meta.description = "Random test package";
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue