# Go14 broken on ARMv6



## Lamia (Mar 1, 2018)

I am cross-compiling arm packages on an AMD64 but a number of them are failing to build. As a result, some ports are ignored during the build process.

This is the reason for ignored port(s):

```
go14-1.4.3_2 is marked as broken on armv6: fails to build: go build runtime: go/pkg/tool/freebsd_arm/5g: wait: interrupted system calla
```
It breaks llvm5.0. And with llvm5.0 broken, tonnes of packages would not compile. Examples are docker, mate, netdata, py-shuttle, etc.


Please advise on how I can get all the builds going. It would be good to contribute to FreebsdARM in the form of uploading patches, packages, etc to the Freebsd Repo.


----------



## acheron (Mar 1, 2018)

Remove the BROKEN_armv6 line in the Makefile, I fixed the qemu bug months ago.


----------



## Lamia (Mar 1, 2018)

acheron said:


> Remove the BROKEN_armv6 line in the Makefile, I fixed the qemu bug months ago.



Thanks acheron,
Where is the line to delete in the below files?
FILE::: https://raw.githubusercontent.com/freebsd/freebsd-ports/master/lang/go/Makefile


```
# Created by: Devon H. O'Dell <devon.odell@gmail.com>
# $FreeBSD$

PORTNAME=    go
PORTVERSION=    1.10
PORTEPOCH=    1
CATEGORIES=    lang
MASTER_SITES=    https://golang.org/dl/
DISTNAME=    go${PORTVERSION}.src

MAINTAINER=    jlaffaye@FreeBSD.org
COMMENT=    Go programming language

LICENSE=    BSD3CLAUSE

BUILD_DEPENDS=    go14>=1.4:lang/go14

USES=        shebangfix
SHEBANG_LANG=    sh perl
SHEBANG_FILES=    src/*.bash \
        doc/articles/wiki/*.bash \
        lib/time/*.bash \
        misc/benchcmp \
        misc/nacl/go_nacl_*_exec \
        src/cmd/go/*.sh \
        src/net/http/cgi/testdata/*.cgi \
        src/regexp/syntax/*.pl

sh_OLD_CMD=    "/usr/bin/env bash"
sh_CMD=        ${SH}

WRKSRC=        ${WRKDIR}/go
ONLY_FOR_ARCHS=    i386 amd64 armv6 armv7

OPTIONS_DEFINE=    GO387
GO387_DESC=    Do not generate code with SSE2 (for old x86 CPU)

.include <bsd.port.pre.mk>

.if ${ARCH} == i386
GOARCH=386
.elif ${ARCH} == "amd64"
GOARCH=amd64
.elif ${ARCH} == armv6 || ${ARCH} == armv7
GOARCH=arm
.else
IGNORE=        unknown arch ${ARCH}
.endif

.if ${PORT_OPTIONS:MGO387}
GO386=387
.endif

PLIST_SUB+=    opsys_ARCH=${OPSYS:tl}_${GOARCH}

post-patch:
    @cd ${WRKSRC} && ${FIND} . -name '*.orig' -delete

do-build:
    cd ${WRKSRC}/src && \
        GOROOT=${WRKSRC} GOROOT_FINAL=${PREFIX}/go \
        GOROOT_BOOTSTRAP=${LOCALBASE}/go14 \
        GOBIN= GOARCH=${GOARCH} GOOS=${OPSYS:tl} \
        GO386=${GO386} \
        ${SH} make.bash
    ${RM} -r ${WRKSRC}/pkg/obj

do-install:
    @${CP} -a ${WRKSRC} ${STAGEDIR}${PREFIX}
.for f in go gofmt
    @${LN} -sf ../go/bin/${f} ${STAGEDIR}${PREFIX}/bin/${f}
.endfor

regression-test: build
    cd ${WRKSRC}/src && GOROOT=${WRKSRC} PATH=${WRKSRC}/bin:${PATH} ${SH} run.bash --no-rebuild --banner

pkg-plist: stage
    ${RM} ${WRKDIR}/pkg-plist
.for command in go gofmt
    ${ECHO_CMD} bin/${command} >> ${WRKDIR}/pkg-plist
.endfor
    cd ${WRKDIR} && ${FIND} go -type f | \
        ${SED} -e "s/\/${OPSYS:tl}_${GOARCH}\//\/%%opsys_ARCH%%\//g" | \
        ${SORT} >> ${WRKDIR}/pkg-plist
    ${CP} ${WRKDIR}/pkg-plist ${.CURDIR}/pkg-plist

.include <bsd.port.post.mk>
```



FILE:::: https://github.com/freebsd/freebsd-ports/blob/master/emulators/qemu/Makefile


```
# Created by: Juergen Lock <nox@jelal.kn-bremen.de>
# $FreeBSD$

PORTNAME=    qemu
PORTVERSION=    2.9.0
PORTREVISION=    1
CATEGORIES=    emulators
MASTER_SITES=    http://wiki.qemu.org/download/
DIST_SUBDIR=    qemu/${PORTVERSION}

MAINTAINER?=    bofh@FreeBSD.org
COMMENT?=    QEMU CPU Emulator

LICENSE=    GPLv2

LIB_DEPENDS?=    libnettle.so:security/nettle \
        libfontconfig.so:x11-fonts/fontconfig \
        libfreetype.so:print/freetype2

HAS_CONFIGURE=    yes
USES?=        cpe gmake pkgconfig bison perl5 python:2.7,build tar:bzip2
USE_PERL5=    build
MAKE_ENV+=    BSD_MAKE="${MAKE}" V=1
.if !defined(PKGNAMESUFFIX) || ${PKGNAMESUFFIX} != "-utils"
USE_XORG=    pixman
USE_GNOME+=    cairo glib20
ONLY_FOR_ARCHS=    amd64 i386 powerpc powerpc64 # XXX someone wants to debug sparc64 hosts?
.endif

BROKEN_powerpc64=    fails to compile: In function aio_bh_poll: internal compiler error: Segmentation fault

OPTIONS_DEFINE=    SAMBA X11 GTK2 OPENGL GNUTLS SASL JPEG PNG CURL \
        VDE CDROM_DMA PCAP USBREDIR GNS3 X86_TARGETS \
        STATIC_LINK DOCS NCURSES
SAMBA_DESC=        samba dependency (for -smb)
GNUTLS_DESC=        gnutls dependency (vnc encryption)
SASL_DESC=        cyrus-sasl dependency (vnc encryption)
JPEG_DESC=        jpeg dependency (vnc lossy compression)
PNG_DESC=        png dependency (vnc compression)
CDROM_DMA_DESC=        IDE CDROM DMA
PCAP_DESC=        pcap dependency (networking with bpf)
USBREDIR_DESC=        usb device network redirection (experimental!)
GNS3_DESC=        gns3 patches (promiscuous multicast)
X86_TARGETS_DESC=    Build only x86 system targets
STATIC_LINK_DESC=    Statically link the executables
VDE_DESC=        vde dependency (for vde networking)
OPTIONS_DEFAULT=X11 GTK2 OPENGL GNUTLS SASL JPEG PNG CDROM_DMA CURL PCAP GNS3 NCURSES VDE
OPTIONS_SUB=    yes
X11_USE=    SDL=sdl XORG=x11,xext GNOME=gdkpixbuf2
X11_CONFIGURE_ENABLE=    sdl
GTK2_USE=    GNOME=gtk20,vte,gdkpixbuf2 XORG=x11,xext
GTK2_USES=    gettext
GTK2_CONFIGURE_OFF=    --disable-gtk --disable-vte
GNUTLS_LIB_DEPENDS=    libgnutls.so:security/gnutls
GNUTLS_CONFIGURE_OFF=    --disable-gnutls
SASL_LIB_DEPENDS=    libsasl2.so:security/cyrus-sasl2
SASL_CONFIGURE_OFF=    --disable-vnc-sasl
JPEG_USES=        jpeg
JPEG_CONFIGURE_OFF=    --disable-vnc-jpeg
PNG_LIB_DEPENDS=    libpng.so:graphics/png
PNG_CONFIGURE_OFF=    --disable-vnc-png
CURL_LIB_DEPENDS=    libcurl.so:ftp/curl
CURL_CONFIGURE_OFF=    --disable-curl
OPENGL_USE=    GL=yes
OPENGL_CONFIGURE_OFF=    --disable-opengl
USBREDIR_BUILD_DEPENDS=    usbredir>=0.6:net/usbredir
USBREDIR_RUN_DEPENDS=    usbredir>=0.6:net/usbredir
USBREDIR_CONFIGURE_OFF=    --disable-usb-redir
PCAP_CONFIGURE_ON=    --enable-pcap
PCAP_EXTRA_PATCHES=    ${FILESDIR}/pcap-patch ${FILESDIR}/pcap-patch-net_net.c \
            ${FILESDIR}/pcap-patch-net_clients.h
VDE_LIB_DEPENDS=    libvdeplug.so:net/vde2
VDE_CONFIGURE_OFF=    --disable-vde
STATIC_LINK_CONFIGURE_ON=    --static
STATIC_LINK_PREVENTS=        GTK2 X11
STATIC_LINK_PREVENTS_MSG=    X11 ui cannot be built static
NCURSES_USES=        ncurses:base
SAMBA_USES=        samba:run # smbd
SAMBA_CONFIGURE_ON=    --smbd=${LOCALBASE}/sbin/smbd
DOCS_BUILD_DEPENDS=    texi2html:textproc/texi2html
DOCS_USES=        makeinfo
DOCS_MAKE_ARGS_OFF=    NOPORTDOCS=1

PORTDOCS?=    docs qemu-doc.html qemu-doc.txt qemu-ga-ref.html qemu-ga-ref.txt \
               qemu-qmp-ref.html qemu-qmp-ref.txt

WITHOUT_CPU_CFLAGS=yes    #to avoid problems with register allocation
CFLAGS:=    ${CFLAGS:C/-fno-tree-vrp//}
CONFIGURE_ARGS?=--localstatedir=/var --extra-ldflags=-L\"/usr/lib\" \
        --extra-ldflags=-L\"${LOCALBASE}/lib\" --disable-libssh2 --enable-debug \
        --prefix=${PREFIX} --cc=${CC} --enable-docs --disable-kvm \
        --disable-linux-user --disable-linux-aio --disable-xen \
        --enable-debug-info --python=${PYTHON_CMD} \
        --extra-cflags=-I${WRKSRC}\ -I${LOCALBASE}/include\ -DPREFIX=\\\"\"${PREFIX}\\\"\"

.include <bsd.port.options.mk>

.if !defined(STRIP) || ${STRIP} == ""
CONFIGURE_ARGS+=--disable-strip
.endif

.if ${ARCH} == "amd64"
MAKE_ARGS+=    ARCH=x86_64
.endif

.if ${ARCH} == "powerpc"
MAKE_ARGS+=    ARCH=ppc
.endif

.if ${ARCH} == "powerpc64"
MAKE_ARGS+=    ARCH=ppc64
.endif

.if ${ARCH} == "sparc64"
CONFIGURE_ARGS+=    --sparc_cpu=v9
.endif

# clang in freebsd 10 is unable to assemble linuxboot_dma.bin
.if (${OSVERSION} < 1100000)
PLIST_SUB+=    LINUXBOOT_DMA="@comment "
.else
PLIST_SUB+=    LINUXBOOT_DMA=""
.endif

# -lprocstat actually only _needs_ -lelf after r249666 or r250870 (MFC)
# but it shouldn't matter much
post-patch:
    @${REINPLACE_CMD} -e '/LIBS/s|-lprocstat|-lprocstat -lelf|' \
         -e '/libusb/s/ --atleast-version=1\.0\.[0-9]*//' \
        ${WRKSRC}/configure
    @${REINPLACE_CMD} -e '/libs_qga=/s|glib_libs|glib_libs -lintl|' ${WRKSRC}/configure
    @${REINPLACE_CMD} -E \
        -e "/^by Tibor .TS. S/s|Sch.*z.$$|Schuetz.|" \
        ${WRKSRC}/qemu-doc.texi
    @${REINPLACE_CMD} -E \
        -e "s|^(CFLAGS=).*|\1${CFLAGS} -fno-strict-aliasing|" \
        -e "s|^(LDFLAGS=).*|\1${LDFLAGS}|" \
        ${WRKSRC}/Makefile.target
    @${REINPLACE_CMD} -E \
        -e "s|^(CFLAGS=).*|\1${CFLAGS} -fno-strict-aliasing -I.|" \
        -e "s|^(LDFLAGS=).*|\1${LDFLAGS}|" \
        ${WRKSRC}/Makefile
    @${REINPLACE_CMD} -E \
        -e "1s|^(#! )/usr/bin/perl|\1${PERL}|" \
        ${WRKSRC}/scripts/texi2pod.pl
# clang in freebsd 10 is unable to assemble linuxboot_dma.bin
.if (${OSVERSION} < 1100000)
    @${REINPLACE_CMD} -E \
        -e 's|linuxboot_dma.bin||' \
        ${WRKSRC}/pc-bios/optionrom/Makefile
    @${REINPLACE_CMD} -E \
        -e 's|linuxboot_dma.bin||' \
        ${WRKSRC}/Makefile
.endif

post-patch-CDROM_DMA-off:
    @${REINPLACE_CMD} -e '/USE_DMA_CDROM/d' ${WRKSRC}/include/hw/ide/internal.h

post-patch-GNS3-on:
    @${REINPLACE_CMD} -e 's|(buf\[0\] & 1) && (rctl & E1000_RCTL_MPE)|buf[0] \& 1|' \
        ${WRKSRC}/hw/net/e1000.c

# XXX need to disable usb host code on head while it's not ported to the
# new usb stack yet
post-configure:
    @${REINPLACE_CMD} -E \
        -e "s|^(HOST_USB=)bsd|\1stub|" \
        ${WRKSRC}/config-host.mak

.if !target(post-install)
post-install:
    ${INSTALL_SCRIPT} ${FILESDIR}/qemu-ifup.sample ${STAGEDIR}${PREFIX}/etc
    ${INSTALL_SCRIPT} ${FILESDIR}/qemu-ifdown.sample ${STAGEDIR}${PREFIX}/etc
    @${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/qemu-*
    @${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/ivshmem-*

post-install-DOCS-on:
    @(cd ${WRKSRC} && ${COPYTREE_SHARE} docs ${STAGEDIR}${DOCSDIR}/)
.endif

.include <bsd.port.mk>
```


----------



## acheron (Mar 1, 2018)

It's in lang/go14 https://github.com/freebsd/freebsd-ports/blob/master/lang/go14/Makefile#L15-L16


----------



## Lamia (Jul 5, 2022)

Thanks to everyone; I must have let go of this brain-teaser at some point.


----------

