tree: 76544d3339d82edde16fb739018641317bace57c [path history] [tgz]
  1. common.go
  2. format.go
  3. LICENSE
  4. reader.go
  5. README.md
  6. stat_actime1.go
  7. stat_actime2.go
  8. stat_unix.go
  9. strconv.go
  10. writer.go
vendor/archive/tar/README.md

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:

  1. glibc way of dynamic loading of nss libraries even for a static build;
  2. Go os/user package 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.