bug-inetutils
[Top][All Lists]
Advanced

[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>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]