diff options
author | Julian Xhokaxhiu <julianxhokaxhiu@users.noreply.github.com> | 2018-03-09 19:05:33 +0100 |
---|---|---|
committer | jc <u@gogs.io> | 2018-03-09 13:05:33 -0500 |
commit | ffdd8b3afac9343bdd119368310190375682ff7a (patch) | |
tree | 67bab2701b55765f6f73ca0d073f51f00d61f9ba /docker | |
parent | 86d249eb16bfaa4199379aadfd64bdae72f91fea (diff) |
docker: enable Automated builds for aarch64 ( ARM64 ) platforms (#5058)
* Enable Automated builds for aarch64
* Native aarch64 build
* Move to the new organization
* Try to build it with latest go binary
* Rebuild using Go 1.10
Diffstat (limited to 'docker')
-rw-r--r-- | docker/aarch64/build.sh | 3 | ||||
-rwxr-xr-x | docker/aarch64/qemu-aarch64-static | bin | 0 -> 3451880 bytes | |||
-rwxr-xr-x | docker/aarch64/resin-xbuild | bin | 0 -> 1422176 bytes | |||
-rw-r--r-- | docker/aarch64/resin-xbuild.go | 66 |
4 files changed, 69 insertions, 0 deletions
diff --git a/docker/aarch64/build.sh b/docker/aarch64/build.sh new file mode 100644 index 00000000..d864f4b3 --- /dev/null +++ b/docker/aarch64/build.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +go build -ldflags "-w -s" resin-xbuild.go diff --git a/docker/aarch64/qemu-aarch64-static b/docker/aarch64/qemu-aarch64-static Binary files differnew file mode 100755 index 00000000..f44233bc --- /dev/null +++ b/docker/aarch64/qemu-aarch64-static diff --git a/docker/aarch64/resin-xbuild b/docker/aarch64/resin-xbuild Binary files differnew file mode 100755 index 00000000..3996ea53 --- /dev/null +++ b/docker/aarch64/resin-xbuild diff --git a/docker/aarch64/resin-xbuild.go b/docker/aarch64/resin-xbuild.go new file mode 100644 index 00000000..84cf7b66 --- /dev/null +++ b/docker/aarch64/resin-xbuild.go @@ -0,0 +1,66 @@ +package main + +import ( + "log" + "os" + "os/exec" + "syscall" +) + +func crossBuildStart() { + err := os.Remove("/bin/sh") + if err != nil { + log.Fatal(err) + } + err = os.Link("/usr/bin/resin-xbuild", "/bin/sh") + if err != nil { + log.Fatal(err) + } +} + +func crossBuildEnd() { + err := os.Remove("/bin/sh") + if err != nil { + log.Fatal(err) + } + err = os.Link("/bin/sh.real", "/bin/sh") + if err != nil { + log.Fatal(err) + } +} + +func runShell() error { + cmd := exec.Command("/usr/bin/qemu-aarch64-static", append([]string{"-0", "/bin/sh", "/bin/sh"}, os.Args[1:]...)...) + cmd.Stdin = os.Stdin + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + return cmd.Run() +} + +func main() { + switch os.Args[0] { + case "cross-build-start": + crossBuildStart() + case "cross-build-end": + crossBuildEnd() + case "/bin/sh": + code := 0 + crossBuildEnd() + + if err := runShell(); err != nil { + code = 1 + if exiterr, ok := err.(*exec.ExitError); ok { + if status, ok := exiterr.Sys().(syscall.WaitStatus); ok { + code = status.ExitStatus() + } + } + } + + crossBuildStart() + + // Hack to bypass apk issues with triggering + code = 0 + + os.Exit(code) + } +} |