Go14 broken on ARMv6

Lamia

Active Member

Thanks: 24
Messages: 165

#1
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):
Code:
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.
 
OP
OP
Lamia

Lamia

Active Member

Thanks: 24
Messages: 165

#3
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

Code:
# 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

Code:
# 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>
 
Top