Gentoo Archives: gentoo-user

From: Fernando Rodriguez <frodriguez.developer@×××××××.com>
To: gentoo-user@l.g.o
Subject: Re: [gentoo-user] Difference between "normal distcc" and "distcc with pump"?
Date: Mon, 04 May 2015 09:31:42
Message-Id: BLU436-SMTP277D8249B0DD81ADCA78338DD20@phx.gbl
In Reply to: Re: [gentoo-user] Difference between "normal distcc" and "distcc with pump"? by Walter Dnes
1 On Sunday, May 03, 2015 11:59:08 PM Walter Dnes wrote:
2 > On Sun, May 03, 2015 at 02:57:46PM -0400, Fernando Rodriguez wrote
3 >
4 > > Some packages do custom preprocessing and other weird things during
5 > > the build process that cause problems with pump mode since it caches
6 > > copies of the unmodified headers. If you're lucky it just fails (and
7 > > usually falls back on compiling locally), if you're not then it may
8 > > succeed and you'll get runtime bugs. I haven't find a package yet
9 > > that fails without pump mode as long as your CFLAGS are set properly.
10 >
11 > Seamonkey fails during the build process. Two tries, and the build
12 > log was 74,046 bytes each time. I have an Intel x86_64 as the host, and
13 > an Atom i686 (32-bit only) as the client. Given your description, I may
14 > drop "pump" altogether from my "xmerge" script. I'll unmerge
15 > seamonkey-bin, and try distcc-building seamonkey from source, without
16 > "pump", Monday when I have more time. Here are a few lines from the
17 > failed build log, using "pump"...
18 >
19 > Executing: gcc -o nsinstall_real -march=atom -mtune=atom -fstack-protector -
20 pipe -mno-avx -DXP_UNIX -MD -MP -MF .deps/nsinstall_real.pp -O2 -DUNICODE -
21 D_UNICODE -Wl,-O1 -Wl,--as-needed host_nsinstall.o host_pathsub.o
22 >
23 > /usr/lib/gcc/i686-pc-linux-gnu/4.8.4/../../../../i686-pc-linux-gnu/bin/ld:
24 i386:x86-64 architecture of input file `host_nsinstall.o' is incompatible with
25 i386 output
26 >
27 > /usr/lib/gcc/i686-pc-linux-gnu/4.8.4/../../../../i686-pc-linux-gnu/bin/ld:
28 i386:x86-64 architecture of input file `host_pathsub.o' is incompatible with
29 i386 output
30 >
31 > /usr/lib/gcc/i686-pc-linux-gnu/4.8.4/../../../../i686-pc-linux-gnu/bin/ld:
32 host_nsinstall.o: file class ELFCLASS64 incompatible with ELFCLASS32
33 >
34 > /usr/lib/gcc/i686-pc-linux-gnu/4.8.4/../../../../i686-pc-linux-gnu/bin/ld:
35 final link failed: File in wrong format
36 >
37 >
38
39 The error on the link that you posted looks like cause by pump mode, this one
40 I'm not so sure.
41
42 It looks like you're not using the cross compiler on the host as it would not
43 generate 64 bit code. Did you add -m32 to your CFLAGS on the client box? Also
44 you may need to set the custom-cflags use flag. Can you verify that it is using
45 the cross compiler on the host?
46
47 I'm not sure exactly what the gentoo recommended distcc/cross compile setup
48 but if you do it like I suggested on your other thread (using the host 64bit
49 compiler) it should work. Look at the links you got under /usr/lib/distcc/bin.
50 All you need to do is create scripts on the host with the exact same names and
51 have them execute the compiler that you want with the options you want (I just
52 have it execute the 64bit compiler with -m32). Then make sure that distccd (on
53 host) finds them before the actual compiler by putting it in the PATH
54 environment variable before anything else. For that you may need to modify the
55 init script or unit file if using systemd or just start distccd manually.
56
57 A simpler hack is to just delete the c++, cc, gcc, and g++ symlinks from the
58 /usr/lib/distcc/bin directory. That will force distcc to only trap the
59 compiler invocations that use the full compiler name and end up using the
60 cross compiler in the host, but if you do this you may end up compiling more
61 stuff locally.
62
63
64 --
65 Fernando Rodriguez

Replies

Subject Author
Re: [gentoo-user] Difference between "normal distcc" and "distcc with pump"? Fernando Rodriguez <frodriguez.developer@×××××××.com>
Re: [gentoo-user] Difference between "normal distcc" and "distcc with pump"? Walter Dnes <waltdnes@××××××××.org>
Re: [gentoo-user] Difference between "normal distcc" and "distcc with pump"? Walter Dnes <waltdnes@××××××××.org>