crochet build fails at ubldr Wandboard-Dual

O'Connor, Daniel darius at dons.net.au
Sun Apr 19 23:50:01 UTC 2015


> On 20 Apr 2015, at 08:41, Tim Kientzle <tim at kientzle.com> wrote:
>>> 
>>> Crochet does use the standard build machinery; the only significant difference is that it builds ubldr separately after a successful buildworld.  ...
>> 
>> So maybe its truly a documentation issue since everyone is convinced crochet is correct. I didnt see that mentioned in the docs.
>> 
> You’ve certainly encountered a problem but I don’t yet have enough information to say anything more.  Certainly, Ian is right that you should not have to set LIBSTAND to make this work.
> 
> Unfortunately, it will be at least a few days before I have a chance to try reproducing what you’re seeing.  If you can reproduce it consistently, please let me know; I could work up some patches based on Ian’s suggestions and you could try them to see if they change anything.
> 
> Another things to try:  blow away Crochet’s work directory before you next rebuild.  In particular, that will ensure that your world build and ubldr build are consistent with each other.

I had this issue also and worked around it by modifying the loader Makefiles to set LIBSTAND.
diff --git a/sys/boot/arm/uboot/Makefile b/sys/boot/arm/uboot/Makefile
index e0ea828..cbd173e 100644
--- a/sys/boot/arm/uboot/Makefile
+++ b/sys/boot/arm/uboot/Makefile
@@ -113,6 +113,8 @@ CFLAGS+=    -I${.CURDIR}/../../../../lib/libstand/
 # clang doesn't understand %D as a specifier to printf
 NO_WERROR.clang=

+LIBSTAND=      ${.OBJDIR}/../../../../lib/libstand/libstand.a
+
 DPADD=         ${LIBFICL} ${LIBUBOOT} ${LIBFDT} ${LIBUBOOT_FDT} ${LIBSTAND}
 LDADD=         ${LIBFICL} ${LIBUBOOT} ${LIBFDT} ${LIBUBOOT_FDT} -lstand

diff --git a/sys/boot/efi/loader/Makefile b/sys/boot/efi/loader/Makefile
index 5585f78..55b8673 100644
--- a/sys/boot/efi/loader/Makefile
+++ b/sys/boot/efi/loader/Makefile
@@ -29,6 +29,8 @@ SRCS= autoload.c \
 .PATH: ${.CURDIR}/../../i386/libi386
 .include "${.CURDIR}/arch/${MACHINE}/Makefile.inc"

+LIBSTAND=      ${.OBJDIR}/../../../../lib/libstand/libstand.a
+
 CFLAGS+=       -I${.CURDIR}
 CFLAGS+=       -I${.CURDIR}/arch/${MACHINE}
 CFLAGS+=       -I${.CURDIR}/../include

I did it that way because I noticed some other loader Makfiles set LIBSTAND so I assumed it was removed incorrectly from the arm and uefi ones.

I nuked the work directory with no effect.

Crochet used the following command to build - 
sudo env MAKEOBJDIRPREFIX=/src/arm/crochet/work/obj/arm.armv6 MACHINE_ARCH=armv6 MACHINE=arm CPUTYPE= GROFF_BIN_PATH=/src/arm/crochet/work/obj/arm.armv6/src/FreeBSD-HEAD/tmp/legacy/usr/bin GROFF_FONT_PATH=/src/arm/crochet/work/obj/arm.armv6/src/FreeBSD-HEAD/tmp/legacy/usr/share/groff_font GROFF_TMAC_PATH=/src/arm/crochet/work/obj/arm.armv6/src/FreeBSD-HEAD/tmp/legacy/usr/share/tmac _SHLIBDIRPREFIX=/src/arm/crochet/work/obj/arm.armv6/src/FreeBSD-HEAD/tmp _LDSCRIPTROOT= VERSION="FreeBSD 11.0-CURRENT armv6 1100069" INSTALL="sh /src/FreeBSD-HEAD/tools/install.sh" PATH=/src/arm/crochet/work/obj/arm.armv6/src/FreeBSD-HEAD/tmp/legacy/usr/sbin:/src/arm/crochet/work/obj/arm.armv6/src/FreeBSD-HEAD/tmp/legacy/usr/bin:/src/arm/crochet/work/obj/arm.armv6/src/FreeBSD-HEAD/tmp/legacy/bin:/src/arm/crochet/work/obj/arm.armv6/src/FreeBSD-HEAD/tmp/usr/sbin:/src/arm/crochet/work/obj/arm.armv6/src/FreeBSD-HEAD/tmp/usr/bin:/sbin:/bin:/usr/sbin:/usr/bin CC="cc " CXX="c++ " DEPFLAGS="" CPP="cpp " AS="as" AR="ar" LD="ld" NM=nm OBJDUMP=objdump OBJCOPY="objcopy" RANLIB=ranlib STRINGS= SIZE="size" make UBLDR_LOADADDR=0x88000000 -m /src/FreeBSD-HEAD/share/mk all 

Adding LIBSTAND=/src/arm/crochet/work/obj/arm.armv6/src/FreeBSD-HEAD/lib/libstand/libstand.a made it work, so I then modified the makefiles.

(I was the person who reported it on IRC :)

--
Daniel O'Connor
"The nice thing about standards is that there
are so many of them to choose from."
 -- Andrew Tanenbaum
GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C



More information about the freebsd-arm mailing list