``make buildkernel'' fails when /usr/obj is empty
Benjamin Kaduk
kaduk at mit.edu
Thu May 31 16:09:52 UTC 2018
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?
-Ben
More information about the freebsd-current
mailing list