summaryrefslogtreecommitdiff
path: root/vendor/github.com/openshift/imagebuilder
diff options
context:
space:
mode:
authorDaniel J Walsh <dwalsh@redhat.com>2018-08-16 16:23:09 -0400
committerAtomic Bot <atomic-devel@projectatomic.io>2018-08-17 11:40:46 +0000
commit57e1600315c3b4657797d2605cc69d7343da034f (patch)
tree93b75a75abd830dba091d82f17d87463b4d549fb /vendor/github.com/openshift/imagebuilder
parent89a9750b6dd55b6d647d43942c6f97c9e1bb4029 (diff)
downloadpodman-57e1600315c3b4657797d2605cc69d7343da034f.tar.gz
podman-57e1600315c3b4657797d2605cc69d7343da034f.tar.bz2
podman-57e1600315c3b4657797d2605cc69d7343da034f.zip
Vendor in latest buildah and imagebuilder
We want to add the latest support for COPY --chown UID:GID. Signed-off-by: Daniel J Walsh <dwalsh@redhat.com> Closes: #1289 Approved by: TomSweeneyRedHat
Diffstat (limited to 'vendor/github.com/openshift/imagebuilder')
-rw-r--r--vendor/github.com/openshift/imagebuilder/builder.go5
-rw-r--r--vendor/github.com/openshift/imagebuilder/dispatchers.go7
-rw-r--r--vendor/github.com/openshift/imagebuilder/internals.go13
3 files changed, 21 insertions, 4 deletions
diff --git a/vendor/github.com/openshift/imagebuilder/builder.go b/vendor/github.com/openshift/imagebuilder/builder.go
index 6d6e4c38a..1c1afb119 100644
--- a/vendor/github.com/openshift/imagebuilder/builder.go
+++ b/vendor/github.com/openshift/imagebuilder/builder.go
@@ -27,6 +27,9 @@ type Copy struct {
Src []string
Dest string
Download bool
+ // If set, the owner:group for the destination. This value is passed
+ // to the executor for handling.
+ Chown string
}
// Run defines a run operation required in the container.
@@ -51,7 +54,7 @@ func (logExecutor) Preserve(path string) error {
func (logExecutor) Copy(excludes []string, copies ...Copy) error {
for _, c := range copies {
- log.Printf("COPY %v -> %s (from:%s download:%t)", c.Src, c.Dest, c.From, c.Download)
+ log.Printf("COPY %v -> %s (from:%s download:%t), chown: %s", c.Src, c.Dest, c.From, c.Download, c.Chown)
}
return nil
}
diff --git a/vendor/github.com/openshift/imagebuilder/dispatchers.go b/vendor/github.com/openshift/imagebuilder/dispatchers.go
index afa04bb89..068d5cc6f 100644
--- a/vendor/github.com/openshift/imagebuilder/dispatchers.go
+++ b/vendor/github.com/openshift/imagebuilder/dispatchers.go
@@ -149,18 +149,21 @@ func dispatchCopy(b *Builder, args []string, attributes map[string]bool, flagArg
}
last := len(args) - 1
dest := makeAbsolute(args[last], b.RunConfig.WorkingDir)
+ var chown string
var from string
if len(flagArgs) > 0 {
for _, arg := range flagArgs {
switch {
+ case strings.HasPrefix(arg, "--chown="):
+ chown = strings.TrimPrefix(arg, "--chown=")
case strings.HasPrefix(arg, "--from="):
from = strings.TrimPrefix(arg, "--from=")
default:
- return fmt.Errorf("COPY only supports the --from=<image|stage> flag")
+ return fmt.Errorf("COPY only supports the --chown=<uid:gid> and the --from=<image|stage> flags")
}
}
}
- b.PendingCopies = append(b.PendingCopies, Copy{From: from, Src: args[0:last], Dest: dest, Download: false})
+ b.PendingCopies = append(b.PendingCopies, Copy{From: from, Src: args[0:last], Dest: dest, Download: false, Chown: chown})
return nil
}
diff --git a/vendor/github.com/openshift/imagebuilder/internals.go b/vendor/github.com/openshift/imagebuilder/internals.go
index 9a8005bfc..3c60c7983 100644
--- a/vendor/github.com/openshift/imagebuilder/internals.go
+++ b/vendor/github.com/openshift/imagebuilder/internals.go
@@ -46,12 +46,23 @@ func handleJSONArgs(args []string, attributes map[string]bool) []string {
return []string{strings.Join(args, " ")}
}
+func hasSlash(input string) bool {
+ return strings.HasSuffix(input, string(os.PathSeparator)) || strings.HasSuffix(input, string(os.PathSeparator)+".")
+}
+
// makeAbsolute ensures that the provided path is absolute.
func makeAbsolute(dest, workingDir string) string {
// Twiddle the destination when its a relative path - meaning, make it
// relative to the WORKINGDIR
+ if dest == "." {
+ if !hasSlash(workingDir) {
+ workingDir += string(os.PathSeparator)
+ }
+ dest = workingDir
+ }
+
if !filepath.IsAbs(dest) {
- hasSlash := strings.HasSuffix(dest, string(os.PathSeparator)) || strings.HasSuffix(dest, string(os.PathSeparator)+".")
+ hasSlash := hasSlash(dest)
dest = filepath.Join(string(os.PathSeparator), filepath.FromSlash(workingDir), dest)
// Make sure we preserve any trailing slash