mirror of
https://github.com/containers/podman.git
synced 2025-08-06 19:44:14 +08:00
Vendor in latest containers/buildah
Pulls in fix for COPY --from when using --layers Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
This commit is contained in:
39
vendor/github.com/openshift/imagebuilder/builder.go
generated
vendored
39
vendor/github.com/openshift/imagebuilder/builder.go
generated
vendored
@ -172,8 +172,11 @@ type Stage struct {
|
||||
Node *parser.Node
|
||||
}
|
||||
|
||||
func NewStages(node *parser.Node, b *Builder) Stages {
|
||||
func NewStages(node *parser.Node, b *Builder) (Stages, error) {
|
||||
var stages Stages
|
||||
if err := b.extractHeadingArgsFromNode(node); err != nil {
|
||||
return stages, err
|
||||
}
|
||||
for i, root := range SplitBy(node, command.From) {
|
||||
name, _ := extractNameFromNode(root.Children[0])
|
||||
if len(name) == 0 {
|
||||
@ -189,7 +192,36 @@ func NewStages(node *parser.Node, b *Builder) Stages {
|
||||
Node: root,
|
||||
})
|
||||
}
|
||||
return stages
|
||||
return stages, nil
|
||||
}
|
||||
|
||||
func (b *Builder) extractHeadingArgsFromNode(node *parser.Node) error {
|
||||
var args []*parser.Node
|
||||
var children []*parser.Node
|
||||
extract := true
|
||||
for _, child := range node.Children {
|
||||
if extract && child.Value == command.Arg {
|
||||
args = append(args, child)
|
||||
} else {
|
||||
if child.Value == command.From {
|
||||
extract = false
|
||||
}
|
||||
children = append(children, child)
|
||||
}
|
||||
}
|
||||
|
||||
for _, c := range args {
|
||||
step := b.Step()
|
||||
if err := step.Resolve(c); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := b.Run(step, NoopExecutor, false); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
node.Children = children
|
||||
return nil
|
||||
}
|
||||
|
||||
func extractNameFromNode(node *parser.Node) (string, bool) {
|
||||
@ -345,6 +377,9 @@ var ErrNoFROM = fmt.Errorf("no FROM statement found")
|
||||
// is set to the first From found, or left unchanged if already
|
||||
// set.
|
||||
func (b *Builder) From(node *parser.Node) (string, error) {
|
||||
if err := b.extractHeadingArgsFromNode(node); err != nil {
|
||||
return "", err
|
||||
}
|
||||
children := SplitChildren(node, command.From)
|
||||
switch {
|
||||
case len(children) == 0:
|
||||
|
23
vendor/github.com/openshift/imagebuilder/dispatchers.go
generated
vendored
23
vendor/github.com/openshift/imagebuilder/dispatchers.go
generated
vendored
@ -27,11 +27,6 @@ var (
|
||||
obRgex = regexp.MustCompile(`(?i)^\s*ONBUILD\s*`)
|
||||
)
|
||||
|
||||
// dispatch with no layer / parsing. This is effectively not a command.
|
||||
func nullDispatch(b *Builder, args []string, attributes map[string]bool, flagArgs []string, original string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// ENV foo bar
|
||||
//
|
||||
// Sets the environment variable foo to bar, also makes interpolation
|
||||
@ -181,6 +176,17 @@ func from(b *Builder, args []string, attributes map[string]bool, flagArgs []stri
|
||||
}
|
||||
|
||||
name := args[0]
|
||||
|
||||
// Support ARG before from
|
||||
argStrs := []string{}
|
||||
for n, v := range b.Args {
|
||||
argStrs = append(argStrs, n+"="+v)
|
||||
}
|
||||
var err error
|
||||
if name, err = ProcessWord(name, argStrs); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Windows cannot support a container with no base image.
|
||||
if name == NoBaseImageSpecifier {
|
||||
if runtime.GOOS == "windows" {
|
||||
@ -438,6 +444,7 @@ func healthcheck(b *Builder, args []string, attributes map[string]bool, flagArgs
|
||||
healthcheck := docker.HealthConfig{}
|
||||
|
||||
flags := flag.NewFlagSet("", flag.ContinueOnError)
|
||||
flags.String("start-period", "", "")
|
||||
flags.String("interval", "", "")
|
||||
flags.String("timeout", "", "")
|
||||
flRetries := flags.String("retries", "", "")
|
||||
@ -462,6 +469,12 @@ func healthcheck(b *Builder, args []string, attributes map[string]bool, flagArgs
|
||||
return fmt.Errorf("Unknown type %#v in HEALTHCHECK (try CMD)", typ)
|
||||
}
|
||||
|
||||
period, err := parseOptInterval(flags.Lookup("start-period"))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
healthcheck.StartPeriod = period
|
||||
|
||||
interval, err := parseOptInterval(flags.Lookup("interval"))
|
||||
if err != nil {
|
||||
return err
|
||||
|
3
vendor/github.com/openshift/imagebuilder/evaluator.go
generated
vendored
3
vendor/github.com/openshift/imagebuilder/evaluator.go
generated
vendored
@ -122,8 +122,7 @@ func (b *Step) Resolve(ast *parser.Node) error {
|
||||
envs := b.Env
|
||||
for ast.Next != nil {
|
||||
ast = ast.Next
|
||||
var str string
|
||||
str = ast.Value
|
||||
str := ast.Value
|
||||
if replaceEnvAllowed[cmd] {
|
||||
var err error
|
||||
var words []string
|
||||
|
Reference in New Issue
Block a user