From 961a87b743b63c6042ad64404c8c308180cdef32 Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Fri, 9 Jan 2015 10:21:30 +0100 Subject: [PATCH] Only build ARMv5 (fixes #1218) With this change, the build system only builds one ARM variant - ARMv5. We call the build architecture simply "arm", as this is what runtime.GOARCH says. --- build.go | 12 ++----- build.sh | 6 ++-- docker/Dockerfile | 7 +++-- internal/upgrade/releasename_darwin.go | 25 --------------- internal/upgrade/releasename_linux_arm.go | 38 ----------------------- internal/upgrade/releasename_other.go | 27 ---------------- internal/upgrade/upgrade_common.go | 11 +++++++ 7 files changed, 19 insertions(+), 107 deletions(-) delete mode 100644 internal/upgrade/releasename_darwin.go delete mode 100644 internal/upgrade/releasename_linux_arm.go delete mode 100644 internal/upgrade/releasename_other.go diff --git a/build.go b/build.go index 83a0dfa15..70a34f725 100644 --- a/build.go +++ b/build.go @@ -73,7 +73,7 @@ func main() { flag.Parse() switch goarch { - case "386", "amd64", "arm", "armv5", "armv6", "armv7": + case "386", "amd64", "arm": break default: log.Printf("Unknown goarch %q; proceed with caution!", goarch) @@ -285,15 +285,7 @@ func listFiles(dir string) []string { func setBuildEnv() { os.Setenv("GOOS", goos) - if strings.HasPrefix(goarch, "armv") { - os.Setenv("GOARCH", "arm") - os.Setenv("GOARM", goarch[4:]) - } else { - os.Setenv("GOARCH", goarch) - } - if goarch == "386" { - os.Setenv("GO386", "387") - } + os.Setenv("GOARCH", goarch) wd, err := os.Getwd() if err != nil { log.Println("Warning: can't determine current dir:", err) diff --git a/build.sh b/build.sh index e9070bc3f..fd4a45093 100755 --- a/build.sh +++ b/build.sh @@ -2,7 +2,7 @@ set -euo pipefail IFS=$'\n\t' -DOCKERIMGV=1.4-4 +DOCKERIMGV=1.4-5 case "${1:-default}" in default) @@ -52,9 +52,7 @@ case "${1:-default}" in all) go run build.go -goos linux -goarch amd64 tar go run build.go -goos linux -goarch 386 tar - go run build.go -goos linux -goarch armv5 tar - go run build.go -goos linux -goarch armv6 tar - go run build.go -goos linux -goarch armv7 tar + go run build.go -goos linux -goarch arm tar go run build.go -goos freebsd -goarch amd64 tar go run build.go -goos freebsd -goarch 386 tar diff --git a/docker/Dockerfile b/docker/Dockerfile index 4f88509e3..c8a77ce23 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -17,9 +17,12 @@ RUN curl -sSL https://golang.org/dl/go${GOLANG_VERSION}.linux-amd64.tar.gz \ | tar -v -C /usr/local -xz ENV PATH /usr/local/go/bin:$PATH -RUN mkdir /go ENV GOPATH /go +ENV GO386 387 +ENV GOARM 5 ENV PATH /go/bin:$PATH + +RUN mkdir /go WORKDIR /go # Use gonative to install native Go for most arch/OS combos @@ -45,8 +48,6 @@ RUN bash -xec '\ for platform in linux/386 freebsd/386 windows/386 linux/arm openbsd/amd64 openbsd/386; do \ GOOS=${platform%/*} \ GOARCH=${platform##*/} \ - GOARM=5 \ - GO386=387 \ CGO_ENABLED=0 \ ./make.bash --no-clean 2>&1; \ done \ diff --git a/internal/upgrade/releasename_darwin.go b/internal/upgrade/releasename_darwin.go deleted file mode 100644 index 6ae1c28a3..000000000 --- a/internal/upgrade/releasename_darwin.go +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (C) 2014 The Syncthing Authors. -// -// This program is free software: you can redistribute it and/or modify it -// under the terms of the GNU General Public License as published by the Free -// Software Foundation, either version 3 of the License, or (at your option) -// any later version. -// -// This program is distributed in the hope that it will be useful, but WITHOUT -// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -// more details. -// -// You should have received a copy of the GNU General Public License along -// with this program. If not, see . - -package upgrade - -import ( - "fmt" - "runtime" -) - -func releaseName(tag string) string { - return fmt.Sprintf("syncthing-macosx-%s-%s.", runtime.GOARCH, tag) -} diff --git a/internal/upgrade/releasename_linux_arm.go b/internal/upgrade/releasename_linux_arm.go deleted file mode 100644 index 8f2f64860..000000000 --- a/internal/upgrade/releasename_linux_arm.go +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (C) 2014 The Syncthing Authors. -// -// This program is free software: you can redistribute it and/or modify it -// under the terms of the GNU General Public License as published by the Free -// Software Foundation, either version 3 of the License, or (at your option) -// any later version. -// -// This program is distributed in the hope that it will be useful, but WITHOUT -// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -// more details. -// -// You should have received a copy of the GNU General Public License along -// with this program. If not, see . - -package upgrade - -import ( - "fmt" - "strings" - "syscall" -) - -func releaseName(tag string) string { - return fmt.Sprintf("syncthing-linux-armv%s-%s.", goARM(), tag) -} - -// Get the current ARM architecture version for upgrade purposes. If we can't -// figure it out from the uname, default to ARMv6 (same as Go distribution). -func goARM() string { - var name syscall.Utsname - syscall.Uname(&name) - machine := string(name.Machine[:5]) - if strings.HasPrefix(machine, "armv") { - return machine[4:] - } - return "6" -} diff --git a/internal/upgrade/releasename_other.go b/internal/upgrade/releasename_other.go deleted file mode 100644 index 791cd6180..000000000 --- a/internal/upgrade/releasename_other.go +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (C) 2014 The Syncthing Authors. -// -// This program is free software: you can redistribute it and/or modify it -// under the terms of the GNU General Public License as published by the Free -// Software Foundation, either version 3 of the License, or (at your option) -// any later version. -// -// This program is distributed in the hope that it will be useful, but WITHOUT -// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -// more details. -// -// You should have received a copy of the GNU General Public License along -// with this program. If not, see . - -// +build !arm,!darwin - -package upgrade - -import ( - "fmt" - "runtime" -) - -func releaseName(tag string) string { - return fmt.Sprintf("syncthing-%s-%s-%s.", runtime.GOOS, runtime.GOARCH, tag) -} diff --git a/internal/upgrade/upgrade_common.go b/internal/upgrade/upgrade_common.go index 65a2b92e1..fff0d77fa 100644 --- a/internal/upgrade/upgrade_common.go +++ b/internal/upgrade/upgrade_common.go @@ -18,6 +18,8 @@ package upgrade import ( "errors" + "fmt" + "runtime" "strconv" "strings" @@ -225,3 +227,12 @@ func versionParts(v string) ([]int, []interface{}) { return release, prerelease } + +func releaseName(tag string) string { + switch runtime.GOOS { + case "darwin": + return fmt.Sprintf("syncthing-macosx-%s-%s.", runtime.GOARCH, tag) + default: + return fmt.Sprintf("syncthing-%s-%s-%s.", runtime.GOOS, runtime.GOARCH, tag) + } +}