Sharing the default port meant whichever context's server happened to be running (usually the interactive shell's, via rust-analyzer's background cargo checks) silently served the other's build requests too - and since sccache's server writes outputs under its own user, that meant permission-denied for whichever context didn't own it. Separate ports keep the server processes apart; SCCACHE_DIR is what's actually shared, giving real cache hits across both.
This commit is contained in:
@@ -18,7 +18,16 @@ jobs:
|
|||||||
# Shared with interactive dev builds (see ~/.config/fish/config.fish)
|
# Shared with interactive dev builds (see ~/.config/fish/config.fish)
|
||||||
# so a crate compiled once, by either a manual build or CI, is
|
# so a crate compiled once, by either a manual build or CI, is
|
||||||
# cached for the other - real cache hits, not just a warm toolchain.
|
# cached for the other - real cache hits, not just a warm toolchain.
|
||||||
|
# SCCACHE_SERVER_PORT deliberately differs from the interactive
|
||||||
|
# dev shell's (4227): sccache's server is discovered by a fixed
|
||||||
|
# TCP port shared by every local user, so if both contexts used
|
||||||
|
# the same port, whichever one's server happened to be running
|
||||||
|
# would silently "win" and serve build requests it doesn't have
|
||||||
|
# filesystem permission for. Separate ports keep each context's
|
||||||
|
# own server answering its own requests; the cache directory
|
||||||
|
# (not the server process) is what's actually shared.
|
||||||
SCCACHE_DIR: /var/local/sccache
|
SCCACHE_DIR: /var/local/sccache
|
||||||
|
SCCACHE_SERVER_PORT: "4228"
|
||||||
CARGO_TARGET_DIR: /var/local/cargo-target
|
CARGO_TARGET_DIR: /var/local/cargo-target
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|||||||
Reference in New Issue
Block a user