build.bash: implement "you need Go 1.5" lockout in pure Go

As noticed by @riking, the logic in the bash script will break
when Go 1 version numbers reach double-digits.

Instead, use a build tag "!go1.5" to cause a syntax error:

  $ /opt/go1.4.3/bin/go build
  can't load package: package github.com/rfjakob/gocryptfs:
  go1.4.go:5:1: expected 'package', found 'STRING' "You need Go 1.5 or higher to compile gocryptfs!"

Fixes https://github.com/rfjakob/gocryptfs/issues/133
This commit is contained in:
Jakob Unterwurzacher 2017-08-02 23:34:14 +02:00
parent 1f39ede4b4
commit e4fdb42496
2 changed files with 5 additions and 10 deletions

View File

@ -30,16 +30,6 @@ BUILDTIME=$(date +%s)
# Make sure we have the go binary
go version > /dev/null
# Parse "go version go1.6.2 linux/amd64" to "1.6"
V=$(go version | cut -d" " -f3 | cut -c3-5)
# Reject old Go versions already here. It would fail with compile
# errors anyway.
if [[ $V == "1.3" || $V == "1.4" ]] ; then
echo "Error: you need Go 1.5 or higher to compile gocryptfs"
echo -n "You have: "
go version
fi
LDFLAGS="-X main.GitVersion=$GITVERSION -X main.GitVersionFuse=$GITVERSIONFUSE -X main.BuildTime=$BUILDTIME"
go build "-ldflags=$LDFLAGS" $@

5
go1.4.go Normal file
View File

@ -0,0 +1,5 @@
// +build !go1.5
// Cause an early compile error on Go 1.4 an lower. We need Go 1.5 for a number
// of reasons, among them NewGCMWithNonceSize and RawURLEncoding.
"You need Go 1.5 or higher to compile gocryptfs!"