mozilla / sccache

Sccache is a ccache-like tool. It is used as a compiler wrapper and avoids compilation when possible. Sccache has the capability to utilize caching in remote storage environments, including various cloud storage options, or alternatively, in local storage.
Apache License 2.0
5.85k stars 552 forks source link

Compiler not supported: "error: Unrecognized option: \'E\'\n\n" #1000

Open Antiarchitect opened 3 years ago

Antiarchitect commented 3 years ago

Just upgraded to Rust 1.52.0 and get this:

sccache: error: failed to execute compile
sccache: caused by: Compiler not supported: "error: Unrecognized option: \'E\'\n\n"
error: could not compile `xxx`
Xanewok commented 3 years ago

Are you, by any chance, using CC=ccache or similar? See https://github.com/paritytech/sccache/issues/69 for a similar error

mathstuf commented 3 years ago

I am seeing the same error and I don't install ccache. Is it in the official rust Docker images? No, it is not.

Xanewok commented 3 years ago

Could you try rerunning this with SCCACHE_LOG=trace and/or RUST_LOG=sccache=trace (depending on whether you use sccache or sccache-dist, see https://github.com/mozilla/sccache/pull/977) to see which exact command fails? Do you have a custom CC or CXX set?

mathstuf commented 3 years ago

Here's a full build log.

Relevant output:

Relevant output (in case the log expires) ``` TRACE 2021-05-07T21:48:29Z: sccache::commands: request_compile: Compile(Compile { exe: "/usr/local/rustup/toolchains/1.52.0-x86_64-unknown-linux-gnu/bin/clippy-driver", cwd: "/builds/rust", args: ["rustc", "--crate-name", "yaml_merge_keys", "--edition=2018", "src/lib.rs", "--error-format=json", "--json=diagnostic-rendered-ansi", "--emit=dep-info,metadata", "-C", "embed-bitcode=no", "-C", "debuginfo=2", "--test", "-C", "metadata=e34754249b915b1d", "-C", "extra-filename=-e34754249b915b1d", "--out-dir", "/builds/rust/target/debug/deps", "-C", "incremental=/builds/rust/target/debug/incremental", "-L", "dependency=/builds/rust/target/debug/deps", "--extern", "lazy_static=/builds/rust/target/debug/deps/liblazy_static-21b7aee633bbe6c2.rmeta", "--extern", "thiserror=/builds/rust/target/debug/deps/libthiserror-f7d3c332bf7f4fd7.rmeta", "--extern", "yaml_rust=/builds/rust/target/debug/deps/libyaml_rust-839b757bdb24aa8c.rmeta"], env_vars: [("CARGO", "/usr/local/rustup/toolchains/1.52.0-x86_64-unknown-linux-gnu/bin/cargo"), ("CARGO_CRATE_NAME", "yaml_merge_keys"), ("CARGO_HOME", "/builds/rust/.cargo-cache"), ("CARGO_MAKEFLAGS", "--jobserver-fds=5,6 -j --jobserver-auth=5,6 -j"), ("CARGO_MANIFEST_DIR", "/builds/rust"), ("CARGO_PKG_AUTHORS", "Ben Boeckel "), ("CARGO_PKG_DESCRIPTION", "Implementation of the YAML merge key extension.\n\nhttp://yaml.org/type/merge.html\n"), ("CARGO_PKG_HOMEPAGE", ""), ("CARGO_PKG_LICENSE", "MIT/Apache-2.0"), ("CARGO_PKG_LICENSE_FILE", ""), ("CARGO_PKG_NAME", "yaml-merge-keys"), ("CARGO_PKG_REPOSITORY", "https://gitlab.kitware.com/utils/rust-yaml-merge-keys"), ("CARGO_PKG_VERSION", "0.4.1"), ("CARGO_PKG_VERSION_MAJOR", "0"), ("CARGO_PKG_VERSION_MINOR", "4"), ("CARGO_PKG_VERSION_PATCH", "1"), ("CARGO_PKG_VERSION_PRE", ""), ("CARGO_PRIMARY_PACKAGE", "1"), ("CARGO_UPDATE_POLICY", "newest"), ("CI", "true"), ("CI_API_V4_URL", "https://gitlab.kitware.com/api/v4"), ("CI_BUILDS_DIR", "/builds"), ("CI_BUILD_BEFORE_SHA", "0000000000000000000000000000000000000000"), ("CI_BUILD_ID", "5771744"), ("CI_BUILD_NAME", "build:cargo-clippy"), ("CI_BUILD_REF", "f4a9ec58270de9a620aeb46824f57550ad1b5ca9"), ("CI_BUILD_REF_NAME", "sccache-testing"), ("CI_BUILD_REF_SLUG", "sccache-testing"), ("CI_BUILD_STAGE", "build"), ("CI_BUILD_TOKEN", "[MASKED]"), ("CI_COMMIT_AUTHOR", "Ben Boeckel "), ("CI_COMMIT_BEFORE_SHA", "0000000000000000000000000000000000000000"), ("CI_COMMIT_DESCRIPTION", ""), ("CI_COMMIT_MESSAGE", "WIP: gitlab-ci: trace sccache execution\n"), ("CI_COMMIT_REF_NAME", "sccache-testing"), ("CI_COMMIT_REF_PROTECTED", "false"), ("CI_COMMIT_REF_SLUG", "sccache-testing"), ("CI_COMMIT_SHA", "f4a9ec58270de9a620aeb46824f57550ad1b5ca9"), ("CI_COMMIT_SHORT_SHA", "f4a9ec58"), ("CI_COMMIT_TIMESTAMP", "2021-05-07T17:47:41-04:00"), ("CI_COMMIT_TITLE", "WIP: gitlab-ci: trace sccache execution"), ("CI_CONCURRENT_ID", "2"), ("CI_CONCURRENT_PROJECT_ID", "2"), ("CI_CONFIG_PATH", ".gitlab-ci.yml"), ("CI_DEFAULT_BRANCH", "master"), ("CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX", "gitlab.kitware.com:443/utils/dependency_proxy/containers"), ("CI_DEPENDENCY_PROXY_PASSWORD", "[MASKED]"), ("CI_DEPENDENCY_PROXY_SERVER", "gitlab.kitware.com:443"), ("CI_DEPENDENCY_PROXY_USER", "gitlab-ci-token"), ("CI_DISPOSABLE_ENVIRONMENT", "true"), ("CI_JOB_ID", "5771744"), ("CI_JOB_IMAGE", "rust:latest"), ("CI_JOB_JWT", "[MASKED]"), ("CI_JOB_NAME", "build:cargo-clippy"), ("CI_JOB_STAGE", "build"), ("CI_JOB_STARTED_AT", "2021-05-07T17:48:12-04:00"), ("CI_JOB_STATUS", "running"), ("CI_JOB_TOKEN", "[MASKED]"), ("CI_JOB_URL", "https://gitlab.kitware.com/utils/rust-yaml-merge-keys/-/jobs/5771744"), ("CI_MERGE_REQUEST_DIFF_BASE_SHA", "291f3f69b6e9d9be52bd7f4e3d6cfc47d6403254"), ("CI_MERGE_REQUEST_DIFF_ID", "164685"), ("CI_MERGE_REQUEST_EVENT_TYPE", "detached"), ("CI_MERGE_REQUEST_ID", "58050"), ("CI_MERGE_REQUEST_IID", "25"), ("CI_MERGE_REQUEST_PROJECT_ID", "1470"), ("CI_MERGE_REQUEST_PROJECT_PATH", "utils/rust-yaml-merge-keys"), ("CI_MERGE_REQUEST_PROJECT_URL", "https://gitlab.kitware.com/utils/rust-yaml-merge-keys"), ("CI_MERGE_REQUEST_REF_PATH", "refs/merge-requests/25/head"), ("CI_MERGE_REQUEST_SOURCE_BRANCH_NAME", "sccache-testing"), ("CI_MERGE_REQUEST_SOURCE_BRANCH_SHA", ""), ("CI_MERGE_REQUEST_SOURCE_PROJECT_ID", "1472"), ("CI_MERGE_REQUEST_SOURCE_PROJECT_PATH", "ben.boeckel/rust-yaml-merge-keys"), ("CI_MERGE_REQUEST_SOURCE_PROJECT_URL", "https://gitlab.kitware.com/ben.boeckel/rust-yaml-merge-keys"), ("CI_MERGE_REQUEST_TARGET_BRANCH_NAME", "master"), ("CI_MERGE_REQUEST_TARGET_BRANCH_SHA", ""), ("CI_MERGE_REQUEST_TITLE", "WIP: gitlab-ci: trace sccache execution"), ("CI_NODE_TOTAL", "1"), ("CI_OPEN_MERGE_REQUESTS", "utils/rust-yaml-merge-keys!25"), ("CI_PAGES_DOMAIN", "example.com"), ("CI_PAGES_URL", "http://utils.example.com/rust-yaml-merge-keys"), ("CI_PIPELINE_CREATED_AT", "2021-05-07T17:47:46-04:00"), ("CI_PIPELINE_ID", "227693"), ("CI_PIPELINE_IID", "564"), ("CI_PIPELINE_SOURCE", "merge_request_event"), ("CI_PIPELINE_URL", "https://gitlab.kitware.com/utils/rust-yaml-merge-keys/-/pipelines/227693"), ("CI_PROJECT_CONFIG_PATH", ".gitlab-ci.yml"), ("CI_PROJECT_DIR", "/builds/rust"), ("CI_PROJECT_ID", "1470"), ("CI_PROJECT_NAME", "rust-yaml-merge-keys"), ("CI_PROJECT_NAMESPACE", "utils"), ("CI_PROJECT_PATH", "utils/rust-yaml-merge-keys"), ("CI_PROJECT_PATH_SLUG", "utils-rust-yaml-merge-keys"), ("CI_PROJECT_REPOSITORY_LANGUAGES", "rust,shell"), ("CI_PROJECT_ROOT_NAMESPACE", "utils"), ("CI_PROJECT_TITLE", "rust-yaml-merge-keys"), ("CI_PROJECT_URL", "https://gitlab.kitware.com/utils/rust-yaml-merge-keys"), ("CI_PROJECT_VISIBILITY", "public"), ("CI_REGISTRY", "gitlab.kitware.com:4567"), ("CI_REGISTRY_PASSWORD", "[MASKED]"), ("CI_REGISTRY_USER", "gitlab-ci-token"), ("CI_REPOSITORY_URL", "https://gitlab-ci-token:[MASKED]@gitlab.kitware.com/utils/rust-yaml-merge-keys.git"), ("CI_RUNNER_DESCRIPTION", "dovim.shared.build"), ("CI_RUNNER_EXECUTABLE_ARCH", "linux/amd64"), ("CI_RUNNER_ID", "82"), ("CI_RUNNER_REVISION", "ece86343"), ("CI_RUNNER_SHORT_TOKEN", "sJWh3aLK"), ("CI_RUNNER_TAGS", "dovim, cmake, linux-3.17, paraview, build, ghostflow, cmb, linux, docker"), ("CI_RUNNER_VERSION", "13.5.0~beta.3.g746cb52c"), ("CI_SERVER", "yes"), ("CI_SERVER_HOST", "gitlab.kitware.com"), ("CI_SERVER_NAME", "GitLab"), ("CI_SERVER_PORT", "443"), ("CI_SERVER_PROTOCOL", "https"), ("CI_SERVER_REVISION", "b321336e443"), ("CI_SERVER_TLS_CA_FILE", "/builds/rust.tmp/CI_SERVER_TLS_CA_FILE"), ("CI_SERVER_URL", "https://gitlab.kitware.com"), ("CI_SERVER_VERSION", "13.11.3"), ("CI_SERVER_VERSION_MAJOR", "13"), ("CI_SERVER_VERSION_MINOR", "11"), ("CI_SERVER_VERSION_PATCH", "3"), ("CLIPPY_ARGS", "-D__CLIPPY_HACKERY__warnings__CLIPPY_HACKERY__"), ("FF_CMD_DISABLE_DELAYED_ERROR_LEVEL_EXPANSION", "false"), ("FF_NETWORK_PER_BUILD", "false"), ("FF_RESET_HELPER_IMAGE_ENTRYPOINT", "true"), ("FF_SHELL_EXECUTOR_USE_LEGACY_PROCESS_KILL", "false"), ("FF_SKIP_NOOP_BUILD_STAGES", "true"), ("FF_USE_DIRECT_DOWNLOAD", "true"), ("FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY", "true"), ("GITLAB_CI", "true"), ("GITLAB_FEATURES", ""), ("GITLAB_USER_EMAIL", "ben.boeckel@kitware.com"), ("GITLAB_USER_ID", "13"), ("GITLAB_USER_LOGIN", "ben.boeckel"), ("GITLAB_USER_NAME", "Ben Boeckel"), ("GIT_CLONE_PATH", "/builds/rust"), ("HOME", "/root"), ("HOSTNAME", "runner-sjwh3alk-project-1470-concurrent-2"), ("LD_LIBRARY_PATH", "/builds/rust/target/debug/deps:/usr/local/rustup/toolchains/1.52.0-x86_64-unknown-linux-gnu/lib:/usr/local/rustup/toolchains/1.52.0-x86_64-unknown-linux-gnu/lib:/usr/local/rustup/toolchains/1.52.0-x86_64-unknown-linux-gnu/lib:/usr/local/rustup/toolchains/1.52.0-x86_64-unknown-linux-gnu/lib"), ("OLDPWD", "/"), ("PATH", "/builds/rust/.cargo-cache/bin:/builds/rust/.cargo-cache/bin:/builds/rust/.cargo-cache/bin:/usr/local/cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"), ("PWD", "/builds/rust"), ("RUSTC_WORKSPACE_WRAPPER", "/usr/local/rustup/toolchains/1.52.0-x86_64-unknown-linux-gnu/bin/clippy-driver"), ("RUSTC_WRAPPER", "/builds/rust/.gitlab/sccache"), ("RUSTUP_HOME", "/usr/local/rustup"), ("RUSTUP_TOOLCHAIN", "1.52.0-x86_64-unknown-linux-gnu"), ("RUST_LOG", "sccache=trace"), ("RUST_RECURSION_COUNT", "3"), ("RUST_VERSION", "1.52.0"), ("SCCACHE_REDIS", "redis://redis.kitware.com:6380"), ("SHLVL", "1"), ("SSL_CERT_DIR", "/usr/lib/ssl/certs"), ("SSL_CERT_FILE", "/usr/lib/ssl/certs/ca-certificates.crt"), ("_", "/usr/local/cargo/bin/cargo")] }) TRACE 2021-05-07T21:48:29Z: sccache::client: ServerConnection::request TRACE 2021-05-07T21:48:29Z: sccache::client: ServerConnection::request: sent request TRACE 2021-05-07T21:48:29Z: sccache::client: ServerConnection::read_one_response TRACE 2021-05-07T21:48:29Z: sccache::client: Should read 53 more bytes TRACE 2021-05-07T21:48:29Z: sccache::client: Done reading DEBUG 2021-05-07T21:48:29Z: sccache::commands: Server sent UnsupportedCompiler: "error: Unrecognized option: \'E\'\n\n" error: failed to execute compile caused by: Compiler not supported: "error: Unrecognized option: \'E\'\n\n" ```
martijnberger commented 3 years ago

Is this a normal build or are you attempting to use cargo clippy ?

mathstuf commented 3 years ago

Ah, it is cargo clippy. Thought I had seen that mentioned here, but I guess not. To that end there are these issues:

Antiarchitect commented 3 years ago

Maybe a cargo clippy too.

Antiarchitect commented 3 years ago
sccache: error: failed to execute compile
sccache: caused by: Compiler not supported: "error: Unrecognized option: \'E\'\n\n"
error: could not compile `xxx`
rustc 1.52.1 (9bc8c42bb 2021-05-09)
clippy 0.1.52 (9bc8c42 2021-05-09)
sccache 0.2.15
Linux xxx 5.12.10-arch1-1 #1 SMP PREEMPT Thu, 10 Jun 2021 16:34:50 +0000 x86_64 GNU/Linux
Marwes commented 3 years ago

Started seeing this as well, are there any workarounds at least?

GZGavinZhao commented 2 years ago

I get the same error when building sccache with RUSTC_WRAPPER=/usr/local/bin/sccache and export PATH="/usr/local/libexec/sccache:$PATH. Basically, when you're trying to let sccache to cache both the Rust compilations and the C compilations invoked by Rust (i.e. I have a hard link to sccache called cc), it will panic and get angry at you.

Build command: cargo build --release on macOS Monterey 12.3.1 with M1 chip, no Rosetta. CC version: Apple clang version 13.1.6 (clang-1316.0.21.2.3)

   Compiling tokio v1.16.1
error: failed to run custom build command for `ring v0.16.20`

Caused by:
  process didn't exit successfully: `/Users/**/sccache/target/release/build/ring-045d3048ac3b0efb/build-script-build` (exit status: 101)
  --- stdout
  OPT_LEVEL = Some("3")
  TARGET = Some("aarch64-apple-darwin")
  HOST = Some("aarch64-apple-darwin")
  CC_aarch64-apple-darwin = None
  CC_aarch64_apple_darwin = None
  HOST_CC = None
  CC = None
  CFLAGS_aarch64-apple-darwin = None
  CFLAGS_aarch64_apple_darwin = None
  HOST_CFLAGS = None
  CFLAGS = None
  CRATE_CC_NO_DEFAULTS = None
  DEBUG = Some("false")
  CARGO_CFG_TARGET_FEATURE = None

  --- stderr
  running "/usr/local/bin/sccache" "cc" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-arch" "arm64" "-I" "include" "-Wall" "-Wextra" "-pedantic" "-pedantic-errors" "-Wall" "-Wextra" "-Wcast-align" "-Wcast-qual" "-Wconversion" "-Wenum-compare" "-Wfloat-equal" "-Wformat=2" "-Winline" "-Winvalid-pch" "-Wmissing-field-initializers" "-Wmissing-include-dirs" "-Wredundant-decls" "-Wshadow" "-Wsign-compare" "-Wsign-conversion" "-Wundef" "-Wuninitialized" "-Wwrite-strings" "-fno-strict-aliasing" "-fvisibility=hidden" "-fstack-protector" "-gfull" "-DNDEBUG" "-c" "-o/Users/**/sccache/target/aarch64-apple-darwin/release/build/ring-48dc3c11b24f9950/out/aesv8-armx-ios64.o" "/Users/**/.cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.16.20/pregenerated/aesv8-armx-ios64.S"
  sccache: error: failed to execute compile
  sccache: caused by: Compiler not supported: "error: Found argument \'-E\' which wasn\'t expected, or isn\'t valid in this context\n\nUSAGE:\n    cc [FLAGS] [OPTIONS] [cmd]...\n\nFor more information try --help\n"
  thread 'main' panicked at 'execution failed', /Users/**/.cargo/registry/src/github.com-1ecc6299db9ec823/ring-0.16.20/build.rs:656:9
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
The following warnings were emitted during compilation:

warning: sccache: error: failed to execute compile
warning: sccache: caused by: Compiler not supported: "error: Found argument \'-E\' which wasn\'t expected, or isn\'t valid in this context\n\nUSAGE:\n    cc [FLAGS] [OPTIONS] [cmd]...\n\nFor more information try --help\n"
warning: sccache: error: failed to execute compile
warning: sccache: caused by: Compiler not supported: "error: Found argument \'-E\' which wasn\'t expected, or isn\'t valid in this context\n\nUSAGE:\n    cc [FLAGS] [OPTIONS] [cmd]...\n\nFor more information try --help\n"
GZGavinZhao commented 2 years ago

After a little investigation, this is because Rust is trying to call sccache cc main.c, and since the symlink was setup, when the command gets to sccache it has become sccache sccache main.c, something that sccache doesn't seem to accept.

ebraraktas commented 2 years ago

Are there any updates on this? @GZGavinZhao can you find a solution to use sccache for both rust and C/C++ compilations?

GZGavinZhao commented 2 years ago

I think the underlying problem is that RUSTC_WRAPPER should be ignored when Rust is trying to compile C code. My local testing shows that this is not the case, might be something else...

cipriancraciun commented 2 years ago

After a little investigation, this is because Rust is trying to call sccache cc main.c, and since the symlink was setup, when the command gets to sccache it has become sccache sccache main.c, something that sccache doesn't seem to accept.

I've also stumbled upon this issue. (In my case I only had RUSTC_WRAPPER=sccache exported, and no other hardlinks to sccache.)

However, I've managed to implement a small proof-of-concept sccache wrapper (yes, a wrapper to the wrapper) that is able to correctly handle all these situations:

sccache.txt

One can just download it, change the extension, chmod +x and then start symlink-ing it to sccache, cc, c++, gcc, g++, clang, clang++ and rustc somewhere in a folder that is at the front of the $PATH.

Then one can just use it transparently. (If one doesn't use rustup, but instead uses the rustc and cargo that comes with the distribution, it can even work without exporting RUSTC_WRAPPER.)

drahnr commented 2 years ago

@cipriancraciun is there a minimal reproducible test case one could look at?

cipriancraciun commented 2 years ago

@drahnr I don't seem to be able to actually trigger this with a simple use-case. I've encountered this issue on some internal codebase that uses the latest Rust via rustup.

When I'll get the chance I'll try to trigger it once more and see if I can reduce it to a simpler scenario.

MrMarble commented 1 year ago

Just installed sccache and I'm getting this same error:

➜ sccache cargo build
sccache: error: failed to execute compile
sccache: caused by: Compiler not supported: "error: unexpected argument \'-E\' found\n\nUsage: cargo [+toolchain] [OPTIONS] [COMMAND]\n\nFor more information, try \'--help\'.\n"

These are the versions I'm currently using:

sccache 0.3.3
cargo 1.70.0-nightly (9880b408a 2023-02-28)
rustup 1.25.2 (17db695f1 2023-02-01)
rustc 1.70.0-nightly (f15f0ea73 2023-03-04)

I'm trying to build this: https://github.com/mrmarble/rust-playground


At first I'd install sccache via cargo-binstall which produces the same output for any command (i.e, sccache --version outputs the same error), installing sccache with cargo install seems to work better as I can use the other commands, but it still fails to compile rust

brndnmtthws commented 1 year ago

I ran into this issue, and in my case the problem was that I had installed sccache with cargo binstall which by default creates a symlink to the actual sccache binary.

I reinstalled without the symlink with cargo binstall --no-symlinks -y sccache and everything worked fine. It's a bit weird, sccache probably shouldn't fail if its symlinked, so that's another problem.

PS: I'm using this as part of some GitHub actions I recently created because I didn't like the existing ones:

https://github.com/brndnmtthws/rust-action https://github.com/brndnmtthws/rust-action-rustup https://github.com/brndnmtthws/rust-action-cargo-binstall

Perhaps other people will get some value out of these.

MustCodeAl commented 9 months ago

After a little investigation, this is because Rust is trying to call sccache cc main.c, and since the symlink was setup, when the command gets to sccache it has become sccache sccache main.c, something that sccache doesn't seem to accept.

I've also stumbled upon this issue. (In my case I only had RUSTC_WRAPPER=sccache exported, and no other hardlinks to sccache.)

However, I've managed to implement a small proof-of-concept sccache wrapper (yes, a wrapper to the wrapper) that is able to correctly handle all these situations:

  • works if RUSTC_WRAPPER=sccache and rustc calls cc or another compiler; (basically it ignores the double sccache sccache cc invocation;)
  • works if this wrapper is symlinked to cc, gcc, rustc, etc. somewhere in the path; (i.e. it switches to sccache cc;) (this perhaps covers Symbolic link doesn't seem to work on Linux #993)
  • the above two combined;

sccache.txt

One can just download it, change the extension, chmod +x and then start symlink-ing it to sccache, cc, c++, gcc, g++, clang, clang++ and rustc somewhere in a folder that is at the front of the $PATH.

Then one can just use it transparently. (If one doesn't use rustup, but instead uses the rustc and cargo that comes with the distribution, it can even work without exporting RUSTC_WRAPPER.)

just tried this and its no longer working, which directory was this file supposed to go in?

cipriancraciun commented 9 months ago

However, I've managed to implement a small proof-of-concept sccache wrapper (yes, a wrapper to the wrapper) that is able to correctly handle all these situations: [...]

just tried this and its no longer working, which directory was this file supposed to go in?

@MustCodeAl the way I've implemented it you can put my wrapper script anywhere on the file-system, as long as that folder is at the beginning of the PATH variable, or at least before the actual place where sccache and the other gcc / cc / rustc / etc. are. (I.e. you can't place it in the same folder where these tools are.)

You can also then symlink this script as cc, gcc, etc. (see the source code for what it knows to intercept).

However, could you say how it does not work? Does it give some errors? (Perhaps set a set -x somewhere at the beginning and paste the resulting execution trace.)