Konstantin Belousov
2019-Feb-28 09:44 UTC
FreeBSD 12.0 RELEASE i386 can not build a kernel?
On Thu, Feb 28, 2019 at 12:49:25AM -0800, Rodney W. Grimes wrote:> > -- Start of PGP signed section. > > > On 28 Feb 2019, at 00:37, Rodney W. Grimes <freebsd at pdx.rh.CN85.dnsmgr.net> wrote: > > > > > > > > config CUSTOM > > > > Kernel build directory is ../compile/CUSTOM > > > > Don't forget to do ``make cleandepend && make depend'' > > > > fb-bld-120-i386.dnsmgr.net:root {200}# cd ../compile/CUSTOM > > > > fb-bld-120-i386.dnsmgr.net:root {201}# (make cleandepend && make depend && make -j4 && make install) >&make.OUT > > > > fb-bld-120-i386.dnsmgr.net:root {202}# more make.OUT > > > > make: "../../../conf/../../../conf/kern.pre.mk" line 127: amd64/arm64/i386 kernel requires linker ifunc support > > > > > > After ifunc support was introduced, you have to run at least > > > "make kernel-toolchain" before "make buildkernel", or otherwise just run > > > "make buildworld" first. That will build the linker which supports the > > > required functionality. > > > > This is the -RELEASE, why is the release not built with the > > proper toolchain in place? This is not some upgrade or anything > > odd, download 12.0-RELEASE i386 iso, install it with sources, > > try to build a kernel. > > > > I am running your suggested make kernel-toolchain now > > to see if that fixes the problem (it shouid not, or > > if it does we have a major issue with our release > > building procedures.) > > Sadly I have confirmed that "make kernel-toolchain" does infact > fix the above error. > > Now the begging question, why isnt the toolchain as shipped > already properly built? > > This is a stock FreeBSD-12.0=RELEASE-i386-disc1.iso install, > with stock sources from the iso. I was simply configuring > a custom kernel, I should not need to build a took chain > to build a kernel when nothing has changed from the > RELEASE, it should already be the correct toolchain.Let me guess. You use 'make' in sys/i386/build/YOUR_KERNEL ? Then you need to use 'LD=ld.ldd make'. The proper way of 'make buildkernel' from top-level src handles it automatically.
> On Thu, Feb 28, 2019 at 12:49:25AM -0800, Rodney W. Grimes wrote: > > > -- Start of PGP signed section. > > > > On 28 Feb 2019, at 00:37, Rodney W. Grimes <freebsd at pdx.rh.CN85.dnsmgr.net> wrote: > > > > > > > > > > config CUSTOM > > > > > Kernel build directory is ../compile/CUSTOM > > > > > Don't forget to do ``make cleandepend && make depend'' > > > > > fb-bld-120-i386.dnsmgr.net:root {200}# cd ../compile/CUSTOM > > > > > fb-bld-120-i386.dnsmgr.net:root {201}# (make cleandepend && make depend && make -j4 && make install) >&make.OUT > > > > > fb-bld-120-i386.dnsmgr.net:root {202}# more make.OUT > > > > > make: "../../../conf/../../../conf/kern.pre.mk" line 127: amd64/arm64/i386 kernel requires linker ifunc support > > > > > > > > After ifunc support was introduced, you have to run at least > > > > "make kernel-toolchain" before "make buildkernel", or otherwise just run > > > > "make buildworld" first. That will build the linker which supports the > > > > required functionality. > > > > > > This is the -RELEASE, why is the release not built with the > > > proper toolchain in place? This is not some upgrade or anything > > > odd, download 12.0-RELEASE i386 iso, install it with sources, > > > try to build a kernel. > > > > > > I am running your suggested make kernel-toolchain now > > > to see if that fixes the problem (it shouid not, or > > > if it does we have a major issue with our release > > > building procedures.) > > > > Sadly I have confirmed that "make kernel-toolchain" does infact > > fix the above error. > > > > Now the begging question, why isnt the toolchain as shipped > > already properly built? > > > > This is a stock FreeBSD-12.0=RELEASE-i386-disc1.iso install, > > with stock sources from the iso. I was simply configuring > > a custom kernel, I should not need to build a took chain > > to build a kernel when nothing has changed from the > > RELEASE, it should already be the correct toolchain. > > Let me guess. You use 'make' in sys/i386/build/YOUR_KERNEL ? > Then you need to use 'LD=ld.ldd make'. The proper way of > 'make buildkernel' from top-level src handles it automatically. >If you back up in the thread you would also see the output is the same for cd /usr/src; make buildkernel conf=CUSTOM -- Rod Grimes rgrimes at freebsd.org