New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
compress/gzip: avoid setting MTIME if Header.ModTime is zero #17663
Labels
Milestone
Comments
Yes, we should definitely fix this. :-) |
CL https://golang.org/cl/32325 mentions this issue. |
ijc
added a commit
to ijc/buildkit
that referenced
this issue
Mar 26, 2018
Modelled after the vendor support provide a validator and an updator for files produced by `go generate` (which today just means `*.pb.go`). Main difference from the vendor support is that we are no longer simply nuking and replacing a single directory, so I ended up hardcoding `*.pb.go` in a bunch of places which I don't like but cannot see a way around which doesn't risk nuking people's other local changes. The run in `frontend/gateway/pb/generate.go` was missing an include so fix that. The updates to `*.pg.go` here are all the result of regenerating with go1.9 which fixed golang/go#17663 and replaced an invalid timestamp in the gzip header of the data encoded in `fileDescritor`. Closes: moby#322 Signed-off-by: Ian Campbell <ijc@docker.com>
ijc
added a commit
to ijc/buildkit
that referenced
this issue
Mar 26, 2018
Modelled after the vendor support provide a validator and an updator for files produced by `go generate` (which today just means `*.pb.go`). Main difference from the vendor support is that we are no longer simply nuking and replacing a single directory, so I ended up hardcoding `*.pb.go` in a bunch of places which I don't like but cannot see a way around which doesn't risk nuking people's other local changes. The run in `frontend/gateway/pb/generate.go` was missing an include so fix that. The versions of `protoc` and the gogo plugins were chosen to regenerate the existing code as closely as possible. The updates to `*.pg.go` here are all the result of regenerating with go1.9 which fixed golang/go#17663 and replaced an invalid timestamp in the gzip header of the data encoded in `fileDescriptor*`, and adopted a new standard for marking generated files. Closes: moby#322 Signed-off-by: Ian Campbell <ijc@docker.com>
ijc
added a commit
to ijc/buildkit
that referenced
this issue
Mar 26, 2018
Modelled after the vendor support provide a validator and an updator for files produced by `go generate` (which today just means `*.pb.go`). Main difference from the vendor support is that we are no longer simply nuking and replacing a single directory, so I ended up hardcoding `*.pb.go` in a bunch of places which I don't like but cannot see a way around which doesn't risk nuking people's other local changes. The run in `frontend/gateway/pb/generate.go` was missing an include so fix that. The versions of `protoc` and the gogo plugins were chosen to regenerate the existing code as closely as possible. The updates to `*.pg.go` here are all the result of regenerating with go1.9 which fixed golang/go#17663 and replaced an invalid timestamp in the gzip header of the data encoded in `fileDescriptor*`, and adopted a new standard for marking generated files. Closes: moby#322 Signed-off-by: Ian Campbell <ijc@docker.com>
ijc
added a commit
to ijc/buildkit
that referenced
this issue
Mar 27, 2018
Modelled after the vendor support provide a validator and an updator for files produced by `go generate` (which today just means `*.pb.go`). Main difference from the vendor support is that we are no longer simply nuking and replacing a single directory, so I ended up hardcoding `*.pb.go` in a bunch of places which I don't like but cannot see a way around which doesn't risk nuking people's other local changes. The run in `frontend/gateway/pb/generate.go` was missing an include so fix that. The versions of `protoc` and the gogo plugins were chosen to regenerate the existing code as closely as possible. The updates to `*.pg.go` here are all the result of regenerating with go1.9 which fixed golang/go#17663 and replaced an invalid timestamp in the gzip header of the data encoded in `fileDescriptor*`, and adopted a new standard for marking generated files. Closes: moby#322 Signed-off-by: Ian Campbell <ijc@docker.com>
ijc
added a commit
to ijc/buildkit
that referenced
this issue
Mar 27, 2018
Modelled after the vendor support provide a validator and an updator for files produced by `go generate` (which today just means `*.pb.go`). Main difference from the vendor support is that we are no longer simply nuking and replacing a single directory, so I ended up hardcoding `*.pb.go` in a bunch of places which I don't like but cannot see a way around which doesn't risk nuking people's other local changes. The generated files are placed in an unpacked form in a `FROM scratch` container for update. Use a subdirectory and `tar --strip-components` (portable to MacOS and Linux according to `tar(1)`) since trying to do a `docker export` of just the root ends up adding `.dockerenv`, `sys`, `proc` and `dev` to the source tree. The validate container is not `FROM scratch` because we want `cat`. The run in `frontend/gateway/pb/generate.go` was missing an include so fix that. The versions of `protoc` and the gogo plugins were chosen to regenerate the existing code as closely as possible. The updates to `*.pg.go` here are all the result of regenerating with go1.9 which fixed golang/go#17663 and replaced an invalid timestamp in the gzip header of the data encoded in `fileDescriptor*`, and adopted a new standard for marking generated files. Finally, I noticed that my `docker run`s were missing an `--rm` which I inherited from `validate-vendor`, so fix all those. Closes: moby#322 Signed-off-by: Ian Campbell <ijc@docker.com>
ijc
added a commit
to ijc/buildkit
that referenced
this issue
Mar 28, 2018
Modelled after the vendor support provide a validator and an updator for files produced by `go generate` (which today just means `*.pb.go`). Main difference from the vendor support is that we are no longer simply nuking and replacing a single directory, so I ended up hardcoding `*.pb.go` in a bunch of places which I don't like but cannot see a way around which doesn't risk nuking people's other local changes. The generated files are placed in an unpacked form in a `FROM scratch` container for update. Use a subdirectory and `tar --strip-components` (portable to MacOS and Linux according to `tar(1)`) since trying to do a `docker export` of just the root ends up adding `.dockerenv`, `sys`, `proc` and `dev` to the source tree. The validate container is not `FROM scratch` because we want `cat`. The run in `frontend/gateway/pb/generate.go` was missing an include so fix that. The versions of `protoc` and the gogo plugins were chosen to regenerate the existing code as closely as possible. The updates to `*.pg.go` here are all the result of regenerating with go1.9 which fixed golang/go#17663 and replaced an invalid timestamp in the gzip header of the data encoded in `fileDescriptor*`, and adopted a new standard for marking generated files. Finally, I noticed that my `docker run`s were missing an `--rm` which I inherited from `validate-vendor`, so fix all those. Closes: moby#322 Signed-off-by: Ian Campbell <ijc@docker.com>
ijc
added a commit
to ijc/buildkit
that referenced
this issue
Mar 28, 2018
Modelled after the vendor support provide a validator and an updator for files produced by `go generate` (which today just means `*.pb.go`). Main difference from the vendor support is that we are no longer simply nuking and replacing a single directory, so I ended up hardcoding `*.pb.go` in a bunch of places which I don't like but cannot see a way around which doesn't risk nuking people's other local changes. The generated files are placed in an unpacked form in a `FROM scratch` container for update. Use a subdirectory and `tar --strip-components` (portable to MacOS and Linux according to `tar(1)`) since trying to do a `docker export` of just the root ends up adding `.dockerenv`, `sys`, `proc` and `dev` to the source tree. The validate container is not `FROM scratch` because we want `cat`. The run in `frontend/gateway/pb/generate.go` was missing an include so fix that. The versions of `protoc` and the gogo plugins were chosen to regenerate the existing code as closely as possible. The updates to `*.pg.go` here are all the result of regenerating with go1.9 which fixed golang/go#17663 and replaced an invalid timestamp in the gzip header of the data encoded in `fileDescriptor*`, and adopted a new standard for marking generated files. Finally, I noticed that my `docker run`s were missing an `--rm` which I inherited from `validate-vendor`, so fix all those. Closes: moby#322 Signed-off-by: Ian Campbell <ijc@docker.com>
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
The
gzip
writer always writes the ModTime regardless of what the value is.In most instances, the ModTime is the zero value because the user did not care what value to use. When the zero value is converted to a Unix timestamp, it's value is -62135596800, which cannot even be encoded into the gzip format since the MTIME field is a uint32.
The logic for gzip.go should only write the MTIME field if
!Header.ModTime.IsZero()
.This issue came up in http://golang.org/cl/32260
\cc @rsc
The text was updated successfully, but these errors were encountered: