diff --git a/build.bash b/build.bash index 7a5ac6f2..8a951d83 100755 --- a/build.bash +++ b/build.bash @@ -67,31 +67,15 @@ if [[ -n ${SOURCE_DATE_EPOCH:-} ]] ; then BUILDDATE=$(date --utc --date="@${SOURCE_DATE_EPOCH}" +%Y-%m-%d) fi -# For reproducible builds, we get rid of $HOME references in the binary -# using "-trimpath". -# Note: we have to set both -gcflags and -asmflags because otherwise -# "$HOME/go/src/golang.org/x/sys/unix/asm_linux_amd64.s" stays in the binary. -GV=$(go version) -if [[ $GV == *"1.7"* ]] || [[ $GV == *"1.8"* ]] || [[ $GV == *"1.9"* ]] ; then - TRIM="-trimpath=${GOPATH1}/src" -else - # Go 1.10 changed the syntax. You now have to prefix "all=" to affect - # all compiled packages. - TRIM="all=-trimpath=${GOPATH1}/src" -fi - +export GOFLAGS="${GOFLAGS:--buildmode=pie -trimpath}" +export CGO_LDFLAGS="${CGO_LDFLAGS:-${LDFLAGS:-}}" GO_LDFLAGS="-X main.GitVersion=$GITVERSION -X main.GitVersionFuse=$GITVERSIONFUSE -X main.BuildDate=$BUILDDATE" -# If LDFLAGS is set, add it as "-extldflags". -if [[ -n ${LDFLAGS:-} ]] ; then - GO_LDFLAGS="$GO_LDFLAGS \"-extldflags=$LDFLAGS\"" -fi - # Actual "go build" call for gocryptfs -go build "-ldflags=$GO_LDFLAGS" "-gcflags=$TRIM" "-asmflags=$TRIM" "$@" +go build "-ldflags=$GO_LDFLAGS" "$@" # Additional binaries -(cd gocryptfs-xray; go build "-ldflags=$GO_LDFLAGS" "-gcflags=$TRIM" "-asmflags=$TRIM" "$@") -(cd contrib/statfs; go build "-ldflags=$GO_LDFLAGS" "-gcflags=$TRIM" "-asmflags=$TRIM" "$@") +(cd gocryptfs-xray; go build "-ldflags=$GO_LDFLAGS" "$@") +(cd contrib/statfs; go build "-ldflags=$GO_LDFLAGS" "$@") ./gocryptfs -version