mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
5136096520
Commit the rwLayer to get the correct DiffID Refacator copy in thebuilder move more code into exportImage cleanup some windows tests Release the newly commited layer. Set the imageID on the buildStage after exporting a new image. Move archiver to BuildManager. Have ReleaseableLayer.Commit return a layer and store the Image from exportImage in the local imageSources cache Remove NewChild from image interface. Signed-off-by: Daniel Nephin <dnephin@docker.com>
36 lines
976 B
Go
36 lines
976 B
Go
// +build !windows
|
|
|
|
package dockerfile
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/docker/docker/pkg/idtools"
|
|
)
|
|
|
|
func fixPermissions(source, destination string, rootIDs idtools.IDPair) error {
|
|
skipChownRoot, err := isExistingDirectory(destination)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// We Walk on the source rather than on the destination because we don't
|
|
// want to change permissions on things we haven't created or modified.
|
|
return filepath.Walk(source, func(fullpath string, info os.FileInfo, err error) error {
|
|
// Do not alter the walk root iff. it existed before, as it doesn't fall under
|
|
// the domain of "things we should chown".
|
|
if skipChownRoot && source == fullpath {
|
|
return nil
|
|
}
|
|
|
|
// Path is prefixed by source: substitute with destination instead.
|
|
cleaned, err := filepath.Rel(source, fullpath)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
fullpath = filepath.Join(destination, cleaned)
|
|
return os.Lchown(fullpath, rootIDs.UID, rootIDs.GID)
|
|
})
|
|
}
|