From 9a3791fbc1e3422f06bdd3b63868aa28c04267c3 Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Wed, 1 Nov 2017 16:08:46 +0100 Subject: [PATCH] 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. --- .gitignore | 3 +++ build.bash | 51 +++++++++++++++++++++++++++++++-------------------- 2 files changed, 34 insertions(+), 20 deletions(-) diff --git a/.gitignore b/.gitignore index f151e23..88286f9 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,6 @@ gocryptfs.1 # Dependencies copied by "dep" /vendor /_vendor-* + +# Source tarball version. Should never be commited to git. +/VERSION diff --git a/build.bash b/build.bash index 237e274..b69f447 100755 --- a/build.bash +++ b/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" $@