Date: Tue, 16 Oct 2012 04:50:01 GMT From: "Jason E. Hale" <jhale@freebsd.org> To: freebsd-ports-bugs@FreeBSD.org Subject: Re: ports/172745: The port sessreg does not compile in 9.1-PRERELEASE #23 Message-ID: <201210160450.q9G4o1ta003156@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR ports/172745; it has been noted by GNATS. From: "Jason E. Hale" <jhale@freebsd.org> To: Joao Rocha Braga Filho <goffredo@gmail.com>, bug-followup@freebsd.org Cc: Subject: Re: ports/172745: The port sessreg does not compile in 9.1-PRERELEASE #23 Date: Tue, 16 Oct 2012 00:40:23 -0400 On Tuesday, October 16, 2012 01:11:02 Joao Rocha Braga Filho wrote: > On Tue, Oct 16, 2012 at 12:45 AM, Jason E. Hale <jhale@freebsd.org> wrote: > > On Tuesday, October 16, 2012 00:12:45 Joao Rocha Braga Filho wrote: > >> > >> In my computer: > >> > >> " > >> root:[152] find /usr/obj/ -name 'ttyslot*' -ls > >> 1183232 4 -rw-r--r-- 1 root wheel > >> 1344 Oct 13 15:46 /usr/obj/usr/src/lib/libc/ttyslot.o > >> 1184362 4 -rw-r--r-- 1 root wheel > >> 1344 Oct 13 15:47 /usr/obj/usr/src/lib/libc/ttyslot.So > >> 1189387 4 -rw-r--r-- 1 root wheel > >> 1488 Oct 13 17:15 /usr/obj/usr/src/lib/libc/ttyslot.po > >> 1508043 4 -rw-r--r-- 1 root wheel > >> > >> 810 Oct 13 17:49 /usr/obj/lib32/usr/src/lib/libc/ttyslot.o > >> > >> 1509178 4 -rw-r--r-- 1 root wheel > >> > >> 892 Oct 13 17:50 /usr/obj/lib32/usr/src/lib/libc/ttyslot.po > >> > >> 1510314 4 -rw-r--r-- 1 root wheel > >> > >> 810 Oct 13 17:51 /usr/obj/lib32/usr/src/lib/libc/ttyslot.So > >> > >> root:[153] > >> " > >> > >> But is more strange: > >> > >> " > >> root:[161] l /usr/lib/libc.* > >> 3456 -r--r--r-- 1 root wheel 3511792 Oct 13 16:16 /usr/lib/libc.a > >> > >> 0 lrwxr-xr-x 1 root wheel 14 Oct 13 16:16 /usr/lib/libc.so > >> > >> -> /lib/libc.so.7 > >> root:[162] nm /usr/lib/libc.a | grep ttyslot > >> ttyslot.o: > >> 0000000000000000 T __ttyslot > >> 0000000000000000 T ttyslot@FBSD_1.0 > >> root:[163] nm /lib/libc.so.7 | grep ttyslot > >> nm: /lib/libc.so.7: no symbols > >> root:[164] l /lib/libc.so.7 > >> 1344 -r--r--r-- 1 root wheel 1358392 Oct 13 16:16 /lib/libc.so.7 > >> " > >> > >> Why didn't compiled? > > > > Because the ttyslot() function has been removed. > > But sessreg uses. Only if the system has utmp.h. FreeBSD 9.x has utmpx.h. ttyslot() is only used in one place and is wrapped by an #ifdef that shouldn't be activated on FreeBSD 9.x. Do you still have /usr/include/utmp.h? If so, delete it. > And is in man page: > > " > TTYNAME(3) FreeBSD Library Functions Manual > TTYNAME(3) > > NAME > ttyname, ttyname_r, isatty, ttyslot -- get name of associated terminal > (tty) from file descriptor > > LIBRARY > Standard C Library (libc, -lc) > > SYNOPSIS > #include <unistd.h> > > char * > ttyname(int fd); > > int > ttyname_r(int fd, char *buf, size_t len); > > int > isatty(int fd); > > int > ttyslot(void); > > DESCRIPTION > These functions operate on the system file descriptors for terminal > type devices. These descriptors are not related to the standard I/O FILE > typedef, but refer to the special device files found in /dev and for which > an entry exists in the initialization file /etc/ttys or pseudo-ter- minals. > (See ttys(5).) > > The isatty() function determines if the file descriptor fd refers to a > valid terminal type device. > > The ttyname() function gets the related device name of a file > descriptor for which isatty() is true. > > The ttyname() function returns the name stored in a static buffer which > will be overwritten on subsequent calls. The ttyname_r() function takes a > buffer and length as arguments to avoid this problem. > > The ttyslot() function fetches the current process' control terminal > num- ber from the ttys(5) file entry. > " > > At the end says: > > " > HISTORY > The isatty(), ttyname(), and ttyslot() functions appeared in Version 7 > AT&T UNIX. The ttyname_r() function appeared in FreeBSD 6.0. > > FreeBSD 9.1 May 14, 2005 FreeBSD > 9.1 " > > Man page must be updated. > It has been. I don't know why yours still has ttyslot in it. http://svnweb.freebsd.org/base/stable/9/lib/libc/gen/ttyname.3?revision=225736&view=markup > May happen again, since ttyslot is a 35 old years old function. > > (I used Version 7 running in a PDP 11/70.) > And now it's gone. :) > >> " > >> root:[173] make > >> ===> Building for sessreg-1.0.7 > >> make all-recursive > >> Making all in man > >> > >> CCLD sessreg > >> > >> sessreg.o: In function `main': > >> sessreg.c:(.text+0xc7a): undefined reference to `ttyslot' > >> *** [sessreg] Error code 1 > >> > >> Stop in /usr/ports/x11/sessreg/work/sessreg-1.0.7. > >> *** [all-recursive] Error code 1 > >> > >> Stop in /usr/ports/x11/sessreg/work/sessreg-1.0.7. > >> *** [all] Error code 1 > >> > >> Stop in /usr/ports/x11/sessreg/work/sessreg-1.0.7. > >> *** [do-build] Error code 1 > >> > >> Stop in /usr/ports/x11/sessreg. > >> " > > > > If you upgraded this machine from FreeBSD < 9.0 at any point then you > > probably have some leftovers that need to be removed which is why I > > suggested running make delete-old > > This system started in FreeBSD 7.x, in 02/2009, and was updated several > times. > > I will do "make delete-old" when FreeBSD 9.1 RELEASE. Thanks. > Why wait? > >> Or: > >> > >> " > >> goffredo:[1019] cc -s -o ttyslot_test3 ttyslot_test.c > >> /tmp//ccFx55lb.o: In function `main': > >> ttyslot_test.c:(.text+0xa): undefined reference to `ttyslot' > >> goffredo:[1020] cat ttyslot_test.c > >> > >> #include <stdio.h> > >> #include <unistd.h> > >> > >> > >> main() > >> { > >> > >> printf( "%d\n",ttyslot() ); > >> > >> } > >> > >> goffredo:[1021] cc -s -o ttyslot_test ttyslot_test.c > >> /tmp//ccKUda6b.o: In function `main': > >> ttyslot_test.c:(.text+0xa): undefined reference to `ttyslot' > >> goffredo:[1022] > >> " > > > > That won't compile since ttyslot is not in stdlib.h anymore in FreeBSD > > 9.x. > > All ttyslot() does now is return 0. See: > > http://svnweb.freebsd.org/base/release/9.0.0/lib/libc/gen/ttyslot.c?view=l > > og > I saw the source code. It is a "return(0)" function. > > > And about sessreg? Will be created a patch? > It doesn't need a patch. If you get rid of /usr/include/utmp.h it will probably build for you. - Jason
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201210160450.q9G4o1ta003156>