Skip to content

Commit

Permalink
Make sure building with relative paths work correctly.
Browse files Browse the repository at this point in the history
Fixes: #12763

Signed-off-by: Daniel J Walsh <[email protected]>
  • Loading branch information
rhatdan committed Feb 11, 2022
1 parent 6d2b54a commit 4966add
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 3 deletions.
2 changes: 2 additions & 0 deletions pkg/bindings/images/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -352,11 +352,13 @@ func Build(ctx context.Context, containerFiles []string, options entities.BuildO
}
c = tmpFile.Name()
}
c = filepath.Clean(c)
cfDir := filepath.Dir(c)
if absDir, err := filepath.EvalSymlinks(cfDir); err == nil {
name := filepath.ToSlash(strings.TrimPrefix(c, cfDir+string(filepath.Separator)))
c = filepath.Join(absDir, name)
}

containerfile, err := filepath.Abs(c)
if err != nil {
logrus.Errorf("Cannot find absolute path of %v: %v", c, err)
Expand Down
28 changes: 25 additions & 3 deletions test/system/070-build.bats
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,10 @@ EOF
containerfile=$PODMAN_TMPDIR/Containerfile
cat >$containerfile <<EOF
FROM $IMAGE
RUN apk add nginx
RUN echo $rand_content > /$rand_filename
EOF

# The 'apk' command can take a long time to fetch files; bump timeout
PODMAN_TIMEOUT=240 run_podman build -t build_test -f - --format=docker $tmpdir < $containerfile
run_podman build -t build_test -f - --format=docker $tmpdir < $containerfile
is "$output" ".*COMMIT" "COMMIT seen in log"

run_podman run --rm build_test cat /$rand_filename
Expand Down Expand Up @@ -188,6 +186,30 @@ EOF
run_podman rmi -f build_test $iid
}

@test "podman build test -f ./relative" {
rand_filename=$(random_string 20)
rand_content=$(random_string 50)

tmpdir=$PODMAN_TMPDIR/build-test
mkdir -p $tmpdir
mkdir -p $PODMAN_TMPDIR/reldir

containerfile=$PODMAN_TMPDIR/reldir/Containerfile
cat >$containerfile <<EOF
FROM $IMAGE
RUN echo $rand_content > /$rand_filename
EOF

cd $PODMAN_TMPDIR
run_podman build -t build_test -f ./reldir/Containerfile --format=docker $tmpdir
is "$output" ".*COMMIT" "COMMIT seen in log"

run_podman run --rm build_test cat /$rand_filename
is "$output" "$rand_content" "reading generated file in image"

run_podman rmi -f build_test
}

@test "podman build - URLs" {
tmpdir=$PODMAN_TMPDIR/build-test
mkdir -p $tmpdir
Expand Down

0 comments on commit 4966add

Please sign in to comment.