Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com> (cherry picked from commit 7b30fd0e1d8bc77f0556181c82f85d046b058f27) Signed-off-by: Sebastiaan van Stijn <github@gone.nl> |
||
|---|---|---|
| .. | ||
| common.go | ||
| format.go | ||
| LICENSE | ||
| reader.go | ||
| README.md | ||
| stat_actime1.go | ||
| stat_actime2.go | ||
| stat_unix.go | ||
| strconv.go | ||
| writer.go | ||
This is a fork of Go 1.10 archive/tar package from the official
repo,
with a partial revert
of upstream commit 0564e304a6ea.
It is suggested as a replacement to the original package included with Go 1.10
in case you want to build a static Linux/glibc binary that works, and
can't afford to use CGO_ENABLED=0.
Details
Using Go 1.10 archive/tar from a static binary
compiled with glibc on Linux can result in a panic upon calling
tar.FileInfoHeader().
This is a major regression in Go 1.10, filed as
Go issue #24787.
The above issue is caused by an unfortunate combination of:
- glibc way of dynamic loading of nss libraries even for a static build;
- Go
os/userpackage hard-coded reliance on libc to resolve user/group IDs to names (unless CGO is disabled).
While glibc can probably not be fixed and is not considered a bug per se,
the os/user issue is documented (see Go issue #23265)
and already fixed by Go commit 62f0127d81.
The fix is expected to make its way to Go 1.11, and requires osusergo build tag
to be used for a static build.
This repository serves as a temporary workaround until the above fix is available.