On Sat, Sep 15, 2001 at 03:57:26AM +1000, Bruce Evans wrote:
> On Wed, 5 Sep 2001, Ruslan Ermilov wrote:
> 
> > On Wed, Sep 05, 2001 at 09:44:05PM +1000, Bruce Evans wrote:
> > [...]
> > > > 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>
> > >
> > > Ugh.  This is even worse than using __FreeBSD_version.  It is broken
> > > for non-FreeBSD hosts.  Hmm, this case is broken in my version too.
> > > Non-FreeBSD hosts might not have have FreeBSD file flags, so they might
> > > not have the definitions of the magic numbers necessary for strtofflags.c
> > > to compile; they might not even have the necessary headers.
> > >
> > What do I hear?!  Are we required to support non-FreeBSD hosts at the
> > Makefile level?  That would be too conservative, and is already broken
> > in many other ways.
> >
> > > It is unreasonable to expect the target source strtofflags.c to be
> > > compilable in the host environment.
> > >
> > But we can at least try (with high probability of success) -- this is
> > better than the current breakage Jordan observes.
> 
> I think it's easier to make a fairly general case work than fix special
> cases as they turn up.
> 
But we only need to "fix" these special (bootstrapping) cases.

> > > The correct fix is to not support file flags in the bootstrap
> > > version of install.
> > >
> > But we now always bootstrap install(1).  Not including support for
> > file flags here would mean "no support for file flags during the
> > installworld".
> 
> That's certainly a problem.  I still don't see the point of the runtime
> test to avoid using strtofflags.c.  strttofflags.c is just as portable as
> the xinstall sources (modulo the dependency on <unistd.h> declaring the
> things in it, if WARNS is turned on).
> 
Probably because you build your world static?  :-)  In a non-static
case (like for the normal ``make buildworld''), strtofflags.c is the
version that is getting compiled into, if used unconditionally.

If there would be a way to distinguish before bootstrapping and normal
builds, I would definitely agree.

Something as simple as this might work as well:

Index: Makefile.inc1
===================================================================
RCS file: /home/ncvs/src/Makefile.inc1,v
retrieving revision 1.215
diff -u -r1.215 Makefile.inc1
--- Makefile.inc1       2001/08/29 09:11:03     1.215
+++ Makefile.inc1       2001/09/17 07:13:50
@@ -180,7 +180,7 @@
 # bootstrap-tool stage
 BMAKEENV=      ${BOOTSTRAPENV}
 BMAKE=         ${BMAKEENV} ${MAKE} -f Makefile.inc1 -DNOHTML -DNOINFO \
-                       -DNOMAN -DNOPIC -DNOPROFILE -DNOSHARED
+                   -DNOMAN -DNOPIC -DNOPROFILE -DNOSHARED -DBOOTSTRAPPING
 
 # build-tool stage
 TMAKEENV=      MAKEOBJDIRPREFIX=${OBJTREE} \
Index: usr.bin/xinstall/Makefile
===================================================================
RCS file: /home/ncvs/src/usr.bin/xinstall/Makefile,v
retrieving revision 1.15
diff -u -r1.15 Makefile
--- usr.bin/xinstall/Makefile   2001/04/02 11:54:59     1.15
+++ usr.bin/xinstall/Makefile   2001/09/17 07:13:50
@@ -3,6 +3,12 @@
 
 PROG=          xinstall
 PROGNAME=      install
+SRCS=          xinstall.c
 MAN=           install.1
+
+.if defined(BOOTSTRAPPING)
+.PATH: ${.CURDIR}/../../lib/libc/gen
+SRCS+=         strtofflags.c
+.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