[distcc] TMPDIR on Cygwin

Shlomi Mor shlomi.mor at gmail.com
Thu Jul 20 06:48:27 GMT 2006


 Hi Martin,

Thanks for your help.

Regarding my first question (TMPDIR):
Using DISTCC_TMPDIR won't help here, because the problem is that Cygwin is
not giving the exact string as defined in the environment variable, but it
convert it to UNIX path format.

What I did is converting it back to Windows path format, by rewriting
dcc_get_tmp_top():
=============================================================
int dcc_get_tmp_top(const char **p_ret)
{
    const char *d;
 static char win32_path[MAX_PATH];

 d = getenv("TMPDIR");

    if (!d || d[0] == '\0') {
  *p_ret = "/cygdrive/c/tmp";
    } else {
        *p_ret = d;
   }

 /* Convert the path to Windows format, so the compiler will be able
  * to understand its inputs */
  cygwin_conv_to_full_win32_path( *p_ret, win32_path );

 *p_ret = win32_path;

 return 0;
}
=============================================================

Lucky me, Cygwing code can access both UNIX and Windows paths format, so
there are no problems with the rest of distcc.exe and distccd.exefunctionality.

Regarding my second question (DISTCC_HOSTS): you are right, it is really
working :)
The real problem is at distccd. You must give IP addresses for the -allow
option.
Anyway - I just changed the code of distccd so it will answer every client.

On 7/20/06, Martin Pool <mbp at sourcefrog.net> wrote:

> On 18 Jul 2006, Shlomi Mor <shlomi.mor at gmail.com> wrote:
> > 1) TMPDIR
> > I am using distcc on Cygwin, and I have a problem with TMPDIR.
> > If TMPDIR = c:\tmp, distccd gets "/cygdrive/c/tmp" when calling getenv
> > ("TMPDIR).
> > The problem is that my compiler can't access such a path (it can get
> only
> > regular windows paths, like "c:\tmp" or "c:/tmp" ).
> >
> > What is the most elegant way to fix it?
> > (Of course I can change the dcc_get_tmp_top() function, so it will
> replace "/
> > cygdrive/X/" with "X:/", but maybe there is nicer solution).
>
> I suggest you write a patch which adds DISTCC_TMPDIR and uses that
> instead if it's defined.
>
> > 2) DISTCC_HOSTS
> > Is there a way to use the computer name (inside my Windows domain)
> instead of
> > IP numbers?
> > I can't use IP numbers snice we are using DHCP.
>
> I thought Windows domain naming was mapped to DNS in modern NT domains?
> If so you should be able to just use those names.
>
> If this isn't true in your environment, you'll need to investigate
> whether there is an alternative to gethostbyname() which looks up WINS
> names (??), and use that instead.
>
> --
> Martin
>
-------------- next part --------------
HTML attachment scrubbed and removed


More information about the distcc mailing list