diff options
| author | Jakob Unterwurzacher | 2017-09-06 21:41:22 +0200 | 
|---|---|---|
| committer | Jakob Unterwurzacher | 2017-09-06 21:41:22 +0200 | 
| commit | 830cbb7218d61467c011fd5e9d4751e1529677e4 (patch) | |
| tree | 72bd7cfc2a3c9ab4ddb0554006f666b0caaa7a8e | |
| parent | 512be8f081d2cc2afc778a2dcf5447647de2bbea (diff) | |
build.bash: make reproduceable builds easier
* Reduce the build time precision from seconds to days
* Allow to specify an arbitrary build date through an
  env variable
| -rwxr-xr-x | build.bash | 15 | ||||
| -rw-r--r-- | main.go | 12 | 
2 files changed, 15 insertions, 12 deletions
| @@ -1,4 +1,11 @@  #!/bin/bash +# +# Compile gocryptfs and bake the git version string of itself and the go-fuse +# library into the binary. +# +# If you want to fake a build date to reproduce a specific build, +# you can use: +# BUILDDATE=2017-02-03 ./build.bash  set -eu @@ -24,13 +31,15 @@ fi  GITVERSIONFUSE=$OUT  cd "$MYDIR" -# Build Unix timestamp, something like 1467554204. -BUILDTIME=$(date +%s) +# 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.BuildTime=$BUILDTIME" +LDFLAGS="-X main.GitVersion=$GITVERSION -X main.GitVersionFuse=$GITVERSIONFUSE -X main.BuildDate=$BUILDDATE"  go build "-ldflags=$LDFLAGS" $@  (cd gocryptfs-xray; go build $@) @@ -7,7 +7,6 @@ import (  	"runtime"  	"strconv"  	"strings" -	"time"  	"github.com/hanwen/go-fuse/fuse" @@ -26,8 +25,8 @@ var GitVersion = "[GitVersion not set - please compile using ./build.bash]"  // GitVersionFuse is the go-fuse library version, set by build.bash  var GitVersionFuse = "[GitVersionFuse not set - please compile using ./build.bash]" -// BuildTime is the Unix timestamp, set by build.bash -var BuildTime = "0" +// BuildDate is a date string like "2017-09-06", set by build.bash +var BuildDate = "0000-00-00"  // raceDetector is set to true by race.go if we are compiled with "go build -race"  var raceDetector bool @@ -92,16 +91,11 @@ func changePassword(args *argContainer) {  // printVersion prints a version string like this:  // gocryptfs v0.12-36-ge021b9d-dirty; go-fuse a4c968c; 2016-07-03 go1.6.2  func printVersion() { -	humanTime := "0000-00-00" -	if i, _ := strconv.ParseInt(BuildTime, 10, 64); i > 0 { -		t := time.Unix(i, 0).UTC() -		humanTime = fmt.Sprintf("%d-%02d-%02d", t.Year(), t.Month(), t.Day()) -	}  	buildFlags := ""  	if stupidgcm.BuiltWithoutOpenssl {  		buildFlags = " without_openssl"  	} -	built := fmt.Sprintf("%s %s", humanTime, runtime.Version()) +	built := fmt.Sprintf("%s %s", BuildDate, runtime.Version())  	if raceDetector {  		built += " -race"  	} | 
