[tbb-commits] [tor-browser-build/master] Bug 27827: pass -tmpdir to the linker in snowflake build
gk at torproject.org
gk at torproject.org
Thu Oct 18 11:20:15 UTC 2018
commit f92f149ea8ffb9dd64a798453c85aa124a9391aa
Author: David Fifield <david at bamsoftware.com>
Date: Tue Oct 16 18:40:59 2018 -0600
Bug 27827: pass -tmpdir to the linker in snowflake build
The update to go 1.11.1 fixed part of #27827, namely the
/tmp/go-buildRANDOMNUM paths embedded in the binary. However there is
still a single /tmp/go-link-RANDOMNUM/go.o path remaining -- it comes
from here:
https://github.com/golang/go/blob/go1.11.1/src/cmd/link/internal/ld/lib.go#L935-L946
The random path affects the Go build ID even if we overwrite the random
digits in the binary.
Luckily there's a -tmpdir flag that lets us override the random path.
---
projects/snowflake/build | 27 ++++-----------------------
1 file changed, 4 insertions(+), 23 deletions(-)
diff --git a/projects/snowflake/build b/projects/snowflake/build
index f3616f4..a66a1e9 100644
--- a/projects/snowflake/build
+++ b/projects/snowflake/build
@@ -30,32 +30,13 @@ cd client
[% IF c("var/osx") -%]
# Without faketime, snowflake-client would contain the timestamp of the
# temporary client.a file created during "go build".
- [% c("var/faketime") %] go build -ldflags '-s'
+ # The -tmpdir flag overrides what would otherwise be a randomly generated
+ # path, /tmp/go-link-RANDOMNUM/go.o.
+ mkdir -p /var/tmp/go-link.tmpdir
+ [% c("var/faketime") %] go build -ldflags '-s -tmpdir /var/tmp/go-link.tmpdir'
[% ELSE -%]
go build -ldflags '-s'
[% END -%]
-[% IF c("var/osx") -%]
- # Hack: Overwrite variable absolute paths embedded in the binary. clang 3.8.0
- # on Darwin embeds such paths and the issue is unsolved in upstream Go as of
- # 2016-06-28:
- # https://github.com/golang/go/issues/9206#issuecomment-310476743
- # The two kinds of paths are ("000000000" stands for 9 random digits):
- # /tmp/go-build000000000
- # /tmp/go-link-000000000
- # Such paths are the output of ioutil.TempDir("", "go-build") and
- # ioutil.TempDir("", "go-link-").
- cp -a client client.stomped
- sed -i -E -e 's#(/tmp/go-build|/tmp/go-link-)[0-9]{9}/#\1XXXXXXXXX/#g' client.stomped
- # Sanity check: make sure the file actually changed. If it did not, it could
- # mean that a change in go or clang has made this step unnecessary.
- if cmp client client.stomped
- then
- echo "No paths replaced in snowflake-client. Maybe the replacement failed or is no longer needed."
- echo "Check projects/snowflake/build"
- exit 1
- fi
- mv -f client.stomped client
-[% END -%]
cp -a client[% IF c("var/windows") %].exe[% END %] $PTDIR/snowflake-client[% IF c("var/windows") %].exe[% END %]
cd ..
More information about the tbb-commits
mailing list