Thank you for your response.<br><br>Yes, this is the only difference in the object file. We&#39;ve taken great pains over the last few years, removing anything that would cause checksums to mismatch. <br><br>I will do some research myself, and talk to a few developers to see if they can help me.<br>
<br>Thanks<br>-Jeff<br><br><div class="gmail_quote">On Tue, Jun 29, 2010 at 1:32 AM, Martin Pool <span dir="ltr">&lt;<a href="mailto:mbp@sourcefrog.net">mbp@sourcefrog.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im">On 29 June 2010 13:02, Jeff Kilpatrick &lt;<a href="mailto:kilpatrick.jeff@gmail.com">kilpatrick.jeff@gmail.com</a>&gt; wrote:<br>
&gt; Hello,<br>
&gt;<br>
&gt; At my work, we&#39;ve just begun to investigate how much of an impact that<br>
&gt; distcc will have on our builds.<br>
&gt;<br>
&gt; We typically perform 200 builds a week, ranging from a thousand lines of<br>
&gt; code, up to 600,000 lines of code each. Our back end build scripts are based<br>
&gt; on python, and use Linux make to build. We are running VMWare images on a<br>
&gt; blade cluster, and each of our three new build servers have 20Ghz processing<br>
&gt; power, with 4G of RAM. Our primary build environments are loop back ISOs,<br>
&gt; from a central CIFS server, and are unioned together with unionfs. Our<br>
&gt; source code is then copied into this environment, and we proceed with our<br>
&gt; build, using chroot to enter our build environment. Our &#39;distcc&#39; machines<br>
&gt; use the same loop back system, with only our OS and distcc being accessible.<br>
<br>
</div>That&#39;s pretty cool.<br>
<div class="im"><br>
&gt; One of the most important things for our builds, due to the market that we<br>
&gt; are in, is that our builds must be reproducible, with repeatable md5sums on<br>
&gt; our shared objects, based on the same label and same dependencies. In our<br>
&gt; recent tests, we were able to take a particular build from 24 minutes to 14<br>
&gt; minutes, then finally 5 minutes, using distcc and adjusting our VMs.<br>
&gt; However, when performing an md5sum on our final shared objects / object<br>
&gt; files, the checksums change every build. We dropped down to just using g++<br>
&gt; to perform our linking, all locally, but our object files are still<br>
&gt; mismatching.<br>
&gt;<br>
&gt; In the object files&#39; `objdump -s` output, it appears that an entry is being<br>
&gt; made into all our object files with the following syntax &quot;distccd_XXXXX&quot;,<br>
&gt; with XXXXX being a seemingly random combination of characters.<br>
<br>
</div>Hi Jeff,<br>
<br>
I think this is coming from gcc recording the input file name in the<br>
object file.  distccd_xxxx.ii is the temporary file name used on the<br>
server.<br>
<div class="im"><br>
&gt; In the same object file, compiled locally without distcc, we get a rather<br>
&gt; generic &lt;built-in&gt; placeholder.<br>
<br>
</div>I think this means it&#39;s coming from the builtin preprocessor.<br>
<br>
I probably won&#39;t have time to work on this myself but if you have a<br>
programmer interested in it there are two possible avenues:<br>
<br>
- make gcc read from a file called &lt;built-in&gt; in a temporary subdirectory<br>
<br>
- find some way to stop it recording the compiler input file name<br>
<br>
Is that the only difference in the object files?  It&#39;s pretty common<br>
for compilers to also record something about the time the compilation<br>
was run or for source files to build this in, which would mean they<br>
change every time.<br>
<div><div></div><div class="h5"><br>
&gt;<br>
&gt; I&#39;ve reviewed the source code for distcc, and seen a few references to this<br>
&gt; distccd_xxxxx. Unfortunately, I&#39;m not a programmer, and thus am at a loss on<br>
&gt; how to further troubleshoot this, or even if its possible to get consistent<br>
&gt; checksums with distcc.<br>
&gt;<br>
&gt;<br>
&gt; Versions<br>
&gt; =======<br>
&gt; g++ (Gentoo 4.3.2-r4 p1.8, pie-10.1.5) 4.3.2<br>
&gt;<br>
&gt; distcc 3.1 i686-pc-linux-gnu<br>
&gt;   (protocols 1, 2 and 3) (default port 3632)<br>
&gt;   built Mar 29 2010 10:55:35<br>
&gt;<br>
&gt; Kernel: 2.6.9-89.ELsmp<br>
&gt;<br>
&gt; Command being issued:<br>
&gt;       DISTCC_VERBOSE=1 make -j24 CXX=&quot;distcc&quot;<br>
&gt;<br>
&gt; Here&#39;s the partial output of objdump -s:<br>
&gt;  04f0 00030000 5f6d6f76 655f636f 6e737472  ...._move_constr<br>
&gt;  0500 7563745f 66776b2e 68000300 00474454  uct_fwk.h....GDT<br>
&gt;  0510 79706573 2e68000a 00007365 72646566  ypes.h....serdef<br>
&gt;  0520 732e6800 01000073 75666669 782e6870  s.h....suffix.hp<br>
&gt;  0530 70000b00 00646973 74636364 5f616333  p....distccd_ac3<br>
&gt;  0540 31633936 612e6969 000c0000 61646c5f  1c96a.ii....adl_<br>
&gt;  0550 62617272 6965722e 68707000 0d000062  barrier.hpp....b<br>
&gt;  0560 6f6f6c5f 6677642e 68707000 0e000069  ool_fwd.hpp....i<br>
&gt;  0570 6e746567 72616c5f 635f7461 672e6870  ntegral_c_tag.hp<br>
&gt;  0580 70000e00 00766f69 645f6677 642e6870  p....void_fwd.hp<br>
&gt;<br>
&gt; Thank you for reviewing my issue.<br>
&gt;<br>
&gt; -Jeff<br>
&gt;<br>
</div></div>&gt; __<br>
&gt; distcc mailing list            <a href="http://distcc.samba.org/" target="_blank">http://distcc.samba.org/</a><br>
&gt; To unsubscribe or change options:<br>
&gt; <a href="https://lists.samba.org/mailman/listinfo/distcc" target="_blank">https://lists.samba.org/mailman/listinfo/distcc</a><br>
&gt;<br>
<br>
<br>
<br>
--<br>
<font color="#888888">Martin<br>
</font></blockquote></div><br>