about summary refs log tree commit diff
path: root/third_party/nix/src (follow)
AgeCommit message (Collapse)AuthorFilesLines
2022-05-19 r/4098 chore(3p/nix): unvendor tvix 0.1Vincent Ambo453-76112/+0
Nothing is using this now, and we'll likely never pick this up again, but we learned a lot in the process. Every now and then this breaks in some bizarre way on channel bumps and it's just a waste of time to maintain that. Change-Id: Idcf2f5acd4ca7070ce18d7149cbfc0d967dc0a44 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5632 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org> Reviewed-by: lukegb <lukegb@tvl.fyi> Autosubmit: tazjin <tazjin@tvl.su>
2022-02-04 r/3768 chore: clean up some obsolete TODOssterni1-1/+0
* //3p/nix: probably not worth investing time into this anymore * //users/sterni/emacs: The emoji problem disappeared by itself with a newer emacs version, however a different one remains… * //web/panettone: If we ever want to change the behavior, we should just decide the behavior statically instead of using conditions and restarts, as we only call it in one place, so making different decisions depending on call sites is not really a use case we have. Change-Id: Iff9d439ce356db41ce34d690fb7b6a01822022fa Reviewed-on: https://cl.tvl.fyi/c/depot/+/5223 Tested-by: BuildkiteCI Reviewed-by: tazjin <tazjin@tvl.su> Autosubmit: sterni <sternenseemann@systemli.org>
2021-04-11 r/2481 chore(3p): Bump channels to 2021-04-09Vincent Ambo1-1/+1
Fixes included: * exposed gtest in the package set, required for protobuf * pinned SBCL to version 2.0.8: The channel moved it to >2.1, and a bunch of warnings seemed to be killing our builds - we should investigate this later. * removed kernel patches from //users/tazjin/frog: this machine is currently out of service anyways, not worth fixing while it's offline * removed steam & lutris from frog (they're currently broken) * removed Haskell overrides for hedgehog-classes & hgeometry-combinatorial * use gRPC sources from upstream and inject Abseil via Nix instead * fix for renamed grpc import in //third_party/nix * use libfprint-tod from upstream nixpkgs in glittershark/yeren and delete glittershark/pkgs/fprintd entirely, since all of the patches used there are available and working from upstream now (and stopped working here after the bump) Change-Id: Ia90e6f774f7b88bc9e60d28351b900ca43ee2695 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2901 Reviewed-by: glittershark <grfn@gws.fyi> Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: sterni <sternenseemann@systemli.org> Reviewed-by: lukegb <lukegb@tvl.fyi> Tested-by: BuildkiteCI
2021-02-19 r/2221 chore(3p): Bump NixOS channels to 2021-02-18sterni1-1/+1
Main motivation for this is to get the openldap update that fixes 10 CVEs: CVE-2020-36221 to including CVE-2020-36230. See also this issue which lists them all: https://github.com/NixOS/nixpkgs/issues/113490 Someone should also redeploy whitby as soon as this lands in canon and all build failures have been fixed. Things done to resolve upstream breakages: * grpc no longer takes abseil-cpp as an input, it has also been removed in the override. * Upgrade glittershark's kernel to 5.11 since the linuxPackages_5_9 attribute has been removed by upstream and the patch used by them is available for 5.11 as well. * The fixed output hash for third_patry.apereo-cas changed for some reason. * Remove the pin of haskellPackages.vector from the haskell overlay. It broke as the most recent version of vector in nixos-unstable no longer depends on semigroups. This effectively updates vector from 0.12.1.2 to 0.12.2.0. * Align two comments in tvix/libstore/worker-protocol.hh because the updated clang-format now demands that. Change-Id: I2ecf10a98de935e9222acf1feaea447d4c11ed2d Reviewed-on: https://cl.tvl.fyi/c/depot/+/2538 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: glittershark <grfn@gws.fyi> Reviewed-by: sterni <sternenseemann@systemli.org>
2021-02-02 r/2178 fix(tvix/libexpr): backport fix for functionArgs failing on primopssterni5-3/+18
Nix internally differentiates between lambdas and primops, but their type in the nix expression language is the same (lambda). The implementation of builtins.functionArgs only checks if the given expression is of type tLambda and fails if the type is tPrimop or tPrimopApp which are also functions. This most notably breaks lib.generators.toPretty when called on a builtin making for example yants fail if a primop is typechecked and an error message is generated. This fix generates an empty set for primops like for plain lambdas and is based upstream commit b2748c6e99239ff6803ba0da76c362790c8be192. Additionally we add to two tests: * eval-okay-functionargs now includes a few test cases checking that builtins.functionArgs always returns an empty set for builtins and also works as expected for normal functions. * eval-okay-types now also checks if builtins are functions. Future work would be to make builtins.functionArgs work as users would expect for builtins like builtins.fetchurl, builtins.fetchGit etc. which take a set as an argument. These currently don't register as formal arguments, but it would be an usability improvement at least if they did. See also https://github.com/NixOS/nix/pull/3626#issuecomment-698546704 Change-Id: I2bf4cb80d44a4b72ade13d3e0dbd7dfb1d049f32 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2477 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de> Reviewed-by: glittershark <grfn@gws.fyi>
2020-12-23 r/2028 refactor(tvix/libexpr): Remove Bindings::SortedByKeys()Vincent Ambo5-65/+47
Since we don't have a Bindings implementation with unstable order this function is not required, as its callers can just iterate over the attributes instead. Change-Id: I01b35277b5a2dde69d684bc881dbd7c0701bcbb3 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2291 Tested-by: BuildkiteCI Reviewed-by: glittershark <grfn@gws.fyi>
2020-11-28 r/1949 refactor(tvix): remove all 'using namespace' from nix commandKane York22-90/+96
clang-tidy: google-build-using-namespace Change-Id: I07ea10b03a6d9582c0508747698038f7106e8f63 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2181 Tested-by: BuildkiteCI Reviewed-by: glittershark <grfn@gws.fyi>
2020-11-28 r/1948 refactor(tvix): Centralize arbitrary definitionsGriffin Smith4-175/+180
To make it easier for future tests to use the arbitrary specialisations we've defined for some nix types, centralize them all in a single arbitrary.hh header file. Change-Id: I767f27949cfe7ec55c79901f7d7aa538d2f98c6b Reviewed-on: https://cl.tvl.fyi/c/depot/+/2182 Tested-by: BuildkiteCI Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-11-28 r/1947 fix(tvix): Add missing break;s to BuildResult::FromProtoGriffin Smith3-0/+72
Add missing break statements to the big switch block in BuildResult::FromProto, and cover the whole thing with a rapidcheck round-trip test. Change-Id: I7a07ca398cc5f02ca4fd8e6256fd563c6f3aea9d Reviewed-on: https://cl.tvl.fyi/c/depot/+/2178 Tested-by: BuildkiteCI Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-11-28 r/1946 feat(tvix): Thread a log sink through calls to buildDerivationGriffin Smith13-18/+31
Similarly to how we did for buildPaths, add a std::ostream& log_sink parameter to the build_derivation method on Store, and pass it std::cerr when called at the top level by nix commands - most notably, the build-remote hook binary, so that we get build logs when using tvix as a remote builder. Change-Id: I0f8f729ba8429d4838a0a135a5c2ac1e1a95d575 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2176 Tested-by: BuildkiteCI Reviewed-by: andi <andi@notmuch.email> Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-11-27 r/1945 fix(tvix): Don't call assertStorePath on BasicDerivation.builderGriffin Smith3-9/+5
Upstream doesn't, and for good reason - this might not be a store path, for example if it's /bin/sh Fixes: b/73 Change-Id: If9aa96de2cd8ab941c098a9f122b8b302a92ec38 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2175 Reviewed-by: kanepyork <rikingcoding@gmail.com> Tested-by: BuildkiteCI
2020-11-27 r/1944 fix(tvix): globally reintroduce --quiet and --verbose flags.multi2-2/+14
The --quiet and -v/--verbose flags were removed during the glog conversion in d0c44425e147ab7d38410f400825ad20da15037b, which has previously broken programs like e.g. home-manager, which passes --quiet to nix-build. A nix-build-specific workaround was added in 24f9354d5b8e1521d00f41a7c100b8e9ad327ce7, which manipulates the FLAGS_stderrthreshold global variable from glog. This commit moves the --quiet logic back into the argument handling code in libmain, and adds corresponding handling for -v/--verbose. Change-Id: I13d860ebbb78541d9f1236691a1efe8bd2163c67 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2170 Tested-by: BuildkiteCI Reviewed-by: glittershark <grfn@gws.fyi>
2020-11-27 r/1943 refactor(tvix): Prefer absl::StrFormat/StrAppendGriffin Smith1-6/+13
This fmt call was particularly egregious Change-Id: I2a3b1006c285170ab3374d1c8d81fc53e82a7b05 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2174 Tested-by: BuildkiteCI Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-11-27 r/1942 feat(tvix): Write build logs to LOG(INFO) in buildDerivationGriffin Smith1-4/+1
This was referencing a nonexistent note in buildPaths, for one, but for another let's get log outputs when calling this RPC. Change-Id: Ic9d17834b356ea84d69692ccc0249d09777e833b Reviewed-on: https://cl.tvl.fyi/c/depot/+/2173 Tested-by: BuildkiteCI Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-11-27 r/1941 fix(txix): Override overflow in BuildLogStreambufGriffin Smith1-0/+10
Subclasses of std::streambuf are expected to override overflow in addition to xsputn, as it's called in certain cases by the non-virtual methods. In our case, this was preventing endlines from getting sent over the log stream. Change-Id: I70d00f0c7cb8f8cf2f744f58974c21e7a70a715b Reviewed-on: https://cl.tvl.fyi/c/depot/+/2172 Tested-by: BuildkiteCI Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-11-27 r/1940 fix(tvix): Remove more superfluous log outputGriffin Smith2-3/+2
- A couple of log messages had double-newlines still - Remove the [ drvPath ] bit from the "building path" output, since the derivation path is already present in the message itself. Change-Id: Ib4b514a18fcb63c7191f4d7cf0a9b857aaa3f3fa Reviewed-on: https://cl.tvl.fyi/c/depot/+/2171 Tested-by: BuildkiteCI Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-11-27 r/1939 feat(tvix): Bump nlohmann-json version to 3.9.1Michael Reilly1-0/+8
Backporting from upstream at d860295e116f9aa0f37e2637b5ec4b9c86fdf4d3 Change-Id: Iefde47ff6f24d21e9b37c9b52a615bd8c9f2fdb2 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2141 Tested-by: BuildkiteCI Reviewed-by: andi <andi@notmuch.email>
2020-11-27 r/1938 refactor(tvix): JSONSax: Use a RootValueEelco Dolstra1-23/+24
More #3377. Backported from upstream at 9f46f54de4e55267df492456fc0393f74616366 Change-Id: I11bfca4ec56bd4e45291ce3f98a60f198dff0196 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2140 Tested-by: BuildkiteCI Reviewed-by: andi <andi@notmuch.email>
2020-11-27 r/1937 refactor(tvix): json-to-value: use unique_ptr instead of raw pointersYorick van Pelt1-21/+18
Backported from upstream at a350d0beb0e13d0f58698510bd6a96d894cd06fd Change-Id: Ib486bc1b36ef65041fab1a4634a0a82e13036fd4 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2139 Tested-by: BuildkiteCI Reviewed-by: andi <andi@notmuch.email>
2020-11-27 r/1933 fix(tvix): Don't double-up on endlines from log messagesGriffin Smith1-1/+1
Change-Id: I676dd4e9d8b1a7ff5389323e0462ba6681d62cf0 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2168 Reviewed-by: andi <andi@notmuch.email> Reviewed-by: kanepyork <rikingcoding@gmail.com> Tested-by: BuildkiteCI
2020-11-27 r/1931 refactor(tvix): remove signedness conversions by using std::optionalKane York1-4/+4
The different signedness of level and withLevel was causing implicit conversions. Use a nullopt instead of a -1 sentinel value. third_party/nix/src/libexpr/nixexpr.cc:242:21: warning: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined [bugprone-narrowing-conversions] Change-Id: I7c2cadb6fd6bbff6c5b84028651ad4ebba423297 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2157 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: glittershark <grfn@gws.fyi>
2020-11-27 r/1930 fix(tvix): make unsigned conversion explicitKane York1-1/+1
Implicit signedness conversion was causing warnings. Perform a static_cast; this value should never be out of range. third_party/nix/src/libmain/shared.cc:310:12: warning: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined [bugprone-narrowing-conversions] Change-Id: I34fe53d186ae33f970147135bbe3894fb39a0ec7 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2156 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: glittershark <grfn@gws.fyi>
2020-11-27 r/1929 fix(tvix): sqlite bind argument number is signedKane York1-1/+1
third_party/nix/src/libstore/sqlite.cc:89:33: warning: narrowing conversion from 'unsigned int' to signed type 'int' is implementation-defined [bugprone-narrowing-conversions] Change-Id: I1dbc01acaecc4f382f63e7108429cd814ff05f4f Reviewed-on: https://cl.tvl.fyi/c/depot/+/2155 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: glittershark <grfn@gws.fyi>
2020-11-27 r/1924 feat(tvix): builtins.fromJSON: use nlohmann/json parser instead of custom parserYorick van Pelt1-153/+114
backported from upstream at f1fac0b5c3b75efab781949fdff2b67ffdda2cb3 Change-Id: I788e3a9b930351118a5f248b356c351afd7f5391 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2138 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2020-11-22 r/1910 feat(tvix): Support a --quiet argument to nix-buildGriffin Smith1-0/+2
This is passed by some third-party tools, notably home-manager. At some point we should fully revamp argument parsing and log verbosity setting, but for now this gets us to more of a working state Fixes: b/78 Change-Id: I4134b17315e30145fd43d3659f407d7121ce8876 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2136 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2020-11-22 r/1909 fix(tvix): Add endlines to build log messagesGriffin Smith1-16/+19
Change-Id: Id6e871a2b7fbb24fb5c8e84e1638bfe94e363b57 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2135 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2020-11-22 r/1908 feat(tvix): Convert some DLOGs to VLOGsGriffin Smith6-10/+10
It seems like the amount of logging is causing things to move a little slower - even if that's not really the case, it gets in the way of debugging things. Refs: b/76 Change-Id: I9ea99a3b16e3307a0b0371bad22d03b0e2175af6 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2134 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2020-11-22 r/1906 feat(tvix): Add a pos field to more expr classesGriffin Smith2-6/+14
To aid in both debugging and (eventually) printing stacktraces, add a Pos member to a few more Expr variants. Change-Id: Ic1d2a056fc7e6c07bc3e79fa38845cb4a5da5ca5 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2133 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2020-11-21 r/1894 chore(3p): Bump nixpkgs to nixos-unstable from 2020-11-21Vincent Ambo9-61/+50
Included fixes for random breakage: * 3p/awscli: pick from the stable channel; it is broken on unstable * 3p/googletest: bumped version & removed patches that nixpkgs applies * 3p/lisp/cffi: bumped library version for SBCL compat * 3p/nix: fix libsystemd attribute * 3p/nix: reformatted (clang-format handling of ternaries changed) * glittershark/home: Use home-manager from nixkpgs * glittershark/kernel: bumped linux-ck patch hash * glittershark/kernel: removed "patch patch" * multi/whitby: Use home-manager from nixpkgs * tazjin/frog: drop Sourcetrail (it doesn't build currently) Note that in addition to these changes, some previous CLs updated the versions of git and cgit which was necessary for this channel bump, but which could not be done in the same commit due to the nature of the subtree merges. Change-Id: If2563e8a68e2750c4b913a976ff7b93b42e8b7f3 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2110 Tested-by: BuildkiteCI Reviewed-by: multi <depot@in-addr.xyz> Reviewed-by: glittershark <grfn@gws.fyi>
2020-11-21 r/1888 chore(tvix): Use StatusOr API available in Abseil's versionVincent Ambo4-8/+13
The Abseil version of `StatusOr` does not come with the status macros or the `Consume*` family of functions. This change modifies the existing code to use the common denominator of the API that is available between Abseil's own implementation of `StatusOr` and the one from Tensorflow that we are currently using. Change-Id: I5c37f68636a1fd54d153f95d7303ab8644abb774
2020-11-19 r/1886 fix(tvix): Use copy constructor to add strings to protosGriffin Smith2-1/+29
Passing a string directly to add_paths like this causes the proto class to take ownership over the string, meaning when it is destructed it will *explicitly* free the string. When the string's actual owner (the derivation struct) then goes out of scope it'll get freed again, causing a double-free. This fixes that to instead use the copy constructor to assign to a pointer to a new path, and covers the whole to_proto method with a rapidcheck test. Fixes: b/64 Change-Id: I84235bed9104ff430a0acf686d4a96f1e2e9a897 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2106 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2020-11-19 r/1885 fix(tvix): Use mutable field for assigning proto fieldsGriffin Smith1-2/+2
This was accidentally using the proto arena API to assign the derivation field of a BuildDerivationRequest. We *thought* this was causing a double free, but even with this change that's still happening. That said, this change is probably still a good idea since it's using the proto API as intended. References: b/64 Change-Id: I950a4eafb214e9113639ea54d2dfd4659b7be931 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2104 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2020-09-16 r/1795 fix(tvix): Convert INVALID_ARGUMENT to InvalidPathGriffin Smith1-2/+6
The code that calls queryPathInfoUncached explicitly catches the InvalidPath exception and translates it into a null result - but the RPC code was throwing a regular old Error for invalid paths. At some point we should get rid of all the exception-driven control flow in this whole thing, but in the meantime this gets us back to functional. Change-Id: I2a38790ee0c691ab0c8394c7738d7693fa42aa10 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1980 Tested-by: BuildkiteCI Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-09-15 r/1794 refactor(3p/tvix): make Value.primOp a std::shared_ptrKane York2-4/+3
Change-Id: I04cc42ae62d2ff71b07fde8e3710dcc9b4363a05 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1973 Reviewed-by: glittershark <grfn@gws.fyi> Tested-by: BuildkiteCI
2020-09-15 r/1793 fix(3p/tvix): properly zero the largest member of ValueKane York1-1/+4
The static_assert is present to force us to change the constructor when a member grows. Change-Id: Ifa4f4a03eb7ce13cff109cf26ecf0032045905e9 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1972 Tested-by: BuildkiteCI Reviewed-by: glittershark <grfn@gws.fyi>
2020-09-15 r/1792 refactor(3p/tvix): convert NixList usage to shared_ptrKane York4-12/+12
Starting to reclaim memory. Fairly simple mechanical replacement. Change-Id: I6b4c5c5596729470d1a049eba61e69e8097decf4 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1971 Tested-by: BuildkiteCI Reviewed-by: glittershark <grfn@gws.fyi>
2020-09-14 r/1791 refactor(tvix): Make static strings constexpr string_viewsGriffin Smith8-42/+46
Make all static std::strings constexpr std::string_views, and replace concatenation with absl::StrCat where necessary. Technically all of these are constant, so they really don't need to be top-level statics - and since I'm trying to get rid of as much global state as possible in preparation for making the nix daemon properly multithreaded I figured I'd knock these out while I was at it. Change-Id: Ibd3ad9ef68f0a0eacb135541b39fdb13dae042e1 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1939 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2020-09-10 r/1783 refactor(tvix): Convert refLength to constexprGriffin Smith1-9/+9
This is constant, so let's make it a constexpr. Change-Id: I6a9eb9f740979740f730ebe142d2cbf23dbcfd70 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1961 Tested-by: BuildkiteCI Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-09-10 r/1782 fix(tvix): Make working flag thread_localGriffin Smith1-5/+4
Since the daemon is running in threads now rather than forking a process per connection (thanks to grpc) this static flag to prevent accidentally initializing a new worker during a build is getting stepped on by multiple threads. This converts it to thread-local, and also adds an actual message to the check so that if it hits in the future we know what's going on. Fixes: b/58 Change-Id: I07a2f1582e56709c104f79935e5405fa24888f59 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1940 Tested-by: BuildkiteCI Reviewed-by: kanepyork <rikingcoding@gmail.com> Reviewed-by: V <v@anomalous.eu>
2020-09-06 r/1770 feat(tvix): Implement EnsurePath RPC handlerGriffin Smith1-0/+13
Missed this one Fixes: b/62 Change-Id: I6f3bbcd3e2a7db5786283761b57466da33a497f7 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1936 Reviewed-by: kanepyork <rikingcoding@gmail.com> Tested-by: BuildkiteCI
2020-09-06 r/1768 revert(tvix): "Disable sandboxing by default until its time comes"Griffin Smith1-8/+15
This reverts commit a41c3dedb18201aa689206079e203f41c9bef389. Reason for revert: I believe its time has come. Change-Id: I4133dc8a3b57b40b280646d1622ed7a0409c5246 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1941 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-09-06 r/1767 feat(tvix): Write even more build logs to clientGriffin Smith1-89/+84
Write *all* build logs (essentially everything that wasn't a DLOG), not just the stdout of the builder, to the client-bound log_sink_ that's threaded through build.cc. These logs are significantly more useful on the client, both when debugging tvix itself and (more importantly) when building things with it. To make this all work, this commit also refactors the passing-around of the log sink in build.cc slightly - the main reference is now owned by the Worker class, which already stores pointers to itself on the Goals it creates, so those Goals can then load the log sink from the Worker. This change was originally made to allow for logging to the log_sink from instance methods of the worker, but actually feels significantly more natural than storing the sink on the goal anyway. Change-Id: I461685bc7f5c0a326054940ac5971b568dd43f8e Reviewed-on: https://cl.tvl.fyi/c/depot/+/1925 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2020-09-01 r/1758 refactor(tvix): Remove default buildMode arguments from libstoreGriffin Smith1-4/+4
These were not used anyway, and *may* have been causing a weird series of problems leading to things sometimes aborting. Or maybe it has nothing to do with it - the only correlation we've found is from disassembling the output of a core dump. Regardless, this feels stylistically like a good idea. Change-Id: I288b50945e74ea90c118a21767fa4387c9f47f7d Reviewed-on: https://cl.tvl.fyi/c/depot/+/1921 Tested-by: BuildkiteCI Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-09-01 r/1757 feat(tvix): Print "Tvix" in the version stringGriffin Smith1-1/+1
Rather than printing "Nix" in the version string, print "Tvix". This is cosmetically nice, but also is very useful when making sure I actually have installed tvix on a system successfully. Change-Id: Idd1a9954bd66509327f52b7457cfba2f090ab30c Reviewed-on: https://cl.tvl.fyi/c/depot/+/1924 Reviewed-by: kanepyork <rikingcoding@gmail.com> Tested-by: BuildkiteCI
2020-09-01 r/1756 refactor(tvix): getEnv(): Return std::optionalEelco Dolstra17-66/+66
This allows distinguishing between an empty value and no value. Patch ported from upstream at https://github.com/NixOS/nix/commit/ba87b08f8529e4d9f8c58d8c625152058ceadb75 Change-Id: I061cc8e16b1a7a0341adfc3b0edca1c0c51d5c97 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1884 Tested-by: BuildkiteCI Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-09-01 r/1755 feat(tvix): Support systemd socket activationGriffin Smith2-14/+84
When the nix daemon starts up, first check (using sd_listen_fds) whether we have been systemd socket-activated. If so, instead of passing the nix daemon socket path to grpc, start a manual accept(2) loop, passing the client file descriptors to grpc via AddInsecureChannelFromFd. There's an open grpc issue at https://github.com/grpc/grpc/issues/19133 for building support into grpc to do this automatically, but as of right now this appears to be the only way to make this happen. Making this happen, by the way, was a bit of a journey - at one point I attempted to ServerBuilder's experimental AddExternalConnectionAcceptor API, and that didn't work either - it appears that the final missing piece to getting this working was explicitly fcntl(2)ing the client file descriptors to set O_NONBLOCK before passing them into gRPC. With that set, this all works inside of the test vm. Fixes: b/56 Change-Id: I5d2ab2b5b02eb570249b30a9674e115c61b0ab0e Reviewed-on: https://cl.tvl.fyi/c/depot/+/1882 Reviewed-by: kanepyork <rikingcoding@gmail.com> Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2020-08-29 r/1736 fix(tvix): Chunk the AddTextToStore requestGriffin Smith3-16/+65
Rather than sending the entire AddTextToStore request along in a single message, send it in a stream of chunks using the same metadata-first approach we've been using for the other store gRPC requests. This fixes a bug where certain builds could send more data than the maximum gRPC request size (4194304 bytes, it would appear), resulting in a RESOURCE_EXHAUSTED error. The initial chunk size, which is currently constant but should be made dynamic at some point in the future, has been chosen based on the IPC bandwidth delay product for tazjin's desktop, rounded up. Change-Id: I6f0232cdbc98653484816b39855126873fc59a03 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1835 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in> Reviewed-by: kanepyork <rikingcoding@gmail.com>
2020-08-28 r/1727 fix(tvix): Pass all args when auto-calling a function with an ellipsisGriffin Smith2-9/+21
The command line options --arg and --argstr that are used by a bunch of CLI commands to pass arguments to top-level functions in files go through the same code-path as auto-calling top-level functions with their default arguments - this, however, was only passing the arguments that were *explicitly* mentioned in the formals of the function - in the case of an as-pattern with an ellipsis (eg args @ { ... }) extra passed arguments would get omitted. This fixes that to instead pass *all* specified auto args in the case that our function has an ellipsis. Submitted upstream at https://github.com/NixOS/nix/pull/3965 Fixes: #46 Change-Id: I32b7ee0e5bacf75b2bc43a3f0796f533f4bd5959 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1863 Reviewed-by: tazjin <mail@tazj.in> Tested-by: BuildkiteCI
2020-08-28 r/1726 refactor(tvix): Clean up MixEvalArgs internalsGriffin Smith2-13/+23
Previously, MixEvalArgs (a generic data type used to handle --arg, --argstr, and -I arguments to `nix-build`, `nix eval`, etc.) was storing the difference between --arg and --argstr by prepending a single character (either 'E' or 'S') to the value of the arg. This is messy and un-type-safe, so this commit refactors that to use a proper enum and a std::pair, which allows us to add a switch and get totality checking. yay, types! Change-Id: I883f8db3136d05dda190fac0a1b494386c2ff87b Reviewed-on: https://cl.tvl.fyi/c/depot/+/1862 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
2020-08-23 r/1704 refactor(tvix/libutil): Mark single-argument constructors explicitVincent Ambo34-274/+311
This is the clang-tidy lint 'google-explicit-constructor'. There's a whole bunch of breakage that was introduced by this, and we had to opt out a few types of this (esp. the string formatting crap). In some cases minor other changes have been done to keep the code working, instead of converting between types (e.g. an explicit comparison operator implementation for nix::Pid). Change-Id: I12e1ca51a6bc2c882dba81a2526b9729d26988e7 Reviewed-on: https://cl.tvl.fyi/c/depot/+/1832 Tested-by: BuildkiteCI Reviewed-by: kanepyork <rikingcoding@gmail.com> Reviewed-by: glittershark <grfn@gws.fyi>