From owner-freebsd-arch@FreeBSD.ORG Wed Oct 27 09:30:39 2010 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 92FD31065670 for ; Wed, 27 Oct 2010 09:30:39 +0000 (UTC) (envelope-from jdc@koitsu.dyndns.org) Received: from qmta10.emeryville.ca.mail.comcast.net (qmta10.emeryville.ca.mail.comcast.net [76.96.30.17]) by mx1.freebsd.org (Postfix) with ESMTP id 78F358FC08 for ; Wed, 27 Oct 2010 09:30:39 +0000 (UTC) Received: from omta15.emeryville.ca.mail.comcast.net ([76.96.30.71]) by qmta10.emeryville.ca.mail.comcast.net with comcast id PlGq1f0051Y3wxoAAlHUnb; Wed, 27 Oct 2010 09:17:28 +0000 Received: from koitsu.dyndns.org ([98.248.41.155]) by omta15.emeryville.ca.mail.comcast.net with comcast id PlHT1f0023LrwQ28blHTWd; Wed, 27 Oct 2010 09:17:28 +0000 Received: by icarus.home.lan (Postfix, from userid 1000) id 673829B425; Wed, 27 Oct 2010 02:17:27 -0700 (PDT) Date: Wed, 27 Oct 2010 02:17:27 -0700 From: Jeremy Chadwick To: Pawel Jakub Dawidek Message-ID: <20101027091727.GA44893@icarus.home.lan> References: <20101027074401.GA18014@icarus.home.lan> <20101027080817.GC1848@garage.freebsd.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20101027080817.GC1848@garage.freebsd.pl> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: freebsd-stable@freebsd.org, freebsd-arch@freebsd.org Subject: Re: Can't build boot blocks after new GPT attributes added X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Oct 2010 09:30:39 -0000 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@parodius.com | | Parodius Networking http://www.parodius.com/ | | UNIX Systems Administrator Mountain View, CA, USA | | Making life hard for others since 1977. PGP: 4BD6C0CB |