Subject: Re: net/tnftpd fails to build on Linux
To: None <pkgsrc-users@netbsd.org, lukem@netbsd.org>
From: Louis Guillaume <lguillaume@berklee.edu>
List: pkgsrc-users
Date: 09/18/2006 16:04:49
Joerg Sonnenberger wrote:
> On Mon, Sep 18, 2006 at 02:04:06PM -0400, Louis Guillaume wrote:
>> yacc  ftpcmd.y
>> gcc -I. -I./.. -I. -I..  -I./../libnetbsd -DHAVE_TNFTPD_H=1 -O2
>> -D_DEFAULT_CONFDIR=\"/etc\"  -c -o ftpcmd.o y.tab.c
>> ftpcmd.y: In function `yyparse':
>> ftpcmd.y:300: error: `epsvall' undeclared (first use in this function)
>> ftpcmd.y:300: error: (Each undeclared identifier is reported only once
>> ftpcmd.y:300: error: for each function it appears in.)
>> ftpcmd.y:544: error: `sitetab' undeclared (first use in this function)
>> ftpcmd.y: At top level:
>> ftpcmd.y:1303: warning: static declaration of 'check_write' follows
>> non-static declaration
>> ftpcmd.y:423: warning: previous implicit declaration of 'check_write'
>> was here
>> ftpcmd.y:1304: error: conflicting types for 'help'
>> ftpcmd.y:544: error: previous implicit declaration of 'help' was here
>> ftpcmd.y:1305: error: conflicting types for 'port_check'
>> ftpcmd.y:258: error: previous implicit declaration of 'port_check' was here
>> *** Error code 1
> 
> Thanks, as you have confirmed this is a difference between BSD yacc and
> GNU bison, which seem to order the blocks differently and therefore see
> the declaration e.g. of epsvall too late.
> 
> I've CCed Luke, who's the author and should be able to easily fix it.
> 
> Joerg

Thanks Joerg.

Curiosity struck my and I started looking at ftpcmd.y .I noticed that
there are a bunch of declarations immediately after the second `%%' in
ftpcmd.y.

If I move all those into the %{...%} block it builds on Linux. But I
dare not run this ftpd, since I have no idea what I'm doing with yacc :)

It's a hunch and it seems to build on Linux. But applying the same patch
on NetBSD causes the package to fail (even more miserably) on that platform.

Very curious to see what the answer to this issue is...

Louis