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

Reply via email to