Bump Buildah to v1.15.0

Signed-off-by: TomSweeneyRedHat <tsweeney@redhat.com>
This commit is contained in:
TomSweeneyRedHat
2020-06-17 15:32:12 -04:00
parent fd184fa4a1
commit fde8040faa
13 changed files with 258 additions and 87 deletions

View File

@ -332,10 +332,19 @@ func ParseFile(path string) (*parser.Node, error) {
// Step creates a new step from the current state.
func (b *Builder) Step() *Step {
dst := make([]string, len(b.Env)+len(b.RunConfig.Env))
copy(dst, b.Env)
argsMap := make(map[string]string)
for _, argsVal := range b.Arguments() {
val := strings.Split(argsVal, "=")
if len(val) > 1 {
argsMap[val[0]] = val[1]
}
}
userArgs := makeUserArgs(b.Env, argsMap)
dst := make([]string, len(userArgs)+len(b.RunConfig.Env))
copy(dst, userArgs)
dst = append(dst, b.RunConfig.Env...)
dst = append(dst, b.Arguments()...)
return &Step{Env: dst}
}

View File

@ -153,8 +153,9 @@ func add(b *Builder, args []string, attributes map[string]bool, flagArgs []strin
var chown string
last := len(args) - 1
dest := makeAbsolute(args[last], b.RunConfig.WorkingDir)
userArgs := makeUserArgs(b.Env, b.Args)
for _, a := range flagArgs {
arg, err := ProcessWord(a, b.Env)
arg, err := ProcessWord(a, userArgs)
if err != nil {
return err
}
@ -181,8 +182,9 @@ func dispatchCopy(b *Builder, args []string, attributes map[string]bool, flagArg
dest := makeAbsolute(args[last], b.RunConfig.WorkingDir)
var chown string
var from string
userArgs := makeUserArgs(b.Env, b.Args)
for _, a := range flagArgs {
arg, err := ProcessWord(a, b.Env)
arg, err := ProcessWord(a, userArgs)
if err != nil {
return err
}

View File

@ -12,7 +12,7 @@
#
%global golang_version 1.8.1
%{!?version: %global version 1.1-dev}
%{!?version: %global version 1.1.5}
%{!?release: %global release 1}
%global package_name imagebuilder
%global product_name Container Image Builder

View File

@ -92,3 +92,28 @@ func parseOptInterval(f *flag.Flag) (time.Duration, error) {
}
return d, nil
}
// makeUserArgs - Package the variables from the Dockerfile defined by
// the ENV aand the ARG statements into one slice so the values
// defined by both can later be evaluated when resolving variables
// such as ${MY_USER}. If the variable is defined by both ARG and ENV
// don't include the definition of the ARG variable.
func makeUserArgs(bEnv []string, bArgs map[string]string) (userArgs []string) {
userArgs = bEnv
envMap := make(map[string]string)
for _, envVal := range bEnv {
val := strings.Split(envVal, "=")
if len(val) > 1 {
envMap[val[0]] = val[1]
}
}
for key, value := range bArgs {
if _, ok := envMap[key]; ok {
continue
}
userArgs = append(userArgs, key+"="+value)
}
return userArgs
}