From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 8C816138CC5 for ; Mon, 4 May 2015 09:31:42 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id D9281E092E; Mon, 4 May 2015 09:31:33 +0000 (UTC) Received: from BLU004-OMC1S5.hotmail.com (blu004-omc1s5.hotmail.com [65.55.116.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id C52F7E090F for ; Mon, 4 May 2015 09:31:32 +0000 (UTC) Received: from BLU436-SMTP27 ([65.55.116.7]) by BLU004-OMC1S5.hotmail.com over TLS secured channel with Microsoft SMTPSVC(7.5.7601.22751); Mon, 4 May 2015 02:31:32 -0700 X-TMN: [ke9MzMZhW2ZJucHVXF3Iaz+v64OV4AFUazG+9OLCPVM=] X-Originating-Email: [frodriguez.developer@outlook.com] Message-ID: From: Fernando Rodriguez To: gentoo-user@lists.gentoo.org Subject: Re: [gentoo-user] Difference between "normal distcc" and "distcc with pump"? Date: Mon, 4 May 2015 05:29:34 -0400 User-Agent: KMail/4.14.3 (Linux/4.0.1; KDE/4.14.3; x86_64; ; ) In-Reply-To: <20150504035908.GA1014@waltdnes.org> References: <20150503011001.GA30510@waltdnes.org> <20150504035908.GA1014@waltdnes.org> Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-user@lists.gentoo.org Reply-to: gentoo-user@lists.gentoo.org MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-OriginalArrivalTime: 04 May 2015 09:31:31.0809 (UTC) FILETIME=[1B0B8D10:01D0864D] X-Archives-Salt: 1b5adf07-36fe-4133-9dc7-aca64740e1e0 X-Archives-Hash: 02b8fcf055b686df1805a7d1fc25fa22 On Sunday, May 03, 2015 11:59:08 PM Walter Dnes wrote: > On Sun, May 03, 2015 at 02:57:46PM -0400, Fernando Rodriguez wrote > > > Some packages do custom preprocessing and other weird things during > > the build process that cause problems with pump mode since it caches > > copies of the unmodified headers. If you're lucky it just fails (and > > usually falls back on compiling locally), if you're not then it may > > succeed and you'll get runtime bugs. I haven't find a package yet > > that fails without pump mode as long as your CFLAGS are set properly. > > Seamonkey fails during the build process. Two tries, and the build > log was 74,046 bytes each time. I have an Intel x86_64 as the host, and > an Atom i686 (32-bit only) as the client. Given your description, I may > drop "pump" altogether from my "xmerge" script. I'll unmerge > seamonkey-bin, and try distcc-building seamonkey from source, without > "pump", Monday when I have more time. Here are a few lines from the > failed build log, using "pump"... > > Executing: gcc -o nsinstall_real -march=atom -mtune=atom -fstack-protector - pipe -mno-avx -DXP_UNIX -MD -MP -MF .deps/nsinstall_real.pp -O2 -DUNICODE - D_UNICODE -Wl,-O1 -Wl,--as-needed host_nsinstall.o host_pathsub.o > > /usr/lib/gcc/i686-pc-linux-gnu/4.8.4/../../../../i686-pc-linux-gnu/bin/ld: i386:x86-64 architecture of input file `host_nsinstall.o' is incompatible with i386 output > > /usr/lib/gcc/i686-pc-linux-gnu/4.8.4/../../../../i686-pc-linux-gnu/bin/ld: i386:x86-64 architecture of input file `host_pathsub.o' is incompatible with i386 output > > /usr/lib/gcc/i686-pc-linux-gnu/4.8.4/../../../../i686-pc-linux-gnu/bin/ld: host_nsinstall.o: file class ELFCLASS64 incompatible with ELFCLASS32 > > /usr/lib/gcc/i686-pc-linux-gnu/4.8.4/../../../../i686-pc-linux-gnu/bin/ld: final link failed: File in wrong format > > The error on the link that you posted looks like cause by pump mode, this one I'm not so sure. It looks like you're not using the cross compiler on the host as it would not generate 64 bit code. Did you add -m32 to your CFLAGS on the client box? Also you may need to set the custom-cflags use flag. Can you verify that it is using the cross compiler on the host? I'm not sure exactly what the gentoo recommended distcc/cross compile setup but if you do it like I suggested on your other thread (using the host 64bit compiler) it should work. Look at the links you got under /usr/lib/distcc/bin. All you need to do is create scripts on the host with the exact same names and have them execute the compiler that you want with the options you want (I just have it execute the 64bit compiler with -m32). Then make sure that distccd (on host) finds them before the actual compiler by putting it in the PATH environment variable before anything else. For that you may need to modify the init script or unit file if using systemd or just start distccd manually. A simpler hack is to just delete the c++, cc, gcc, and g++ symlinks from the /usr/lib/distcc/bin directory. That will force distcc to only trap the compiler invocations that use the full compiler name and end up using the cross compiler in the host, but if you do this you may end up compiling more stuff locally. -- Fernando Rodriguez