Talk:Distcc/Cross-Compiling

Possible FEATURES distcc-pump Requisite
Hello, looooots of happy computing hours since the last, unofficial, wiki was gone and yet more hours of good work was gone. Really, I'm still very sad and mad about that history. Can't really stop crying about the content we've made.

These times, Android rules so nothing aggresive to Mike Valstar who has lost mysql database.

.....ouch, to the topic:

FEATURES="distcc-pump" is necessary to make things happen. If there is no, some weird errors display, like:

distcc[7377] ERROR: failed to connect to UNIX-DOMAIN /tmp/distcc-pump.43wo4c/socket: Permission denied


 * Something doesn't appear correct with your DistCC installation then, as FEATURE=distcc is just the default DistCC process and should just work. FEATURE=distcc-pump additionally compiles preprocessor statements via DistCC, and is not needed for normal DistCC to work.

This Cross Compiling via DistCC Wiki Mostly Deprecated?
I just setup a 32 bit (i686) cross compile environment on a 64 bit platform, using the basic instructions found at Gentoo Cross Development Guide (Gentoo Documentation Project) and Distcc/Cross-Compiling, and then setup the DistCC service and everything just appears to work. I'm thinking that the CHOST variable is now exported alongside the compilation job, and the server doing the compiling then picks-up this flag. (As DistCC should have from the start, to prevent compiling and then exporting the binary to a non-compatible platform!)

The only trivial parts:
 * 1) The Cross Compile Gentoo documents seem slightly out-dated, and carry far more instructions then really likely needed.  A likely more simpler setup can be performed.
 * 2) Setting up DistCC locally and testing locally (ie. 127.0.0.1) is best.  The Gentoo DistCC service failed to write the initial DistCC log due to improper permissions  (ie. /var/log/distccd.log)  Check /etc/groups and there's no distcc group, so just quickly did "touch /var/log/distccd.log && chmod a+rw /var/log/distccd.log" and then "tail -f /var/log/distccd.log" for monitoring DistCC for properly compilation.  (Using tail is much easier than the distccmon* tools during initial setup.)
 * 3) Then I made sure my main 64-bit server was compiling, but setting-up DistCC and creating the log file as previously mentioned as well as starting tail on that log file.
 * 4) For kicks, figuring I was going to need some exotic stuff from this Wiki page, I decided to compile something simple to see if the binary would fail upon execution on the remote 32 bit i686 laptop (ie. app-misc/screen), but surprisingly screen works and the log files on the server show i686 being used during compilation!

distccd[20386] (dcc_job_summary) client: 192.168.1.4:50757 COMPILE_OK exit:0 sig:0 core:0 ret:0 time:1422ms i686-pc-linux-gnu-gcc screen.c

NOTE: I think the worse part is probably still remembering to use IP addresses and not host names! (ie. localhost2.local) Several years ago, I pulled out my hair for days trying to understand why DistCC was failing over this simple problem. This time setting up DistCC, I remembered I had to do something, and quickly scanned a manual page designating this step.

FOLLOW-UP: When upgrading or downgrading with multiple crossdev compilers installed, users need to make sure the correct crossdev compiler is selected on the DistCChost! (ie. gcc-config -l) --Roger (talk) 03:29, 30 April 2014 (UTC)

Uninstalling old gcc versions
Not much documentation is available for instructing beginners how to uninstall old cross-compiled gcc versions or cross compiled tools.

I can only imagine something like:
 * 1) crossdev --clean  i686-pc-linux-gnu-4.7.3

But this still leaves the profile within "gcc-config -l", as wells as the many "ie. /etc/portage/profile/package.use.force/cross-=i686-pc-linux-gnu-4.7.3" files! (Oh my, what a mess. Likely even I did something incorrectly.  I wonder if the crossdev -g (etc.) version arguments has any effect.

Re-organization of Documentation
I also think the documentation on this page (as well as many other crossdev related pages) needs some organization! The following page concerning "How to install & use distcc" far out performs instructing new users to install and use distcc. (If you're worried about any bias, just let the Google.com search engine show the following page's popularity!)

http://psas.pdx.edu/GentooCrossCompilerHowto/

The main confusion I think of this page, all advanced instructions (or additional scripting) should likely not be put alongside with the basic instructions especially due to the complicity of explaining DistCC configuration. The advanced instructions or additional scripting should likely be placed into a completely separate advanced section, so beginners are not further confused. Dunno, just my thoughts here as to what I would do.