On Mon, Sep 03, 2001 at 09:36:46PM +1000, Bruce Evans wrote:
> On Sun, 2 Sep 2001, Jordan Hubbard wrote:
>
> > cd /usr/src/usr.bin/xinstall; make _EXTRADEPEND
> > echo xinstall: /usr/obj/usr/src/i386/usr/lib/libc.a >> .depend
> > cc -O -pipe -I/usr/obj/usr/src/i386/usr/include -c /usr/src/usr.bin/xinstall
> > /xinstall.c
> > cc -O -pipe -I/usr/obj/usr/src/i386/usr/include -static -o xinstall xinstal
> > l.o
> > xinstall.o: In function `main':
> > xinstall.o(.text+0x83): undefined reference to `strtofflags'
> > *** Error code 1
> >
> > This is from a relatively old -current coming up to a new (today's)
> > -current. I suspect somebody added a call for install yet forgot to
> > alter the bootstrap tools target accordingly (or did but in the wrong
> > place). Thanks.
>
> Index: Makefile
> ===================================================================
> RCS file: /home/ncvs/src/usr.bin/xinstall/Makefile,v
> retrieving revision 1.15
> diff -u -2 -r1.15 Makefile
> --- Makefile 2 Apr 2001 11:54:59 -0000 1.15
> +++ Makefile 3 Sep 2001 11:18:33 -0000
> @@ -2,6 +2,9 @@
> # $FreeBSD: src/usr.bin/xinstall/Makefile,v 1.15 2001/04/02 11:54:59 ru Exp $
>
> +.PATH: ${.CURDIR}/../../lib/libc/gen
> +
> PROG= xinstall
> PROGNAME= install
> +SRCS= strtofflags.c xinstall.c
> MAN= install.1
>
I don't like this, as it unconditionally compiles in strtofflags.c, even if
the host has libc support for it. This also breaks single-module-checkout
compilation. How about this instead?
The strtofflags() interface has been added
to HEAD in unistd.h,v 1.36, on 2000/06/17, and
to RELENG_4 in unistd.h,v 1.35.2.1, on 2000/07/03.
This change has not been reflected by the __FreeBSD_version bump.
The nearest (by date) version bumps are as follows:
CURRENT, param.h,v 1.72, 500007
RELENG_4, param.h,v 1.61.2.6: 400021
Index: Makefile
===================================================================
RCS file: /home/ncvs/src/usr.bin/xinstall/Makefile,v
retrieving revision 1.15
diff -u -r1.15 Makefile
--- Makefile 2001/04/02 11:54:59 1.15
+++ Makefile 2001/09/04 08:11:52
@@ -3,6 +3,22 @@
PROG= xinstall
PROGNAME= install
+SRCS= xinstall.c
MAN= install.1
+
+# Get __FreeBSD_version
+.if !defined(OSVERSION)
+.if exists(/sbin/sysctl)
+OSVERSION!= /sbin/sysctl -n kern.osreldate
+.else
+OSVERSION!= /usr/sbin/sysctl -n kern.osreldate
+.endif
+.endif
+
+.if ${OSVERSION} < 400021 || \
+ ${OSVERSION} >= 500000 && ${OSVERSION} < 500007
+.PATH: ${.CURDIR}/../../lib/libc/gen
+SRCS+= strtofflags.c
+.endif
.include <bsd.prog.mk>
I also think that the ${OSVERSION} stuff should be in sys.mk.
> Unfixed bugs: this will have to be fixed better before turning on WARNS.
> strtofflags() won't be declared in the host includes if the host libraries
> don't have it. Similarly in mtree (where I obtained this fix from) and
> in any other tools that use strtofflags(). All these bugs were missing in
> the old versions that used ls's version of strtofflags.
>
This could be solved similarly from within xinstall.c. I.e., we could
prototype strtofflags() and fflagstostr() manually if __FreeBSD_version
checks fail.
> Nearby bugs: mtree/Makefile uses !defined(WORLD) to avoid depending on
> the host having libmd, but someone removed the definition of WORLD from
> src/Makefile.inc1.
>
The correct fix would be:
Index: Makefile
===================================================================
RCS file: /home/ncvs/src/usr.sbin/mtree/Makefile,v
retrieving revision 1.21
diff -u -r1.21 Makefile
--- Makefile 2001/07/20 06:20:02 1.21
+++ Makefile 2001/09/04 08:22:19
@@ -8,10 +8,10 @@
SRCS= compare.c crc.c create.c excludes.c misc.c mtree.c spec.c verify.c \
strtofflags.c
-.if !defined(WORLD)
+.include <bsd.prog.mk>
+
+.if defined(LIBMD) && exists(${LIBMD})
CFLAGS+= -DMD5 -DSHA1 -DRMD160
DPADD= ${LIBMD}
LDADD= -lmd
.endif
-
-.include <bsd.prog.mk>
Cheers,
--
Ruslan Ermilov Oracle Developer/DBA,
[EMAIL PROTECTED] Sunbay Software AG,
[EMAIL PROTECTED] FreeBSD committer,
+380.652.512.251 Simferopol, Ukraine
http://www.FreeBSD.org The Power To Serve
http://www.oracle.com Enabling The Information Age
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message