--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CAPDgU37RRwMqQLda8ie0R0Rf-D2sMquAEodh4XVrw%2Bk%2B%2BJHUFA%40mail.gmail.com.
So three questions:- sounds like my best option is to find ways of pruning the effects by retransitioning back to the default at appropriate points, correct?
- is there some way for me to add an assertive pure bazel test to make sur so get this right? So like ‘go sdk exists under only one configuration in the transitive closure of this target’?
- long shot: is there a way for me to inject a transition into someone else’s rule? Specifically, for example, it would be super helpful (but not required!) to transition back on the base_image attr of container_image.
I have a further question about this please. With respect to the output paths - given the same configuration across two independent invocations, from two different bazel clients, do we expect the output paths to be the same? Specifically, would we expect transitions to break remote caches? I’m assuming not, but I want to check please.
I guess the more general question would be - what exactly goes into the computation of the output path described below?
--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/ed989db3-ce88-4f32-bd33-c6bc50e79b53n%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/4110806d-e6c5-473e-8958-c3b424d138a5n%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CAPDgU348iXF7KR3HFQD4fBfHP7wkLZvh6v7LVHfdfi%2BU6B3S1A%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/cccb5d9c-9124-42bf-8f6e-8acaca30b14bn%40googlegroups.com.
Does this sound inspiring?
As far as I can tell, efficient and correct remote execution remains a difficulty - correct?
I'm thinking that, for one thing, the sheer size of the zip for each external dep, with no sharing between them, will be prohibitive.
I'd love to get engagement from the bazel maintainers [...]
On Sat, Aug 17, 2024 at 2:12 AM Jonathan Perry <jonp...@gmail.com> wrote:I'm thinking that, for one thing, the sheer size of the zip for each external dep, with no sharing between them, will be prohibitive.I am fairly convinced that you will have this issue with any RBE setup that does not rely on a shared cache.
So it's not clear to me why it would be uniquely difficult in this setup.
I'd love to get engagement from the bazel maintainers [...]Can't speak to bazel maintainers, but I personally appreciated that something like this was possible without doing surgery on bazel.
And if this doesn't work for you, you can invert the entire thing and package all your deps in a docker container instead of having them live "around" your build environment; then invoke individual build steps there. See: https://github.com/filmil/bazel-rules-bid That should work out of the box if you can run docker on your build farm and then docker is your cache.
F
El sáb, 17 ago 2024, 11:30, Jonathan Perry <jonp...@gmail.com> escribió:On Sat, Aug 17, 2024 at 10:22 AM Filip Filmar <fil...@gmail.com> wrote:On Sat, Aug 17, 2024 at 2:12 AM Jonathan Perry <jonp...@gmail.com> wrote:I'm thinking that, for one thing, the sheer size of the zip for each external dep, with no sharing between them, will be prohibitive.I am fairly convinced that you will have this issue with any RBE setup that does not rely on a shared cache.So it's not clear to me why it would be uniquely difficult in this setup.Because when bazel understands the dependency graph, it downloads each one once. As a concrete example, imagine you have 2 toolchains that both use the JDK: you would zip the entire JDK twice and distribute it twice.
I'm jumping quite late in the thread, and I'm a bit lazy to read it all TBH, but wouldn't this 2 toolchains be the same from a hashing perspective? If that's the case then client will push to the cache once and the RBE workers will pull it twice, they may not need to pull it if they have downloaded before. RBE is dependant on Remote caching, you can't have RBE without RC
Because when bazel understands the dependency graph, it downloads each one once. As a concrete example, imagine you have 2 toolchains that both use the JDK: you would zip the entire JDK twice and distribute it twice. [...] The performance of invoking a docker run for every build step would be completely prohibitive. Further this doesn't solve the problem of "I added a dependency on a rule that uses toolchain X", as it can't transparently and reproducibly add the dependency to the docker image, docker being what it is.
If that's the case then client will push to the cache once and the RBE workers will pull it twice, they may not need to pull it if they have downloaded before. RBE is dependant on Remote caching, you can't have RBE without RC
No, the idea is that they are two separate toolchains but with shared internal deps - understood by nix but not by bazel.
On Sat, Aug 17, 2024 at 2:30 AM Jonathan Perry <jonp...@gmail.com> wrote:Because when bazel understands the dependency graph, it downloads each one once. As a concrete example, imagine you have 2 toolchains that both use the JDK: you would zip the entire JDK twice and distribute it twice. [...] The performance of invoking a docker run for every build step would be completely prohibitive. Further this doesn't solve the problem of "I added a dependency on a rule that uses toolchain X", as it can't transparently and reproducibly add the dependency to the docker image, docker being what it is.I have not found the above issues to be a problem at least in what I was trying to do. Do you have a specific project and specific requirements that you are tackling?
If that's the case then client will push to the cache once and the RBE workers will pull it twice, they may not need to pull it if they have downloaded before. RBE is dependant on Remote caching, you can't have RBE without RCNo, the idea is that they are two separate toolchains but with shared internal deps - understood by nix but not by bazel.Do you have a specific need where this is a practical issue?F
On Sat, Aug 17, 2024 at 10:22 AM Filip Filmar <fil...@gmail.com> wrote:On Sat, Aug 17, 2024 at 2:12 AM Jonathan Perry <jonp...@gmail.com> wrote:I'm thinking that, for one thing, the sheer size of the zip for each external dep, with no sharing between them, will be prohibitive.I am fairly convinced that you will have this issue with any RBE setup that does not rely on a shared cache.So it's not clear to me why it would be uniquely difficult in this setup.Because when bazel understands the dependency graph, it downloads each one once. As a concrete example, imagine you have 2 toolchains that both use the JDK: you would zip the entire JDK twice and distribute it twice.