Summary: | distcc + ccache failure: failed to create /root/.ccache (Permission Denied) | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Eric Andresen <ndiin1> |
Component: | [OLD] Development | Assignee: | Brad Cowan (RETIRED) <bcowan> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | High | ||
Version: | 1.4_rc1 | ||
Hardware: | x86 | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- |
Description
Eric Andresen
2003-01-10 03:55:50 UTC
Here's the problem I'm having with this....ccache doesn't have anything to do with distccd afaik...the cache is parsed and headers etc and sent via distcc on the machine doing the compiling. Distccd is the daemon on the "helper machines" and doesn't read ccache. Distcc is run as root on the compiling box, only distccd on the helper machines is setuid 'nobody'. What was happening was that ccache was somehow being called on the remote distccd host, even though it wasn't storing any objects. So when ccache was called, it would try to create ~/.ccache, which was $HOME/.ccache The reason for ccache being called is because /usr/bin/ccache was listed in the PATH env before /usr/i686-pc-linux-gnu/gcc-bin/3.2 when distccd was started, and thus inherited. I suppose the best method to get around this would be to not set the HOME env, but rather set the PATH to be strictly /usr/i686-pc-linux-gnu/gcc-bin/3.2 So this would be the result to ensure distccd was started with only that path.. --- distccd.old 2003-01-11 23:50:55.000000000 -0700 +++ distccd 2003-01-11 23:48:40.000000000 -0700 @@ -7,7 +7,7 @@ start() { rm -rf /var/tmp/distccd.pid ebegin "Starting distccd" - start-stop-daemon --start --quiet --startas /usr/bin/distccd \ + PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2" /sbin/start-stop-daemon --start --quiet --startas /usr/bin/distccd \ -c nobody --pidfile /var/tmp/distccd.pid \ -- --pid-file /var/tmp/distccd.pid eend $? "Failed to Start distccd" added your latest init script to distcc-1.0 |