Confirmed update procedure for a self-hosted armv6hf system
Ian Lepore
ian at freebsd.org
Tue May 24 02:50:06 UTC 2016
On Mon, 2016-05-23 at 19:40 -0700, bob prohaska wrote:
> On Mon, May 23, 2016 at 08:11:20PM -0600, Ian Lepore wrote:
> > > /tmp/install.b4kWrXan
> > > sh: cc: not found
> > > make[2]: "/usr/src/share/mk/bsd.compiler.mk" line 142: Unable to
> > > determine compiler type for CC=cc . Consider setting
> > > COMPILER_TYPE.
> > > *** [installworld] Error code 1
> > >
> > > Up to now no COMPILER_TYPE has been needed.
> > > What's the correct name?
> > >
> > > Many thanks for your patience!
> > >
> > > bob prohaska
> >
> > The fact that it's complaining about compiler type means something
> > is
> > wrong. Hmm, it looks like you left off the TARGET_ARCH=armv6 on
> > the
> > installworld command, because otherwise those paths would be
> > /usr/arm.armv6/usr/... not just /usr/obj/usr/...
> >
> Alas, no. Here's a verbatim transcript:
> root at www:/usr/src # make -j6 installworld TARGET_ARCH=armv6 >
> installworld.log &
> [1] 68427
> root at www:/usr/src # 1 error
>
> [1] Exit 2 make -j6 installworld
> TARGET_ARCH=armv6 > installworld.log
>
> root at www:/usr/src # tail -n25 installworld.log
> --- installworld ---
> --- __installcheck_UGID ---
> --- installworld ---
> mkdir -p /tmp/install.E75wHxti
> progs=$(for prog in [ awk cap_mkdb cat chflags chmod chown cmp cp
> date echo egrep find grep id install ln make mkdir mtree mv
> pwd_mkdb rm sed services_mkdb sh strip sysctl test true uname wc zic
> tzsetup makewhatis; do if progpath=`which $prog`; then echo
> $progpath; else echo "Required tool $prog not found in PATH." >&2;
> exit 1; fi; done); libs=$(ldd -f "%o %p\n" -f "%o %p\n" $progs
> 2>/dev/null | sort -u | while read line; do $line; if [ "$2 $3" !=
> "not found" ]; then echo $2; else echo "Required library $1 not
> found." >&2; exit 1; fi; done); cp $libs $progs
> /tmp/install.E75wHxti
> cp -R ${PATH_LOCALE:-"/usr/share/locale"}
> /tmp/install.E75wHxti/locale
> cd /usr/src; MAKEOBJDIRPREFIX=/usr/obj MACHINE_ARCH=armv6
> MACHINE=arm CPUTYPE=
> GROFF_BIN_PATH=/usr/obj/usr/src/tmp/legacy/usr/bin
> GROFF_FONT_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/groff_font
> GROFF_TMAC_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/tmac CC="cc "
> CXX="c++ " CPP="cpp " AS="as" AR="ar" LD="ld" NM=nm
> OBJDUMP=objdump OBJCOPY="objcopy" RANLIB=ranlib STRINGS=
> SIZE="size"
> PATH=/usr/obj/usr/src/tmp/legacy/usr/sbin:/usr/obj/usr/src/tmp/legacy
> /usr/bin:/usr/obj/usr/src/tmp/legacy/bin:/usr/obj/usr/src/tmp/usr/sbi
> n:/usr/obj/usr/src/tmp/usr/bin:/tmp/install.E75wHxti
> LD_LIBRARY_PATH=/tmp/install.E75wHxti
> PATH_LOCALE=/tmp/install.E75wHxti/locale make -f Makefile.inc1
> __MAKE_SHELL=/tmp/install.E75wHxti/sh reinstall;
> MAKEOBJDIRPREFIX=/usr/obj MACHINE_ARCH=armv6 MACHINE=arm CPUTYPE=
> GROFF_BIN_PATH=/usr/obj/usr/src/tmp/legacy/usr/bin
> GROFF_FONT_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/groff_font
> GROFF_TMAC_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/tmac CC="cc "
> C
> XX="c++ " CPP="cpp " AS="as" AR="ar" LD="ld" NM=nm
> OBJDUMP=objdump OBJCOPY="objcopy" RANLIB=ranlib STRINGS=
> SIZE="size"
> PATH=/usr/obj/usr/src/tmp/legacy/usr/sbin:/usr/obj/usr/src/tmp/legacy
> /usr/bin:/usr/obj/usr/src/tmp/legacy/bin:/usr/obj/usr/src/tmp/usr/sbi
> n:/usr/obj/usr/src/tmp/usr/bin:/tmp/install.E75wHxti
> LD_LIBRARY_PATH=/tmp/install.E75wHxti
> PATH_LOCALE=/tmp/install.E75wHxti/locale rm -rf
> /tmp/install.E75wHxti
> sh: cc: not found
> make[2]: "/usr/src/share/mk/bsd.compiler.mk" line 142: Unable to
> determine compiler type for CC=cc . Consider setting COMPILER_TYPE.
> *** [installworld] Error code 1
>
> make[1]: stopped in /usr/src
> 1 error
>
> make[1]: stopped in /usr/src
> *** [installworld] Error code 2
>
> Setting COMPILER_TYPE (naively) to cc or clang seems no help
> whatever.
>
> This RPI2 has neither /etc/make.conf nor /etc/src.conf, might that be
> part of the trouble?
> Alternatively, might it be simpler to "back down" to an earlier
> revision (which one?) and
> attempt to upgrade from there?
>
> Thanks as always!
>
> bob prohaska
Ut oh. It just popped into my head that the standard freebsd update
procedure is to install the kernel, then reboot, then install the
world, right? (I've never once done it that way in 20 years of using
freebsd, I always install both at once then reboot.)
I think that may be the problem here, if you did it the right way.
Once you're running on the new kernel, TARGET_ARCH=armv6 isn't a
crossbuild anymore because it thinks armv6 is the current arch. I
wonder if it would work for you to try:
setenv UNAME_P armv6hf
make -j6 installworld TARGET_ARCH=armv6
As long as the build system uses uname (not sysctl hw.machine_arch),
that should fool it enough to do the proper install.
-- Ian
More information about the freebsd-arm
mailing list