mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-07-26 20:55:19 +03:00
community/go: cross-build support
This commit is contained in:
parent
fb8794efbe
commit
f5c4b29891
2 changed files with 35 additions and 7 deletions
|
@ -15,24 +15,37 @@ makedepends="bash go-bootstrap"
|
||||||
options="!strip"
|
options="!strip"
|
||||||
provides="go-bootstrap=$pkgver-r$pkgrel"
|
provides="go-bootstrap=$pkgver-r$pkgrel"
|
||||||
install=""
|
install=""
|
||||||
subpackages="$pkgname-doc $pkgname-tools"
|
subpackages="$pkgname-doc"
|
||||||
source="http://golang.org/dl/go${pkgver/_/}.src.tar.gz
|
source="http://golang.org/dl/go${pkgver/_/}.src.tar.gz
|
||||||
$pkgname-tools-${pkgver/_/}.tar.gz::https://github.com/golang/tools/archive/${_toolsver}.tar.gz
|
go-tools-${pkgver/_/}.tar.gz::https://github.com/golang/tools/archive/${_toolsver}.tar.gz
|
||||||
default-buildmode-pie.patch
|
default-buildmode-pie.patch
|
||||||
"
|
"
|
||||||
|
|
||||||
# NOTE: building go for x86 with grsec kernel requires:
|
# NOTE: building go for x86 with grsec kernel requires:
|
||||||
# sysctl -w kernel.modify_ldt=1
|
# sysctl -w kernel.modify_ldt=1
|
||||||
|
|
||||||
_gotools="cover godoc stringer"
|
if [ "$CBUILD" = "$CTARGET" ]; then
|
||||||
_tooldir="$srcdir"/tools-${_toolsver}
|
makedepends="go-bootstrap $makedepends"
|
||||||
|
provides="go-bootstrap=$pkgver-r$pkgrel"
|
||||||
|
subpackages="$subpackages $pkgname-tools"
|
||||||
|
_gotools="cover godoc stringer"
|
||||||
|
_gocross="darwin freebsd openbsd windows"
|
||||||
|
else
|
||||||
|
pkgname="go-bootstrap"
|
||||||
|
makedepends="go $makedepends"
|
||||||
|
# Go expect host linker instead of the cross-compiler
|
||||||
|
export CC_FOR_TARGET="$CC"
|
||||||
|
export CC="${HOSTLD:-gcc}"
|
||||||
|
export CXX="${HOSTLD:-g++}"
|
||||||
|
export LD="${HOSTLD:-ld}"
|
||||||
|
fi
|
||||||
|
|
||||||
_gocross="darwin freebsd openbsd windows"
|
_tooldir="$srcdir"/tools-${_toolsver}
|
||||||
for os in $_gocross; do
|
for os in $_gocross; do
|
||||||
subpackages="$subpackages $pkgname-cross-${os}:_crosspkg"
|
subpackages="$subpackages $pkgname-cross-${os}:_crosspkg"
|
||||||
done
|
done
|
||||||
|
|
||||||
builddir="$srcdir"/$pkgname
|
builddir="$srcdir"/go
|
||||||
build() {
|
build() {
|
||||||
cd "$builddir/src"
|
cd "$builddir/src"
|
||||||
|
|
||||||
|
@ -46,6 +59,7 @@ build() {
|
||||||
*) die "Unsupported arch" ;;
|
*) die "Unsupported arch" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
export GOOS="linux"
|
||||||
export GOPATH="$srcdir"
|
export GOPATH="$srcdir"
|
||||||
export GOROOT="$builddir"
|
export GOROOT="$builddir"
|
||||||
export GOBIN="$GOROOT"/bin
|
export GOBIN="$GOROOT"/bin
|
||||||
|
@ -64,6 +78,16 @@ build() {
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# copied from bootstrap.bash to fixup cross-built bootstrap go
|
||||||
|
if [ "$CBUILD" != "$CTARGET" ]; then
|
||||||
|
local gohostos="$(../bin/go env GOHOSTOS)"
|
||||||
|
local gohostarch="$(../bin/go env GOHOSTARCH)"
|
||||||
|
mv ../bin/*_*/* ../bin
|
||||||
|
rmdir ../bin/*_*
|
||||||
|
rm -rf "../pkg/${gohostos}_${gohostarch}"* "../pkg/tool/${gohostos}_${gohostarch}"*
|
||||||
|
rm -rf ../pkg/bootstrap ../pkg/obj
|
||||||
|
fi
|
||||||
|
|
||||||
# FIXME some tests fail:
|
# FIXME some tests fail:
|
||||||
# PATH="$GOROOT/bin:$PATH" ./run.bash -no-rebuild || return 1
|
# PATH="$GOROOT/bin:$PATH" ./run.bash -no-rebuild || return 1
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,10 @@ CBUILDROOT="$(CTARGET=$TARGET_ARCH . /usr/share/abuild/functions.sh ; echo $CBUI
|
||||||
[ -e "$APORTS/main/build-base" ] || die "Unable to deduce aports base checkout"
|
[ -e "$APORTS/main/build-base" ] || die "Unable to deduce aports base checkout"
|
||||||
|
|
||||||
apkbuildname() {
|
apkbuildname() {
|
||||||
echo $APORTS/main/$1/APKBUILD
|
local repo="${1%%/*}"
|
||||||
|
local pkg="${1##*/}"
|
||||||
|
[ "$repo" = "$1" ] && repo="main"
|
||||||
|
echo $APORTS/$repo/$pkg/APKBUILD
|
||||||
}
|
}
|
||||||
|
|
||||||
msg() {
|
msg() {
|
||||||
|
@ -100,6 +103,7 @@ for PKG in fortify-headers linux-headers musl libc-dev pkgconf zlib \
|
||||||
attr libcap patch sudo acl fakeroot tar \
|
attr libcap patch sudo acl fakeroot tar \
|
||||||
pax-utils abuild openssh \
|
pax-utils abuild openssh \
|
||||||
ncurses util-linux lvm2 popt xz cryptsetup kmod lddtree mkinitfs \
|
ncurses util-linux lvm2 popt xz cryptsetup kmod lddtree mkinitfs \
|
||||||
|
community/go \
|
||||||
$KERNEL_PKG ; do
|
$KERNEL_PKG ; do
|
||||||
|
|
||||||
CHOST=$TARGET_ARCH BOOTSTRAP=bootimage APKBUILD=$(apkbuildname $PKG) abuild -r
|
CHOST=$TARGET_ARCH BOOTSTRAP=bootimage APKBUILD=$(apkbuildname $PKG) abuild -r
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue