Allan McRae pushed to branch master at Pacman / Pacman


Commits:
680169fb by Guoxin Pu at 2025-01-18T05:08:44+00:00
libmakepkg: set CCACHE_PREFIX to absolute path of distcc when using both

The current logic sets CCACHE_PREFIX to distcc when both distcc and
ccache are enabled. However, according to the source of ccache, it would
execute the command with execv, which would not look up arg0 from PATH,
unlike those exec functions with _p suffix.

This would result in the following error, when building a package with
both ccache and distcc enabled:
```
ccache: error: execute_noreturn of distcc failed: No such file or directory
```

This breaks package builds in different ways: packages that use make/cc
directly would yield the actual error which is the same as the above
line, packages that rely on other build systems wouldn't go through
compiler check and complain on a bad compiler.

To reproduce the problem, try to build a simple package:
```
git clone https://gitlab.archlinux.org/archlinux/packaging/packages/abc.git
cd abc
cp /etc/makepkg.conf .
echo 'BUILDENV=(distcc color ccache check !sign)' >> makepkg.conf
makepkg --config makepkg.conf
```

refs:
https://github.com/ccache/ccache/blob/f887434d35bf6544ce3b56dd7684de804cdaacfa/src/ccache/execute.cpp#L348
https://man.archlinux.org/man/exec.3.en#v_-_execv(),_execvp(),_execvpe()

Signed-off-by: Guoxin Pu <pugokus...@gmail.com>

- - - - -


1 changed file:

- scripts/libmakepkg/buildenv/compiler.sh.in


View it on GitLab: 
https://gitlab.archlinux.org/pacman/pacman/-/commit/680169fb61ede7e084adef8666f10128e9c543c3

-- 
View it on GitLab: 
https://gitlab.archlinux.org/pacman/pacman/-/commit/680169fb61ede7e084adef8666f10128e9c543c3
You're receiving this email because of your account on gitlab.archlinux.org.


Reply via email to