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>
