build.bash: support VERSION file and vendored go-fuse
Prepares for the release of all-in-one source tarballs that include all non-stdlib dependencies.
This commit is contained in:
parent
a1a98abfbb
commit
9a3791fbc1
3
.gitignore
vendored
3
.gitignore
vendored
@ -17,3 +17,6 @@ gocryptfs.1
|
||||
# Dependencies copied by "dep"
|
||||
/vendor
|
||||
/_vendor-*
|
||||
|
||||
# Source tarball version. Should never be commited to git.
|
||||
/VERSION
|
||||
|
51
build.bash
51
build.bash
@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/bin/bash -eu
|
||||
#
|
||||
# Compile gocryptfs and bake the git version string of itself and the go-fuse
|
||||
# library into the binary.
|
||||
@ -7,38 +7,49 @@
|
||||
# you can use:
|
||||
# BUILDDATE=2017-02-03 ./build.bash
|
||||
|
||||
set -eu
|
||||
|
||||
cd "$(dirname "$0")"
|
||||
MYDIR=$PWD
|
||||
|
||||
# Make sure we have the go binary
|
||||
go version > /dev/null
|
||||
|
||||
# GOPATH may contain multiple paths separated by ":"
|
||||
GOPATH1=$(go env GOPATH | cut -f1 -d:)
|
||||
|
||||
# gocryptfs version according to git
|
||||
GITVERSION=$(git describe --tags --dirty)
|
||||
|
||||
# go-fuse version according to git
|
||||
# Note: git in CentOS 7 does not have "git -C" yet, so we use plain "cd".
|
||||
FAIL=0
|
||||
cd $GOPATH1/src/github.com/hanwen/go-fuse
|
||||
OUT=$(git describe --tags --dirty 2>&1) || FAIL=1
|
||||
if [[ $FAIL -ne 0 ]]; then
|
||||
echo "$PWD: git describe: $OUT"
|
||||
echo "Hint: are you missing git tags?"
|
||||
exit 1
|
||||
# gocryptfs version according to git or a VERSION file
|
||||
if [[ -d .git ]] ; then
|
||||
GITVERSION=$(git describe --tags --dirty)
|
||||
elif [[ -f VERSION ]] ; then
|
||||
GITVERSION=$(cat VERSION)
|
||||
else
|
||||
echo "Warning: could not determine gocryptfs version"
|
||||
GITVERSION="[unknown]"
|
||||
fi
|
||||
|
||||
# go-fuse version, if available
|
||||
if [[ -d vendor/github.com/hanwen/go-fuse ]] ; then
|
||||
GITVERSIONFUSE="[vendored]"
|
||||
else
|
||||
# go-fuse version according to git
|
||||
# Note: git in CentOS 7 does not have "git -C" yet, so we use plain "cd".
|
||||
FAIL=0
|
||||
cd $GOPATH1/src/github.com/hanwen/go-fuse
|
||||
OUT=$(git describe --tags --dirty 2>&1) || FAIL=1
|
||||
if [[ $FAIL -eq 0 ]]; then
|
||||
GITVERSIONFUSE=$OUT
|
||||
else
|
||||
echo "$PWD: git describe: $OUT"
|
||||
echo "Warning: could not determine go-fuse version"
|
||||
GITVERSIONFUSE="[unknown]"
|
||||
fi
|
||||
cd "$MYDIR"
|
||||
fi
|
||||
GITVERSIONFUSE=$OUT
|
||||
cd "$MYDIR"
|
||||
|
||||
# Build date, something like "2017-09-06"
|
||||
if [[ -z ${BUILDDATE:-} ]] ; then
|
||||
BUILDDATE=$(date +%Y-%m-%d)
|
||||
fi
|
||||
|
||||
# Make sure we have the go binary
|
||||
go version > /dev/null
|
||||
|
||||
LDFLAGS="-X main.GitVersion=$GITVERSION -X main.GitVersionFuse=$GITVERSIONFUSE -X main.BuildDate=$BUILDDATE"
|
||||
go build "-ldflags=$LDFLAGS" $@
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user