From 710dd00e952619893fe1de7119afe4f5a2445790 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Wed, 23 Aug 2023 00:05:32 +0200 Subject: [PATCH] replace dockerfile/dockerignore with patternmatcher/ignorefile The BuildKit dockerignore package was migrated to the patternmatcher repository / module. This patch updates our uses of the BuildKit package with its new location. A small local change was made to keep the format of the existing error message, because the "ignorefile" package is slightly more agnostic in that respect and doesn't include ".dockerignore" in the error message. Signed-off-by: Sebastiaan van Stijn (cherry picked from commit 5bff12354d607c435d50c5c9acb54f45dace5992) Signed-off-by: Sebastiaan van Stijn --- cli/command/image/build/dockerignore.go | 9 +++++-- .../ignorefile/ignorefile.go} | 26 ++++++++++++------- vendor/modules.txt | 2 +- 3 files changed, 25 insertions(+), 12 deletions(-) rename vendor/github.com/moby/{buildkit/frontend/dockerfile/dockerignore/dockerignore.go => patternmatcher/ignorefile/ignorefile.go} (65%) diff --git a/cli/command/image/build/dockerignore.go b/cli/command/image/build/dockerignore.go index 73a130604b..357210437c 100644 --- a/cli/command/image/build/dockerignore.go +++ b/cli/command/image/build/dockerignore.go @@ -1,11 +1,12 @@ package build import ( + "fmt" "os" "path/filepath" - "github.com/moby/buildkit/frontend/dockerfile/dockerignore" "github.com/moby/patternmatcher" + "github.com/moby/patternmatcher/ignorefile" ) // ReadDockerignore reads the .dockerignore file in the context directory and @@ -22,7 +23,11 @@ func ReadDockerignore(contextDir string) ([]string, error) { } defer f.Close() - return dockerignore.ReadAll(f) + patterns, err := ignorefile.ReadAll(f) + if err != nil { + return nil, fmt.Errorf("error reading .dockerignore: %w", err) + } + return patterns, nil } // TrimBuildFilesFromExcludes removes the named Dockerfile and .dockerignore from diff --git a/vendor/github.com/moby/buildkit/frontend/dockerfile/dockerignore/dockerignore.go b/vendor/github.com/moby/patternmatcher/ignorefile/ignorefile.go similarity index 65% rename from vendor/github.com/moby/buildkit/frontend/dockerfile/dockerignore/dockerignore.go rename to vendor/github.com/moby/patternmatcher/ignorefile/ignorefile.go index e7f29ae8df..94ea5a0ef5 100644 --- a/vendor/github.com/moby/buildkit/frontend/dockerfile/dockerignore/dockerignore.go +++ b/vendor/github.com/moby/patternmatcher/ignorefile/ignorefile.go @@ -1,4 +1,4 @@ -package dockerignore +package ignorefile import ( "bufio" @@ -6,23 +6,31 @@ import ( "io" "path/filepath" "strings" - - "github.com/pkg/errors" ) -// ReadAll reads a .dockerignore file and returns the list of file patterns -// to ignore. Note this will trim whitespace from each line as well -// as use GO's "clean" func to get the shortest/cleanest path for each. +// ReadAll reads an ignore file from a reader and returns the list of file +// patterns to ignore, applying the following rules: +// +// - An UTF8 BOM header (if present) is stripped. +// - Lines starting with "#" are considered comments and are skipped. +// +// For remaining lines: +// +// - Leading and trailing whitespace is removed from each ignore pattern. +// - It uses [filepath.Clean] to get the shortest/cleanest path for +// ignore patterns. +// - Leading forward-slashes ("/") are removed from ignore patterns, +// so "/some/path" and "some/path" are considered equivalent. func ReadAll(reader io.Reader) ([]string, error) { if reader == nil { return nil, nil } - scanner := bufio.NewScanner(reader) var excludes []string currentLine := 0 - utf8bom := []byte{0xEF, 0xBB, 0xBF} + + scanner := bufio.NewScanner(reader) for scanner.Scan() { scannedBytes := scanner.Bytes() // We trim UTF8 BOM @@ -59,7 +67,7 @@ func ReadAll(reader io.Reader) ([]string, error) { excludes = append(excludes, pattern) } if err := scanner.Err(); err != nil { - return nil, errors.Wrap(err, "error reading .dockerignore") + return nil, err } return excludes, nil } diff --git a/vendor/modules.txt b/vendor/modules.txt index 3a6317f83d..c55a5e0111 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -161,11 +161,11 @@ github.com/miekg/pkcs11 github.com/mitchellh/mapstructure # github.com/moby/buildkit v0.11.6 ## explicit; go 1.18 -github.com/moby/buildkit/frontend/dockerfile/dockerignore github.com/moby/buildkit/util/appcontext # github.com/moby/patternmatcher v0.6.0 ## explicit; go 1.19 github.com/moby/patternmatcher +github.com/moby/patternmatcher/ignorefile # github.com/moby/swarmkit/v2 v2.0.0-20230531205928-01bb7a41396b ## explicit; go 1.18 github.com/moby/swarmkit/v2/api