(address . bug-guix@gnu.org)
Go binaries are statically build, but since Go 1.10, the full paths to
the Go libraries are kept in the binaries, which results in the Go
dependencies being part of the package closure:
$ guix gc --references $(./pre-inst-env guix build --no-grafts kurly)
/gnu/store/2b2md66fbzyspsmd5dj6zkj9hilac40r-tzdata-2018e
/gnu/store/4iwksvq53rlzphfp3xvp63ihlw226c0n-go-github-com-aki237-nscjar-0.0.0-0.e2df936
/gnu/store/5rxdjbk8h0bh1hbaan8y8ib13va2bcmw-net-base-5.3
/gnu/store/ahvdlp6y44qj6kx63rmx1sq8r61x3zc2-go-github-com-alsm-ioprogress-0.0.0-0.063c372
/gnu/store/f8yps0l8p371jgzh6cki0z5n2kgfjiwy-go-github-com-urfave-cli-1.19.1-0.934abfb
/gnu/store/l4lr0f5cjd0nbsaaf8b5dmcw1a1yypr3-glibc-2.27
/gnu/store/pp0bakrbyv9xmp1kyv2114l19s11b74z-gcc-6.4.0-lib
Previously, they did not:
$ guix gc --references $(guix build --no-grafts kurly)
/gnu/store/2b2md66fbzyspsmd5dj6zkj9hilac40r-tzdata-2018e
/gnu/store/5rxdjbk8h0bh1hbaan8y8ib13va2bcmw-net-base-5.3
/gnu/store/l4lr0f5cjd0nbsaaf8b5dmcw1a1yypr3-glibc-2.27
/gnu/store/pp0bakrbyv9xmp1kyv2114l19s11b74z-gcc-6.4.0-lib
It seems to be an upstream bug:
It's still unresolved and only planned for Go 1.13.
Note that adding
"-asmflags=all=-trimpath=/gnu/store"
"-gcflags=all=-trimpath=/gnu/store"
to the build system does not work, because we need to trim the hash too.
-trimpath supports only one parameter, so we can't use it for this purpose.
We could use Boyer-Moore to replace the hashes of all Go dependencies.
We must be careful to only replace paths to Go libraries.
--
Pierre Neidhardt
-----BEGIN PGP SIGNATURE-----
iQEzBAEBCAAdFiEEUPM+LlsMPZAEJKvom9z0l6S7zH8FAlwTzAcACgkQm9z0l6S7
zH/coAf/YvJSuI0oh+xHwPDXes3i2uw1hysc7tAesSk4mGdS6ImsWdLuUEm6V1or
gZ1fNzikwEFzY86F/h6VR0nya/gv17UiyUInZmiVkOrrM1b8tQA7x00YFqjKqr0U
jKtdgN7dXgyLYinK0XG4mnNi9UefWhyQgfeQHPs2NVczbIqsRkB7ECQU9CuSfoeM
qNUkhHVij4y5FX0nuYw5ftrvZTvoIBU+FZ7UuCR3yonNC4q7wEVbKvQiNWFEwdu/
4z2DINUnbBqOL84VjnRa95NobYpCuhse1XyQQBZDVjqUGDwbyDD8BIk15lDHvSa1
YTzzYNjC3spRhE8FdymB0qIc+SE0gg==
=/d4s
-----END PGP SIGNATURE-----