Make sure the remote ADD are cached properly
Docker-DCO-1.0-Signed-off-by: Guillaume J. Charmes <guillaume.charmes@docker.com> (github: creack)
This commit is contained in:
parent
762a0cc472
commit
0fd9c98de3
1 changed files with 15 additions and 3 deletions
18
buildfile.go
18
buildfile.go
|
@ -353,8 +353,9 @@ func (b *buildFile) CmdAdd(args string) error {
|
|||
|
||||
// FIXME: do we really need this?
|
||||
var (
|
||||
origPath = orig
|
||||
destPath = dest
|
||||
origPath = orig
|
||||
destPath = dest
|
||||
remoteHash string
|
||||
)
|
||||
|
||||
if utils.IsURL(orig) {
|
||||
|
@ -373,11 +374,20 @@ func (b *buildFile) CmdAdd(args string) error {
|
|||
}
|
||||
defer os.RemoveAll(tmpDirName)
|
||||
if _, err = io.Copy(tmpFile, resp.Body); err != nil {
|
||||
tmpFile.Close()
|
||||
return err
|
||||
}
|
||||
origPath = path.Join(filepath.Base(tmpDirName), filepath.Base(tmpFileName))
|
||||
tmpFile.Close()
|
||||
|
||||
// Process the checksum
|
||||
r, err := archive.Tar(tmpFileName, archive.Uncompressed)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
tarSum := utils.TarSum{Reader: r, DisableCompression: true}
|
||||
remoteHash = tarSum.Sum(nil)
|
||||
|
||||
// If the destination is a directory, figure out the filename.
|
||||
if strings.HasSuffix(dest, "/") {
|
||||
u, err := url.Parse(orig)
|
||||
|
@ -408,7 +418,9 @@ func (b *buildFile) CmdAdd(args string) error {
|
|||
sums = b.context.GetSums()
|
||||
)
|
||||
|
||||
if fi, err := os.Stat(path.Join(b.contextPath, origPath)); err != nil {
|
||||
if remoteHash != "" {
|
||||
hash = remoteHash
|
||||
} else if fi, err := os.Stat(path.Join(b.contextPath, origPath)); err != nil {
|
||||
return err
|
||||
} else if fi.IsDir() {
|
||||
var subfiles []string
|
||||
|
|
Loading…
Add table
Reference in a new issue