Can't build boot blocks after new GPT attributes added
Jeremy Chadwick
freebsd at jdc.parodius.com
Wed Oct 27 09:17:29 UTC 2010
On Wed, Oct 27, 2010 at 10:08:17AM +0200, Pawel Jakub Dawidek wrote:
> On Wed, Oct 27, 2010 at 12:44:02AM -0700, Jeremy Chadwick wrote:
> > The below commit has broken the ability to build system boot blocks
> > (including pxeldr) the "historic way"[1]:
> >
> > http://freshbsd.org/2010/10/17/20/10/00
> >
> > The breakage on RELENG_8 (dated as of a few minutes ago):
> >
> > ========================================
> > # rm -fr /usr/obj/*
> > # cd /sys/boot
> > # make clean
> > [...]
> > # make
> > [...]
> > cc -DBOOTPROG=\"gptboot\" -Os -fno-guess-branch-probability -fomit-frame-pointer -fno-unit-at-a-time -mno-align-long-strings -mrtd -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -DGPT -DUFS1_AND_UFS2 -DSIOPRT=0x3f8 -DSIOFMT=0x3 -DSIOSPD=9600 -I/usr/src/sys/boot/i386/gptboot/../../common -I/usr/src/sys/boot/i386/gptboot/../common -I/usr/src/sys/boot/i386/gptboot/../btx/lib -I. -I/usr/src/sys/boot/i386/gptboot/../boot2 -Wall -Waggregate-return -Wbad-function-cast -Wcast-align -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings -Winline --param max-inline-insns-single=100 -ffreestanding -mpreferred-stack-boundary=2 -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -m32 -march=i386 -std=gnu99 -c /usr/src/sys/boot/i386/gptboot/../../common/gpt.c
> > /usr/src/sys/boot/i386/gptboot/../../common/gpt.c: In function 'gptfind':
> > /usr/src/sys/boot/i386/gptboot/../../common/gpt.c:128: error: 'GPT_ENT_ATTR_BOOTME' undeclared (first use in this function)
> > /usr/src/sys/boot/i386/gptboot/../../common/gpt.c:128: error: (Each undeclared identifier is reported only once
> > /usr/src/sys/boot/i386/gptboot/../../common/gpt.c:128: error: for each function it appears in.)
> > /usr/src/sys/boot/i386/gptboot/../../common/gpt.c:130: error: 'GPT_ENT_ATTR_BOOTONCE' undeclared (first use in this function)
> > /usr/src/sys/boot/i386/gptboot/../../common/gpt.c: In function 'gptbootfailed':
> > /usr/src/sys/boot/i386/gptboot/../../common/gpt.c:217: error: 'GPT_ENT_ATTR_BOOTONCE' undeclared (first use in this function)
> > /usr/src/sys/boot/i386/gptboot/../../common/gpt.c:222: error: 'GPT_ENT_ATTR_BOOTFAILED' undeclared (first use in this function)
> > /usr/src/sys/boot/i386/gptboot/../../common/gpt.c: In function 'gptbootconv':
> > /usr/src/sys/boot/i386/gptboot/../../common/gpt.c:249: error: 'GPT_ENT_ATTR_BOOTME' undeclared (first use in this function)
> > /usr/src/sys/boot/i386/gptboot/../../common/gpt.c:250: error: 'GPT_ENT_ATTR_BOOTONCE' undeclared (first use in this function)
> > /usr/src/sys/boot/i386/gptboot/../../common/gpt.c:251: error: 'GPT_ENT_ATTR_BOOTFAILED' undeclared (first use in this function)
> > *** Error code 1
> >
> > Stop in /usr/src/sys/boot/i386/gptboot.
> > *** Error code 1
> >
> > Stop in /usr/src/sys/boot/i386.
> > *** Error code 1
> >
> > Stop in /usr/src/sys/boot.
> > ========================================
> >
> > Please advise. If there is a new/correct method, then I'd like to know
> > what it is, in addition to the Handbook needing to be updated.
> >
> > [1]: http://www.freebsd.org/doc/handbook/serialconsole-setup.html
> > (See Section 26.6.5.2)
>
> Well, your problem is that gptboot.c is including gpt.h not from your
> source tree, but from /usr/include/sys/, which has an old version of
> this header file. This can be easly fixed by extending CFLAGS in one of
> the Makefiles (which is already done in HEAD), but I'm afraid this
> procedure is incorrect (and never was correct). Apart from including
> wrong files it also links to wrong libraries, etc.
>
> The proper way is to:
>
> # cd /usr/src
> # make buildenv
> # cd sys/boot
> # make clean && make && make install
Thanks for the tip -- the CFLAGS change in a Makefile sounds like the
solution, since the latter (re: "proper way") didn't work (exact same
problem). The Makefile adjustment you mention for HEAD is here:
http://freshbsd.org/2010/10/08/10/27/52
But there's no mention of an MFC date in the commit message. Can this
be MFC'd?
For now, "make buildworld" works as a workaround (pull the bootstrap
binaries needed out of /usr/obj).
--
| Jeremy Chadwick jdc at parodius.com |
| Parodius Networking http://www.parodius.com/ |
| UNIX Systems Administrator Mountain View, CA, USA |
| Making life hard for others since 1977. PGP: 4BD6C0CB |
More information about the freebsd-stable
mailing list