# Unable to build generic kernel. All methods generate errors.



## rwatt (May 8, 2020)

Hello,

Still learning the ins and outs of FreeBSD, so please keep that in mind.  I'm happy to read whatever manual that might help with this, but my searches have not turned up anything that is helpful.

I have a server at home running FreeBSD 12.1-RELEASE-p3 GENERIC amd64. It is mainly just ZFS storage at the moment.

I wanted to use an external USB LG Blu-ray player (model BE14NU40). I was interested in using multimedia/makemkv. Based on the port requirements, in order to have it recognized by FreeBSD I need to build a custom kernel with the 
	
	



```
device sg
```
 in a custom kernel:



> A custom FreeBSD kernel with sg devices (Linux' "scsi generic" interface) is  required to use makemkvcon. To build such a kernel, add "device sg" to your  kernel configuration



I followed the steps laid out at https://www.freebsd.org/doc/handbook/kernelconfig-building.html. I created a duplicate kernel file and edited that to add device sg at the end.


```
cd /usr/src/sys/amd64/conf
cp GENERIC MYKERNEL
cd /usr/src
make buildkernel KERNCONF=MYKERNEL
```

When I attempt to build the kernel it fails with the following error:


```
cc -target x86_64-unknown-freebsd12.1 --sysroot=/usr/obj/usr/src/amd64.amd64/tmp -B/usr/obj/usr/src/amd64.amd64/tmp/usr/bin -c -O3 -pipe -fno-strict-aliasing -Werror -D_KERNEL -DKLD_MODULE -DKLD_TIED -DHAVE_KERNEL_OPTION_HEADERS -include /usr/obj/usr/src/amd64.amd64/sys/MYKERNEL/opt_global.h -I. -I/usr/src/sys -I/usr/src/sys/contrib/ck/include -fno-common -g -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -fdebug-prefix-map=./machine=/usr/src/sys/amd64/include -fdebug-prefix-map=./x86=/usr/src/sys/x86/include -I/usr/obj/usr/src/amd64.amd64/sys/MYKERNEL -mcmodel=kernel -mno-red-zone -mno-mmx -mno-sse -msoft-float -fno-asynchronous-unwind-tables -ffreestanding -fwrapv -fstack-protector -gdwarf-2 -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wcast-qual -Wundef -Wno-pointer-sign -D__printf__=__freebsd_kprintf__ -Wmissing-include-dirs -fdiagnostics-show-option -Wno-unknown-pragmas -Wno-error-tautological-compare -Wno-error-empty-body -Wno-error-parentheses-equality -Wno-error-unused-function -Wno-error-pointer-sign -Wno-error-shift-negative-value -Wno-address-of-packed-member -mno-aes -mno-avx -std=iso9899:1999 -Werror   -mmmx -msse -msse4 -maes -mpclmul /usr/src/sys/crypto/aesni/aesni_ccm.c
ctfconvert -L VERSION -g aesni_ccm.o
make[4]: don't know how to make immintrin.h. Stop

make[4]: stopped in /usr/src/sys/modules/aesni
*** Error code 2

Stop.
make[3]: stopped in /usr/src/sys/modules
*** Error code 1

Stop.
make[2]: stopped in /usr/obj/usr/src/amd64.amd64/sys/MYKERNEL
*** Error code 1

Stop.
make[1]: stopped in /usr/src
*** Error code 1

Stop.
make: stopped in /usr/src
```

I removed the `device sg` addition from the kernel file just to make sure that it wasn't that. And I get the same error.

My source is up-to-date:


```
root@daedalus:/usr/src # svn info /usr/src
Path: .
Working Copy Root Path: /usr/src
URL: https://svn.freebsd.org/base/releng/12.1
Relative URL: ^/releng/12.1
Repository Root: https://svn.freebsd.org/base
Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Revision: 360360
Node Kind: directory
Schedule: normal
Last Changed Author: gordon
Last Changed Rev: 360151
Last Changed Date: 2020-04-21 10:54:08 -0500 (Tue, 21 Apr 2020)
```

Here's the output of `head -15 /usr/src/Makefile`:


```
root@daedalus:/usr/src # head -15 /usr/src/Makefile
#
# $FreeBSD: releng/12.1/Makefile 348458 2019-05-31 15:05:54Z markj $
#
# The user-driven targets are:
#
# universe            - *Really* build *everything* (buildworld and
#                       all kernels on all architectures).  Define the
#                       MAKE_JUST_KERNELS variable to only build kernels.
# tinderbox           - Same as universe, but presents a list of failed build
#                       targets and exits with an error if there were any.
# buildworld          - Rebuild *everything*, including glue to help do
#                       upgrades.
# installworld        - Install everything built by "buildworld".
# world               - buildworld + installworld, no kernel.
# buildkernel         - Rebuild the kernel and the kernel-modules.
```

Even running `make clean` under /usr/src generates an error:


```
===> lib/libc (clean)
===> lib/libc/tests (clean)
===> lib/libc/tests/tls_dso (clean)
make[5]: "/usr/src/share/mk/netbsd-tests.test.mk" line 9: "Please define TESTSRC to the absolute path of the test sources, e.g. ${SRCTOP}/contrib/netbsd-tests/lib/libc/stdio"
*** Error code 1

Stop.
make[4]: stopped in /usr/src/lib/libc/tests
*** Error code 1

Stop.
make[3]: stopped in /usr/src/lib/libc
*** Error code 1

Stop.
make[2]: stopped in /usr/src/lib
*** Error code 1

Stop.
make[1]: stopped in /usr/src
*** Error code 1

Stop.
make: stopped in /usr/src
```

Here's the error when running `make buildworld` in /usr/src:


```
sh /usr/src/tools/install.sh  -C -o root -g wheel -m 444   libnv.a /usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/lib/
===> usr.bin/lex/lib (obj,includes,all,install)
[Creating objdir /usr/obj/usr/src/amd64.amd64/tmp/obj-tools/usr.bin/lex/lib...]
make[3]: don't know how to make libmain.c. Stop

make[3]: stopped in /usr/src/usr.bin/lex/lib
*** Error code 2

Stop.
make[2]: stopped in /usr/src
*** Error code 1

Stop.
make[1]: stopped in /usr/src
*** Error code 1

Stop.
make: stopped in /usr/src
```

I am at a complete loss because I'm not changing anything. At this point, I am just trying to build the kernel unchanged. And as I research where to look, I feel like I am running in to dead ends. If you can offer any guidance, that would be great. Thank you.


----------



## T-Daemon (May 9, 2020)

I ran a `make buildkernel` , no problem here.

```
--------------------------------------------------------------               
>>> Kernel build for GENERIC completed on Sat May  9 11:26:28 +02 2020       
--------------------------------------------------------------
```

`svnlite info /usr/src`

```
Path: /usr/src
Working Copy Root Path: /usr/src
URL: https://svn.freebsd.org/base/releng/12.1
Relative URL: ^/releng/12.1
Repository Root: https://svn.freebsd.org/base
Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Revision: 360837
Node Kind: directory
Schedule: normal
Last Changed Author: emaste
Last Changed Rev: 360473
Last Changed Date: 2020-04-29 21:51:34 +0300 (Wed, 29 Apr 2020)
```

You could try a update of the src tree, clean up /usr/obj, try again, or get a fresh copy, rename the old one ( or delete ).

I’ve noticed you are using `svn` from devel/subversion, FYI the base system comes with svnlite(1).



rwatt said:


> I have a server at home running FreeBSD 12.1-RELEASE-p3 GENERIC amd64


12.1 is at patch level -p4, you might want to update.


----------



## zirias@ (May 9, 2020)

From your outputs I see `make` is attempting to "build" files that are part of the source, so this looks *very* broken.
I would suggest to retry from scratch: completely remove /usr/obj and /usr/src and check out a new copy of the source to /usr/src. In a first step, you can try whether just removing all contents of /usr/obj already solves the problem.

Just to be sure, you might want to check whether `which make` is /usr/bin/make, `which cc` is /usr/bin/cc and so on.

About multimedia/makemkv, unfortunately this is out of date. I guess I'll have to solve a strange compilation issue on i386 before the update can be applied. But it works well on 12.1/amd64, you can find it in this PR: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=245665



T-Daemon said:


> 12.1 is at patch level -p4, you might want to update.


The quoted output looks like `uname`, and as -p4 didn't introduce any kernel changes, this might be just fine. Always check your version with freebsd-version(1) 



rwatt said:


> I followed the steps laid out at https://www.freebsd.org/doc/handbook/kernelconfig-building.html. I created a duplicate kernel file and edited that to add device sg at the end.



I would recommend to include GENERIC instead, this is more flexible. E.g., for using makemkv, I have a kernel config DESKTOP with these contents:

```
include GENERIC
ident DESKTOP

device        sg
```

That way there's nothing to change when GENERIC changes.


----------



## rwatt (May 9, 2020)

Thank you both for the help. But I'm still getting errors. I have tried the suggestions you mentioned above. I'd welcome more comments. Here's the updated info and output.


```
root@daedalus:~ # which make
/usr/bin/make
root@daedalus:~ # which cc
/usr/bin/cc
root@daedalus:~ # freebsd-version
12.1-RELEASE-p4
```

I decided to remove everything in /usr/obj first and re-ran make, but I still got an error. So I went forward with wiping out /usr/src like you suggested.


```
root@daedalus:/usr/obj # chflags -R noschg *
root@daedalus:/usr/obj # rm -rf *
root@daedalus:/usr/obj # ll
total 0
root@daedalus:/usr/obj # cd /usr/src
root@daedalus:/usr/src # rm -rf *
root@daedalus:/usr/src # ll
total 27
-rw-r--r--  1 root  wheel   85 Mar 27 17:00 .arcconfig
-rw-r--r--  1 root  wheel  448 Mar 27 17:00 .arclint
-rw-r--r--  1 root  wheel  152 Mar 27 17:00 .gitattributes
-rw-r--r--  1 root  wheel  188 Mar 27 17:00 .gitignore
drwxr-xr-x  4 root  wheel    8 Mar 27 16:56 .svn/
root@daedalus:/usr/src # svnlite update /usr/src
Updating '.':
Restored 'Makefile.inc1'
Restored 'ObsoleteFiles.inc'
Restored 'targets'
Restored 'targets/Makefile'
Restored 'targets/Makefile.xtras'
Restored 'targets/pseudo'

<snipped the rest of the restored>

Restored 'rescue/librescue/Makefile.depend'
Restored 'rescue/librescue/Makefile'
Restored 'Makefile.libcompat'
At revision 360849.
```


```
root@daedalus:/usr/src # svnlite info /usr/src
Path: .
Working Copy Root Path: /usr/src
URL: https://svn.freebsd.org/base/releng/12.1
Relative URL: ^/releng/12.1
Repository Root: https://svn.freebsd.org/base
Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Revision: 360849
Node Kind: directory
Schedule: normal
Last Changed Author: emaste
Last Changed Rev: 360473
Last Changed Date: 2020-04-29 13:51:34 -0500 (Wed, 29 Apr 2020)
```

I try to build again and still get an error:


```
root@daedalus:/usr/src # make -j4 buildworld
[Creating objdir /usr/obj/usr/src/amd64.amd64...]
--- buildworld ---
make[1]: "/usr/src/Makefile.inc1" line 341: SYSTEM_COMPILER: Determined that CC=cc matches the source tree.  Not bootstrapping a cross-compiler.
make[1]: "/usr/src/Makefile.inc1" line 346: SYSTEM_LINKER: Determined that LD=ld matches the source tree.  Not bootstrapping a cross-linker.
--- buildworld_prologue ---
--------------------------------------------------------------
>>> World build started on Sat May  9 11:24:28 CDT 2020
--------------------------------------------------------------
--- _worldtmp ---

--------------------------------------------------------------
>>> Rebuilding the temporary build tree
--------------------------------------------------------------
rm -rf /usr/obj/usr/src/amd64.amd64/tmp
cd /usr/src/tools/build;  make DIRPRFX=tools/build/ DESTDIR=/usr/obj/usr/src/amd64.amd64/tmp/legacy installdirs
[Creating objdir /usr/obj/usr/src/amd64.amd64/tools/build...]
--- installdirs ---
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/bin"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/sbin"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/bin"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/sbin"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/lib"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/include"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/lib/geom"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/lib/casper"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy//usr/include/sys"
--- _legacy ---

--------------------------------------------------------------
>>> stage 1.1: legacy release compatibility shims
--------------------------------------------------------------
cd /usr/src; INSTALL="sh /usr/src/tools/install.sh"  TOOLS_PREFIX=/usr/obj/usr/src/amd64.amd64/tmp  PATH=/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/sbin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/bin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/bin:/sbin:/bin:/usr/sbin:/usr/bin  WORLDTMP=/usr/obj/usr/src/amd64.amd64/tmp  MAKEFLAGS="-m /usr/src/tools/build/mk  -j 4 -J 15,16 -m /usr/src/share/mk" make  -f Makefile.inc1  DESTDIR=  OBJTOP='/usr/obj/usr/src/amd64.amd64/tmp/obj-tools'  OBJROOT='${OBJTOP}/'  MAKEOBJDIRPREFIX=  BOOTSTRAPPING=1201000  BWPHASE=legacy  SSP_CFLAGS=  MK_HTML=no NO_LINT=yes MK_MAN=no  -DNO_PIC MK_PROFILE=no -DNO_SHARED  -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no  MK_CLANG_EXTRAS=no MK_CLANG_FULL=no  MK_LLDB=no MK_RETPOLINE=no MK_TESTS=no  MK_INCLUDES=yes MK_LLVM_TARGET_ALL=no legacy
[Creating objdir /usr/obj/usr/src/amd64.amd64/tmp/obj-tools...]
--- legacy ---
===> tools/build (obj,includes,all,install)
[Creating objdir /usr/obj/usr/src/amd64.amd64/tmp/obj-tools/tools/build...]
--- _SYSINCSINS ---
sh /usr/src/tools/install.sh  -C -o root -g wheel -m 444  /usr/src/sys/sys/nv.h /usr/src/sys/sys/cnv.h /usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/include/sys/
--- dummy.o ---
cc  -O2 -pipe  -g -MD  -MF.depend.dummy.o -MTdummy.o -std=gnu99  -Qunused-arguments  -I/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/include -c /usr/src/tools/build/dummy.c -o dummy.o
--- libegacy.a ---
building static egacy library
ar -crD libegacy.a `NM='nm' NMFLAGS=''  lorder dummy.o  | tsort -q`
ranlib -D libegacy.a
--- _libinstall ---
--- installdirs ---
--- _libinstall ---
sh /usr/src/tools/install.sh  -C -o root -g wheel -m 444   libegacy.a /usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/lib/
--- installdirs ---
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/bin"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/sbin"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/bin"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/sbin"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/lib"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/include"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/lib/geom"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/lib/casper"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy//usr/include/sys"
===> lib/libnv (obj,includes,all,install)
[Creating objdir /usr/obj/usr/src/amd64.amd64/tmp/obj-tools/lib/libnv...]
--- cnvlist.o ---
--- dnvlist.o ---
--- msgio.o ---
--- nvlist.o ---
--- cnvlist.o ---
cc  -O2 -pipe  -I/usr/src/lib/libnv -g -MD  -MF.depend.cnvlist.o -MTcnvlist.o -std=gnu99  -Qunused-arguments  -I/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/include -c /usr/src/sys/contrib/libnv/cnvlist.c -o cnvlist.o
--- dnvlist.o ---
cc  -O2 -pipe  -I/usr/src/lib/libnv -g -MD  -MF.depend.dnvlist.o -MTdnvlist.o -std=gnu99  -Qunused-arguments  -I/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/include -c /usr/src/sys/contrib/libnv/dnvlist.c -o dnvlist.o
--- msgio.o ---
cc  -O2 -pipe  -I/usr/src/lib/libnv -g -MD  -MF.depend.msgio.o -MTmsgio.o -std=gnu99  -Qunused-arguments  -I/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/include -c /usr/src/lib/libnv/msgio.c -o msgio.o
--- nvlist.o ---
cc  -O2 -pipe  -I/usr/src/lib/libnv -g -MD  -MF.depend.nvlist.o -MTnvlist.o -std=gnu99  -Qunused-arguments  -I/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/include -c /usr/src/sys/contrib/libnv/nvlist.c -o nvlist.o
--- nvpair.o ---
cc  -O2 -pipe  -I/usr/src/lib/libnv -g -MD  -MF.depend.nvpair.o -MTnvpair.o -std=gnu99  -Qunused-arguments  -I/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/include -c /usr/src/sys/contrib/libnv/nvpair.c -o nvpair.o
--- libnv.a ---
building static nv library
ar -crD libnv.a `NM='nm' NMFLAGS=''  lorder cnvlist.o dnvlist.o msgio.o nvlist.o nvpair.o  | tsort -q`
ranlib -D libnv.a
--- _libinstall ---
sh /usr/src/tools/install.sh  -C -o root -g wheel -m 444   libnv.a /usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/lib/
===> usr.bin/lex/lib (obj,includes,all,install)
[Creating objdir /usr/obj/usr/src/amd64.amd64/tmp/obj-tools/usr.bin/lex/lib...]
make[3]: make[3]: don't know how to make libmain.c. Stop

make[3]: stopped in /usr/src/usr.bin/lex/lib
*** [legacy] Error code 2

make[2]: stopped in /usr/src
1 error

make[2]: stopped in /usr/src
*** [_legacy] Error code 2

make[1]: stopped in /usr/src
1 error

make[1]: stopped in /usr/src
*** [buildworld] Error code 2

make: stopped in /usr/src
1 error

make: stopped in /usr/src
```

Thank you again for all the help.


----------



## Crivens (May 9, 2020)

Get rid of the -j and try again.


----------



## rwatt (May 9, 2020)

Removing `-j` gives me the same error:


```
root@daedalus:~ # cd /usr/src
root@daedalus:/usr/src # make buildworld
make[1]: "/usr/src/Makefile.inc1" line 341: SYSTEM_COMPILER: Determined that CC=cc matches the source tree.  Not bootstrapping a cross-compiler.
make[1]: "/usr/src/Makefile.inc1" line 346: SYSTEM_LINKER: Determined that LD=ld matches the source tree.  Not bootstrapping a cross-linker.
--------------------------------------------------------------
>>> World build started on Sat May  9 12:23:54 CDT 2020
--------------------------------------------------------------

--------------------------------------------------------------
>>> Rebuilding the temporary build tree
--------------------------------------------------------------
rm -rf /usr/obj/usr/src/amd64.amd64/tmp
cd /usr/src/tools/build;  make DIRPRFX=tools/build/ DESTDIR=/usr/obj/usr/src/amd64.amd64/tmp/legacy installdirs
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/bin"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/sbin"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/bin"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/sbin"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/lib"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/include"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/lib/geom"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/lib/casper"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy//usr/include/sys"

--------------------------------------------------------------
>>> stage 1.1: legacy release compatibility shims
--------------------------------------------------------------
cd /usr/src; INSTALL="sh /usr/src/tools/install.sh"  TOOLS_PREFIX=/usr/obj/usr/src/amd64.amd64/tmp  PATH=/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/sbin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/bin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/bin:/sbin:/bin:/usr/sbin:/usr/bin  WORLDTMP=/usr/obj/usr/src/amd64.amd64/tmp  MAKEFLAGS="-m /usr/src/tools/build/mk  -m /usr/src/share/mk" make  -f Makefile.inc1  DESTDIR=  OBJTOP='/usr/obj/usr/src/amd64.amd64/tmp/obj-tools'  OBJROOT='${OBJTOP}/'  MAKEOBJDIRPREFIX=  BOOTSTRAPPING=1201000  BWPHASE=legacy  SSP_CFLAGS=  MK_HTML=no NO_LINT=yes MK_MAN=no  -DNO_PIC MK_PROFILE=no -DNO_SHARED  -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no  MK_CLANG_EXTRAS=no MK_CLANG_FULL=no  MK_LLDB=no MK_RETPOLINE=no MK_TESTS=no  MK_INCLUDES=yes MK_LLVM_TARGET_ALL=no legacy
[Creating objdir /usr/obj/usr/src/amd64.amd64/tmp/obj-tools...]
===> tools/build (obj,includes,all,install)
[Creating objdir /usr/obj/usr/src/amd64.amd64/tmp/obj-tools/tools/build...]
sh /usr/src/tools/install.sh  -C -o root -g wheel -m 444  /usr/src/sys/sys/nv.h /usr/src/sys/sys/cnv.h /usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/include/sys/
cc  -O2 -pipe  -g -MD  -MF.depend.dummy.o -MTdummy.o -std=gnu99  -Qunused-arguments  -I/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/include -c /usr/src/tools/build/dummy.c -o dummy.o
building static egacy library
ar -crD libegacy.a `NM='nm' NMFLAGS=''  lorder dummy.o  | tsort -q`
ranlib -D libegacy.a
sh /usr/src/tools/install.sh  -C -o root -g wheel -m 444   libegacy.a /usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/lib/
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/bin"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/sbin"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/bin"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/sbin"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/lib"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/include"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/lib/geom"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy/lib/casper"
mkdir -p "/usr/obj/usr/src/amd64.amd64/tmp/legacy//usr/include/sys"
===> lib/libnv (obj,includes,all,install)
[Creating objdir /usr/obj/usr/src/amd64.amd64/tmp/obj-tools/lib/libnv...]
cc  -O2 -pipe  -I/usr/src/lib/libnv -g -MD  -MF.depend.cnvlist.o -MTcnvlist.o -std=gnu99  -Qunused-arguments  -I/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/include -c /usr/src/sys/contrib/libnv/cnvlist.c -o cnvlist.o
cc  -O2 -pipe  -I/usr/src/lib/libnv -g -MD  -MF.depend.dnvlist.o -MTdnvlist.o -std=gnu99  -Qunused-arguments  -I/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/include -c /usr/src/sys/contrib/libnv/dnvlist.c -o dnvlist.o
cc  -O2 -pipe  -I/usr/src/lib/libnv -g -MD  -MF.depend.msgio.o -MTmsgio.o -std=gnu99  -Qunused-arguments  -I/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/include -c /usr/src/lib/libnv/msgio.c -o msgio.o
cc  -O2 -pipe  -I/usr/src/lib/libnv -g -MD  -MF.depend.nvlist.o -MTnvlist.o -std=gnu99  -Qunused-arguments  -I/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/include -c /usr/src/sys/contrib/libnv/nvlist.c -o nvlist.o
cc  -O2 -pipe  -I/usr/src/lib/libnv -g -MD  -MF.depend.nvpair.o -MTnvpair.o -std=gnu99  -Qunused-arguments  -I/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/include -c /usr/src/sys/contrib/libnv/nvpair.c -o nvpair.o
building static nv library
ar -crD libnv.a `NM='nm' NMFLAGS=''  lorder cnvlist.o dnvlist.o msgio.o nvlist.o nvpair.o  | tsort -q`
ranlib -D libnv.a
sh /usr/src/tools/install.sh  -C -o root -g wheel -m 444   libnv.a /usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/lib/
===> usr.bin/lex/lib (obj,includes,all,install)
[Creating objdir /usr/obj/usr/src/amd64.amd64/tmp/obj-tools/usr.bin/lex/lib...]
make[3]: don't know how to make libmain.c. Stop

make[3]: stopped in /usr/src/usr.bin/lex/lib
*** Error code 2

Stop.
make[2]: stopped in /usr/src
*** Error code 1

Stop.
make[1]: stopped in /usr/src
*** Error code 1

Stop.
make: stopped in /usr/src
```


----------



## zirias@ (May 9, 2020)

rwatt said:


> So I went forward with wiping out /usr/src like you suggested.


From the code following this, I see you didn't delete everything. Namely, .svn is still there, and I assume any restore happens from there. Please try to really delete the _complete_ contents of /usr/src (including hidden files). I can't give any guarantees, but the nature of the errors you get seems to suggest a broken working copy with missing files, so I _think_ the best solution is a complete new svn checkout.


----------



## PMc (May 9, 2020)

Any strange things in /etc/make.conf /etc/src.conf ?
Any strange customizations in the environment?
Any disk have run full?

Then, lets have a look (this is a 11.3, so probably not everything sharp at the mark, but nevertheless):

```
$ cd /usr/src/usr.bin/lex/lib/
$ make -n
echo "Warning: Object directory not changed from original /usr/src/usr.bin/lex/lib"
cc  -O2 -pipe -march=pentium3  -MD  -MF.depend.libmain.o -MTlibmain.o -std=gnu99 -fstack-protector-strong    -Qunused-arguments  -c /usr/src/contrib/flex/libmain.c -o libmain.o
```

First thing it wants to do here is compile the /usr/src/contrib/flex/libmain.c - and in your case it seems to not find it. So, where is the damned thing?

Otherwise I agree: clean out the whole src and recreate from upstream.


----------



## eldaemon (May 9, 2020)

Did you replace /usr/bin/make with gmake, perhaps?

Very weird.


----------



## zirias@ (May 9, 2020)

Two more hints for later:

There's no need to build "world" when all you need is a custom kernel.
Removing `-j[x]` is often worth a shot when a build misbehaves, this happens when Makefiles miss some dependencies. I've personally never seen FreeBSD's builds choke on it, though. For a fast build, you want to give the number of available cores/threads on your system here, possibly more then 4 on a modern CPU.


----------



## zirias@ (May 11, 2020)

I hope you solved your problem now? Just wanted to add that today, the current version of makemkv hit the ports


----------



## cederom (Jan 19, 2021)

I have exactly the same problem after upgrading 12.1 -> 12.2 RELEASE. I need to fix a driver on my working machine with a generated release memstick to verify. I took /usr/src from new git repository. /usr/obj is clean. Now I build without -j but man that is slow :-(

Update1: Without -j there are some build errors!


```
cc -target x86_64-unknown-freebsd12.2 --sysroot=/usr/obj/usr/src/amd64.amd64/tmp -B/usr/obj/usr/src/amd64.amd64/tmp/usr/bin  -O2 -pipe -fno-common -I/usr/src/cddl/contrib/opensolaris/lib/libzpool/common -I/usr/src/cddl/comp[10/1254]
laris/include -I/usr/src/cddl/compat/opensolaris/lib/libumem -I/usr/src/sys/cddl/compat/opensolaris -I/usr/src/cddl/contrib/opensolaris/head -I/usr/src/cddl/contrib/opensolaris/lib/libuutil/common -I/usr/src/cddl/contrib/opensolaris
/lib/libzfs/common -I/usr/src/cddl/contrib/opensolaris/lib/libzfs_core/common -I/usr/src/cddl/contrib/opensolaris/lib/libumem/common -I/usr/src/cddl/contrib/opensolaris/lib/libnvpair -I/usr/src/sys/cddl/contrib/opensolaris/uts/commo
n -I/usr/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs -I/usr/src/sys/cddl/contrib/opensolaris/common/zfs   -DNEED_SOLARIS_BOOLEAN -g -O0 -MD  -MF.depend.zfs_iter.o -MTzfs_iter.o -std=gnu99 -fstack-protector-strong -Wno-pointer
-sign -Wno-unknown-pragmas -Wno-empty-body -Wno-string-plus-int -Wno-unused-const-variable -Wno-tautological-compare -Wno-unused-value -Wno-parentheses-equality -Wno-unused-function -Wno-enum-conversion -Wno-unused-local-typedef -Wn
o-address-of-packed-member -Wno-switch -Wno-switch-enum -Wno-knr-promoted-parameter -Wno-parentheses  -Qunused-arguments  -c /usr/src/cddl/contrib/opensolaris/cmd/zfs/zfs_iter.c -o zfs_iter.o
cc -target x86_64-unknown-freebsd12.2 --sysroot=/usr/obj/usr/src/amd64.amd64/tmp -B/usr/obj/usr/src/amd64.amd64/tmp/usr/bin -O2 -pipe -fno-common -I/usr/src/cddl/contrib/opensolaris/lib/libzpool/common -I/usr/src/cddl/compat/opensol
aris/include -I/usr/src/cddl/compat/opensolaris/lib/libumem -I/usr/src/sys/cddl/compat/opensolaris -I/usr/src/cddl/contrib/opensolaris/head -I/usr/src/cddl/contrib/opensolaris/lib/libuutil/common -I/usr/src/cddl/contrib/opensolaris/
lib/libzfs/common -I/usr/src/cddl/contrib/opensolaris/lib/libzfs_core/common -I/usr/src/cddl/contrib/opensolaris/lib/libumem/common -I/usr/src/cddl/contrib/opensolaris/lib/libnvpair -I/usr/src/sys/cddl/contrib/opensolaris/uts/common
-I/usr/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs -I/usr/src/sys/cddl/contrib/opensolaris/common/zfs -DNEED_SOLARIS_BOOLEAN -g -O0 -std=gnu99 -fstack-protector-strong -Wno-pointer-sign -Wno-unknown-pragmas -Wno-empty-body -
Wno-string-plus-int -Wno-unused-const-variable -Wno-tautological-compare -Wno-unused-value -Wno-parentheses-equality -Wno-unused-function -Wno-enum-conversion -Wno-unused-local-typedef -Wno-address-of-packed-member -Wno-switch -Wno-
switch-enum -Wno-knr-promoted-parameter -Wno-parentheses -Qunused-arguments   -o zfs.full zfs_main.o zfs_iter.o   -ljail  -lnvpair  -luutil  -lzfs_core  -lzfs
ld: error: /usr/obj/usr/src/amd64.amd64/tmp/usr/lib/libuutil.so: undefined reference to __assfail
cc: error: linker command failed with exit code 1 (use -v to see invocation)
*** Error code 1

Stop.
make[5]: stopped in /usr/src/cddl/sbin/zfs
*** Error code 1
```

Update2: Replacing /usr/src containing git repo with /usr/src containing the svn repo algo results with the same problem. Never had that problem before :-(

Update 2: Building stable/12 works fine. It turned out there was a problem, it was fixed in stable/12, but did not land into releng/12.2 yet. PARV pointed that on mailing lists, big thanks! Just leaving a trace if someone gets into this kind of problem, try different branch 


```
On 27.01.2021 19:31, parv/freebsd wrote:
[QUOTE]
# git log --pretty=fuller --grep libuutil release/12.2.0. <http://12.2.0.>.stable/12

commit 30ec3f368d
Author: Eugene Grosbein <eugen@FreeBSD.org>
AuthorDate: Dec.2020.1206-1622 +0000
Commit: Eugene Grosbein <eugen@FreeBSD.org>
CommitDate: Dec.2020.1206-1622 +0000

MFC r364027 by arichardson: Fix linker error in libuutil with recent LLVM

This also fixes nanobsd-style build (cross-compiling).
Original commit log:

Not marking the function as static can result in a linker error:
undefined reference to __assfail [--no-allow-shlib-undefined]
I noticed this error after updating our CHERI LLVM to the latest upstream
LLVM HEAD revision.

This change effectively reverts r329984 and marks dmu_buf_init_user as
static (which keeps the GCC build happy).
... above seems to (as I haven't bisected) be the fix in 12-STABLE which allows
the build to finish with success.
- parv
[/QUOTE]
```


----------

