summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcdoern <cdoern@redhat.com>2022-01-13 16:41:13 -0500
committercdoern <cdoern@redhat.com>2022-01-13 16:44:10 -0500
commitbf3734ad53c6ad212c56730350e6265bf8278913 (patch)
treeb386af5e3f2a4671be1349bebdc4ce1af1d5b365
parent2c510146aa03c74fb00a15bcf81c62b14df9c7ea (diff)
downloadpodman-bf3734ad53c6ad212c56730350e6265bf8278913.tar.gz
podman-bf3734ad53c6ad212c56730350e6265bf8278913.tar.bz2
podman-bf3734ad53c6ad212c56730350e6265bf8278913.zip
Podman Build use absolute filepath
podman build always finds the abs path but was never using it for the containerfile path. This was causing the remote client to be given a relative path that does not exist. Switch to evaluating and using absolute paths only. resolves #12841 Signed-off-by: cdoern <cdoern@redhat.com>
-rw-r--r--cmd/podman/images/build.go2
-rw-r--r--test/e2e/build_test.go15
2 files changed, 16 insertions, 1 deletions
diff --git a/cmd/podman/images/build.go b/cmd/podman/images/build.go
index 606c18aae..6fc73eb64 100644
--- a/cmd/podman/images/build.go
+++ b/cmd/podman/images/build.go
@@ -257,6 +257,7 @@ func build(cmd *cobra.Command, args []string) error {
return errors.Wrapf(err, "error determining path to file %q", containerFiles[i])
}
contextDir = filepath.Dir(absFile)
+ containerFiles[i] = absFile
break
}
}
@@ -289,7 +290,6 @@ func build(cmd *cobra.Command, args []string) error {
if err != nil {
return err
}
-
report, err := registry.ImageEngine().Build(registry.GetContext(), containerFiles, *apiBuildOpts)
if err != nil {
diff --git a/test/e2e/build_test.go b/test/e2e/build_test.go
index d4f0a2b04..c05dc6f3f 100644
--- a/test/e2e/build_test.go
+++ b/test/e2e/build_test.go
@@ -691,4 +691,19 @@ RUN ls /dev/test1`, ALPINE)
session.WaitWithDefaultTimeout()
Expect(session).Should(Exit(0))
})
+
+ It("podman build use absolute path even if given relative", func() {
+ containerFile := fmt.Sprintf(`FROM %s`, ALPINE)
+ err = os.Mkdir("relative", 0755)
+ Expect(err).To(BeNil())
+ containerFilePath := filepath.Join("relative", "Containerfile")
+ fmt.Println(containerFilePath)
+ err = ioutil.WriteFile(containerFilePath, []byte(containerFile), 0755)
+ Expect(err).To(BeNil())
+ build := podmanTest.Podman([]string{"build", "-f", "./relative/Containerfile"})
+ build.WaitWithDefaultTimeout()
+ Expect(build).To(Exit(0))
+ err = os.RemoveAll("relative")
+ Expect(err).To(BeNil())
+ })
})