# distcc (dcc_connect_by_name_real) failed to resolve hostname

## LIsLinuxIsSogood

I am wondering if someone could help explain the error.  Distcc I thought had several options for using addressing.  Why is this one option failing?

```
distcc[3755] (dcc_connect_by_name_real) ERROR: failed to resolve host '192.168.1.12= port 3632: Temporary failure in name resolution

distcc[3755] Warning: failed to distribute arch/x86/boot/a20.c to '192.168.1.12=, running locally instead

```

I am attempting to use these instructions to compile kernel: https://forums.gentoo.org/viewtopic-t-25986-start-0.html

EDIT: So as for the additional apostrophe (') before the address, I think that was due to the entering of it along with DISTCC_HOST=

At least by removing that though did not solve the problem, which means these instructions (which are about 10 years Old) for changes to the Makefile in the kernel source directory are no longer current.  I am open to suggestions and would like to try compiling the linux kernel with use of distcc at some point, in the same manner, that is preferring to use changes to the kernel Makefile, 

Anything similar enough to that solution would be awesome.  thanks for the help, and I could also rehash that thread!

----------

## krinn

Dunno what you did, either in kernel makefile or distcc/hosts but twice time in your output it not only show the extra ' but also an extra = after the IP address

And of course, it couldn't resolve it.

To set how distcc works outside portage, you have /etc/distcc/hosts to setup hosts and /etc/env.d/02distcc to setup distcc parameters.

You can use make CC=distcc -jX to use distcc with your kernel, no need to set hosts in the kernel make file

----------

## Hu

Please show us how you configured the list of hosts to which distcc should distribute.

----------

## szatox

 *Quote:*   

> failed to resolve host '192.168.1.12= port 3632: Temporary failure in name resolution 

 

I guess it's a typo in your config. There is no such host "192.168.1.12=".

----------

## LIsLinuxIsSogood

Not a typo in the Makefile, I've checked numerous times.  It is somewhat puzzling, and I'm confused...going to try with krinn solution to make CC=distcc -jN and see if that works.

Hu, I don't know if I mentioned it bust distcc works perfectly ok otherwise.  The hosts are working to distribute other packages, e.g. through portage or whatever.

----------

## LIsLinuxIsSogood

I removed all changes to Makefile, those hostname errors are gone.  Compiling the kernel with the mentioned settings is working OK, but for whatever reason hardly anything gets distributed to the other machine.  Most likely something to do with the size of the code though, so I guess in theory it works now.  Just trying to find a better way to compile the kernel than locally by using the other PC's faster processor.

Update: Nevermind, I see there are some portions the kernel is processing the files into .o files automatically and not distributing those   For example, compiling the kernel with CC=distcc, sends just a handful of files for compilation to the host machines (less than 10 files..which out of 100's of files isn't substantial)  I want to save time so I think running the entire compilation on the host machine (using ftp or scp to copy the file there and then run make from there).Last edited by LIsLinuxIsSogood on Thu Oct 12, 2017 1:28 am; edited 1 time in total

----------

## LIsLinuxIsSogood

With distcc

real	25m54.869s

user	27m50.162s

sys	1m56.539s

without distcc

real	26m23.540s

user	28m8.482s

sys	1m54.629s

The small difference amounts to probably a dozen or so files that were compiled on the host machine.

Does anyone know why the kernel won't make use of distcc, is it because there are numerous other compiles or compiling procedures (for C language stuff)?

EDIT: With -j4 reduced real time on local compile to 

real	11m49.024s

user	41m48.988s

sys	2m43.052sLast edited by LIsLinuxIsSogood on Thu Oct 12, 2017 3:45 am; edited 1 time in total

----------

## LIsLinuxIsSogood

Here is my hosts file for distcc:

```
Machine_West% cat /etc/distcc/hosts 

playby/4
```

Why would using CC=distcc be directing most of the compiles to local machine.  I know that distcc has a setting to fail on localhost, but don't understand the setting exactly.  

There are a couple of settings I think could help from the distcc man page...doesn't actually describe implementing it though! Am I correct to assume that setting the variable to 1 is on and 0 if off, similar to other variables in the program?

DISTCC_FALLBACK

    By default distcc will compile locally if it fails to distribute a job to the intended machine, or if no host list can be found. If this variable is set to 0 then fallbacks are disabled and those compilations will simply fail. Note that this does not affect jobs which must always be local such as linking. 

DISTCC_SKIP_LOCAL_RETRY

    If set, when a remote compile fails, distcc will no longer try to recompile that file locally.

Me environment file:

```
Machine_West% cat /etc/env.d/02distcc 

# This file is managed by distcc-config; use it to change these settings.

# DISTCC_LOG and DISTCC_DIR should not be set.

DISTCC_VERBOSE="0"

DISTCC_FALLBACK="0"

DISTCC_SAVE_TEMPS="0"

DISTCC_TCP_CORK=""

DISTCC_SSH=""

UNCACHED_ERR_FD=""

DISTCC_ENABLE_DISCREPANCY_EMAIL=""

DCC_EMAILLOG_WHOM_TO_BLAME=""

DISTCC_DIR="/var/tmp/portage/.distcc/"

DISTCC_LOG=/var/log/distcc_log

DISTCC_SKIP_LOCAL_RETRY="1"

```

----------

## LIsLinuxIsSogood

Here's another debug set of info when compiling kernel...with distcc

Oct 11 20:50:03 [distccd] (dcc_listen_by_addr) listening on 192.168.1.5:3632

Oct 11 20:50:03 [distccd] (dcc_standalone_server) 4 CPUs online on this server

Oct 11 20:50:03 [distccd] (dcc_standalone_server) allowing up to 6 active jobs

Oct 11 20:50:03 [distccd] (dcc_log_daemon_started) preforking daemon started (3.2rc1 x86_64-pc-linux-gnu, built Sep  5 2017 07:54:44)

So it looks like everything working, but almost every aspect of the kernel gets compiled locally regardless!

----------

## krinn

It's common to have options set with 0 disable, 1 enable, those just mean false/true

DISTCC_FALLBACK and DISTCC_SKIP_LOCAL_RETRY are similar, both handle how distcc react to a problem and if distcc bypass the problem by building the file on localhost or not.

DISTCC_FALLBACK:

For me it should be on, distcc fail to distribute to host Z, and rebuild the job locally.

People who want this off are distcc devs for debugging, or users that use two hosts, and one host is a critical helper. ie: people using a big cpu to help their arm building a package, if "big cpu" host cannot take the job, something is wrong, and it might be real better to just stop building and fix the issue than letting the arm cpu continue to build everything on its own.

DISTCC_SKIP_LOCAL_RETRY:

It should just always be off: if the host goes offline, it will fail to compile and distcc will build the file locally, because host is now offline, next attempt will be handle by DISTCC_FALLBACK (because next job will be attempt to be distribute to it).

But it might be a great help to someone using really a lot of hosts that this option is on, in order to help you identify a problem in the farm.

For me best settings that should be use are DISTCC_FALLBACK=1 DISTCC_SKIP_LOCAL_RETRY=0 (i think those are default settings in gentoo).

If you don't have a farm of hosts and use one host to help another one that is really really weak, DISTCC_FALLBACK=0 looks better.

For performance, because you use distcc to build a kernel, you will have better performance from building the kernel directly on the fast host instead of using distcc.

----------

