2014-03-17 17:15:59 +00:00
|
|
|
#!/usr/bin/env bash
|
2014-08-13 20:27:16 +00:00
|
|
|
set -euo pipefail
|
|
|
|
IFS=$'\n\t'
|
2013-12-21 23:16:49 +00:00
|
|
|
|
2015-01-21 23:59:08 +00:00
|
|
|
STTRACE=${STTRACE:-}
|
2014-11-19 11:02:47 +00:00
|
|
|
|
2015-08-12 21:04:19 +00:00
|
|
|
script() {
|
|
|
|
name="$1"
|
|
|
|
shift
|
|
|
|
go run "script/$name.go" "$@"
|
|
|
|
}
|
|
|
|
|
|
|
|
build() {
|
|
|
|
go run build.go "$@"
|
|
|
|
}
|
|
|
|
|
2014-08-13 20:27:16 +00:00
|
|
|
case "${1:-default}" in
|
|
|
|
default)
|
2015-08-12 21:04:19 +00:00
|
|
|
build
|
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
2017-07-11 07:57:58 +00:00
|
|
|
build lint
|
2014-03-02 22:55:08 +00:00
|
|
|
;;
|
|
|
|
|
2014-08-11 09:54:48 +00:00
|
|
|
clean)
|
2015-08-12 21:04:19 +00:00
|
|
|
build "$@"
|
2014-08-11 09:59:33 +00:00
|
|
|
;;
|
|
|
|
|
2014-08-18 20:05:26 +00:00
|
|
|
tar)
|
2015-08-12 21:04:19 +00:00
|
|
|
build "$@"
|
2014-03-29 17:53:48 +00:00
|
|
|
;;
|
|
|
|
|
2014-08-18 20:05:26 +00:00
|
|
|
assets)
|
2015-08-12 21:04:19 +00:00
|
|
|
build "$@"
|
2014-03-22 20:33:18 +00:00
|
|
|
;;
|
|
|
|
|
2014-08-18 20:05:26 +00:00
|
|
|
xdr)
|
2015-08-12 21:04:19 +00:00
|
|
|
build "$@"
|
2014-06-08 22:55:34 +00:00
|
|
|
;;
|
|
|
|
|
2014-08-18 20:05:26 +00:00
|
|
|
translate)
|
2015-08-12 21:04:19 +00:00
|
|
|
build "$@"
|
|
|
|
;;
|
|
|
|
|
|
|
|
deb)
|
|
|
|
build "$@"
|
|
|
|
;;
|
|
|
|
|
|
|
|
setup)
|
|
|
|
build "$@"
|
|
|
|
;;
|
|
|
|
|
|
|
|
test)
|
|
|
|
ulimit -t 600 &>/dev/null || true
|
|
|
|
ulimit -d 512000 &>/dev/null || true
|
|
|
|
ulimit -m 512000 &>/dev/null || true
|
|
|
|
LOGGER_DISCARD=1 build test
|
|
|
|
;;
|
|
|
|
|
|
|
|
bench)
|
|
|
|
LOGGER_DISCARD=1 build bench | script benchfilter
|
2014-03-02 22:55:08 +00:00
|
|
|
;;
|
|
|
|
|
2015-05-30 08:39:20 +00:00
|
|
|
prerelease)
|
2016-01-30 21:49:14 +00:00
|
|
|
go run script/authors.go
|
2015-08-12 21:04:19 +00:00
|
|
|
build transifex
|
2015-05-30 11:05:37 +00:00
|
|
|
pushd man ; ./refresh.sh ; popd
|
2017-06-01 10:09:20 +00:00
|
|
|
git add -A gui man
|
|
|
|
git commit -m 'gui, man: Update docs & translations'
|
2015-07-20 12:18:07 +00:00
|
|
|
;;
|
|
|
|
|
2014-08-18 20:05:26 +00:00
|
|
|
noupgrade)
|
2015-08-12 21:04:19 +00:00
|
|
|
build -no-upgrade tar
|
2014-03-02 22:55:08 +00:00
|
|
|
;;
|
|
|
|
|
2014-08-18 20:05:26 +00:00
|
|
|
all)
|
2015-12-08 08:33:34 +00:00
|
|
|
platforms=(
|
|
|
|
darwin-amd64 dragonfly-amd64 freebsd-amd64 linux-amd64 netbsd-amd64 openbsd-amd64 solaris-amd64 windows-amd64
|
|
|
|
freebsd-386 linux-386 netbsd-386 openbsd-386 windows-386
|
2016-01-01 19:56:31 +00:00
|
|
|
linux-arm linux-arm64 linux-ppc64 linux-ppc64le
|
2015-12-08 08:33:34 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
for plat in "${platforms[@]}"; do
|
|
|
|
echo Building "$plat"
|
|
|
|
|
|
|
|
goos="${plat%-*}"
|
|
|
|
goarch="${plat#*-}"
|
|
|
|
dist="tar"
|
|
|
|
|
|
|
|
if [[ $goos == "windows" ]]; then
|
|
|
|
dist="zip"
|
|
|
|
fi
|
|
|
|
|
|
|
|
build -goos "$goos" -goarch "$goarch" "$dist"
|
|
|
|
echo
|
|
|
|
done
|
2014-07-31 07:08:08 +00:00
|
|
|
;;
|
|
|
|
|
2016-01-09 23:31:55 +00:00
|
|
|
test-xunit)
|
|
|
|
ulimit -t 600 &>/dev/null || true
|
|
|
|
ulimit -d 512000 &>/dev/null || true
|
|
|
|
ulimit -m 512000 &>/dev/null || true
|
|
|
|
|
|
|
|
(GOPATH="$(pwd)/Godeps/_workspace:$GOPATH" go test -v -race ./lib/... ./cmd/... || true) > tests.out
|
|
|
|
go2xunit -output tests.xml -fail < tests.out
|
|
|
|
;;
|
|
|
|
|
2014-03-02 22:55:08 +00:00
|
|
|
*)
|
2014-08-13 20:27:16 +00:00
|
|
|
echo "Unknown build command $1"
|
2014-03-02 22:55:08 +00:00
|
|
|
;;
|
|
|
|
esac
|