aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWei-Ning Huang <w@dexon.org>2019-04-12 18:14:43 +0800
committerWei-Ning Huang <w@byzantine-lab.io>2019-06-15 22:09:55 +0800
commit4ad9119a92ea63b0568f1100729a8cf377adfe2a (patch)
tree93578b9ee96c4ca3f68e639ef9321dd1e334e946
parentd5daf97dba3156ef9adbf129a9d1e276f80d1095 (diff)
downloadgo-tangerine-4ad9119a92ea63b0568f1100729a8cf377adfe2a.tar.gz
go-tangerine-4ad9119a92ea63b0568f1100729a8cf377adfe2a.tar.zst
go-tangerine-4ad9119a92ea63b0568f1100729a8cf377adfe2a.zip
build: disable static built by default (#359)
-rw-r--r--.travis.yml163
-rw-r--r--Dockerfile2
-rw-r--r--Dockerfile.alltools2
-rw-r--r--build/ci.go22
-rw-r--r--vendor/github.com/dexon-foundation/bls/ffi/go/bls/bls.go2
5 files changed, 35 insertions, 156 deletions
diff --git a/.travis.yml b/.travis.yml
index 4e33d4f0f..e152368e7 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -32,12 +32,11 @@ matrix:
- ulimit -n
- unset -f cd # workaround for https://github.com/travis-ci/travis-ci/issues/8703
- make libbls
- - PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig go run build/ci.go install
+ - go run build/ci.go install
- travis_retry go run build/ci.go test -coverage $TEST_PACKAGES
addons:
homebrew:
packages:
- - openssl
- gmp
# This builder only tests code linters on latest version of Go
@@ -51,6 +50,7 @@ matrix:
script:
- go run build/ci.go lint
+ # Smoke test
- os: linux
dist: xenial
go: 1.12.x
@@ -70,138 +70,22 @@ matrix:
- cd ..
- ./build/recovery-test.sh
- # This builder does the Ubuntu PPA upload
- #- if: type = push
- # os: linux
- # dist: xenial
- # go: 1.12.x
- # env:
- # - ubuntu-ppa
- # git:
- # submodules: false # avoid cloning ethereum/tests
- # addons:
- # apt:
- # packages:
- # - devscripts
- # - debhelper
- # - dput
- # - fakeroot
- # script:
- # - go run build/ci.go debsrc -signer "Go Ethereum Linux Builder <geth-ci@ethereum.org>" -upload ppa:ethereum/ethereum
-
# This builder does the Linux GCP uploads
- #- if: type = push
- # os: linux
- # dist: xenial
- # sudo: required
- # go: 1.12.x
- # env:
- # - gcp-linux
- # git:
- # submodules: false
- # addons:
- # apt:
- # packages:
- # - gcc-multilib
- # script:
- # - make libbls
- # - go run build/ci.go install
- # - go run build/ci.go archive -type tar -signer LINUX_SIGNING_KEY -upload dexon-builds
- # - ./build/bls-arm64.sh
- # - go run build/ci.go install -arch arm64 -cc aarch64-linux-gnu-gcc
- # - go run build/ci.go archive -arch arm64 -type tar -signer LINUX_SIGNING_KEY -upload
- # dexon-builds
- # BLS lib does not support 32-bit platform
- # - go run build/ci.go install -arch 386
- # - go run build/ci.go archive -arch 386 -type tar -signer LINUX_SIGNING_KEY -upload
- # dexon-builds
- # - sudo -E apt-get -yq --no-install-suggests --no-install-recommends --force-yes
- # install gcc-arm-linux-gnueabi libc6-dev-armel-cross gcc-arm-linux-gnueabihf
- # libc6-dev-armhf-cross gcc-aarch64-linux-gnu libc6-dev-arm64-cross
- # - sudo ln -s /usr/include/asm-generic /usr/include/asm
- # - GOARM=5 go run build/ci.go install -arch arm -cc arm-linux-gnueabi-gcc
- # - GOARM=5 go run build/ci.go archive -arch arm -type tar -signer LINUX_SIGNING_KEY
- # -upload dexon-builds
- # - GOARM=6 go run build/ci.go install -arch arm -cc arm-linux-gnueabi-gcc
- # - GOARM=6 go run build/ci.go archive -arch arm -type tar -signer LINUX_SIGNING_KEY
- # -upload dexon-builds
- # - GOARM=7 go run build/ci.go install -arch arm -cc arm-linux-gnueabihf-gcc
- # - GOARM=7 go run build/ci.go archive -arch arm -type tar -signer LINUX_SIGNING_KEY
- # -upload dexon-builds
- #- if: type = push
- # os: linux
- # dist: xenial
- # services:
- # - docker
- # go: 1.12.x
- # env:
- # - gcp-linux-mips
- # git:
- # submodules: false
- # script:
- # - make libbls
- # - go run build/ci.go xgo --alltools -- --targets=linux/mips --ldflags '-extldflags
- # "-static"' -v
- # - for bin in build/bin/*-linux-mips; do mv -f "${bin}" "${bin/-linux-mips/}";
- # done
- # - go run build/ci.go archive -arch mips -type tar -signer LINUX_SIGNING_KEY -upload
- # dexon-builds
- # - go run build/ci.go xgo --alltools -- --targets=linux/mipsle --ldflags '-extldflags
- # "-static"' -v
- # - for bin in build/bin/*-linux-mipsle; do mv -f "${bin}" "${bin/-linux-mipsle/}";
- # done
- # - go run build/ci.go archive -arch mipsle -type tar -signer LINUX_SIGNING_KEY
- # -upload dexon-builds
- # - go run build/ci.go xgo --alltools -- --targets=linux/mips64 --ldflags '-extldflags
- # "-static"' -v
- # - for bin in build/bin/*-linux-mips64; do mv -f "${bin}" "${bin/-linux-mips64/}";
- # done
- # - go run build/ci.go archive -arch mips64 -type tar -signer LINUX_SIGNING_KEY
- # -upload dexon-builds
- # - go run build/ci.go xgo --alltools -- --targets=linux/mips64le --ldflags '-extldflags
- # "-static"' -v
- # - for bin in build/bin/*-linux-mips64le; do mv -f "${bin}" "${bin/-linux-mips64le/}";
- # done
- # - go run build/ci.go archive -arch mips64le -type tar -signer LINUX_SIGNING_KEY
- # -upload dexon-builds
- #- if: type = push
- # os: linux
- # dist: xenial
- # addons:
- # apt:
- # packages:
- # - oracle-java8-installer
- # - oracle-java8-set-default
- # language: android
- # android:
- # components:
- # - platform-tools
- # - tools
- # - android-15
- # - android-19
- # - android-24
- # env:
- # - gcp-android
- # - maven-android
- # git:
- # submodules: false
- # before_install:
- # - curl https://storage.googleapis.com/golang/go1.11.1.linux-amd64.tar.gz | tar
- # -xz
- # - export PATH=`pwd`/go/bin:$PATH
- # - export GOROOT=`pwd`/go
- # - export GOPATH=$HOME/go
- # script:
- # - make libbls
- # - curl https://dl.google.com/android/repository/android-ndk-r17b-linux-x86_64.zip
- # -o android-ndk-r17b.zip
- # - unzip -q android-ndk-r17b.zip && rm android-ndk-r17b.zip
- # - mv android-ndk-r17b $HOME
- # - export ANDROID_NDK=$HOME/android-ndk-r17b
- # - mkdir -p $GOPATH/src/github.com/dexon-foundation/dexon
- # - ln -s `pwd` $GOPATH/src/github.com/dexon-foundation/dexon
- # - go run build/ci.go aar -signer ANDROID_SIGNING_KEY -deploy https://oss.sonatype.org
- # -upload dexon-builds
+ - if: type = push
+ os: linux
+ dist: xenial
+ sudo: required
+ go: 1.12.x
+ env:
+ - gcp-linux
+ git:
+ submodules: false
+ script:
+ - make libbls
+ - go run build/ci.go install
+ - go run build/ci.go archive -type tar -signer LINUX_SIGNING_KEY -upload dexon-builds
+
+ # OSX uploads
- if: type = push
os: osx
go: 1.12.x
@@ -213,24 +97,13 @@ matrix:
submodules: false
script:
- make libbls
- - PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig go run build/ci.go install
+ - go run build/ci.go install -cc musl-gcc
- go run build/ci.go archive -type tar -signer OSX_SIGNING_KEY -upload dexon-builds
addons:
homebrew:
packages:
- - openssl
- gmp
- # - gem uninstall cocoapods -a -x
- # - gem install cocoapods
- # - mv ~/.cocoapods/repos/master ~/.cocoapods/repos/master.bak
- # - sed -i '.bak' 's/repo.join/!repo.join/g' $(dirname `gem which cocoapods`)/cocoapods/sources_manager.rb
- # - if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then git clone --depth=1 https://github.com/CocoaPods/Specs.git
- # ~/.cocoapods/repos/master && pod setup --verbose; fi
- # - xctool -version
- # - xcrun simctl list
- # - export CGO_CFLAGS_ALLOW='-fmodules|-fblocks|-fobjc-arc'
- # - go run build/ci.go xcode -signer IOS_SIGNING_KEY -deploy trunk -upload dexon-builds
- if: type = cron
os: linux
dist: xenial
diff --git a/Dockerfile b/Dockerfile
index 89bf55ecc..161d441d7 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -9,7 +9,7 @@ RUN cd /dexon && build/env.sh go build -o build/bin/bootnode ./cmd/bootnode
# Pull Gdex into a second stage deploy alpine container
FROM alpine:latest
-RUN apk add --no-cache ca-certificates curl
+RUN apk add --no-cache ca-certificates curl libstdc++ gmp
COPY --from=builder /dexon/build/bin/gdex /usr/local/bin/
COPY --from=builder /dexon/build/bin/bootnode /usr/local/bin/
diff --git a/Dockerfile.alltools b/Dockerfile.alltools
index 1809f797d..6a55c7717 100644
--- a/Dockerfile.alltools
+++ b/Dockerfile.alltools
@@ -9,6 +9,8 @@ RUN cd /dexon && make clean && DOCKER=alpine make all
# Pull all binaries into a second stage deploy alpine container
FROM alpine:latest
+RUN apk add --no-cache gmp
+
COPY --from=builder /dexon/build/bin/* /usr/local/bin/
EXPOSE 8545 8546 30303 30303/udp
diff --git a/build/ci.go b/build/ci.go
index 280dd8f8a..044a9d80d 100644
--- a/build/ci.go
+++ b/build/ci.go
@@ -207,8 +207,9 @@ func main() {
func doInstall(cmdline []string) {
var (
- arch = flag.String("arch", "", "Architecture to cross build for")
- cc = flag.String("cc", "", "C compiler to cross build with")
+ arch = flag.String("arch", "", "Architecture to cross build for")
+ cc = flag.String("cc", "", "C compiler to cross build with")
+ static = flag.Bool("static", false, "Build static binaries")
)
flag.CommandLine.Parse(cmdline)
env := build.Env()
@@ -235,7 +236,7 @@ func doInstall(cmdline []string) {
packages = build.ExpandPackagesNoVendor(packages)
if *arch == "" || *arch == runtime.GOARCH {
- goinstall := goTool("install", buildFlags(env)...)
+ goinstall := goTool("install", buildFlags(env, *static)...)
goinstall.Args = append(goinstall.Args, "-v")
goinstall.Args = append(goinstall.Args, packages...)
build.MustRun(goinstall)
@@ -249,7 +250,7 @@ func doInstall(cmdline []string) {
}
}
// Seems we are cross compiling, work around forbidden GOBIN
- goinstall := goToolArch(*arch, *cc, "install", buildFlags(env)...)
+ goinstall := goToolArch(*arch, *cc, "install", buildFlags(env, *static)...)
goinstall.Args = append(goinstall.Args, "-v")
goinstall.Args = append(goinstall.Args, []string{"-buildmode", "archive"}...)
goinstall.Args = append(goinstall.Args, packages...)
@@ -263,7 +264,7 @@ func doInstall(cmdline []string) {
}
for name := range pkgs {
if name == "main" {
- gobuild := goToolArch(*arch, *cc, "build", buildFlags(env)...)
+ gobuild := goToolArch(*arch, *cc, "build", buildFlags(env, *static)...)
gobuild.Args = append(gobuild.Args, "-v")
gobuild.Args = append(gobuild.Args, []string{"-o", executablePath(cmd.Name())}...)
gobuild.Args = append(gobuild.Args, "."+string(filepath.Separator)+filepath.Join("cmd", cmd.Name()))
@@ -275,7 +276,7 @@ func doInstall(cmdline []string) {
}
}
-func buildFlags(env build.Environment) (flags []string) {
+func buildFlags(env build.Environment, static bool) (flags []string) {
var ld []string
if env.Commit != "" {
ld = append(ld, "-X", "main.gitCommit="+env.Commit)
@@ -287,6 +288,9 @@ func buildFlags(env build.Environment) (flags []string) {
if len(ld) > 0 {
flags = append(flags, "-ldflags", strings.Join(ld, " "))
}
+ if static {
+ flags = append(flags, "-tags", "static")
+ }
return flags
}
@@ -342,7 +346,7 @@ func doTest(cmdline []string) {
// Run the actual tests.
// Test a single package at a time. CI builders are slow
// and some tests run into timeouts under load.
- gotest := goTool("test", buildFlags(env)...)
+ gotest := goTool("test", buildFlags(env, false)...)
gotest.Args = append(gotest.Args, "-p", "1", "-timeout", "5m")
if *coverage {
gotest.Args = append(gotest.Args, "-covermode=atomic", "-cover")
@@ -351,7 +355,7 @@ func doTest(cmdline []string) {
gotest.Args = append(gotest.Args, packages...)
build.MustRun(gotest)
- gotestForLegacyEvm := goTool("test", buildFlags(env)...)
+ gotestForLegacyEvm := goTool("test", buildFlags(env, false)...)
gotestForLegacyEvm.Args = append(gotestForLegacyEvm.Args, "-p", "1", "-timeout", "10m")
if *coverage {
gotestForLegacyEvm.Args = append(gotestForLegacyEvm.Args, "-covermode=atomic", "-cover")
@@ -1033,7 +1037,7 @@ func doXgo(cmdline []string) {
build.MustRun(gogetxgo)
// If all tools building is requested, build everything the builder wants
- args := append(buildFlags(env), flag.Args()...)
+ args := append(buildFlags(env, false), flag.Args()...)
if *alltools {
args = append(args, []string{"--dest", GOBIN}...)
diff --git a/vendor/github.com/dexon-foundation/bls/ffi/go/bls/bls.go b/vendor/github.com/dexon-foundation/bls/ffi/go/bls/bls.go
index c83a4e658..56bf08039 100644
--- a/vendor/github.com/dexon-foundation/bls/ffi/go/bls/bls.go
+++ b/vendor/github.com/dexon-foundation/bls/ffi/go/bls/bls.go
@@ -11,7 +11,7 @@ package bls
#cgo !bn256,!bn384,!bn384_256 LDFLAGS:${SRCDIR}/../../../lib/libbls384.a
#cgo CFLAGS:-I${SRCDIR}/../../../include -I${SRCDIR}/../../../../mcl/include
#cgo LDFLAGS:${SRCDIR}/../../../../mcl/lib/libmcl.a -lgmpxx -lgmp
-#cgo linux LDFLAGS:-static
+#cgo static LDFLAGS:-static
typedef unsigned int (*ReadRandFunc)(void *, void *, unsigned int);
int wrapReadRandCgo(void *self, void *buf, unsigned int n);
#include <bls/bls.h>