[distcc] Fwd: Repeatable .o and .so checksums with distcc

Martin Pool mbp at canonical.com
Tue Jun 29 21:37:10 MDT 2010

On 30 June 2010 05:03, Jeff Kilpatrick <kilpatrick.jeff at gmail.com> wrote:
> I've still havn't cracked this riddle. Here's some additional debugging
> information:
> distccd[22108] (dcc_scan_args) found input file
> "/proj/Platform/SGF/Source/Common/BankBill.cpp"
> distccd[22108] (dcc_scan_args) found object/output file
> "objs/Release/BankBill.o"
> distccd[22108] compile from BankBill.cpp to BankBill.o
> distccd[22108] (dcc_run_job) temp input file (null)
> distccd[22108] (dcc_run_job) original input file
> /proj/Platform/SGF/Source/Common/BankBill.cpp
> distccd[22108] (dcc_input_tmpnam) input file
> /proj/Platform/SGF/Source/Common/BankBill.cpp
> distccd[22108] (dcc_run_job) temp input file /tmp/distccd_42d13927.ii
> distccd[22108] (dcc_r_token_int) got DOTI000c8925
> distccd[22108] (dcc_r_file) received 821541 bytes to file
> /tmp/distccd_42d13927.ii
> distccd[22108] (dcc_r_file_timed) 821541 bytes received in 0.002498s, rate
> 321171kB/s
> distccd[22108] (dcc_set_input) changed input from
> "/proj/Platform/SGF/Source/Common/BankBill.cpp" to
> "/tmp/distccd_42d13927.ii"
> distccd[22108] (dcc_set_input) command after: cc -fexceptions -frtti -fPIC
> -fno-defer-pop -fno-strict-aliasing -Wall -Wno-unknown-pragmas -Winvalid-pch
> -Werror -O3 -g -fvisibility=hidden -c /tmp/distccd_42d13927.ii -o
> objs/Release/BankBill.o
> distccd[22108] (dcc_set_output) changed output from
> "objs/Release/BankBill.o" to "/tmp/distccd_4dc23927.o"
> distccd[22108] (dcc_set_output) command after: cc -fexceptions -frtti -fPIC
> -fno-defer-pop -fno-strict-aliasing -Wall -Wno-unknown-pragmas -Winvalid-pch
> -Werror -O3 -g -fvisibility=hidden -c /tmp/distccd_42d13927.ii -o
> /tmp/distccd_4dc23927.o
> distccd[22108] (dcc_run_job) 2. temp input file /tmp/distccd_42d13927.ii
> distccd[22108] (dcc_check_compiler_masq) /usr/bin/cc is not a symlink
> distccd[22108] (dcc_spawn_child) forking to execute: cc -fexceptions -frtti
> -fPIC -fno-defer-pop -fno-strict-aliasing -Wall -Wno-unknown-pragmas
> -Winvalid-pch -Werror -O3 -g -fvisibility=hidden -c /tmp/distccd_42d13927.ii
> -o /tmp/distccd_4dc23927.o
> It seems as if I change the temp_o or temp_i, then it can't find the files.
> In my case, I don't need to protect against having unique files. Is it
> possible to keep the full paths to the files the same, just on the other
> server? I would imagine I would have to set TMPDIR to /, and just update all
> the temp_o and temp_i references and keeo them to the orig_output /
> orig_input.
> Would there be any more to this, or am I completely missing something?

The point of this code is that distcc is going to run gcc on a
different machine from the client, either going from the preprocessed
input in classic mode, or from the regular source in pump mode.  If
you want gcc to run with the exact same filenames on the server then
you need to make sure that
 1- those directories exist and it's able to write to them
 2- it doesn't clash with either any other concurrent use of the
server, or with any other compilations that are happening at the same

These constraints would be a bit problematic in general but perhaps
are feasible for the specific case where you know the server is only
accepting requests from one client at a time for non-overlapping paths
and where the filenames are only ones you specifically expect.


More information about the distcc mailing list