Commit graph

68 commits

Author SHA1 Message Date
Jörg Thalheim 93972c0c18 handle broken evaluation worker pipes on write 2023-12-10 10:25:15 +00:00
Jörg Thalheim 5ad4e7266f handle broken evaluation worker pipes more gracefully
writeLine will throw a SysError exception, which obfuscates out-of-memory events where the eval worker is killed by the OS.
readLine is suffering from the same problem and will be handled in a subsequent commit.
2023-12-10 10:25:15 +00:00
Jörg Thalheim fad244725f print which derivation failed to evaluate 2023-12-10 08:31:27 +00:00
Jörg Thalheim d4eeecf6b2 fix commandline parsing for nix 2.19 2023-12-06 08:30:10 +00:00
Jörg Thalheim c240e61481 fix missing includes for nix 2.19 2023-12-06 08:30:10 +00:00
adisbladis cb9c7cac6b Fix iterating over input derivation outputs 2023-11-03 03:07:37 +00:00
adisbladis dd8affe264 Add missing include for eval-settings.hh 2023-11-03 03:07:37 +00:00
Jörg Thalheim 56f0464288 use platform instead of querySystem()
nix-build uses "system" from the derivation rather than the derivation attributes
2023-10-07 22:52:14 +02:00
Jörg Thalheim 15ec2c4663 print derivation name if system attribute is missing 2023-09-12 07:07:07 +00:00
Andrea Bedini f88571cfc9 Fix formatting 2023-07-14 07:09:40 +00:00
Andrea Bedini 15e5f5f7c8 Add --override-input 2023-07-14 07:09:40 +00:00
Andrea Bedini ab07651f74 Small refactor to avoid optional values 2023-07-14 07:09:40 +00:00
Jörg Thalheim 9e8320dbd6 fix c++20 warnings 2023-06-10 13:52:28 +02:00
Jörg Thalheim 7130e84e9e fix build 2023-06-10 13:34:42 +02:00
adisbladis 73ee1712fa
Merge pull request #207 from RaitoBezarius/input-drvs
feat: add inputDrvs to the JSON
2023-04-26 15:36:28 +12:00
raito 469a68d5c1 feat: add inputDrvs to the JSON
Currently, not a lot of things expose inputDrvs (except
`show-derivation`), which is a showstopper whenever you want to compute
popularity ranking based on the dependency relation.

Having `inputsDrvs` in the reply enable downstream users to perform such
computations in an efficient way.
2023-04-24 19:35:45 +02:00
Julien Malka 4d674c352e
fix recurseForDerivations evaluation in force-recurse mode 2023-04-24 17:17:47 +02:00
Jörg Thalheim e9c301bcbe document the worker/memory tradeoff 2023-04-13 23:23:51 +02:00
Jörg Thalheim 54a9b26431 fix build with nix 2.14 2023-03-09 22:21:59 +01:00
Jörg Thalheim 205f05ac02 fix build with 2.13 2023-01-22 11:19:24 +01:00
Jörg Thalheim 9d516a72d7 fix double-free caused by usage of shared pointer 2023-01-22 10:37:17 +01:00
Tom Bereknyei 7110a1a6c7 fix: catch errors for invalid derivations 2023-01-02 08:06:06 +01:00
Timothy DeHerrera c8b52f5836
fix: use InstallableFlake type & methods
Fixes #134

Use the `InstallableFlake` type in order to make use of it's `toValue`
method. This fixes the functor auto-call by including the work from
nixos/nix#6404.

Future work may make use of this object and its methods to employ the
flake based eval cache.
2022-11-04 09:37:54 -06:00
adisbladis 1af1893abe
Merge pull request #130 from nix-community/eval-store
Respect passed eval store
2022-10-18 14:51:11 +13:00
adisbladis e0c27dc984 Respect passed eval store 2022-10-18 14:46:37 +13:00
adisbladis b9836f2e06 Add parameter to force recursion (don't honour recurseIntoAttrs)
This can be useful when you are not in control over your expressions.

My use case is evaluating a Hydra jobset.
2022-10-18 14:42:26 +13:00
Jörg Thalheim 47a74fed83 also accept relative gc root directories 2022-09-20 20:12:55 +02:00
Jörg Thalheim 70afaeebca avoid shadowing metaName 2022-09-17 10:48:25 +02:00
Jörg Thalheim cb8126538f fix recurseIntoAttrs handling 2022-09-15 11:04:12 +02:00
Jörg Thalheim f6890b93e8 add check-cache-status option to query wether a binary cache has the build 2022-09-15 11:04:12 +02:00
Zhaofeng Li 23f4dfdc24 Add support for passing a Nix expression on the command line
Fixes #38.
2022-08-17 10:59:44 -06:00
Zhaofeng Li 9f64612215 Don't override evalSettings.pureEval unless necessary
Other eval flags like `--pure-eval` may activate `evalSettings.pureEval`,
so let's avoid touching it if we don't have to.
2022-08-17 00:53:08 -06:00
Jörg Thalheim 882d2376cf
fixes for nixUnstable 2022-05-09 09:50:48 +02:00
John Soo efca7105c7 Silence more harmless warnings. 2022-04-27 04:08:01 +12:00
adisbladis fec10f2cfc src/nix-eval-jobs.cc: Reformat with clang-format 2022-04-26 21:20:24 +12:00
adisbladis 61c9f4cfcc Replace internal attr string representation with an array
This ensures correct handling of attrnames with a dot in them and will
not throw errors about illegal attrnames.

Additionally this escapes any attributes containing dots in the JSON
output and adds another field called `attrPath` which contains the
attribute path as a list.

Example output:
```
{
  "attr": "hello",
  "attrPath": [
    "hello"
  ],
  "drvPath": "/nix/store/n204jib73z55cp9s0rmw1c5v5q528j7v-hello-2.12.drv",
  "name": "hello-2.12",
  "outputs": {
    "out": "/nix/store/h59dfk7dwrn7d2csykh9z9xm2miqmrnz-hello-2.12"
  },
  "system": "x86_64-linux"
}
```
2022-04-26 19:43:56 +12:00
adisbladis c1bbb11c5d Add support for recurseForDerivations
This will respect `recurseForDerivations` when iterating over attrsets.

Example expression:
``` nix
{ system ? builtins.currentSystem }:
{
  recurseForDerivations = true;

  # This should build as it's in the top-level attrset
  drvA = derivation {
    inherit system;
    name = "drvA";
    builder = ":";
  };

  dontRecurse = {
    # This shouldn't build as `recurseForDerivations = true;` is not set
    # recurseForDerivations = true;

    # This should not build
    drvB = derivation {
      inherit system;
      name = "drvA";
      builder = ":";
    };
  };

  recurse = {
    # This should build
    recurseForDerivations = true;

    # This should not build
    drvC = derivation {
      inherit system;
      name = "drvC";
      builder = ":";
    };
  };

}
```
2022-04-25 22:11:53 +12:00
John Soo f98da2e00b
Cleanup worker json handling. 2022-04-22 00:36:54 -07:00
John Soo 7aa9835adb
Cleanup gcroots creation. 2022-04-22 00:36:13 -07:00
John Soo 8dd6426d15
Make Drv struct.
To facilitate collecting and jsonifying derivations in different
contexts
2022-04-22 00:35:30 -07:00
adisbladis 5f9d57e9b1
Merge pull request #55 from jsoo1/kill-zombies
Kill zombies.
2022-04-22 14:33:16 +07:00
John Soo b9a87464a0
Move collecting handler to separate function.
s/master/collector/g
2022-04-22 00:15:28 -07:00
John Soo a27faabd0a
Use Proc struct to manage forked processes.
Cleans up zombie processes.
2022-04-22 00:15:28 -07:00
John Soo 9d4c256fa0
Make a Proc struct for running processes. 2022-04-22 00:15:27 -07:00
adisbladis 353724df90 Fix querying output paths
The upstream function signature changed, we no longer have to pass onlyOutputsToInstall.
2022-04-22 19:07:40 +12:00
Jörg Thalheim c1b86245a1 fix for nixUnstable 2022-04-22 18:53:12 +12:00
adisbladis a07a22f94c
Merge pull request #53 from jsoo1/silence-irrelevant-warnings
Ignore -Wnon-virtual-dtor for static struct.
2022-04-22 13:51:36 +07:00
adisbladis 55d91140be
Merge pull request #57 from jsoo1/refactor-top-level-value-finding
Refactor top-level value finding.
2022-04-22 13:29:26 +07:00
John Soo 0e0c6c44d0
Ignore -Wnon-virtual-dtor for static struct. 2022-04-21 15:44:01 -07:00
John Soo dd8a2e89a0
Simplify top-level value fetching. 2022-04-21 11:44:02 -07:00