[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [bug-inetutils] [Platform-testers] inetutils pre-release
From: |
Bruno Haible |
Subject: |
Re: [bug-inetutils] [Platform-testers] inetutils pre-release |
Date: |
Sun, 13 Nov 2011 20:31:01 +0100 |
User-agent: |
KMail/1.13.6 (Linux/2.6.37.6-0.5-desktop; KDE/4.6.0; x86_64; ; ) |
Simon Josefsson wrote:
> I rolled a pre-release of GNU InetUtils, please test it!
>
> http://daily.josefsson.org/inetutils/inetutils-1.8.150-c548.tar.gz
There was no statement where to send the reports to; I hope I'm right
when sending this report to bug-inetutils.
===============================================================================
* Linux x86_64, IA-64, HP-PA, PowerPC 32-bit, SPARC 32-bit
All tests passed.
===============================================================================
* Linux MIPS
I had two build running at the same time, one in 32-bit mode, one in 64-bit
mode. One succeeded, the other one failed:
Desired port 7777/udp is already in use.
FAIL: tftp.sh
===============================================================================
* Linux SPARC 64-bit
Link error.
CCLD telnet
telnet.o: In function `init_term':
/home/haible/multibuild-1504/linuxppc64/inetutils-1.8.150-c548/telnet/telnet.c:732:
undefined reference to `tgetent'
collect2: ld returned 1 exit status
make[2]: *** [telnet] Error 1
The difference to the 32-bit mode build is that here, config.status
defines LIBCURSES, LIBTERMCAP to empty but LIBREADLINE to non-empty.
$ ls -l /usr/lib/libcurses.*
lrwxrwxrwx 1 root root 12 2010-05-11 10:57 /usr/lib/libcurses.a -> libncurses.a
lrwxrwxrwx 1 root root 13 2010-05-11 10:57 /usr/lib/libcurses.so ->
libncurses.so
$ ls -l /usr/lib64/libcurses.*
ls: cannot access /usr/lib64/libcurses.*: No such file or directory
$ ls -l /usr/lib/libtermcap.*
lrwxrwxrwx 1 root root 12 2010-05-11 10:57 /usr/lib/libtermcap.a -> libncurses.a
lrwxrwxrwx 1 root root 13 2010-05-11 10:57 /usr/lib/libtermcap.so ->
libncurses.so
$ ls -l /usr/lib64/libtermcap.*
ls: cannot access /usr/lib64/libtermcap.*: No such file or directory
$ ls -l /usr/lib/libreadline.*
ls: cannot access /usr/lib/libreadline.*: No such file or directory
$ ls -l /usr/lib64/libreadline.*
-rw-r--r-- 1 root root 529260 2010-01-02 14:04 /usr/lib64/libreadline.a
lrwxrwxrwx 1 root root 23 2010-05-11 10:57 /usr/lib64/libreadline.so ->
/lib64/libreadline.so.6
So, config.status is right.
The code in telnet.c gave no warning about a missing tgetent() function
because it fetched the declaration from readline's <term.h>. But it did
not link with anything from libreadline.
Adding -lreadline to the command line fixes the link:
$ gcc -m64 -std=gnu99 -g -O2 -o telnet authenc.o commands.o main.o network.o
ring.o sys_bsd.o telnet.o terminal.o tn3270.o utilities.o
../libinetutils/libinetutils.a ../lib/libgnu.a ../libtelnet/libtelnet.a
-lcrypt -lresolv -lnsl -lreadline
In other words, you need to add $(LIBREADLINE) to the value of LDADD
in telnet/Makefile.am.
Likewise in telnetd/Makefile.am.
===============================================================================
* Linux PowerPC 64-bit
Same link error as on Linux SPARC 64-bit. But here the problem is more
complicated:
CC cmds.o
cmds.c:81:32: error: readline/readline.h: No such file or directory
cmds.c:82:31: error: readline/history.h: No such file or directory
cmds.c: In function 'another':
cmds.c:147: warning: implicit declaration of function 'readline'
cmds.c:147: warning: assignment makes pointer from integer without a cast
cmds.c:152: warning: implicit declaration of function 'add_history'
make[2]: *** [cmds.o] Error 1
The reason is that while libreadline is installed, the include files are
missing:
$ ls -l /lib/libreadline.so.*
lrwxrwxrwx 1 root root 18 2010-05-02 18:57 /lib/libreadline.so.5 ->
libreadline.so.5.2
-rw-r--r-- 1 root root 255916 2009-11-02 03:11 /lib/libreadline.so.5.2
lrwxrwxrwx 1 root root 18 2010-05-02 18:57 /lib/libreadline.so.6 ->
libreadline.so.6.1
-rw-r--r-- 1 root root 265700 2010-01-02 14:03 /lib/libreadline.so.6.1
$ ls -l /lib64/libreadline.so.*
lrwxrwxrwx 1 root root 18 2010-05-11 10:57 /lib64/libreadline.so.6 ->
libreadline.so.6.1
-rw-r--r-- 1 root root 353120 2010-01-02 14:04 /lib64/libreadline.so.6.1
$ ls -l /usr/include/readline*
ls: cannot access /usr/include/readline*: No such file or directory
$ ls -l /usr/lib64/libreadline.*
-rw-r--r-- 1 root root 529260 2010-01-02 14:04 /usr/lib64/libreadline.a
lrwxrwxrwx 1 root root 23 2010-05-11 10:57 /usr/lib64/libreadline.so ->
/lib64/libreadline.so.6
$ ls -l /usr/include/readline*
ls: cannot access /usr/include/readline*: No such file or directory
$ grep READLINE config.h
#define HAVE_LIBREADLINE 1
/* #undef HAVE_READLINE */
/* #undef HAVE_READLINE_READLINE_H */
Quite odd situation, but IMO the readline macro should not set HAVE_LIBREADLINE
if the include files are missing, or the code in ftp/cmds.c should be testing
HAVE_LIBREADLINE && HAVE_READLINE_READLINE_H
instead of just
HAVE_LIBREADLINE
===============================================================================
* MacOS X 10.5, FreeBSD 6.4
CCLD ftp
Undefined symbols:
"_fdopendir", referenced from:
_rpl_getcwd in libgnu.a(getcwd.o)
"_fstatat", referenced from:
_rpl_getcwd in libgnu.a(getcwd.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[2]: *** [ftp] Error 1
Similarly on IRIX 6.5:
CC getcwd.o
cc-1196 cc: WARNING File = getcwd.c, Line = 246
The indicated function is declared implicitly.
dirstream = fdopendir (fd);
^
cc-1515 cc: ERROR File = getcwd.c, Line = 246
A value of type "int" cannot be assigned to an entity of type "DIR *".
dirstream = fdopendir (fd);
^
1 error detected in the compilation of "getcwd.c".
*** Error code 2 (bu21)
===============================================================================
* OpenBSD 4.9
CC logger.o
logger.c:47:22: error: logprio.h: No such file or directory
*** Error code 1
No platform I know of has a <logprio.h> file, and inetutils does not contain
this file either.
===============================================================================
* NetBSD 5.1
CC commands.o
commands.c: In function 'makeargv':
commands.c:149: warning: array subscript has type 'char'
commands.c:182: warning: array subscript has type 'char'
commands.c: In function 'send_tncmd':
commands.c:435: error: conflicting types for 'telopts'
/usr/include/arpa/telnet.h:150: error: previous declaration of 'telopts' was
here
commands.c: In function 'help':
commands.c:2968: warning: field width should have type 'int', but argument 2
has type 'long unsigned int'
commands.c:2968: warning: field width should have type 'int', but argument 2
has type 'long unsigned int'
commands.c: In function 'cmdrc':
commands.c:3025: warning: array subscript has type 'char'
commands.c:3030: warning: array subscript has type 'char'
*** Error code 1
The declaration in /usr/include/arpa/telnet.h:150 is:
extern const char *telopts[NTELOPTS+1];
where NTELOPTS is 48.
===============================================================================
* AIX 5.1, OSF/1 5.1, Solaris 8
CC hostname.o
"hostname.c", line 93.25: 1506-045 (S) Undeclared identifier sethostname.
"hostname.c", line 161.31: 1506-045 (S) Undeclared identifier sethostname.
make: 1254-004 The error code from the last command is 1.
The function sethostname is not portable, see
gnulib/doc/glibc-functions/sethostname.texi
===============================================================================
* HP-UX 11.00
CC utmp_logout.o
cc: "utmp_logout.c", line 76: error 1588: "e_termination" undefined.
cc: "utmp_logout.c", line 76: error 1531: Invalid member of struct or union.
cc: "utmp_logout.c", line 77: error 1588: "e_exit" undefined.
cc: "utmp_logout.c", line 77: error 1531: Invalid member of struct or union.
gmake[2]: *** [utmp_logout.o] Error 1
The 'struct utmpx' on HP-UX has a field ut_exit with components called
__e_termination and __e_exit, not e_termination and e_exit.
===============================================================================
Cygwin 1.7.9
CC tftpsubs.o
tftpsubs.c:69:23: fatal error: arpa/tftp.h: No such file or directory
compilation terminated.
make[2]: *** [tftpsubs.o] Error 1
The include file <arpa/tftp.h> does not exist on
Minix 3.1.8, mingw, MSVC 9, BeOS, Haiku.
===============================================================================
mingw
Link error while linking git-merge-changelog:
CCLD git-merge-changelog.exe
libgnu.a(getcwd.o): In function `rpl_getcwd':
/home/bruno/multibuild-1504/mingw2009/inetutils-1.8.150-c548/lib/getcwd.c:246:
undefined reference to `_fdopendir'
/home/bruno/multibuild-1504/mingw2009/inetutils-1.8.150-c548/lib/getcwd.c:300:
undefined reference to `_fstatat'
collect2: ld returned 1 exit status
make[4]: *** [git-merge-changelog.exe] Error 1
Why is lib/git-merge-changelog.c part of the source code and built by default?
===============================================================================
Bruno
--
In memoriam Bruno Binnebesel <http://de.wikipedia.org/wiki/Bruno_Binnebesel>