On Thu, Apr 21, 2016 at 01:38:54AM +0200, Adam Wolk wrote: > Hi, > > While testing a port for net/syncthing sthen@ noticed the following > warnings: > > 00:44 < sthen> hm, there are some funny messages from that port in > 'make fake' 00:45 < sthen> > BFD: /usr/obj/ports/syncthing-0.12.22/fake-amd64/usr/local/bin//stVnev2l: > warning: allocated section `.gosymtab' not in segment 00:45 < sthen> > BFD: /usr/obj/ports/syncthing-0.12.22/fake-amd64/usr/local/bin//stVnev2l: > warning: allocated section `.gnu.version_r' not in segment > > the cause for those errors is trying to strip a Go binary which doesn't > output all expected segments. Upstream officially doesn't support > stripping and it might lead to undefined behavior. > > Debian Bug report logs - #717172 > Stripping golang binaries causes crashes: > https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=717172 > > go get ... fails with SIGILL on armhf > https://bugs.launchpad.net/ubuntu/+source/golang/+bug/1200255 > > docker: Stripping Binaries > https://github.com/docker/docker/blob/2a95488f7843a773de2b541a47d9b971a635bfff/project/PACKAGERS.md#stripping-binaries > > relevant blog post: > https://blog.filippo.io/shrink-your-go-binaries-with-this-one-weird-trick/ > > I went through existing go ports to see how many of them actually strip > the binaries. > > https://gist.github.com/mulander/a0dd5d5b49ca81001628d690b70ba111 > > Apparently from the existing ports only sysutils/logstash/forwarder is > affected. > This issue was initially reported by Fritjof Bornebusch (thanks!) in > July last year: http://marc.info/?l=openbsd-ports&m=143766040011892&w=2 > > I'm inlining a patch for sysutils/logstash/forwarder replacing the > usage of INSTALL_PROGRAM with INSTALL_SCRIPT and a comment informing > why this choice is made. Any OK's? OK with me; go binaries can still be stripped but that's a compile/link option and not something strip(1) should get involved with.
> Index: Makefile > =================================================================== > RCS file: /cvs/ports/sysutils/logstash/forwarder/Makefile,v > retrieving revision 1.7 > diff -u -p -r1.7 Makefile > --- Makefile 6 Jan 2016 20:02:19 -0000 1.7 > +++ Makefile 20 Apr 2016 23:37:17 -0000 > @@ -5,7 +5,7 @@ COMMENT= collect logs locally in prepara > GH_ACCOUNT= elastic > GH_PROJECT= logstash-forwarder > GH_TAGNAME= v0.4.0 > -REVISION= 1 > +REVISION= 2 > > MODULES= lang/go > > @@ -16,8 +16,9 @@ WANTLIB += c pthread > pre-configure: > ${SUBST_CMD} ${WRKSRC}/logstash-forwarder.conf.example > > +# Use INSTALL_SCRIPT to prevent stripping go binaries > do-install: > - ${INSTALL_PROGRAM} ${MODGO_WORKSPACE}/bin/logstash-forwarder \ > + ${INSTALL_SCRIPT} ${MODGO_WORKSPACE}/bin/logstash-forwarder \ > ${PREFIX}/sbin/ > ${INSTALL_DATA_DIR} ${PREFIX}/share/{doc,examples}/logstash-forwarder/ > ${INSTALL_DATA} ${WRKSRC}/README.md \ > -- jasper