aboutsummaryrefslogtreecommitdiff
path: root/meta
diff options
context:
space:
mode:
authorJakob Borg <jakob@kastelo.net>2017-07-11 07:57:58 +0000
committerSimon Frei <freisim93@gmail.com>2017-07-11 07:57:58 +0000
commit7c8418f493398aea5d5c3c4cdbd3b4e46762b56a (patch)
treedf85630de3af70685d3c27c1c31ec2c7abbc7872 /meta
parent200a7fc844895ad4f12cce66bf54deff9583460d (diff)
downloadsyncthing-7c8418f493398aea5d5c3c4cdbd3b4e46762b56a.tar.gz
syncthing-7c8418f493398aea5d5c3c4cdbd3b4e46762b56a.zip
build: Support builds outside of GOPATH
This adds support for building with the source placed anywhere and no GOPATH set. The build script handles this by creating a temporary GOPATH in the system temp dir (or another specified location) and mirroring the source there before building. The resulting binaries etc still end up in the same place as usual, meaning at least the "build", "install", "tar", "zip", "deb", "snap", "test", "vet", "lint", "metalint" and "clean" commands work without a GOPATH. To this end these commands internally use fully qualified package paths like "github.com/syncthing/syncthing/cmd/..." instead of "./cmd/..." like before. There is a new command "gopath" that prepares and echoes the directory of the temporary GOPATH. This can be used to run other non-build go commands: export GOPATH=$(go run build.go gopath) // GOPATH is now set go test -v -race github.com/syncthing/syncthing/cmd/... There is a new option "-no-build-gopath" that prevents the check-and-copy step, instead assuming the temporary GOPATH is already created and up to date. This is a performance optimization for build servers running multiple builds commands in sequence: go run build.go gopath // creates a temporary GOPATH go run build.go -no-build-gopath -goos=... tar // reuses GOPATH go run build.go -no-build-gopath -goos=... tar // reuses GOPATH The temporary GOPATH is placed in the system temporary directory (os.TempDir()) unless overridden by the STTMPDIR variable. It is named after the hash of the current directory where build.go is run. The reason for this is that the name should be unique to a source checkout without risk for conflict, but still persistent between runs of build.go. GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/4253 LGTM: AudriusButkevicius, imsodin
Diffstat (limited to 'meta')
-rw-r--r--meta/metalint_test.go7
1 files changed, 6 insertions, 1 deletions
diff --git a/meta/metalint_test.go b/meta/metalint_test.go
index 24cf47f24..6113a5836 100644
--- a/meta/metalint_test.go
+++ b/meta/metalint_test.go
@@ -35,7 +35,12 @@ var (
}
// Which parts of the tree to lint
- lintDirs = []string{".", "../script/...", "../lib/...", "../cmd/..."}
+ lintDirs = []string{
+ ".",
+ "../cmd/...",
+ "../lib/...",
+ "../script/...",
+ }
// Messages to ignore
lintExcludes = []string{