From 830cbb7218d61467c011fd5e9d4751e1529677e4 Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Wed, 6 Sep 2017 21:41:22 +0200 Subject: 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 --- build.bash | 15 ++++++++++++--- main.go | 12 +++--------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/build.bash b/build.bash index 5c13536..237e274 100755 --- a/build.bash +++ b/build.bash @@ -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 $@) diff --git a/main.go b/main.go index c4d35b4..f790fff 100644 --- a/main.go +++ b/main.go @@ -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" } -- cgit v1.2.3