diff options
| author | Bryce Kwon <bryce@brycekwon.com> | |
|---|---|---|
| committer | Bryce Kwon <bryce@brycekwon.com> | |
| commit | ||
| parent | ||
| tree | ||
| download | ||
Keep the builder's home directory out of the binary
Git's Makefile defaults `prefix` to `$HOME` and compiles it into
`exec-cmd.o` as the fallback runtime prefix, so each build embedded
the path of whoever ran it and no two builders could produce the same
bytes. The release script also maps the build directory out of the
debug info, which otherwise differs between checkouts.
Diffstat (limited to '')
| -rw-r--r-- | Makefile | 7 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| -rwxr-xr-x | tools/release-build.sh | 6 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 files changed, 11 insertions, 2 deletions
@@ -65,8 +65,11 @@ all: cgit # be WITH_RUST, so Rust is now compiled in unless it is turned off, and leaving # this out would quietly make Cargo a build requirement. Git 3.0 drops the # choice entirely, at which point this stops working and Rust becomes -# mandatory. -GIT_BUILD_FLAGS = NO_CURL=1 NO_OPENSSL=1 NO_RUST=1 +# mandatory. Git's own build defaults prefix to $HOME and compiles it in as +# its fallback runtime prefix, so without the last flag every binary carries +# the home directory of whoever built it and no two builders get the same +# bytes. +GIT_BUILD_FLAGS = NO_CURL=1 NO_OPENSSL=1 NO_RUST=1 prefix='$(prefix)' # Apple's linker otherwise stamps each object's mtime into the debug map, so # two builds of the same sources would differ. diff --git a/tools/release-build.sh b/tools/release-build.sh index c5ca6e9..a6d10dc 100755 --- a/tools/release-build.sh +++ b/tools/release-build.sh @@ -62,6 +62,12 @@ if supports "-fstack-clash-protection"; then CFLAGS="$CFLAGS -fstack-clash-protection" fi +# The debug info otherwise records the absolute build directory, so the same +# sources built in two checkouts would differ. +if supports "-ffile-prefix-map=/x=."; then + CFLAGS="$CFLAGS -ffile-prefix-map=$PWD=." +fi + LDFLAGS="-pie -Wl,-z,relro,-z,now -Wl,-z,noexecstack" # These reach only the cgit objects, so git's own sources are not held to them. |
