Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Nov 2011 17:32:09 -0800
From:      Jeremy Chadwick <freebsd@jdc.parodius.com>
To:        Glen Barber <gjb@FreeBSD.org>
Cc:        freebsd-stable@freebsd.org, Chuck Tuffli <ctuffli@gmail.com>
Subject:   Re: Possible to build 9-stable kernel on 8.2?
Message-ID:  <20111116013209.GA8414@icarus.home.lan>
In-Reply-To: <20111116002944.GC24626@glenbarber.us>
References:  <CAKAYmMLoc5GmwjHMMkfhF06CWWoP1HNMb%2BRmL9Q9ij5xCSmxag@mail.gmail.com> <20111116002944.GC24626@glenbarber.us>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Nov 15, 2011 at 07:29:44PM -0500, Glen Barber wrote:
> Hi,
> 
> On Tue, Nov 15, 2011 at 11:45:02AM -0800, Chuck Tuffli wrote:
> > Is it possible to do a buildkernel of 9-stable (r227536) on a stock
> > 8.2 system? Most of it seems to work, but the linker fails towards the
> > end with
> > 
> > ...
> > MAKE=make sh /usr/home/ctuffli/dev/releng_9/src/sys/conf/newvers.sh GENERIC
> > /usr/local/bin/svnversion
> > cc -c -O2 -frename-registers -pipe -fno-strict-aliasing  -std=c99 -g
> > -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes
> > -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  -Wundef
> > -Wno-pointer-sign -fformat-extensions  -Wmissing-include-dirs
> > -fdiagnostics-show-option -nostdinc  -I.
> > -I/usr/home/ctuffli/dev/releng_9/src/sys
> > -I/usr/home/ctuffli/dev/releng_9/src/sys/contrib/altq -D_KERNEL
> > -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -fno-common
> > -finline-limit=8000 --param inline-unit-growth=100 --param
> > large-function-growth=1000  -fno-omit-frame-pointer -mno-sse
> > -mcmodel=kernel -mno-red-zone -mno-mmx -msoft-float
> > -fno-asynchronous-unwind-tables -ffreestanding -fstack-protector
> > -Werror  vers.c
> > linking kernel.debug
> > ld:/usr/home/ctuffli/dev/releng_9/src/sys/conf/ldscript.amd64:9: syntax error
> > *** Error code 1
> > 
> > Stop in /usr/home/ctuffli/dev/releng_9/obj/usr/home/ctuffli/dev/releng_9/src/sys/GENERIC.
> > *** Error code 1
> > 
> > Stop in /usr/home/ctuffli/dev/releng_9/src.
> > *** Error code 1
> > 
> > Stop in /usr/home/ctuffli/dev/releng_9/src.
> 
> You'll need to do 'buildworld' first.

Not to mention, one should always do buildworld first.  The absolute
correct procedure is outlined in /usr/src/Makefile:

#  1.  `cd /usr/src'       (or to the directory containing your source tree).
#  2.  `make buildworld'
#  3.  `make buildkernel KERNCONF=YOUR_KERNEL_HERE'     (default is GENERIC).
#  4.  `make installkernel KERNCONF=YOUR_KERNEL_HERE'   (default is GENERIC).
#       [steps 3. & 4. can be combined by using the "kernel" target]
#  5.  `reboot'        (in single user mode: boot -s from the loader prompt).
#  6.  `mergemaster -p'
#  7.  `make installworld'
#  8.  `make delete-old'
#  9.  `mergemaster'            (you may wish to use -i, along with -U or -F).
# 10.  `reboot'
# 11.  `make delete-old-libs' (in case no 3rd party program uses them anymore)

People (not you Glen :-) ) need to realise that doing buildworld
actually builds the necessary "build toolchain" used for the buildkernel
portion (the results are in /usr/obj).  Failure to do that results in
the buildkernel bits using the already-installed-on-the-system
compiler/build toolchain (e.g. the stuff in /usr), which may not be
compatible with the version of the kernel source you're trying to build.
Hope this makes sense to readers.

Two "extra steps" which I do:

- Before step 1, I do rm -fr /usr/obj/*
- Before step 7, I do rm -fr /usr/share/man/*

Step 1 is a precaution, and step 7 ensures that no old/leftover
compressed man pages (from old versions of software) are retained.
If needed/asked, Doug Barton can talk a bit more about the latter.

-- 
| Jeremy Chadwick                                jdc at parodius.com |
| Parodius Networking                       http://www.parodius.com/ |
| UNIX Systems Administrator                   Mountain View, CA, US |
| Making life hard for others since 1977.               PGP 4BD6C0CB |




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