| 5 Mar 2025 |
Picnoir | Do you know why the deriver is not set? Is it related to the drv file being uploaded to the cache or not (if I remember correctly, there's a flag in the nix config for that)? | 08:39:19 |
Picnoir | * Do you know why the deriver is not set? Is it depending of the drv file being uploaded to the cache or not (if I remember correctly, there's a flag in the nix config for that)? | 08:39:36 |
Picnoir | * Do you know why the deriver is not set? Is it depending on the drv file being uploaded to the cache or not (if I remember correctly, there's a flag in the nix config for that)? | 08:39:55 |
flokli | It might be a hydra setting | 08:41:57 |
flokli | I'm not entirely sure, sorry | 08:42:05 |
Ilan Joselevich (Kranzes) | i suddenly dont remember if the valid paths thing is the same as the valid = true field | 08:43:26 |
Picnoir | Hmm, could this be related to builtins 🤔 | 08:44:40 |
flokli | The valid paths thing is unrelated | 08:47:11 |
Robert Hensing (roberth) | "valid paths" are basically all the registered store paths. I don't think you'll ever get valid = false unless it's missing (but I'm not familiar with all the crimes in the CLI) | 08:47:20 |
flokli | The one way I could see a store path being present without it's drv locally is by `nix-store -r`'ing something from a binary cache without locally evaluating. | 08:48:24 |
Robert Hensing (roberth) | as for deriver, it's best-effort. If it can be preserved somewhere, that would be nice, but it can only tell you the first derivation that produced the output anyway | 08:49:07 |
Robert Hensing (roberth) | and first can be a bit arbitrary, as Nix has no concept of time :) | 08:49:31 |
flokli | Nix also has no concept of whether a build did fail or not | 08:50:50 |
flokli | You can only guess by checking whether there's a build Log available locally, and the store path or not. Bus as soon as there's a GC in between that doesn't GC the logs you're screwed 💁♂️ | 08:51:53 |
flokli | * You can only guess by checking whether there's a build Log available locally, and the store path or not. But as soon as there's a GC in between that doesn't GC the logs you're screwed 💁♂️ | 08:52:57 |
Picnoir | Right! I found other cases where you don't have drv files: the builtins relying on addToStore, like builtins.toFile
For instance: https://pastebin.aquilenet.fr/?97621c09cc60ef1f#HASi9d2NbdGYa7ARzyP4eVZTAhVDcL7AsooCFFG4rqAk | 08:53:39 |
Picnoir | * Right! I found other cases where you don't have drv files: the builtins relying on directly calling addToStore, like builtins.toFile
For instance: https://pastebin.aquilenet.fr/?97621c09cc60ef1f#HASi9d2NbdGYa7ARzyP4eVZTAhVDcL7AsooCFFG4rqAk | 08:53:57 |
Picnoir | Well, complexity++ in my mental model :D Nice | 08:54:12 |
flokli | Oh yes, of course, imports and fetches are no builds | 08:54:19 |
Picnoir | * Well, complexity++ in my mental model :D Nice 😢 | 08:54:26 |
flokli | (native fetches) | 08:54:37 |
Picnoir | Yeah | 08:54:41 |
Picnoir | but they still end up in the same validpaths table. | 08:54:50 |
Picnoir | And there's no direct way to set them appart from the "regular" builds as far as I can tell. | 08:55:05 |
Picnoir | By looking at the db I mean. | 08:55:15 |
flokli | Yes of course not | 08:56:04 |
flokli | Else or would be too simple :-) | 08:56:12 |
flokli | You also can have non-native fetches and native fetches both being present in your build graph, producing the same store path. | 08:57:11 |
flokli | So whether something is a build or not then depends on evaluation order ;-) | 08:57:57 |
Robert Hensing (roberth) | Recent addition:
Besides functioning as a content-addressed store, the Nix store layer works as a build system.
https://hydra.nixos.org/build/291787002/download/1/manual/store/derivation/index.html
| 08:58:09 |