First of all, thanks to everybody who answered my questions, and helped me get it working. Now for the setup. This is a home LAN, so I don't bother with ssh tunneling, etc, which will be necessary if you're going over untrusted links, e.g. the public internet.
* The host, IP address 192.168.123.251, is an over 7 year old Dell Dimension 530 with a Core Duo, running 64-bit Gentoo. It will compile for the client. * The client, IP address 192.168.123.253, is an ancient Acer netbook, with an Atom CPU so old that it only runs 32-bit mode. *** On the host *** ===================================================================== * emerge crossdev * build a toolchain that can compile for the client's architecture... crossdev -S -t <client's CHOST> You need to know what the CHOST variable is in the client's make.conf. e.g. on my netbook CHOST="i686-pc-linux-gnu" so the command would be crossdev -S -t i686-pc-linux-gnu The "-S" tells crossdev to build the latest stable gcc and utilities version. The default (without the "-S") is to build the absolute latest version available, as if gcc and utilities were keyworded. Note that the gcc versions must be essentially the same on the client and the server crossdev toolchain. E.g. for gcc-a.b.c, the 3rd part (the revison # "c") can differ. But if either the major or minor version portions differ, you are guaranteed to have problems. * emerge distcc * edit the DISTCCD_OPTS variable to indicate allowed clients. On my host machine, it's... DISTCCD_OPTS="--port 3632 --log-level notice --log-file /var/log/distccd.log -N 15 --allow 192.168.123.253" Notes; - The default port is 3632 - "N" is the "nice" level. - you can allow multiple addresses, e.g. "--allow 192.168.123.253 --allow 169.254.0.1" etc. * start up the distccd daemon with the command /etc/init.d/distccd start * optionally set it to come up whenever the machine boots up rc-update add distccd default *** On the client *** ===================================================================== specify host(s) in /etc/distcc/hosts e.g. in my case 192.168.123.251/6,lzo,cpp Notes; - you can have multiple entries, using a space as the separator. The leftmost entry will be the preferred host, and any additional entries will have descending priority. - the "/6" is not a CIDR number. It specifies how many simultaneous jobs to send to that server. The optimal number will vary depending on how powerful the server is, and whether it's also being used as a desktop, etc. - The "lzo" entry specifies lzo compression. It is necessary for "pump" mode. You will want pump mode. - The "cpp" entry is also necessary for "pump" mode. You will want pump mode. If you have "distcc distcc-pump" in FEATURES in make.conf, the "emerge" command will transparently invoke pump mode. Without them, builds will be done locally. Does that mean you have to edit your make.conf file each time you switch between local and distcc builds? NO. Remember how you can temporarily modify the USE variable for an emerge like so... USE="foo" emerge bar ...the exact same method works for the FEATURES variable. * do *NOT* put "distcc distcc-pump" directly into FEATURES in make.conf * make an executable script /root/bin/xmerge with 2 lines... #!/bin/bash FEATURES="distcc distcc-pump" emerge ${*} Now compare the outputs of... emerge --info | grep ^FEATURES xmerge --info | grep ^FEATURES aa1 portage # emerge --info | grep ^FEATURES FEATURES="assume-digests binpkg-logs distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync" aa1 portage # xmerge --info | grep ^FEATURES FEATURES="assume-digests binpkg-logs distcc distcc-pump distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync" Your FEATURES options will probably differ from mine. The important point is that when launched from the xmerge script, emerge sees the options "distcc distcc-pump" in FEATURES, and transparently uses distcc. When launched directly from the command line, emerge won't see this, and will therefore build locally. In the above example, only the parameter "--info" was passed to xmerge. But you can pass any legal energe parameters to xmerge, e.g. xmerge --changed-use --deep --update @world -- Walter Dnes <waltd...@waltdnes.org> I don't run "desktop environments"; I run useful applications