From e17b603be809b5d35418798287fd058a29304e9c Mon Sep 17 00:00:00 2001 From: Mathieu Champlon Date: Mon, 10 Sep 2018 14:27:04 +0200 Subject: [PATCH] Fix relative path under Windows Using filepath primitives instead of manipulating file paths manually takes care of platform specific formats. Signed-off-by: Mathieu Champlon --- src/cmd/linuxkit/pkglib/build.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/cmd/linuxkit/pkglib/build.go b/src/cmd/linuxkit/pkglib/build.go index 9cb952781..0883d4bab 100644 --- a/src/cmd/linuxkit/pkglib/build.go +++ b/src/cmd/linuxkit/pkglib/build.go @@ -6,10 +6,8 @@ import ( "fmt" "io" "os" - "path" "path/filepath" "runtime" - "strings" "github.com/linuxkit/linuxkit/src/cmd/linuxkit/version" log "github.com/sirupsen/logrus" @@ -235,7 +233,11 @@ func (c *buildCtx) Copy(w io.WriteCloser) error { if err != nil { return fmt.Errorf("ctx: Converting FileInfo for %s: %v", p, err) } - h.Name = path.Join(s.dst, strings.TrimPrefix(p, s.src)) + rel, err := filepath.Rel(s.src, p) + if err != nil { + return err + } + h.Name = filepath.ToSlash(filepath.Join(s.dst, rel)) if err := tw.WriteHeader(h); err != nil { return fmt.Errorf("ctx: Writing header for %s: %v", p, err) }