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: Sun, 03 May 2015 18:59:56
Message-Id: BLU436-SMTP160514BB0A7E63385C39BE28DD30@phx.gbl
In Reply to: [gentoo-user] Difference between "normal distcc" and "distcc with pump"? by Walter Dnes
1 On Saturday, May 02, 2015 9:10:01 PM Walter Dnes wrote:
2 > I ran into a couple of problems with distcc cross-compiling on a
3 > 64-bit host for a 32-bit host. One was with ffmpeg, and the other
4 > one was seamonkey (built-from-source). There's a thread at
5 > http://www.gossamer-threads.com/lists/gentoo/user/298324 which mentions
6 > ffmpeg with symptoms identical to mine.
7 >
8 > ffmpeg is no problem doing locally. But seamonkey built-from-source
9 > is a 14 hour marathon on the ancient 32-bit Atom. It's the reason I got
10 > into distcc in the first place. Fortunately, seamonkey-bin exists, and
11 > builds properly. Basic Youtube videos (End Of The Line; Travelling
12 > Wilburys; HTML5; H264; 360-line-resolution) peg the double-core Atom
13 > with a cpu load of 2.75. That's not Seamonkey's fault; what do you
14 > expect from an Atom, driving an un-accelerated framebuffer? I'm happy
15 > that the devs went to the trouble of reverse-engineering the Poulsbo
16 > (bleagh) chip.
17 >
18 > The thread listed above mentions that distcc without "pump" can
19 > sometimes solve crossdev build problems. Can it be used to build
20 > seamonkey from source on the host and manually push it to the client?
21 >
22 > While we're on the topic of distcc, it's update time. The client
23 > shows...
24 >
25 > aa1 ~ # gcc-config -l
26 > [1] i686-pc-linux-gnu-4.8.4 *
27 >
28 > ...and the host shows...
29 >
30 > [d531][waltdnes][~] gcc-config -l
31 > [1] i686-pc-linux-gnu-4.8.3 *
32 >
33 > [2] x86_64-pc-linux-gnu-4.8.4 *
34 >
35 > According to the crossdev "--help" listing...
36 > -S, --stable Use latest stable versions as default
37 > -C, --clean target Uninstall specified target
38 >
39 > This implies that on the host, I should do the following...
40 >
41 > crossdev -C -t i686-pc-linux-gnu
42 > crossdev -S -t i686-pc-linux-gnu
43 >
44 > Before I take the plunge, can anybody with experience confirm that
45 > this is the correct way to do it?
46 >
47 >
48
49 The difference is that without pump mode the source files are run through the
50 preprocessor locally and a single preprocessed file is sent to the host for
51 each compilation unit. With pump mode the actual source is sent to the host
52 and it request the headers from the client as needed and the host caches them
53 so they're only sent once. So pump mode uses less network traffic but it's not
54 necessarily faster, in fact it's much slower in some cases.
55
56 Some packages do custom preprocessing and other weird things during the build
57 process that cause problems with pump mode since it caches copies of the
58 unmodified headers. If you're lucky it just fails (and usually falls back on
59 compiling locally), if you're not then it may succeed and you'll get runtime
60 bugs. I haven't find a package yet that fails without pump mode as long as your
61 CFLAGS are set properly.
62
63 As for updating, you likely don't need to. According to the distcc FAQ the
64 minor version number is not as important. If you still want to, I *think* you
65 can just mask the other versions using an atom like cross-i686-pc-mingw32/gcc
66 to ensure that you get the version you want but I'm not sure about this and
67 there may be a better way.
68
69 --
70 Fernando Rodriguez

Replies

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