Re: buildkernel failure because ctfconvert not installed

From: Gary Jennejohn <gljennjohn_at_gmail.com>
Date: Thu, 9 Apr 2020 09:33:46 +0200
On Wed, 8 Apr 2020 14:51:14 -0700
John Baldwin <jhb_at_FreeBSD.org> wrote:

> On 4/7/20 11:32 PM, Gary Jennejohn wrote:
> > Has anyone else seen this error?
> > 
> > I tried to build a kernel yesterday, but the build failed while compiling
> > modules because ctfconvert was not found.
> > 
> > I've had WITH_CTF=no in my src.conf for years, so neither ctfconvert nor
> > ctfmerge were installed.
> > 
> > OK, I'll just go to the source dirctories and build and install.
> > 
> > Nope.  I got this error:
> > 	make: exec(ctfconvert) failed (No such file or directory)
> > and the build failed.
> > 
> > WTF?  ctfconvert requires ctfconvert to build?  That makes no sense and is
> > a real chicken-and-egg problem if I've ever seen one.
> > 
> > I ended up creating /usr/bin/ctf{convert,merge} shell scripts which simply
> > did exit 0.  That allowed me to finally compile and install the utilities.
> > 
> > Now I'm forced to have WITH_CTF=yes in my src.conf.  No big deal.
> > 
> > Still, it seems like the change to the make infrastructure which assumed
> > that cft{convert,merge} are always installed was rather premature.  
> 
> The change is that GENERIC has 'makeoptions WITH_CTF=yes'.  If you build a
> kernel without that, you shouldn't need to have ctfconvert installed.  This
> does mean you need to use a custom kernel instead of GENERIC.
> 

That is exactly what I found confusing.  I tried both with and without
CTF in my kernel config file and the build still failed.

grep CTF /sys/amd64/conf/ernst_new
#makeoptions     WITH_CTF=1              # Run ctfconvert(1) for DTrace support
#options         DDB_CTF                 # Kernel ELF linker loads CTF data

I also have
makeoptions     MODULES_OVERRIDE="cpuctl msdosfs pseudofs filemon"

If I move ctfconvert away then I see this error:

cd /usr/src; make buildkernel

--------------------------------------------------------------
>>> Kernel build for ernst_new started on Thu Apr  9 08:51:06 CEST 2020
--------------------------------------------------------------
===> ernst_new
--------------------------------------------------------------
>>> stage 1: configuring the kernel
--------------------------------------------------------------
Kernel build directory is /home/garyj/obj/usr/src/amd64.amd64/sys/ernst_new
Don't forget to do ``make cleandepend && make depend''

--------------------------------------------------------------
>>> stage 2.3: build tools
--------------------------------------------------------------

--------------------------------------------------------------
>>> stage 3.1: building everything
--------------------------------------------------------------
sh: ctfconvert: not found
*** [cpuctl.o] Error code 127
make[4]: *** cpuctl.o removed

make[4]: stopped in /usr/src/sys/modules/cpuctl
.ERROR_TARGET='cpuctl.o'
.ERROR_META_FILE='/home/garyj/obj/usr/src/amd64.amd64/sys/ernst_new/modules/usr/src/sys/modules/cpuctl/cpuctl.o.meta'

So, without ctfconvert installed buildkernel ALWAYS fails to build the
modules no matter what CTF options are used in the kernel config file.

In contrast, buildworld does still work without ctfconvert.

-- 
Gary Jennejohn
Received on Thu Apr 09 2020 - 05:33:52 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:23 UTC