Add parsing and finding the failed derivation
Signed-off-by: Marcel Müller <neikos@neikos.email>
This commit is contained in:
parent
a7986584d5
commit
85c6a8f169
9 changed files with 985 additions and 76 deletions
273
Cargo.lock
generated
273
Cargo.lock
generated
|
|
@ -2,6 +2,80 @@
|
||||||
# It is not intended for manual editing.
|
# It is not intended for manual editing.
|
||||||
version = 4
|
version = 4
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "aho-corasick"
|
||||||
|
version = "1.1.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "anstream"
|
||||||
|
version = "0.6.21"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a"
|
||||||
|
dependencies = [
|
||||||
|
"anstyle",
|
||||||
|
"anstyle-parse",
|
||||||
|
"anstyle-query",
|
||||||
|
"anstyle-wincon",
|
||||||
|
"colorchoice",
|
||||||
|
"is_terminal_polyfill",
|
||||||
|
"utf8parse",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "anstyle"
|
||||||
|
version = "1.0.13"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "anstyle-parse"
|
||||||
|
version = "0.2.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2"
|
||||||
|
dependencies = [
|
||||||
|
"utf8parse",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "anstyle-query"
|
||||||
|
version = "1.1.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
|
||||||
|
dependencies = [
|
||||||
|
"windows-sys 0.61.2",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "anstyle-wincon"
|
||||||
|
version = "3.0.11"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
|
||||||
|
dependencies = [
|
||||||
|
"anstyle",
|
||||||
|
"once_cell_polyfill",
|
||||||
|
"windows-sys 0.61.2",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bit-set"
|
||||||
|
version = "0.8.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3"
|
||||||
|
dependencies = [
|
||||||
|
"bit-vec",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bit-vec"
|
||||||
|
version = "0.8.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bitflags"
|
name = "bitflags"
|
||||||
version = "2.10.0"
|
version = "2.10.0"
|
||||||
|
|
@ -14,12 +88,76 @@ version = "1.11.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3"
|
checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "camino"
|
||||||
|
version = "1.2.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cfg-if"
|
name = "cfg-if"
|
||||||
version = "1.0.4"
|
version = "1.0.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
|
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "clap"
|
||||||
|
version = "4.5.54"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c6e6ff9dcd79cff5cd969a17a545d79e84ab086e444102a591e288a8aa3ce394"
|
||||||
|
dependencies = [
|
||||||
|
"clap_builder",
|
||||||
|
"clap_derive",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "clap_builder"
|
||||||
|
version = "4.5.54"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "fa42cf4d2b7a41bc8f663a7cab4031ebafa1bf3875705bfaf8466dc60ab52c00"
|
||||||
|
dependencies = [
|
||||||
|
"anstream",
|
||||||
|
"anstyle",
|
||||||
|
"clap_lex",
|
||||||
|
"strsim",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "clap_derive"
|
||||||
|
version = "4.5.49"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671"
|
||||||
|
dependencies = [
|
||||||
|
"heck",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "clap_lex"
|
||||||
|
version = "0.7.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "colorchoice"
|
||||||
|
version = "1.0.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "datatest-stable"
|
||||||
|
version = "0.3.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a867d7322eb69cf3a68a5426387a25b45cb3b9c5ee41023ee6cea92e2afadd82"
|
||||||
|
dependencies = [
|
||||||
|
"camino",
|
||||||
|
"fancy-regex",
|
||||||
|
"libtest-mimic",
|
||||||
|
"walkdir",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "displaydoc"
|
name = "displaydoc"
|
||||||
version = "0.2.5"
|
version = "0.2.5"
|
||||||
|
|
@ -31,6 +169,12 @@ dependencies = [
|
||||||
"syn",
|
"syn",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "either"
|
||||||
|
version = "1.15.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "equivalent"
|
name = "equivalent"
|
||||||
version = "1.0.2"
|
version = "1.0.2"
|
||||||
|
|
@ -47,6 +191,23 @@ dependencies = [
|
||||||
"windows-sys 0.61.2",
|
"windows-sys 0.61.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "escape8259"
|
||||||
|
version = "0.5.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5692dd7b5a1978a5aeb0ce83b7655c58ca8efdcb79d21036ea249da95afec2c6"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "fancy-regex"
|
||||||
|
version = "0.14.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6e24cb5a94bcae1e5408b0effca5cd7172ea3c5755049c5f3af4cd283a165298"
|
||||||
|
dependencies = [
|
||||||
|
"bit-set",
|
||||||
|
"regex-automata",
|
||||||
|
"regex-syntax",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fixedbitset"
|
name = "fixedbitset"
|
||||||
version = "0.5.7"
|
version = "0.5.7"
|
||||||
|
|
@ -163,6 +324,12 @@ version = "0.16.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
|
checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "heck"
|
||||||
|
version = "0.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "indexmap"
|
name = "indexmap"
|
||||||
version = "2.12.1"
|
version = "2.12.1"
|
||||||
|
|
@ -173,6 +340,21 @@ dependencies = [
|
||||||
"hashbrown 0.16.1",
|
"hashbrown 0.16.1",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "is_terminal_polyfill"
|
||||||
|
version = "1.70.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "itertools"
|
||||||
|
version = "0.14.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"
|
||||||
|
dependencies = [
|
||||||
|
"either",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "itoa"
|
name = "itoa"
|
||||||
version = "1.0.17"
|
version = "1.0.17"
|
||||||
|
|
@ -185,6 +367,18 @@ version = "0.2.178"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091"
|
checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "libtest-mimic"
|
||||||
|
version = "0.8.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5297962ef19edda4ce33aaa484386e0a5b3d7f2f4e037cbeee00503ef6b29d33"
|
||||||
|
dependencies = [
|
||||||
|
"anstream",
|
||||||
|
"anstyle",
|
||||||
|
"clap",
|
||||||
|
"escape8259",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lock_api"
|
name = "lock_api"
|
||||||
version = "0.4.14"
|
version = "0.4.14"
|
||||||
|
|
@ -215,8 +409,13 @@ dependencies = [
|
||||||
name = "nix-json"
|
name = "nix-json"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"datatest-stable",
|
||||||
|
"displaydoc",
|
||||||
|
"itertools",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
|
"serde_repr",
|
||||||
|
"thiserror",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
@ -233,6 +432,12 @@ dependencies = [
|
||||||
"tokio",
|
"tokio",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "once_cell_polyfill"
|
||||||
|
version = "1.70.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "parking_lot"
|
name = "parking_lot"
|
||||||
version = "0.12.5"
|
version = "0.12.5"
|
||||||
|
|
@ -307,6 +512,32 @@ dependencies = [
|
||||||
"bitflags",
|
"bitflags",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-automata"
|
||||||
|
version = "0.4.13"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c"
|
||||||
|
dependencies = [
|
||||||
|
"aho-corasick",
|
||||||
|
"memchr",
|
||||||
|
"regex-syntax",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-syntax"
|
||||||
|
version = "0.8.8"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "same-file"
|
||||||
|
version = "1.0.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
|
||||||
|
dependencies = [
|
||||||
|
"winapi-util",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "scopeguard"
|
name = "scopeguard"
|
||||||
version = "1.2.0"
|
version = "1.2.0"
|
||||||
|
|
@ -356,6 +587,17 @@ dependencies = [
|
||||||
"zmij",
|
"zmij",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde_repr"
|
||||||
|
version = "0.1.20"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "signal-hook-registry"
|
name = "signal-hook-registry"
|
||||||
version = "1.4.8"
|
version = "1.4.8"
|
||||||
|
|
@ -388,6 +630,12 @@ dependencies = [
|
||||||
"windows-sys 0.60.2",
|
"windows-sys 0.60.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "strsim"
|
||||||
|
version = "0.11.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "2.0.111"
|
version = "2.0.111"
|
||||||
|
|
@ -453,12 +701,37 @@ version = "1.0.22"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
|
checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "utf8parse"
|
||||||
|
version = "0.2.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "walkdir"
|
||||||
|
version = "2.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
|
||||||
|
dependencies = [
|
||||||
|
"same-file",
|
||||||
|
"winapi-util",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasi"
|
name = "wasi"
|
||||||
version = "0.11.1+wasi-snapshot-preview1"
|
version = "0.11.1+wasi-snapshot-preview1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
|
checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi-util"
|
||||||
|
version = "0.1.11"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
|
||||||
|
dependencies = [
|
||||||
|
"windows-sys 0.61.2",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows-link"
|
name = "windows-link"
|
||||||
version = "0.2.1"
|
version = "0.2.1"
|
||||||
|
|
|
||||||
|
|
@ -16,8 +16,14 @@ thiserror = "2"
|
||||||
displaydoc = "0.2"
|
displaydoc = "0.2"
|
||||||
serde_json = "1"
|
serde_json = "1"
|
||||||
serde = { features = ["derive"], version = "1" }
|
serde = { features = ["derive"], version = "1" }
|
||||||
|
serde_repr = "0.1"
|
||||||
petgraph = "0.8"
|
petgraph = "0.8"
|
||||||
tokio = { features = ["full"], version = "1.48" }
|
tokio = { features = ["full"], version = "1.48" }
|
||||||
futures = "0.3"
|
futures = "0.3"
|
||||||
|
datatest-stable = "0.3.3"
|
||||||
|
|
||||||
nix-json = { version = "0.1.0", path = "./nix-json" }
|
nix-json = { version = "0.1.0", path = "./nix-json" }
|
||||||
|
|
||||||
|
|
||||||
|
[workspace.metadata.crane]
|
||||||
|
name = "nixie-ci"
|
||||||
|
|
|
||||||
|
|
@ -90,6 +90,8 @@
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
rustfmt'
|
rustfmt'
|
||||||
rustTarget
|
rustTarget
|
||||||
|
|
||||||
|
pkgs.cargo-nextest
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,17 @@ license.workspace = true
|
||||||
authors.workspace = true
|
authors.workspace = true
|
||||||
readme.workspace = true
|
readme.workspace = true
|
||||||
|
|
||||||
|
[[test]]
|
||||||
|
name = "sample-logs"
|
||||||
|
harness = false
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
serde.workspace = true
|
serde.workspace = true
|
||||||
serde_json.workspace = true
|
serde_json.workspace = true
|
||||||
|
serde_repr.workspace = true
|
||||||
|
thiserror = { workspace = true }
|
||||||
|
displaydoc = { workspace = true }
|
||||||
|
itertools = "0.14"
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
datatest-stable.workspace = true
|
||||||
|
|
|
||||||
184
nix-json/src/helpers.rs
Normal file
184
nix-json/src/helpers.rs
Normal file
|
|
@ -0,0 +1,184 @@
|
||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
use displaydoc::Display;
|
||||||
|
use itertools::Itertools;
|
||||||
|
use thiserror::Error;
|
||||||
|
|
||||||
|
use crate::NixBuildLogLine;
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq, Eq)]
|
||||||
|
pub enum LogBuildState {
|
||||||
|
NotStarted,
|
||||||
|
Started,
|
||||||
|
Failed,
|
||||||
|
Succeeded,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub struct LogBuildStatus {
|
||||||
|
state: LogBuildState,
|
||||||
|
store_path: String,
|
||||||
|
log_lines: Vec<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl LogBuildStatus {
|
||||||
|
pub fn is_failed(&self) -> bool {
|
||||||
|
self.state != LogBuildState::Succeeded
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn log_lines(&self) -> &[String] {
|
||||||
|
&self.log_lines
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Accumulated build status of different nix-builds
|
||||||
|
///
|
||||||
|
/// This helper can ingest [`NixBuildLogLine`] and keep track of the state of whatever is
|
||||||
|
/// being built. It then potentially emits note-events one can then use in their tool to respond to
|
||||||
|
/// various statuses
|
||||||
|
#[derive(Debug, Default)]
|
||||||
|
pub struct NixBuildState {
|
||||||
|
raw_log_lines: Vec<NixBuildLogLine>,
|
||||||
|
builds: HashMap<u64, LogBuildStatus>,
|
||||||
|
actions: HashMap<u64, Vec<NixBuildLogLine>>,
|
||||||
|
build_succeeded: Option<bool>,
|
||||||
|
next_stop_is_cause: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Error, Display)]
|
||||||
|
pub enum NixBuildStateError {
|
||||||
|
/// An error occured while parsing a log line
|
||||||
|
JsonParse(serde_json::Error),
|
||||||
|
}
|
||||||
|
|
||||||
|
impl NixBuildState {
|
||||||
|
pub fn from_log_lines(log_lines: impl AsRef<str>) -> Result<NixBuildState, NixBuildStateError> {
|
||||||
|
let lines: Vec<NixBuildLogLine> = log_lines
|
||||||
|
.as_ref()
|
||||||
|
.trim()
|
||||||
|
.lines()
|
||||||
|
.map(|line| {
|
||||||
|
serde_json::from_str(line.trim().trim_start_matches("@nix "))
|
||||||
|
.map_err(NixBuildStateError::JsonParse)
|
||||||
|
})
|
||||||
|
.collect::<Result<_, _>>()?;
|
||||||
|
|
||||||
|
let mut state = NixBuildState::default();
|
||||||
|
|
||||||
|
lines.into_iter().for_each(|line| {
|
||||||
|
state.handle_log_line(line);
|
||||||
|
});
|
||||||
|
|
||||||
|
Ok(state)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn handle_log_line(&mut self, log_line: NixBuildLogLine) -> Option<NixBuildEvent> {
|
||||||
|
self.raw_log_lines.push(log_line.clone());
|
||||||
|
|
||||||
|
if let Some(id) = log_line.id() {
|
||||||
|
let entry = self.actions.entry(id).or_default();
|
||||||
|
|
||||||
|
entry.push(log_line.clone());
|
||||||
|
}
|
||||||
|
|
||||||
|
match log_line {
|
||||||
|
NixBuildLogLine::Start(nix_log_start_action) => {
|
||||||
|
self.handle_start_action(nix_log_start_action)
|
||||||
|
}
|
||||||
|
NixBuildLogLine::Stop(nix_log_stop_action) => {
|
||||||
|
self.handle_stop_action(nix_log_stop_action)
|
||||||
|
}
|
||||||
|
NixBuildLogLine::Result(nix_log_result_action) => {
|
||||||
|
self.handle_result_action(nix_log_result_action)
|
||||||
|
}
|
||||||
|
NixBuildLogLine::Msg(nix_log_msg_action) => self.handle_log_action(nix_log_msg_action),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn is_failed(&self) -> bool {
|
||||||
|
self.build_succeeded != Some(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn handle_start_action(
|
||||||
|
&mut self,
|
||||||
|
nix_log_start_action: crate::NixLogStartAction,
|
||||||
|
) -> Option<NixBuildEvent> {
|
||||||
|
match nix_log_start_action.kind {
|
||||||
|
crate::ActivityKind::Build => {
|
||||||
|
self.builds.insert(
|
||||||
|
nix_log_start_action.id,
|
||||||
|
LogBuildStatus {
|
||||||
|
state: LogBuildState::Started,
|
||||||
|
store_path: nix_log_start_action.fields[0].as_str().unwrap().to_string(),
|
||||||
|
log_lines: vec![],
|
||||||
|
},
|
||||||
|
);
|
||||||
|
None
|
||||||
|
}
|
||||||
|
_ => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn handle_stop_action(
|
||||||
|
&mut self,
|
||||||
|
nix_log_stop_action: crate::NixLogStopAction,
|
||||||
|
) -> Option<NixBuildEvent> {
|
||||||
|
let log_build_status = self.builds.get_mut(&nix_log_stop_action.id)?;
|
||||||
|
|
||||||
|
if self.next_stop_is_cause {
|
||||||
|
self.next_stop_is_cause = false;
|
||||||
|
|
||||||
|
log_build_status.state = LogBuildState::Failed;
|
||||||
|
} else if log_build_status.state == LogBuildState::Started {
|
||||||
|
log_build_status.state = LogBuildState::Succeeded;
|
||||||
|
}
|
||||||
|
|
||||||
|
None
|
||||||
|
}
|
||||||
|
|
||||||
|
fn handle_result_action(
|
||||||
|
&mut self,
|
||||||
|
nix_log_result_action: crate::NixLogResultAction,
|
||||||
|
) -> Option<NixBuildEvent> {
|
||||||
|
match nix_log_result_action.kind {
|
||||||
|
crate::ResultKind::FileLinked => {}
|
||||||
|
crate::ResultKind::BuildLogLine => {}
|
||||||
|
crate::ResultKind::UntrustedPath => {}
|
||||||
|
crate::ResultKind::CorruptedPath => {}
|
||||||
|
crate::ResultKind::SetPhase => {}
|
||||||
|
crate::ResultKind::Progress => {
|
||||||
|
let Some((_done, _expected, _running, failed)) = nix_log_result_action
|
||||||
|
.fields
|
||||||
|
.iter()
|
||||||
|
.map(|field| field.as_u64().unwrap())
|
||||||
|
.collect_tuple()
|
||||||
|
else {
|
||||||
|
panic!("Unexpected amount of fields for progress");
|
||||||
|
};
|
||||||
|
|
||||||
|
if failed > 0 {
|
||||||
|
self.build_succeeded = Some(false);
|
||||||
|
self.next_stop_is_cause = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
crate::ResultKind::SetExpected => {}
|
||||||
|
crate::ResultKind::PostBuildLogLine => {}
|
||||||
|
crate::ResultKind::FetchStatus => {}
|
||||||
|
}
|
||||||
|
|
||||||
|
None
|
||||||
|
}
|
||||||
|
|
||||||
|
fn handle_log_action(
|
||||||
|
&self,
|
||||||
|
nix_log_msg_action: crate::NixLogMsgAction,
|
||||||
|
) -> Option<NixBuildEvent> {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_derivation(&self, drv: &str) -> Option<&LogBuildStatus> {
|
||||||
|
self.builds.values().find(|b| b.store_path == drv)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub enum NixBuildEvent {}
|
||||||
|
|
@ -1,49 +1,106 @@
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
|
use serde_repr::Deserialize_repr;
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
pub mod helpers;
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Deserialize)]
|
||||||
#[serde(tag = "action", rename_all = "lowercase")]
|
#[serde(tag = "action", rename_all = "lowercase")]
|
||||||
pub enum NixBuildLogLine {
|
pub enum NixBuildLogLine {
|
||||||
Start(NixLogStartAction),
|
Start(NixLogStartAction),
|
||||||
Stop(NixLogStartAction),
|
Stop(NixLogStopAction),
|
||||||
Result(NixLogResultAction),
|
Result(NixLogResultAction),
|
||||||
Msg(NixLogMsgAction),
|
Msg(NixLogMsgAction),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
impl NixBuildLogLine {
|
||||||
|
pub fn id(&self) -> Option<u64> {
|
||||||
|
match self {
|
||||||
|
NixBuildLogLine::Start(NixLogStartAction { id, .. })
|
||||||
|
| NixBuildLogLine::Stop(NixLogStopAction { id })
|
||||||
|
| NixBuildLogLine::Result(NixLogResultAction { id, .. }) => Some(*id),
|
||||||
|
NixBuildLogLine::Msg(..) => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// What kind of activity was logged
|
||||||
|
///
|
||||||
|
/// This definition mirrors the one in nixcpp. As it can evolve, the enum is marked as
|
||||||
|
/// `non_exhaustive` and may get extended later on.
|
||||||
|
#[derive(Debug, Clone, Copy, Deserialize_repr, PartialEq, Eq, Hash)]
|
||||||
|
#[repr(u32)]
|
||||||
|
#[non_exhaustive]
|
||||||
|
pub enum ActivityKind {
|
||||||
|
Unknown = 0,
|
||||||
|
CopyPath = 100,
|
||||||
|
FileTransfer = 101,
|
||||||
|
Realise = 102,
|
||||||
|
CopyPaths = 103,
|
||||||
|
Builds = 104,
|
||||||
|
Build = 105,
|
||||||
|
OptimiseStore = 106,
|
||||||
|
VerifyPaths = 107,
|
||||||
|
Substitute = 108,
|
||||||
|
QueryPathInfo = 109,
|
||||||
|
PostBuildHook = 110,
|
||||||
|
BuildWaiting = 111,
|
||||||
|
FetchTree = 112,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// What kind of result information was logged
|
||||||
|
///
|
||||||
|
/// This definition mirrors the one in nixcpp. As it can evolve, the enum is marked as
|
||||||
|
/// `non_exhaustive` and may get extended later on.
|
||||||
|
#[derive(Debug, Clone, Copy, Deserialize_repr, PartialEq, Eq, Hash)]
|
||||||
|
#[repr(u32)]
|
||||||
|
#[non_exhaustive]
|
||||||
|
pub enum ResultKind {
|
||||||
|
FileLinked = 100,
|
||||||
|
BuildLogLine = 101,
|
||||||
|
UntrustedPath = 102,
|
||||||
|
CorruptedPath = 103,
|
||||||
|
SetPhase = 104,
|
||||||
|
Progress = 105,
|
||||||
|
SetExpected = 106,
|
||||||
|
PostBuildLogLine = 107,
|
||||||
|
FetchStatus = 108,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Deserialize)]
|
||||||
pub struct NixLogResultAction {
|
pub struct NixLogResultAction {
|
||||||
pub id: i64,
|
pub id: u64,
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
pub kind: i64,
|
pub kind: ResultKind,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub fields: Vec<serde_json::Value>,
|
pub fields: Vec<serde_json::Value>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Clone, Deserialize)]
|
||||||
pub struct NixLogStopAction {
|
pub struct NixLogStopAction {
|
||||||
pub id: i64,
|
pub id: u64,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Clone, Deserialize)]
|
||||||
pub struct NixLogMsgAction {
|
pub struct NixLogMsgAction {
|
||||||
pub level: Option<i64>,
|
pub level: Option<i64>,
|
||||||
pub msg: String,
|
pub msg: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Clone, Deserialize)]
|
||||||
pub struct NixLogStartAction {
|
pub struct NixLogStartAction {
|
||||||
pub id: i64,
|
pub id: u64,
|
||||||
pub level: Option<i64>,
|
pub level: i64,
|
||||||
pub parent: Option<i64>,
|
pub parent: i64,
|
||||||
pub text: Option<String>,
|
pub text: Option<String>,
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
pub kind: Option<i64>,
|
pub kind: ActivityKind,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub fields: Vec<serde_json::Value>,
|
pub fields: Vec<serde_json::Value>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Clone, Deserialize)]
|
||||||
pub struct RawNixDerivationInfoOutput(HashMap<String, RawNixDerivationInfo>);
|
pub struct RawNixDerivationInfoOutput(HashMap<String, RawNixDerivationInfo>);
|
||||||
|
|
||||||
impl RawNixDerivationInfoOutput {
|
impl RawNixDerivationInfoOutput {
|
||||||
|
|
@ -52,45 +109,15 @@ impl RawNixDerivationInfoOutput {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Deserialize)]
|
#[derive(Debug, Clone, Deserialize)]
|
||||||
pub struct RawNixDerivationInfo {
|
pub struct RawNixDerivationInfo {
|
||||||
args: Vec<String>,
|
pub args: Vec<String>,
|
||||||
builder: String,
|
pub builder: String,
|
||||||
#[serde(rename = "inputDrvs")]
|
#[serde(rename = "inputDrvs")]
|
||||||
input_derivations: HashMap<String, serde_json::Value>,
|
pub input_derivations: HashMap<String, serde_json::Value>,
|
||||||
#[serde(rename = "inputSrcs")]
|
#[serde(rename = "inputSrcs")]
|
||||||
input_sources: Vec<String>,
|
pub input_sources: Vec<String>,
|
||||||
name: String,
|
pub name: String,
|
||||||
outputs: HashMap<String, HashMap<String, String>>,
|
pub outputs: HashMap<String, HashMap<String, String>>,
|
||||||
system: String,
|
pub system: String,
|
||||||
}
|
|
||||||
|
|
||||||
impl RawNixDerivationInfo {
|
|
||||||
pub fn args(&self) -> &[String] {
|
|
||||||
&self.args
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn builder(&self) -> &str {
|
|
||||||
&self.builder
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn input_derivations(&self) -> &HashMap<String, serde_json::Value> {
|
|
||||||
&self.input_derivations
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn input_sources(&self) -> &[String] {
|
|
||||||
&self.input_sources
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn name(&self) -> &str {
|
|
||||||
&self.name
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn outputs(&self) -> &HashMap<String, HashMap<String, String>> {
|
|
||||||
&self.outputs
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn system(&self) -> &str {
|
|
||||||
&self.system
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
388
nix-json/tests/logs/sample-build.failure.log
Normal file
388
nix-json/tests/logs/sample-build.failure.log
Normal file
|
|
@ -0,0 +1,388 @@
|
||||||
|
{
|
||||||
|
"failed_derivations": [
|
||||||
|
"/nix/store/pg0y4mmralfpb0l4f0pdbihicanh74w3-cargo-package-0.1.0.drv"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
------
|
||||||
|
@nix {"action":"msg","level":2,"msg":"path '/home/neikos/projects/nixie-ci/nix-json/tests/logs' does not contain a 'flake.nix', searching up"}
|
||||||
|
@nix {"action":"start","id":8659607551475712,"level":4,"parent":0,"text":"evaluating derivation 'git+file:///home/neikos/projects/nixie-ci#packages.x86_64-linux.crate'","type":0}
|
||||||
|
@nix {"action":"msg","level":1,"msg":"\u001b[35;1mwarning:\u001b[0m Git tree '/home/neikos/projects/nixie-ci' is dirty"}
|
||||||
|
@nix {"action":"stop","id":8659607551475712}
|
||||||
|
@nix {"action":"start","id":8659689155854336,"level":6,"parent":0,"text":"querying info about missing paths","type":0}
|
||||||
|
@nix {"action":"stop","id":8659689155854336}
|
||||||
|
@nix {"action":"msg","level":3,"msg":"this derivation will be built:"}
|
||||||
|
@nix {"action":"msg","level":3,"msg":" /nix/store/pg0y4mmralfpb0l4f0pdbihicanh74w3-cargo-package-0.1.0.drv"}
|
||||||
|
@nix {"action":"start","id":8659689155854337,"level":0,"parent":0,"text":"","type":102}
|
||||||
|
@nix {"action":"start","id":8659689155854338,"level":0,"parent":0,"text":"","type":104}
|
||||||
|
@nix {"action":"start","id":8659689155854339,"level":0,"parent":0,"text":"","type":103}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"start","id":8659689155854340,"level":6,"parent":0,"text":"querying info about missing paths","type":0}
|
||||||
|
@nix {"action":"stop","id":8659689155854340}
|
||||||
|
@nix {"action":"result","fields":[0,1,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,1,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,1,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,1,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,1,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,1,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,1,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,1,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,1,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,1,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,1,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,1,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,1,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,1,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,1,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,1,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,1,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,1,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,2,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,3,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,4,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,5,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,6,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,7,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,8,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,9,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,10,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,11,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,12,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,13,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,14,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,15,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,16,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,17,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,18,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,17,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,16,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,15,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,14,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,13,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,12,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,11,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,10,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,9,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,8,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,7,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,6,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,5,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,4,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,3,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,2,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[0,1,0,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"start","fields":["/nix/store/pg0y4mmralfpb0l4f0pdbihicanh74w3-cargo-package-0.1.0.drv","",1,1],"id":8659689155854341,"level":3,"parent":0,"text":"building '/nix/store/pg0y4mmralfpb0l4f0pdbihicanh74w3-cargo-package-0.1.0.drv'","type":105}
|
||||||
|
@nix {"action":"result","fields":[0,1,1,0],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":["doRemapPathPrefix not set, will not configure any source remapping"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["Running phase: unpackPhase"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["unpackPhase"],"id":8659689155854341,"type":104}
|
||||||
|
@nix {"action":"result","fields":["unpacking source archive /nix/store/hh34dp1dhbm7jwdpjfr2j5g6gv7z257s-nks4j57rv95pwii0ghpw7l9ha8j7p054-source"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["source root is nks4j57rv95pwii0ghpw7l9ha8j7p054-source"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["Running phase: patchPhase"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["patchPhase"],"id":8659689155854341,"type":104}
|
||||||
|
@nix {"action":"result","fields":["Executing configureCargoCommonVars"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["decompressing cargo artifacts from /nix/store/yqqzj6ya9rq2i13bz3m9yzrj7s7h4ld5-cargo-package-deps-0.1.0/target.tar.zst to target"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["Running phase: updateAutotoolsGnuConfigScriptsPhase"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["updateAutotoolsGnuConfigScriptsPhase"],"id":8659689155854341,"type":104}
|
||||||
|
@nix {"action":"result","fields":["Running phase: configurePhase"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["configurePhase"],"id":8659689155854341,"type":104}
|
||||||
|
@nix {"action":"result","fields":["will append /build/nks4j57rv95pwii0ghpw7l9ha8j7p054-source/.cargo-home/config.toml with contents of /nix/store/b42z6lmgpb5qyjs89dfc0jg4gdd7sj17-vendor-cargo-deps/config.toml"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["default configurePhase, nothing to do"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["Running phase: buildPhase"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["buildPhase"],"id":8659689155854341,"type":104}
|
||||||
|
@nix {"action":"result","fields":["+++ command cargo --version"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["cargo 1.91.0 (ea2d97820 2025-10-10)"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["+++ command cargo build --release --message-format json-render-diagnostics --all-features --all"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[1m\u001b[92m Compiling\u001b[0m nix-json v0.1.0 (/build/nks4j57rv95pwii0ghpw7l9ha8j7p054-source/nix-json)"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `nix_log_stop_action`\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mnix-json/src/helpers.rs:78:9\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m\u001b[1m\u001b[38;5;12m78\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m nix_log_stop_action: crate::NixLogStopAction,\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_nix_log_stop_action`\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":[""],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `nix_log_msg_action`\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mnix-json/src/helpers.rs:102:9\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m\u001b[1m\u001b[38;5;12m102\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m nix_log_msg_action: crate::NixLogMsgAction,\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_nix_log_msg_action`\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":[""],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: fields `state`, `store_path`, and `log_lines` are never read\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mnix-json/src/helpers.rs:15:5\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m\u001b[1m\u001b[38;5;12m14\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mpub struct LogBuildStatus {\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--------------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mfields in this struct\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m\u001b[1m\u001b[38;5;12m15\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m state: LogBuildState,\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m\u001b[1m\u001b[38;5;12m16\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m store_path: String,\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m\u001b[1m\u001b[38;5;12m17\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m log_lines: Vec<String>,\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `LogBuildStatus` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":[""],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[1m\u001b[92m Compiling\u001b[0m nixie-build v0.1.0 (/build/nks4j57rv95pwii0ghpw7l9ha8j7p054-source/nixie-build)"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: field `output_name` is never read\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mnixie-build/src/lib.rs:178:5\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m\u001b[1m\u001b[38;5;12m177\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mpub struct NixBuildOutput {\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--------------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mfield in this struct\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m\u001b[1m\u001b[38;5;12m178\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m output_name: String,\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `NixBuildOutput` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":[""],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[1m\u001b[33mwarning\u001b[0m: `nix-json` (lib) generated 3 warnings"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[1m\u001b[33mwarning\u001b[0m: `nixie-build` (lib) generated 1 warning"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[1m\u001b[92m Finished\u001b[0m `release` profile [optimized] target(s) in 0.26s"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["searching for bins/libs to install from cargo build log at cargoBuildLogukvD.json"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["searching for bins/libs complete"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["Running phase: checkPhase"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["checkPhase"],"id":8659689155854341,"type":104}
|
||||||
|
@nix {"action":"result","fields":["+++ command cargo test --release --all-features --all"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `nix_log_stop_action`\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mnix-json/src/helpers.rs:78:9\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m\u001b[1m\u001b[38;5;12m78\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m nix_log_stop_action: crate::NixLogStopAction,\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_nix_log_stop_action`\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":[""],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `nix_log_msg_action`\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mnix-json/src/helpers.rs:102:9\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m\u001b[1m\u001b[38;5;12m102\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m nix_log_msg_action: crate::NixLogMsgAction,\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_nix_log_msg_action`\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":[""],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: fields `state`, `store_path`, and `log_lines` are never read\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mnix-json/src/helpers.rs:15:5\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m\u001b[1m\u001b[38;5;12m14\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mpub struct LogBuildStatus {\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--------------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mfields in this struct\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m\u001b[1m\u001b[38;5;12m15\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m state: LogBuildState,\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m\u001b[1m\u001b[38;5;12m16\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m store_path: String,\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m\u001b[1m\u001b[38;5;12m17\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m log_lines: Vec<String>,\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `LogBuildStatus` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":[""],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[1m\u001b[92m Compiling\u001b[0m nix-json v0.1.0 (/build/nks4j57rv95pwii0ghpw7l9ha8j7p054-source/nix-json)"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[1m\u001b[33mwarning\u001b[0m: `nix-json` (lib) generated 3 warnings"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: field `output_name` is never read\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0mnixie-build/src/lib.rs:178:5\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m\u001b[1m\u001b[38;5;12m177\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mpub struct NixBuildOutput {\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--------------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mfield in this struct\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m\u001b[1m\u001b[38;5;12m178\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m output_name: String,\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `NixBuildOutput` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default\u001b[0m"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":[""],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[1m\u001b[92m Compiling\u001b[0m nixie-build v0.1.0 (/build/nks4j57rv95pwii0ghpw7l9ha8j7p054-source/nixie-build)"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[1m\u001b[33mwarning\u001b[0m: `nixie-build` (lib) generated 1 warning"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[1m\u001b[33mwarning\u001b[0m: `nix-json` (lib test) generated 3 warnings (3 duplicates)"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[1m\u001b[33mwarning\u001b[0m: `nixie-build` (lib test) generated 1 warning (1 duplicate)"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[1m\u001b[92m Finished\u001b[0m `release` profile [optimized] target(s) in 0.74s"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[1m\u001b[92m Running\u001b[0m unittests src/lib.rs (target/release/deps/nix_json-51e4504eafbaf912)"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":[""],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["running 0 tests"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":[""],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":[""],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[1m\u001b[92m Running\u001b[0m unittests src/lib.rs (target/release/deps/nixie_build-8de1641dbedfe4a7)"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":[""],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["running 1 test"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["test tests::check_unpure ... FAILED"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":[""],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["failures:"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":[""],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["---- tests::check_unpure stdout ----"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":[""],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["thread 'tests::check_unpure' (195) panicked at nixie-build/src/lib.rs:128:18:"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: \"No such file or directory\" }"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":[""],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":[""],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["failures:"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":[" tests::check_unpure"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":[""],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":[""],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":["\u001b[1m\u001b[91merror\u001b[0m: test failed, to rerun pass `-p nixie-build --lib`"],"id":8659689155854341,"type":101}
|
||||||
|
@nix {"action":"result","fields":[0,1,0,1],"id":8659689155854338,"type":105}
|
||||||
|
@nix {"action":"result","fields":[0,0,0,0],"id":8659689155854339,"type":105}
|
||||||
|
@nix {"action":"result","fields":[101,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"result","fields":[100,0],"id":8659689155854337,"type":106}
|
||||||
|
@nix {"action":"stop","id":8659689155854341}
|
||||||
|
@nix {"action":"stop","id":8659689155854339}
|
||||||
|
@nix {"action":"stop","id":8659689155854338}
|
||||||
|
@nix {"action":"stop","id":8659689155854337}
|
||||||
|
@nix {"action":"msg","column":null,"file":null,"level":0,"line":null,"msg":"\u001b[31;1merror:\u001b[0m \u001b[35;1m\u001b[0mCannot build '\u001b[35;1m/nix/store/pg0y4mmralfpb0l4f0pdbihicanh74w3-cargo-package-0.1.0.drv\u001b[0m'.\n Reason: \u001b[31;1mbuilder failed with exit code 101\u001b[0m.\n Output paths:\n \u001b[35;1m/nix/store/5h3c9bsxy2m6hqxb2gd236c7g76yb7gp-cargo-package-0.1.0\u001b[0m\n Last 25 log lines:\n >\n > running 0 tests\n >\n > test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s\n >\n > \u001b[1m\u001b[92m Running\u001b[0m unittests src/lib.rs (target/release/deps/nixie_build-8de1641dbedfe4a7)\n >\n > running 1 test\n > test tests::check_unpure ... FAILED\n >\n > failures:\n >\n > ---- tests::check_unpure stdout ----\n >\n > thread 'tests::check_unpure' (195) panicked at nixie-build/src/lib.rs:128:18:\n > called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: \"No such file or directory\" }\n > note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace\n >\n >\n > failures:\n > tests::check_unpure\n >\n > test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s\n >\n > \u001b[1m\u001b[91merror\u001b[0m: test failed, to rerun pass `-p nixie-build --lib`\n For full logs, run:\n \u001b[1mnix log /nix/store/pg0y4mmralfpb0l4f0pdbihicanh74w3-cargo-package-0.1.0.drv\u001b[0m\u001b[0m","raw_msg":"\u001b[35;1m\u001b[0mCannot build '\u001b[35;1m/nix/store/pg0y4mmralfpb0l4f0pdbihicanh74w3-cargo-package-0.1.0.drv\u001b[0m'.\nReason: \u001b[31;1mbuilder failed with exit code 101\u001b[0m.\nOutput paths:\n \u001b[35;1m/nix/store/5h3c9bsxy2m6hqxb2gd236c7g76yb7gp-cargo-package-0.1.0\u001b[0m\nLast 25 log lines:\n> \n> running 0 tests\n> \n> test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s\n> \n> \u001b[1m\u001b[92m Running\u001b[0m unittests src/lib.rs (target/release/deps/nixie_build-8de1641dbedfe4a7)\n> \n> running 1 test\n> test tests::check_unpure ... FAILED\n> \n> failures:\n> \n> ---- tests::check_unpure stdout ----\n> \n> thread 'tests::check_unpure' (195) panicked at nixie-build/src/lib.rs:128:18:\n> called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: \"No such file or directory\" }\n> note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace\n> \n> \n> failures:\n> tests::check_unpure\n> \n> test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s\n> \n> \u001b[1m\u001b[91merror\u001b[0m: test failed, to rerun pass `-p nixie-build --lib`\nFor full logs, run:\n \u001b[1mnix log /nix/store/pg0y4mmralfpb0l4f0pdbihicanh74w3-cargo-package-0.1.0.drv\u001b[0m\u001b[0m"}
|
||||||
37
nix-json/tests/sample-logs.rs
Normal file
37
nix-json/tests/sample-logs.rs
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
use std::path::Path;
|
||||||
|
|
||||||
|
use serde::Deserialize;
|
||||||
|
|
||||||
|
datatest_stable::harness! {
|
||||||
|
{
|
||||||
|
test = test_failures, root = "tests/logs", pattern = r".*.failure.log"
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Deserialize)]
|
||||||
|
struct FailureInfoHeader {
|
||||||
|
failed_derivations: Vec<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn test_failures(_path: &Path, content: String) -> datatest_stable::Result<()> {
|
||||||
|
let (header, content) = content.split_once("------").unwrap();
|
||||||
|
|
||||||
|
let header: FailureInfoHeader = serde_json::from_str(header).unwrap();
|
||||||
|
|
||||||
|
let build_state = nix_json::helpers::NixBuildState::from_log_lines(content)?;
|
||||||
|
|
||||||
|
assert!(build_state.is_failed());
|
||||||
|
|
||||||
|
for drv in header.failed_derivations {
|
||||||
|
let state = build_state
|
||||||
|
.get_derivation(&drv)
|
||||||
|
.unwrap_or_else(|| panic!("Expected {drv} to be present in build state"));
|
||||||
|
|
||||||
|
assert!(
|
||||||
|
state.is_failed(),
|
||||||
|
"derivation {drv} was found, but it was not marked as failed"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
@ -5,8 +5,10 @@ use std::process::Stdio;
|
||||||
use futures::FutureExt;
|
use futures::FutureExt;
|
||||||
use futures::StreamExt;
|
use futures::StreamExt;
|
||||||
use futures::stream::BoxStream;
|
use futures::stream::BoxStream;
|
||||||
|
use nix_json::ActivityKind;
|
||||||
use nix_json::NixBuildLogLine;
|
use nix_json::NixBuildLogLine;
|
||||||
use nix_json::RawNixDerivationInfoOutput;
|
use nix_json::RawNixDerivationInfoOutput;
|
||||||
|
use nix_json::ResultKind;
|
||||||
use petgraph::Directed;
|
use petgraph::Directed;
|
||||||
use petgraph::Graph;
|
use petgraph::Graph;
|
||||||
use petgraph::prelude::NodeIndex;
|
use petgraph::prelude::NodeIndex;
|
||||||
|
|
@ -144,7 +146,7 @@ impl NixBackend for NixCliBackend {
|
||||||
let build_info = &build_graph.build_infos[path];
|
let build_info = &build_graph.build_infos[path];
|
||||||
let cur_node = build_info.internal_id;
|
let cur_node = build_info.internal_id;
|
||||||
|
|
||||||
for (dep_path, _dep_info) in info.input_derivations() {
|
for (dep_path, _dep_info) in &info.input_derivations {
|
||||||
let other_node = build_graph.build_infos[dep_path].internal_id;
|
let other_node = build_graph.build_infos[dep_path].internal_id;
|
||||||
build_graph.dependencies.add_edge(
|
build_graph.dependencies.add_edge(
|
||||||
cur_node,
|
cur_node,
|
||||||
|
|
@ -220,14 +222,14 @@ where
|
||||||
let next_log_line = next_log_line?;
|
let next_log_line = next_log_line?;
|
||||||
|
|
||||||
if let NixBuildLogLine::Start(start_log) = next_log_line {
|
if let NixBuildLogLine::Start(start_log) = next_log_line {
|
||||||
if start_log.kind == Some(105) {
|
if start_log.kind == ActivityKind::Build {
|
||||||
id_to_derivation.insert(
|
id_to_derivation.insert(
|
||||||
start_log.id,
|
start_log.id,
|
||||||
start_log.fields[0].as_str().unwrap().to_string(),
|
start_log.fields[0].as_str().unwrap().to_string(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else if let NixBuildLogLine::Result(result) = next_log_line {
|
} else if let NixBuildLogLine::Result(result) = next_log_line {
|
||||||
if result.kind == 101 {
|
if result.kind == ResultKind::BuildLogLine {
|
||||||
if let Some(build) = actually_built.get_mut(&id_to_derivation[&result.id]) {
|
if let Some(build) = actually_built.get_mut(&id_to_derivation[&result.id]) {
|
||||||
writeln!(&mut build.log, "{}", result.fields[0].as_str().unwrap()).unwrap()
|
writeln!(&mut build.log, "{}", result.fields[0].as_str().unwrap()).unwrap()
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -242,24 +244,3 @@ where
|
||||||
Ok(actually_built)
|
Ok(actually_built)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests {
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
#[tokio::test]
|
|
||||||
async fn check_unpure() {
|
|
||||||
let builder = NixBuilder {
|
|
||||||
backend: NixCliBackend {
|
|
||||||
command_path: String::from("nix"),
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
let infos = builder
|
|
||||||
.build(".#checks.x86_64-linux.crate-fmt".to_string())
|
|
||||||
.await
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
println!("Got: {infos:#?}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue