# GENERIC kernel compilation fails



## Leander (Jan 25, 2013)

Hi,

no matter what I try, GENERIC kernel compilation fails - even if NO parameters where changed in the GENERIC kernel configuration file.

I'm using CVSup - as described in the FreeBSD Handbook - to get Ports and sources:

/etc/cvsup/ports-supfile

```
*default tag=.
*default host=cvsup.de.FreeBSD.org
*default prefix=/usr
*default base=/var/db
*default release=cvs
*default delete use-rel-suffix
*default compress

#src-base release=cvs
#src-sys release=cvs
src-all

ports-all
```


```
csup -z -L 0 /etc/cvsup/ports-supfile
cd /usr/ports && make fetchindex
```


After it synced everything I move on in order to compile a new kernel:

```
cd /usr/src
make buildkernel KERNCONF=GENERIC
```

... it starts but then it fails on:

```
--------------------------------------------------------------
>>> stage 2.3: build tools
--------------------------------------------------------------
cd /usr/obj/usr/src/sys/GENERIC;  PATH=/usr/obj/usr/src/tmp/legacy/usr/sbin:/usr/obj/usr/src/tmp/legacy/usr/bin:/usr/obj/usr/src/tmp/legacy/usr/games:/sbin:/bin:/usr/sbin:/usr/bin  MAKESRCPATH=/usr/src/sys/dev/aic7xxx/aicasm  make SSP_CFLAGS= -DNO_CPU_CFLAGS -DNO_CTF -DEARLY_BUILD  -f /usr/src/sys/dev/aic7xxx/aicasm/Makefile
Warning: Object directory not changed from original /usr/obj/usr/src/sys/GENERIC
yacc -b aicasm_gram  -d -o aicasm_gram.c /usr/src/sys/dev/aic7xxx/aicasm/aicasm_gram.y
yacc -b aicasm_macro_gram -p mm -d -o aicasm_macro_gram.c /usr/src/sys/dev/aic7xxx/aicasm/aicasm_macro_gram.y
cc -O2 -pipe -I. -I/usr/src/sys/dev/aic7xxx/aicasm -std=gnu99  -Wsystem-headers -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch -Wshadow -Wunused-parameter -Wcast-align -Wno-pointer-sign -c /usr/src/sys/dev/aic7xxx/aicasm/aicasm.c
cc -O2 -pipe -I. -I/usr/src/sys/dev/aic7xxx/aicasm -std=gnu99  -Wsystem-headers -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch -Wshadow -Wunused-parameter -Wcast-align -Wno-pointer-sign -c /usr/src/sys/dev/aic7xxx/aicasm/aicasm_symbol.c
cc -O2 -pipe -I. -I/usr/src/sys/dev/aic7xxx/aicasm -std=gnu99  -Wsystem-headers -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch -Wshadow -Wunused-parameter -Wcast-align -Wno-pointer-sign -c aicasm_gram.c
cc1: warnings being treated as errors
aicasm_gram.c:1539: warning: no previous prototype for 'yyparse'
*** Error code 1

Stop in /usr/obj/usr/src/sys/GENERIC.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
```


I don't know what I'm missing. Kernel config values are left in default state.
Maybe a compiler compatibility issue?
Maybe something is missed since I use CVSup which became deprecated?


Any ideas?
Thx


----------



## kpa (Jan 25, 2013)

You got sources for 10-CURRENT because you used *default tag=. in your supfile, was this intended?

If it was intended and you're compling this on anything else but 10-CURRENT you must do make buildworld first (make kernel-toolchain first is also sufficient but you're going to build world anyway).


----------



## Leander (Jan 25, 2013)

> You got sources for 10-CURRENT because you used *default tag=. in your supfile, was this intended?


No, not realy - I only want to get the latest ports but sources I want to get the ones of the system currently running.


```
uname -a
FreeBSD Storage-05.Local 9.0-RELEASE FreeBSD 9.0-RELEASE #0: Tue Jan  3 07:46:30 UTC 2012     root@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64
```

so according to FreeBSD Handbook, /etc/cvsup/ports-supfile schould look like:

```
*default tag=RELENG_9_0
```
But will it still download the very latest ports?


Since I'm using a script to install / setup FreeBSD machines, I would like to know whether there is an automatic way of detecting which "RELENG_[n]" to use? ... something like "uname -m" if I want to get current platform ... ?


Thanks


----------



## SirDice (Jan 25, 2013)

Leander said:
			
		

> No, not realy - I only want to get the latest ports but sources I want to get the ones of the system currently running.


Use portsnap(8) for ports.

5.6 Using the Ports Collection

For the source you indeed have to use the RELENG_9_0 tag. But it's better to switch to devel/subversion. CVS access will be removed some time soon.


----------



## wblock@ (Jan 25, 2013)

Combining both ports and source in a single supfile has never worked well.  The two have different goals.

CVSup for ports has a month left to live, so it's time to switch.


----------



## SirDice (Jan 25, 2013)

wblock@ said:
			
		

> Combining both ports and source in a single supfile has never worked well.  The two have different goals.


It's possible though, but you have to do something like this:

```
*default tag=RELENG_9_0
*default host=cvsup.de.FreeBSD.org
*default prefix=/usr
*default base=/var/db
*default release=cvs
*default delete use-rel-suffix
*default compress

src-all

ports-all tag=.
```

But it's better to separate them. The releases don't get a lot of updates, while the ports do. It's rather pointless updating your source tree if there are no updates.




> CVSup for ports has a month left to live, so it's time to switch.


I agree.


----------



## Leander (Jan 25, 2013)

Cool - thx for all the info a tips - realy useful!
I changed to portsnap now. It's new to me that this is already in the base system of FreeBSD. Back in the days portsnap required a separate install which kind of sucked - but this seems solved now.

For the sources I use devel/subversion as recommended after ports have been synced.

Thanks again


----------

