From 10f80c190b10fd30a86da189a3f63d20fca9f05c Mon Sep 17 00:00:00 2001 From: kolaente Date: Mon, 22 Apr 2019 14:02:18 +0200 Subject: [PATCH] Switched to techknowlogick/xgo --- .drone1.yml | 3 + Makefile | 6 +- go.mod | 4 +- go.sum | 10 + tools.go | 2 +- vendor/modules.txt | 4 +- .../src.techknowlogick.com/xgo/.drone.jsonnet | 53 ++++ vendor/src.techknowlogick.com/xgo/.drone.yml | 289 ++++++++++++++++++ .../xgo/LICENSE | 0 .../xgo/README.md | 25 +- .../xgo/testsuite.go | 12 +- .../xgo/xgo.go | 111 ++++--- 12 files changed, 443 insertions(+), 76 deletions(-) create mode 100644 vendor/src.techknowlogick.com/xgo/.drone.jsonnet create mode 100644 vendor/src.techknowlogick.com/xgo/.drone.yml rename vendor/{github.com/karalabe => src.techknowlogick.com}/xgo/LICENSE (100%) rename vendor/{github.com/karalabe => src.techknowlogick.com}/xgo/README.md (91%) rename vendor/{github.com/karalabe => src.techknowlogick.com}/xgo/testsuite.go (88%) rename vendor/{github.com/karalabe => src.techknowlogick.com}/xgo/xgo.go (80%) diff --git a/.drone1.yml b/.drone1.yml index 20fcb981..58f05089 100644 --- a/.drone1.yml +++ b/.drone1.yml @@ -146,6 +146,7 @@ steps: image: techknowlogick/xgo:latest pull: true commands: + - export PATH=$PATH:$GOPATH/bin - make release-dirs - name: static-build-windows @@ -154,6 +155,7 @@ steps: environment: GOPATH: /srv/app commands: + - export PATH=$PATH:$GOPATH/bin - make release-windows depends_on: [ before-static-build ] @@ -163,6 +165,7 @@ steps: environment: GOPATH: /srv/app commands: + - export PATH=$PATH:$GOPATH/bin - make release-linux depends_on: [ before-static-build ] diff --git a/Makefile b/Makefile index 6e37043f..d4f3a6ef 100644 --- a/Makefile +++ b/Makefile @@ -108,7 +108,7 @@ release-dirs: .PHONY: release-windows release-windows: @hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \ - go install $(GOFLAGS) github.com/karalabe/xgo; \ + go install $(GOFLAGS) src.techknowlogick.com/xgo; \ fi xgo -dest $(DIST)/binaries -tags 'netgo $(TAGS)' -ldflags '-linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'windows/*' -out vikunja-$(VERSION) . ifneq ($(DRONE_WORKSPACE),'') @@ -118,7 +118,7 @@ endif .PHONY: release-linux release-linux: @hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \ - go install $(GOFLAGS) github.com/karalabe/xgo; \ + go install $(GOFLAGS) src.techknowlogick.com/xgo; \ fi xgo -dest $(DIST)/binaries -tags 'netgo $(TAGS)' -ldflags '-linkmode external -extldflags "-static" $(LDFLAGS)' -targets 'linux/*' -out vikunja-$(VERSION) . ifneq ($(DRONE_WORKSPACE),'') @@ -128,7 +128,7 @@ endif .PHONY: release-darwin release-darwin: @hash xgo > /dev/null 2>&1; if [ $$? -ne 0 ]; then \ - go install $(GOFLAGS) github.com/karalabe/xgo; \ + go install $(GOFLAGS) src.techknowlogick.com/xgo; \ fi xgo -dest $(DIST)/binaries -tags 'netgo $(TAGS)' -ldflags '$(LDFLAGS)' -targets 'darwin/*' -out vikunja-$(VERSION) . ifneq ($(DRONE_WORKSPACE),'') diff --git a/go.mod b/go.mod index cb7c25f0..9b0bb2b0 100644 --- a/go.mod +++ b/go.mod @@ -23,6 +23,7 @@ require ( github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf github.com/client9/misspell v0.3.4 + github.com/d4l3k/messagediff v1.2.1 // indirect github.com/dgrijalva/jwt-go v3.2.0+incompatible github.com/fzipp/gocyclo v0.0.0-20150627053110-6acd4345c835 github.com/garyburd/redigo v1.6.0 // indirect @@ -40,7 +41,7 @@ require ( github.com/imdario/mergo v0.3.6 github.com/inconshreveable/mousetrap v1.0.0 // indirect github.com/jgautheron/goconst v0.0.0-20170703170152-9740945f5dcb - github.com/karalabe/xgo v0.0.0-20181007145344-72da7d1d3970 + github.com/karalabe/xgo v0.0.0-20181007145344-72da7d1d3970 // indirect github.com/kisielk/gotool v1.0.0 // indirect github.com/labstack/echo v3.3.10+incompatible github.com/labstack/gommon v0.2.8 @@ -74,5 +75,6 @@ require ( gopkg.in/testfixtures.v2 v2.5.3 gopkg.in/yaml.v2 v2.2.2 // indirect honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a + src.techknowlogick.com/xgo v0.0.0-20190415010919-1502273fab15 src.techknowlogick.com/xormigrate v0.0.0-20190321151057-24497c23c09c ) diff --git a/go.sum b/go.sum index f8bda70b..cffea657 100644 --- a/go.sum +++ b/go.sum @@ -29,9 +29,12 @@ github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLM github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/cweill/gotests v1.5.2 h1:kKqmKmS2wCV3tuLnfpbiuN8OlkosQZTpCfiqmiuNAsA= github.com/cweill/gotests v1.5.3 h1:k3t4wW/x/YNixWZJhUIn+mivmK5iV1tJVOwVYkx0UcU= +github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U= +github.com/d4l3k/messagediff v1.2.1/go.mod h1:Oozbb1TVXFac9FtSIxHBMnBCq2qeH/2KkEQxENCrlLo= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -69,6 +72,7 @@ github.com/go-xorm/core v0.5.8 h1:vQ0ghlVGnlnFmm4SpHY+xNnPlH810paMcw+Hwz9BCqE= github.com/go-xorm/core v0.5.8/go.mod h1:d8FJ9Br8OGyQl12MCclmYBuBqqxsyeedpXciV5Myih8= github.com/go-xorm/core v0.6.0 h1:tp6hX+ku4OD9khFZS8VGBDRY3kfVCtelPfmkgCyHxL0= github.com/go-xorm/core v0.6.0/go.mod h1:d8FJ9Br8OGyQl12MCclmYBuBqqxsyeedpXciV5Myih8= +github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a h1:9wScpmSP5A3Bk8V3XHWUcJmYTh+ZnlHVyc+A4oZYS3Y= github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:56xuuqnHyryaerycW3BfssRdxQstACi0Epw/yC5E2xM= github.com/go-xorm/tests v0.5.6 h1:E4nmVkKfHQAm+i2/pmOJ5JUej6sORVcvwl6/LQybif4= github.com/go-xorm/tests v0.5.6/go.mod h1:s8J/EnVBcXQR93dN7Jy6Dwlo92HUP5nTgKWF1wGeCDg= @@ -92,7 +96,9 @@ github.com/imdario/mergo v0.3.6 h1:xTNEAn+kxVO7dTZGu0CegyqKZmoWFI0rF8UxjlB2d28= github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/jackc/fake v0.0.0-20150926172116-812a484cc733 h1:vr3AYkKovP8uR8AvSGGUK1IDqRa5lAAvEkZG1LKaCRc= github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ= +github.com/jackc/pgx v3.2.0+incompatible h1:0Vihzu20St42/UDsvZGdNE6jak7oi/UOeMzwMPHkgFY= github.com/jackc/pgx v3.2.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I= github.com/jgautheron/goconst v0.0.0-20170703170152-9740945f5dcb h1:D5s1HIu80AcMGcqmk7fNIVptmAubVHHaj3v5Upex6Zs= github.com/jgautheron/goconst v0.0.0-20170703170152-9740945f5dcb/go.mod h1:82TxjOpWQiPmywlbIaB2ZkqJoSYJdLGPgAJDvM3PbKc= @@ -167,7 +173,9 @@ github.com/prometheus/common v0.0.0-20181126121408-4724e9255275 h1:PnBWHBf+6L0jO github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a h1:9a8MnZMP0X2nLJdBg+pBmGgkJlSaKC2KaQmTCk1XDtE= github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24 h1:pntxY8Ary0t43dCZ5dqY4YTJCObLY1kIXl0uzMv+7DE= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= @@ -269,5 +277,7 @@ honnef.co/go/tools v0.0.0-20190215041234-466a0476246c h1:z+UFwlQ7KVwdlQTE5JjvDvf honnef.co/go/tools v0.0.0-20190215041234-466a0476246c/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a h1:LJwr7TCTghdatWv40WobzlKXc9c4s8oGa7QKJUtHhWA= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +src.techknowlogick.com/xgo v0.0.0-20190415010919-1502273fab15 h1:pHKgCq4abc5TAZRZGcSCxuJOTvRwzGfnbZdgTsFDgng= +src.techknowlogick.com/xgo v0.0.0-20190415010919-1502273fab15/go.mod h1:Ood88figJtEukTnU20P1IrXhyAkbOIGi4YzmeHVtGH0= src.techknowlogick.com/xormigrate v0.0.0-20190321151057-24497c23c09c h1:fTwL7EZ3ouk3xeiPiRBYEjSPWTREb9T57bjzpRBNOpQ= src.techknowlogick.com/xormigrate v0.0.0-20190321151057-24497c23c09c/go.mod h1:B2NutmcRaDDw4EGe7DoCwyWCELA8W+KxXPhLtgqFUaU= diff --git a/tools.go b/tools.go index 7f8e5a5a..3b0fe4bd 100644 --- a/tools.go +++ b/tools.go @@ -25,9 +25,9 @@ import ( _ "github.com/cweill/gotests/..." _ "github.com/fzipp/gocyclo" _ "github.com/gordonklaus/ineffassign" - _ "github.com/karalabe/xgo" _ "github.com/swaggo/swag/cmd/swag" _ "golang.org/x/lint/golint" + _ "src.techknowlogick.com/xgo" _ "github.com/jgautheron/goconst/cmd/goconst" _ "honnef.co/go/tools/cmd/staticcheck" diff --git a/vendor/modules.txt b/vendor/modules.txt index c119bb18..d0427486 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -79,8 +79,6 @@ github.com/inconshreveable/mousetrap # github.com/jgautheron/goconst v0.0.0-20170703170152-9740945f5dcb github.com/jgautheron/goconst/cmd/goconst github.com/jgautheron/goconst -# github.com/karalabe/xgo v0.0.0-20181007145344-72da7d1d3970 -github.com/karalabe/xgo # github.com/labstack/echo v3.3.10+incompatible github.com/labstack/echo github.com/labstack/echo/middleware @@ -225,5 +223,7 @@ honnef.co/go/tools/staticcheck/vrp honnef.co/go/tools/go/types/typeutil honnef.co/go/tools/callgraph honnef.co/go/tools/callgraph/static +# src.techknowlogick.com/xgo v0.0.0-20190415010919-1502273fab15 +src.techknowlogick.com/xgo # src.techknowlogick.com/xormigrate v0.0.0-20190321151057-24497c23c09c src.techknowlogick.com/xormigrate diff --git a/vendor/src.techknowlogick.com/xgo/.drone.jsonnet b/vendor/src.techknowlogick.com/xgo/.drone.jsonnet new file mode 100644 index 00000000..7b04ffae --- /dev/null +++ b/vendor/src.techknowlogick.com/xgo/.drone.jsonnet @@ -0,0 +1,53 @@ +local BuildSwitchDryRun(version='go-latest', tags='latest', dry=false) = { + name: if dry then 'dry-run-' + version else 'build-' + version, + pull: 'always', + image: 'plugins/docker', + settings: { + dockerfile: 'docker/' + version + '/Dockerfile', + context: 'docker/' + version, + password: { + from_secret: 'docker_password' + }, + username: { + from_secret: 'docker_username' + }, + repo: 'techknowlogick/xgo', + tags: tags, + dry_run: dry + }, + [if !dry then 'when']: { + branch: ['master'], + event: {exclude: ['pull_request']} + }, + [if dry then 'when']: { + event: {include: ['pull_request']} + }, +}; + +local BuildWithDiffTags(version='go-latest', tags='latest') = BuildSwitchDryRun(version, tags, false); +local BuildWithDiffTagsDry(version='go-latest', tags='latest') = BuildSwitchDryRun(version, tags, true); +local BuildStep(version='go-latest') = BuildWithDiffTags(version, version); +local BuildStepDry(version='go-latest') = BuildSwitchDryRun(version, version, true); + +{ +kind: 'pipeline', +name: 'default', +steps: [ + BuildStepDry('base'), + BuildStepDry('go-1.12.4'), + BuildStepDry('go-1.11.9'), + + BuildStep('base'), + BuildStep('go-1.12.4'), + BuildStep('go-1.12.x'), + BuildWithDiffTags(), + BuildStep('go-1.11.9'), + BuildStep('go-1.11.x'), + BuildStep('go-1.12.3'), + BuildStep('go-1.12.2'), + BuildStep('go-1.12.1'), + BuildStep('go-1.12.0'), + BuildStep('go-1.11.8'), + BuildStep('go-1.11.7'), +] +} diff --git a/vendor/src.techknowlogick.com/xgo/.drone.yml b/vendor/src.techknowlogick.com/xgo/.drone.yml new file mode 100644 index 00000000..b7b93242 --- /dev/null +++ b/vendor/src.techknowlogick.com/xgo/.drone.yml @@ -0,0 +1,289 @@ +--- +kind: pipeline +name: default + +platform: + os: linux + arch: amd64 + +steps: +- name: dry-run-base + pull: always + image: plugins/docker + settings: + context: docker/base + dockerfile: docker/base/Dockerfile + dry_run: true + password: + from_secret: docker_password + repo: techknowlogick/xgo + tags: base + username: + from_secret: docker_username + when: + event: + - pull_request + +- name: dry-run-go-1.12.4 + pull: always + image: plugins/docker + settings: + context: docker/go-1.12.4 + dockerfile: docker/go-1.12.4/Dockerfile + dry_run: true + password: + from_secret: docker_password + repo: techknowlogick/xgo + tags: go-1.12.4 + username: + from_secret: docker_username + when: + event: + - pull_request + +- name: dry-run-go-1.11.9 + pull: always + image: plugins/docker + settings: + context: docker/go-1.11.9 + dockerfile: docker/go-1.11.9/Dockerfile + dry_run: true + password: + from_secret: docker_password + repo: techknowlogick/xgo + tags: go-1.11.9 + username: + from_secret: docker_username + when: + event: + - pull_request + +- name: build-base + pull: always + image: plugins/docker + settings: + context: docker/base + dockerfile: docker/base/Dockerfile + password: + from_secret: docker_password + repo: techknowlogick/xgo + tags: base + username: + from_secret: docker_username + when: + branch: + - master + event: + exclude: + - pull_request + +- name: build-go-1.12.4 + pull: always + image: plugins/docker + settings: + context: docker/go-1.12.4 + dockerfile: docker/go-1.12.4/Dockerfile + password: + from_secret: docker_password + repo: techknowlogick/xgo + tags: go-1.12.4 + username: + from_secret: docker_username + when: + branch: + - master + event: + exclude: + - pull_request + +- name: build-go-1.12.x + pull: always + image: plugins/docker + settings: + context: docker/go-1.12.x + dockerfile: docker/go-1.12.x/Dockerfile + password: + from_secret: docker_password + repo: techknowlogick/xgo + tags: go-1.12.x + username: + from_secret: docker_username + when: + branch: + - master + event: + exclude: + - pull_request + +- name: build-go-latest + pull: always + image: plugins/docker + settings: + context: docker/go-latest + dockerfile: docker/go-latest/Dockerfile + password: + from_secret: docker_password + repo: techknowlogick/xgo + tags: latest + username: + from_secret: docker_username + when: + branch: + - master + event: + exclude: + - pull_request + +- name: build-go-1.11.9 + pull: always + image: plugins/docker + settings: + context: docker/go-1.11.9 + dockerfile: docker/go-1.11.9/Dockerfile + password: + from_secret: docker_password + repo: techknowlogick/xgo + tags: go-1.11.9 + username: + from_secret: docker_username + when: + branch: + - master + event: + exclude: + - pull_request + +- name: build-go-1.11.x + pull: always + image: plugins/docker + settings: + context: docker/go-1.11.x + dockerfile: docker/go-1.11.x/Dockerfile + password: + from_secret: docker_password + repo: techknowlogick/xgo + tags: go-1.11.x + username: + from_secret: docker_username + when: + branch: + - master + event: + exclude: + - pull_request + +- name: build-go-1.12.3 + pull: always + image: plugins/docker + settings: + context: docker/go-1.12.3 + dockerfile: docker/go-1.12.3/Dockerfile + password: + from_secret: docker_password + repo: techknowlogick/xgo + tags: go-1.12.3 + username: + from_secret: docker_username + when: + branch: + - master + event: + exclude: + - pull_request + +- name: build-go-1.12.2 + pull: always + image: plugins/docker + settings: + context: docker/go-1.12.2 + dockerfile: docker/go-1.12.2/Dockerfile + password: + from_secret: docker_password + repo: techknowlogick/xgo + tags: go-1.12.2 + username: + from_secret: docker_username + when: + branch: + - master + event: + exclude: + - pull_request + +- name: build-go-1.12.1 + pull: always + image: plugins/docker + settings: + context: docker/go-1.12.1 + dockerfile: docker/go-1.12.1/Dockerfile + password: + from_secret: docker_password + repo: techknowlogick/xgo + tags: go-1.12.1 + username: + from_secret: docker_username + when: + branch: + - master + event: + exclude: + - pull_request + +- name: build-go-1.12.0 + pull: always + image: plugins/docker + settings: + context: docker/go-1.12.0 + dockerfile: docker/go-1.12.0/Dockerfile + password: + from_secret: docker_password + repo: techknowlogick/xgo + tags: go-1.12.0 + username: + from_secret: docker_username + when: + branch: + - master + event: + exclude: + - pull_request + +- name: build-go-1.11.8 + pull: always + image: plugins/docker + settings: + context: docker/go-1.11.8 + dockerfile: docker/go-1.11.8/Dockerfile + password: + from_secret: docker_password + repo: techknowlogick/xgo + tags: go-1.11.8 + username: + from_secret: docker_username + when: + branch: + - master + event: + exclude: + - pull_request + +- name: build-go-1.11.7 + pull: always + image: plugins/docker + settings: + context: docker/go-1.11.7 + dockerfile: docker/go-1.11.7/Dockerfile + password: + from_secret: docker_password + repo: techknowlogick/xgo + tags: go-1.11.7 + username: + from_secret: docker_username + when: + branch: + - master + event: + exclude: + - pull_request + +... diff --git a/vendor/github.com/karalabe/xgo/LICENSE b/vendor/src.techknowlogick.com/xgo/LICENSE similarity index 100% rename from vendor/github.com/karalabe/xgo/LICENSE rename to vendor/src.techknowlogick.com/xgo/LICENSE diff --git a/vendor/github.com/karalabe/xgo/README.md b/vendor/src.techknowlogick.com/xgo/README.md similarity index 91% rename from vendor/github.com/karalabe/xgo/README.md rename to vendor/src.techknowlogick.com/xgo/README.md index ed4269c0..10d3fd1c 100644 --- a/vendor/github.com/karalabe/xgo/README.md +++ b/vendor/src.techknowlogick.com/xgo/README.md @@ -38,12 +38,12 @@ a single command to compile a Go package to various platforms and architectures. Although you could build the container manually, it is available as an automatic trusted build from Docker's container registry (not insignificant in size): - docker pull karalabe/xgo-latest + docker pull techknowlogick/xgo:latest To prevent having to remember a potentially complex Docker command every time, a lightweight Go wrapper was written on top of it. - go get github.com/karalabe/xgo + go get src.techknowlogick.com/xgo ## Usage @@ -202,8 +202,6 @@ versions of the same operating system. This however can lead to issues if a used dependency is only supported by more recent systems. As such, `xgo` supports the selection of specific platform versions by appending them to the OS target string. - * `--targets=ios-8.1/*`: cross compile to iOS 8.1 - * `--targets=android-16/*`: cross compile to Android Jelly Bean * `--targets=darwin-10.9/*`: cross compile to Mac OS X Mavericks * `--targets=windows-6.0/*`: cross compile to Windows Vista @@ -211,24 +209,7 @@ The supported platforms are: * All Android APIs up to Android Lollipop 5.0 ([API level ids](https://source.android.com/source/build-numbers.html)) * All Windows APIs up to Windows 8.1 limited by `mingw-w64` ([API level ids](https://en.wikipedia.org/wiki/Windows_NT#Releases)) - * OSX APIs in the range of 10.6 - 10.11 - * All iOS APIs up to iOS 9.3 - -### Mobile libraries - -Apart from the usual runnable binaries, `xgo` also supports building library -archives for Android (`android/aar`) and iOS (`ios/framework`). Opposed to -`gomobile` however `xgo` does not derive library APIs from the Go code, so -proper CGO C external methods must be defined within the package. - -In the case of Android archives, all architectures will be bundled that are -supported by the requested Android platform version. For iOS frameworks `xgo` -will bundle armv7 and arm64 by default, and also the x86_64 simulator builds -if the iPhoneSimulator.sdk was injected by the user: - -* Create a new docker image based on xgo: `FROM karalabe/xgo-latest` -* Inject the simulator SDK: `ADD iPhoneSimulator9.3.sdk.tar.xz /iPhoneSimulator9.3.sdk.tar.xz` -* Bootstrap the simulator SDK: `$UPDATE_IOS /iPhoneSimulator9.3.sdk.tar.xz` + * OSX APIs in the range of 10.6 - 10.14 ### CGO dependencies diff --git a/vendor/github.com/karalabe/xgo/testsuite.go b/vendor/src.techknowlogick.com/xgo/testsuite.go similarity index 88% rename from vendor/github.com/karalabe/xgo/testsuite.go rename to vendor/src.techknowlogick.com/xgo/testsuite.go index b03b7fee..05ba41d2 100644 --- a/vendor/github.com/karalabe/xgo/testsuite.go +++ b/vendor/src.techknowlogick.com/xgo/testsuite.go @@ -26,11 +26,10 @@ var layers = []struct { tag string dir string }{ - {"karalabe/xgo-base", "base"}, - {"karalabe/xgo-1.6.2", "go-1.6.2"}, - {"karalabe/xgo-1.6.x", "go-1.6.x"}, - {"karalabe/xgo-latest", "go-latest"}, - //{"karalabe/xgo-latest-ios", "go-latest-ios"}, // Non-public layer (XCode licensing) + {"techknowlogick/xgo:base", "base"}, + {"techknowlogick/xgo:1.12.4", "go-1.12.4"}, + {"techknowlogick/xgo:1.12.x", "go-1.12.x"}, + {"techknowlogick/xgo:latest", "go-latest"}, } // tests defaines all the input test cases and associated arguments the cross @@ -44,12 +43,11 @@ var tests = []struct { {"github.com/karalabe/xgo/tests/embedded_cpp", nil}, // Baseline projects to ensure minimal requirements - //{"github.com/project-iris/iris", nil}, // Deps failed, disable {"github.com/ethereum/go-ethereum/cmd/geth", []string{"--branch", "develop"}}, // Third party projects using xgo, smoke test that they don't break {"github.com/rwcarlsen/cyan/cmd/cyan", nil}, - {"github.com/cockroachdb/cockroach", []string{"--targets", "darwin-10.11/amd64"}}, + {"github.com/cockroachdb/cockroach", []string{"--targets", "darwin-10.6/amd64"}}, } func main() { diff --git a/vendor/github.com/karalabe/xgo/xgo.go b/vendor/src.techknowlogick.com/xgo/xgo.go similarity index 80% rename from vendor/github.com/karalabe/xgo/xgo.go rename to vendor/src.techknowlogick.com/xgo/xgo.go index b2bae9ce..efd168be 100644 --- a/vendor/github.com/karalabe/xgo/xgo.go +++ b/vendor/src.techknowlogick.com/xgo/xgo.go @@ -4,7 +4,7 @@ // Released under the MIT license. // Wrapper around the GCO cross compiler docker container. -package main +package main // import "src.techknowlogick.com/xgo" import ( "bytes" @@ -39,8 +39,8 @@ func init() { } // Cross compilation docker containers -var dockerBase = "karalabe/xgo-base" -var dockerDist = "karalabe/xgo-" +var dockerBase = "techknowlogick/xgo:base" +var dockerDist = "techknowlogick/xgo:" // Command line arguments to fine tune the compilation var ( @@ -233,49 +233,58 @@ func pullDockerImage(image string) error { func compile(image string, config *ConfigFlags, flags *BuildFlags, folder string) error { // If a local build was requested, find the import path and mount all GOPATH sources locals, mounts, paths := []string{}, []string{}, []string{} + var usesModules bool if strings.HasPrefix(config.Repository, string(filepath.Separator)) || strings.HasPrefix(config.Repository, ".") { // Resolve the repository import path from the file path config.Repository = resolveImportPath(config.Repository) + // Determine if this is a module-based repository + var modFile = config.Repository + "/go.mod" + _, err := os.Stat(modFile) + usesModules = !os.IsNotExist(err) + // Iterate over all the local libs and export the mount points - if os.Getenv("GOPATH") == "" { + if os.Getenv("GOPATH") == "" && !usesModules { log.Fatalf("No $GOPATH is set or forwarded to xgo") } - for _, gopath := range strings.Split(os.Getenv("GOPATH"), string(os.PathListSeparator)) { - // Since docker sandboxes volumes, resolve any symlinks manually - sources := filepath.Join(gopath, "src") - filepath.Walk(sources, func(path string, info os.FileInfo, err error) error { - // Skip any folders that errored out - if err != nil { - log.Printf("Failed to access GOPATH element %s: %v", path, err) + if !usesModules { + for _, gopath := range strings.Split(os.Getenv("GOPATH"), string(os.PathListSeparator)) { + // Since docker sandboxes volumes, resolve any symlinks manually + sources := filepath.Join(gopath, "src") + filepath.Walk(sources, func(path string, info os.FileInfo, err error) error { + // Skip any folders that errored out + if err != nil { + log.Printf("Failed to access GOPATH element %s: %v", path, err) + return nil + } + // Skip anything that's not a symlink + if info.Mode()&os.ModeSymlink == 0 { + return nil + } + // Resolve the symlink and skip if it's not a folder + target, err := filepath.EvalSymlinks(path) + if err != nil { + return nil + } + if info, err = os.Stat(target); err != nil || !info.IsDir() { + return nil + } + // Skip if the symlink points within GOPATH + if filepath.HasPrefix(target, sources) { + return nil + } + + // Folder needs explicit mounting due to docker symlink security + locals = append(locals, target) + mounts = append(mounts, filepath.Join("/ext-go", strconv.Itoa(len(locals)), "src", strings.TrimPrefix(path, sources))) + paths = append(paths, filepath.Join("/ext-go", strconv.Itoa(len(locals)))) return nil - } - // Skip anything that's not a symlink - if info.Mode()&os.ModeSymlink == 0 { - return nil - } - // Resolve the symlink and skip if it's not a folder - target, err := filepath.EvalSymlinks(path) - if err != nil { - return nil - } - if info, err = os.Stat(target); err != nil || !info.IsDir() { - return nil - } - // Skip if the symlink points within GOPATH - if filepath.HasPrefix(target, sources) { - return nil - } - // Folder needs explicit mounting due to docker symlink security - locals = append(locals, target) - mounts = append(mounts, filepath.Join("/ext-go", strconv.Itoa(len(locals)), "src", strings.TrimPrefix(path, sources))) + }) + // Export the main mount point for this GOPATH entry + locals = append(locals, sources) + mounts = append(mounts, filepath.Join("/ext-go", strconv.Itoa(len(locals)), "src")) paths = append(paths, filepath.Join("/ext-go", strconv.Itoa(len(locals)))) - return nil - }) - // Export the main mount point for this GOPATH entry - locals = append(locals, sources) - mounts = append(mounts, filepath.Join("/ext-go", strconv.Itoa(len(locals)), "src")) - paths = append(paths, filepath.Join("/ext-go", strconv.Itoa(len(locals)))) + } } } // Assemble and run the cross compilation command @@ -299,10 +308,32 @@ func compile(image string, config *ConfigFlags, flags *BuildFlags, folder string "-e", fmt.Sprintf("FLAG_BUILDMODE=%s", flags.Mode), "-e", "TARGETS=" + strings.Replace(strings.Join(config.Targets, " "), "*", ".", -1), } - for i := 0; i < len(locals); i++ { - args = append(args, []string{"-v", fmt.Sprintf("%s:%s:ro", locals[i], mounts[i])}...) + if usesModules { + args = append(args, []string{"-e", "GO111MODULE=on"}...) + args = append(args, []string{"-v", os.Getenv("GOPATH") + ":/go"}...) + + // Map this repository to the /source folder + absRepository, err := filepath.Abs(config.Repository) + if err != nil { + log.Fatalf("Failed to locate requested module repository: %v.", err) + } + args = append(args, []string{"-v", absRepository + ":/source"}...) + + fmt.Printf("Enabled Go module support\n") + + // Check whether it has a vendor folder, and if so, use it + vendorPath := absRepository + "/vendor" + vendorfolder, err := os.Stat(vendorPath) + if !os.IsNotExist(err) && vendorfolder.Mode().IsDir() { + args = append(args, []string{"-e", "FLAG_MOD=vendor"}...) + fmt.Printf("Using vendored Go module dependencies\n") + } + } else { + for i := 0; i < len(locals); i++ { + args = append(args, []string{"-v", fmt.Sprintf("%s:%s:ro", locals[i], mounts[i])}...) + } + args = append(args, []string{"-e", "EXT_GOPATH=" + strings.Join(paths, ":")}...) } - args = append(args, []string{"-e", "EXT_GOPATH=" + strings.Join(paths, ":")}...) args = append(args, []string{image, config.Repository}...) return run(exec.Command("docker", args...))