RFD: remove build-hook setting #911
Labels
No labels
Affects/CppNix
Affects/Nightly
Affects/Only nightly
Affects/Stable
Area/build-packaging
Area/cli
Area/evaluator
Area/fetching
Area/flakes
Area/language
Area/lix ci
Area/nix-eval-jobs
Area/profiles
Area/protocol
Area/releng
Area/remote-builds
Area/repl
Area/repl/debugger
Area/store
awaiting
author
awaiting
contributors
bug
Context
contributors
Context
drive-by
Context
maintainers
Context
RFD
crash 💥
Cross Compilation
devx
docs
Downstream Dependents
E/easy
E/hard
E/help wanted
E/reproducible
E/requires rearchitecture
Feature/S3
Importance
High
Importance
Low
imported
Language/Bash
Language/C++
Language/NixLang
Language/Python
Language/Rust
Needs Langver
OS/Linux
OS/macOS
performance
regression
Release Blocking
Non-urgent
Release Blocking
Urgent
stability
Status
blocked
Status
invalid
Status
postponed
Status
wontfix
testing
testing/flakey
Topic/Large Scale Installations
Urgency
High
Urgency
Low
ux
No milestone
No project
No assignees
4 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
lix-project/lix#911
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
build-hookand its associatednix __build-remoteare extremely cursed. each remote build uses its own build-hook process, which holds on to a single local store connection and another single remote store connection (which itself usually holds on to a single ssh process). scheduling of remote builders is complicated immensely by this because it all happens through file locks, the additional localstore connection causes overhead, and the behavior differences of ssh and ssh-ng remotes are a major headache.we should probably just remove
build-hookaltogether. an rpc-based system will not have any use for build hooks as they exist today, and what little can be gained from build hooks can also be got from plugins that add custom store url schemes. we haven't been able to find any use ofbuild-hookout there either.this is not about removing
pre-build-hookorpost-build-hook, justbuild-hook. we've already deprecatedbuild-hooka while ago.should we get this done in 2.95.0? if so, please add release blocker to it
not entirely sure yet. we'll add it as a blocker just so we don't forget about it, if 2.95 ends up taking too long we can also postpone this a bit
This issue was mentioned on Gerrit on the following CLs:
I do want to note that custom store url schemes are not really sufficient to replace build hooks, because that doesn't end up copying the result back to the local store, resulting in a state tracking problem where the custom store needs to somehow keep track of which store paths are on which remote machine in between your
nix build --store custom://andnix copy --from custom://invocations. Acting like aNIX_REMOTEis better for this, which will get easier to do after the Nix GSoC project to make the daemon connection handler pluggable by libnix-store users (but it's still not a great replacement).when we remove the hook it will be the daemon's job to copy outputs from builder stores to the local store once a build has completed as part of finalization of a remote build (which currently just amounts to "wait to the build hook to exit"). our goal is to have the daemon open rpc connections to other daemons directly; in that model if you want something that behaves like a custom build hook does today you'd set up a local proxy that does all your custom processing and forwards to other stores as needed (including the final copy process). rather than make the connection handler pluggable we'll make the daemon itself trivial to proxy.
Is there an issue (aside from this one) where I can track the daemon proxying design / implementation?
not yet, we're still preparing to actually start the work on this. initial cls should start showing up in the coming weeks, from there it'll likely be a lot of experimentation under new xp features until we find something that works well and isn't likely to bite us in the tail any time soon