Install s/ccache only when needed, note in README

It is better to not preinstall sccache/ccache in the chroot as mentioned
in the README.
This commit is contained in:
Stephen Seo 2024-04-08 11:12:13 +09:00
parent 0b91176586
commit a040785bd6
2 changed files with 18 additions and 1 deletions

View file

@ -63,6 +63,17 @@ GiB somehow).
the build will fail if the limit is reached. If set to false, then the build the build will fail if the limit is reached. If set to false, then the build
will continue even if the limit is reached. will continue even if the limit is reached.
## Soft-lock if `sccache` is preinstalled in chroot
Apparently, some packages automatically use ccache/sccache if it is installed in
the chroot, and in some cases, causes a soft-lock during a build. It is
recommended to not have ccache/sccache preinstalled in the chroot and to just
let the aur-helper-script install it when necessary.
For example, when building `tenacity-git` with sccache preinstalled, the build
will hang after the final build step. Apparently, killing the running `sccache`
process stops the soft-lock in this case.
# Setting up the AUR Helper # Setting up the AUR Helper
The AUR Helper requires several things: The AUR Helper requires several things:
@ -86,7 +97,9 @@ The `python-toml` package is required for the Python script to run.
Use `/usr/bin/mkarchroot` to create your CHROOT in a directory. Use `/usr/bin/mkarchroot` to create your CHROOT in a directory.
mkarchroot $HOME/mychroot/root base base-devel ccache sccache cmake ninja mkarchroot $HOME/mychroot/root base base-devel cmake ninja
As noted earlier, it is better to NOT preinstall `ccache` and `sccache`.
You must refer to the CHROOT as `$HOME/mychroot` if you used the same name as in You must refer to the CHROOT as `$HOME/mychroot` if you used the same name as in
the previous example. the previous example.

View file

@ -1381,6 +1381,10 @@ def update_pkg_list(
"--holdver", "--holdver",
] ]
failure = False failure = False
if "ccache_dir" in pkg_state[pkg]:
pkg_state[pkg]["other_deps"].append("ccache")
elif "sccache_dir" in pkg_state[pkg]:
pkg_state[pkg]["other_deps"].append("sccache")
for dep in pkg_state[pkg]["other_deps"]: for dep in pkg_state[pkg]["other_deps"]:
prefetch_result = prefetch_dependency(dep, other_state) prefetch_result = prefetch_dependency(dep, other_state)
if prefetch_result != "fetched": if prefetch_result != "fetched":