aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Unterwurzacher2017-09-06 21:41:22 +0200
committerJakob Unterwurzacher2017-09-06 21:41:22 +0200
commit830cbb7218d61467c011fd5e9d4751e1529677e4 (patch)
tree72bd7cfc2a3c9ab4ddb0554006f666b0caaa7a8e
parent512be8f081d2cc2afc778a2dcf5447647de2bbea (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-xbuild.bash15
-rw-r--r--main.go12
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"
}