Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 17 Sep 2001 10:13:03 +0300
From:      Ruslan Ermilov <ru@FreeBSD.ORG>
To:        Bruce Evans <bde@zeta.org.au>
Cc:        Jordan Hubbard <jkh@FreeBSD.ORG>, current@FreeBSD.ORG
Subject:   Re: Build problem in -current
Message-ID:  <20010917101303.C48120@sunbay.com>
In-Reply-To: <20010915032356.M20847-100000@delplex.bde.org>; from bde@zeta.org.au on Sat, Sep 15, 2001 at 03:57:26AM %2B1000
References:  <20010905181810.V96906@sunbay.com> <20010915032356.M20847-100000@delplex.bde.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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,
ru@sunbay.com		Sunbay Software AG,
ru@FreeBSD.org		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 majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010917101303.C48120>