2014-03-17 10:15:59 -07:00
|
|
|
#!/usr/bin/env bash
|
2013-12-21 16:16:49 -07:00
|
|
|
|
2014-02-01 12:23:02 -07:00
|
|
|
export COPYFILE_DISABLE=true
|
|
|
|
|
2014-03-02 15:55:08 -07:00
|
|
|
distFiles=(README.md LICENSE) # apart from the binary itself
|
2014-03-28 06:36:57 -07:00
|
|
|
version=$(git describe --always --dirty)
|
2014-05-11 13:26:48 -07:00
|
|
|
date=$(git show -s --format=%ct)
|
2014-04-19 07:44:28 -07:00
|
|
|
user=$(whoami)
|
2014-04-21 23:25:40 -07:00
|
|
|
host=$(hostname)
|
|
|
|
host=${host%%.*}
|
2014-04-19 07:44:28 -07:00
|
|
|
ldflags="-w -X main.Version $version -X main.BuildStamp $date -X main.BuildUser $user -X main.BuildHost $host"
|
2013-12-21 16:16:49 -07:00
|
|
|
|
2014-03-02 15:55:08 -07:00
|
|
|
build() {
|
2014-05-02 12:59:36 -07:00
|
|
|
go vet ./... || exit 1
|
|
|
|
|
2014-03-23 23:37:26 -07:00
|
|
|
if command -v godep >/dev/null ; then
|
2014-03-22 13:33:18 -07:00
|
|
|
godep=godep
|
|
|
|
else
|
|
|
|
echo "Warning: no godep, using \"go get\" instead."
|
|
|
|
echo "Try \"go get github.com/tools/godep\"."
|
|
|
|
go get -d ./cmd/syncthing
|
|
|
|
godep=
|
|
|
|
fi
|
2014-04-19 07:44:28 -07:00
|
|
|
${godep} go build $* -ldflags "$ldflags" ./cmd/syncthing
|
2014-03-02 15:55:08 -07:00
|
|
|
}
|
|
|
|
|
2014-04-08 06:16:07 -07:00
|
|
|
assets() {
|
|
|
|
godep go run cmd/assets/assets.go gui > auto/gui.files.go
|
2014-03-02 15:55:08 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
test() {
|
2014-04-08 06:16:07 -07:00
|
|
|
godep go test -cpu=1,2,4 ./...
|
2014-03-20 23:40:48 -07:00
|
|
|
}
|
2014-03-02 15:55:08 -07:00
|
|
|
|
2014-03-22 13:38:01 -07:00
|
|
|
sign() {
|
2014-03-28 06:36:57 -07:00
|
|
|
if git describe --exact-match 2>/dev/null >/dev/null ; then
|
|
|
|
# HEAD is a tag
|
|
|
|
id=BCE524C7
|
|
|
|
if gpg --list-keys "$id" >/dev/null 2>&1 ; then
|
|
|
|
gpg -ab -u "$id" "$1"
|
|
|
|
fi
|
2014-03-22 13:38:01 -07:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2014-03-02 15:55:08 -07:00
|
|
|
tarDist() {
|
|
|
|
name="$1"
|
2014-03-20 23:40:48 -07:00
|
|
|
rm -rf "$name"
|
2014-03-02 15:55:08 -07:00
|
|
|
mkdir -p "$name"
|
|
|
|
cp syncthing "${distFiles[@]}" "$name"
|
2014-03-22 13:38:01 -07:00
|
|
|
sign "$name/syncthing"
|
2014-03-02 15:55:08 -07:00
|
|
|
tar zcvf "$name.tar.gz" "$name"
|
|
|
|
rm -rf "$name"
|
|
|
|
}
|
|
|
|
|
|
|
|
zipDist() {
|
|
|
|
name="$1"
|
2014-03-20 23:40:48 -07:00
|
|
|
rm -rf "$name"
|
2014-03-02 15:55:08 -07:00
|
|
|
mkdir -p "$name"
|
|
|
|
cp syncthing.exe "${distFiles[@]}" "$name"
|
2014-03-22 13:38:01 -07:00
|
|
|
sign "$name/syncthing.exe"
|
2014-03-02 15:55:08 -07:00
|
|
|
zip -r "$name.zip" "$name"
|
|
|
|
rm -rf "$name"
|
|
|
|
}
|
|
|
|
|
2014-04-08 06:14:36 -07:00
|
|
|
deps() {
|
2014-05-11 11:40:14 -07:00
|
|
|
godep save ./cmd/syncthing ./cmd/assets ./discover/cmd/discosrv
|
2014-04-08 06:14:36 -07:00
|
|
|
}
|
|
|
|
|
2014-03-02 15:55:08 -07:00
|
|
|
case "$1" in
|
|
|
|
"")
|
2014-04-09 14:00:23 -07:00
|
|
|
shift
|
|
|
|
build $*
|
2014-03-02 15:55:08 -07:00
|
|
|
;;
|
|
|
|
|
2014-03-29 10:53:48 -07:00
|
|
|
race)
|
|
|
|
build -race
|
|
|
|
;;
|
|
|
|
|
2014-03-22 13:33:18 -07:00
|
|
|
test)
|
|
|
|
test
|
|
|
|
;;
|
|
|
|
|
2014-03-02 15:55:08 -07:00
|
|
|
tar)
|
2014-03-20 23:40:48 -07:00
|
|
|
rm -f *.tar.gz *.zip
|
2014-03-02 15:55:08 -07:00
|
|
|
test || exit 1
|
2014-04-08 06:16:07 -07:00
|
|
|
assets
|
2014-03-02 15:55:08 -07:00
|
|
|
build
|
|
|
|
|
|
|
|
eval $(go env)
|
|
|
|
name="syncthing-$GOOS-$GOARCH-$version"
|
|
|
|
|
|
|
|
tarDist "$name"
|
|
|
|
;;
|
|
|
|
|
|
|
|
all)
|
2014-03-20 23:40:48 -07:00
|
|
|
rm -f *.tar.gz *.zip
|
2014-03-02 15:55:08 -07:00
|
|
|
test || exit 1
|
2014-04-08 06:16:07 -07:00
|
|
|
assets
|
2014-03-02 15:55:08 -07:00
|
|
|
|
2014-05-06 04:13:56 -07:00
|
|
|
for os in darwin-amd64 linux-386 linux-amd64 freebsd-amd64 windows-amd64 windows-386 ; do
|
2014-03-02 15:55:08 -07:00
|
|
|
export GOOS=${os%-*}
|
|
|
|
export GOARCH=${os#*-}
|
|
|
|
|
|
|
|
build
|
2014-03-20 23:40:48 -07:00
|
|
|
|
2014-03-02 15:55:08 -07:00
|
|
|
name="syncthing-$os-$version"
|
|
|
|
case $GOOS in
|
|
|
|
windows)
|
|
|
|
zipDist "$name"
|
|
|
|
rm -f syncthing.exe
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
tarDist "$name"
|
|
|
|
rm -f syncthing
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done
|
2014-03-30 20:59:40 -07:00
|
|
|
|
|
|
|
export GOOS=linux
|
|
|
|
export GOARCH=arm
|
|
|
|
|
|
|
|
export GOARM=7
|
|
|
|
build
|
|
|
|
tarDist "syncthing-linux-armv7-$version"
|
|
|
|
|
|
|
|
export GOARM=6
|
|
|
|
build
|
|
|
|
tarDist "syncthing-linux-armv6-$version"
|
|
|
|
|
2014-05-06 04:13:56 -07:00
|
|
|
export GOARM=5
|
|
|
|
build
|
|
|
|
tarDist "syncthing-linux-armv5-$version"
|
|
|
|
|
2014-03-02 15:55:08 -07:00
|
|
|
;;
|
|
|
|
|
|
|
|
upload)
|
|
|
|
tag=$(git describe)
|
|
|
|
shopt -s nullglob
|
2014-03-20 09:55:16 -07:00
|
|
|
for f in *.tar.gz *.zip *.asc ; do
|
2014-03-02 15:55:08 -07:00
|
|
|
relup calmh/syncthing "$tag" "$f"
|
|
|
|
done
|
|
|
|
;;
|
|
|
|
|
2014-04-08 06:14:36 -07:00
|
|
|
deps)
|
|
|
|
deps
|
|
|
|
;;
|
|
|
|
|
2014-04-08 06:16:07 -07:00
|
|
|
assets)
|
|
|
|
assets
|
|
|
|
;;
|
|
|
|
|
2014-03-02 15:55:08 -07:00
|
|
|
*)
|
|
|
|
echo "Unknown build parameter $1"
|
|
|
|
;;
|
|
|
|
esac
|