Hi Pepe,
You might be interested that Cloud Shake support is starting to arrive
now. If you pass `--share=location` then it will store a shared cache
at the file location. The original plan was to add a server mode,
where you could point Shake at a server to store the results, but
given recent discussions and experience I'm moving towards the idea of
just having the file approach, and telling people to use NFS/rsync or
similar to turn the shared drive support into a server mode. The
advantage is that shared drives can be mounted via S3, file systems
and many more besides, and have traditional properties like
read-only/read-write, simplifying the Shake side and the
administration.
The GHC build system Hadrian is now able to build with a shared cache:
https://gitlab.haskell.org/ghc/ghc/merge_requests/317. I'm still
writing down the invariants around what a build system has to say to
support --share, but it doesn't seem to have been too onerous for
Hadrian.
> The reason for the absolute paths in these rules is to share the artefacts within the same node
It's really much easier with relative paths. It sounds like --shared
might make it easier to share within a node, and fix the problem of
absolute paths at the same time.
I'm slightly surprised that having R_1..R_4 all pointing at S_1 works
that well. If they have differ, won't R1 build everything, R2 clobber
a bunch of that, then R3 put things back like R1 and also end up doing
more work? Or maybe the answer is that it doesn't work super well, and
--shared saves you a lot of pain there.
Finally, I should warn that --shared is pretty new, so you might find
bugs in it.
I'm also keen to get feedback from anyone who says that a full
client/server is valuable over-and-above the --shared flag.
Thanks, Neil