Re: ``make buildkernel'' fails when /usr/obj is empty

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Thu, 31 May 2018 19:47:57 +0200
On 31 May 2018, at 18:04, Benjamin Kaduk <kaduk_at_MIT.EDU> wrote:
> 
> On Thu, May 31, 2018 at 09:58:50AM +0200, Gary Jennejohn wrote:
>> On Thu, 31 May 2018 09:52:22 +0200
>> Gary Jennejohn <gljennjohn_at_gmail.com> wrote:
>> 
>>> There's something totally screwy about trying to build a kernel when
>>> /usr/obj is not populated.
>>> 
>>> I ran ``make clean'' in /usr/src and then ``make buildkernel''.  This
>>> fails with
>>> 	make[2]: "/usr/src/sys/conf/kern.pre.mk" line 125: amd64 kernel
>>> 	requires linker ifunc support
>>> 
>>> This is total BS because
>>> 
>>> /usr/bin/ld --version
>>> LLD 6.0.0 (FreeBSD 326565-1200002) (compatible with GNU linkers)
>>> 
>>> which is exactly what bsd.linker.mk is looking for to set ifunc.
>>> 
>>> If I do this:
>>> 
>>> mkdir -p /usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/bin
>>> cp /usr/bin/ld /usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/bin
>>> 
>>> the buildkernel then succeeds.
>>> 
>>> Considering that (reformatted output from make)
>>> 
>>> 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:
>>> /usr/obj/usr/src/amd64.amd64/tmp/usr/sbin:
>>> /usr/obj/usr/src/amd64.amd64/tmp/usr/bin:
>>> /sbin:/bin:/usr/sbin:/usr/bin
>>> 
>>> it seems like /usr/bin/ld should be found by bsd.linker.mk and no
>>> error should be reported.
>>> 
>> 
>> OK, it seems that ``make clean'' does not remove the contents of
>> /usr/obj/usr/src/amd64.amd64/tmp/legacy.  If I delete everything
>> under /usr/obj then ``make buildkernel'' works.
>> 
>> Still, it seems pretty strange to me to make building a kernel
>> depend on some random junk which is left laying around under
>> /usr/obj.
> 
> Whatever happened to the "run buildworld or kernel-toolchain before
> buildkernel" requirement?

That is still a requirement, yes.  Otherwise, you might have outdated
toolchain components are in your /usr/obj.

-Dimitry


Received on Thu May 31 2018 - 15:48:10 UTC

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