mirror of
https://github.com/containers/podman.git
synced 2025-12-08 14:48:48 +08:00
Update vendor of containers/(buildah, common, storage, image)
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
This commit is contained in:
14
vendor/github.com/containers/buildah/chroot/run_linux.go
generated
vendored
14
vendor/github.com/containers/buildah/chroot/run_linux.go
generated
vendored
@@ -423,7 +423,7 @@ func setupChrootBindMounts(spec *specs.Spec, bundlePath string) (undoBinds func(
|
||||
file.Close()
|
||||
}
|
||||
}
|
||||
requestFlags := bindFlags
|
||||
requestFlags := uintptr(0)
|
||||
expectedFlags := uintptr(0)
|
||||
for _, option := range m.Options {
|
||||
switch option {
|
||||
@@ -457,9 +457,19 @@ func setupChrootBindMounts(spec *specs.Spec, bundlePath string) (undoBinds func(
|
||||
case "bind":
|
||||
// Do the bind mount.
|
||||
logrus.Debugf("bind mounting %q on %q", m.Destination, filepath.Join(spec.Root.Path, m.Destination))
|
||||
if err := unix.Mount(m.Source, target, "", requestFlags, ""); err != nil {
|
||||
if err := unix.Mount(m.Source, target, "", bindFlags|requestFlags, ""); err != nil {
|
||||
return undoBinds, fmt.Errorf("bind mounting %q from host to %q in mount namespace (%q): %w", m.Source, m.Destination, target, err)
|
||||
}
|
||||
if (requestFlags & unix.MS_RDONLY) != 0 {
|
||||
if err = unix.Statfs(target, &fs); err != nil {
|
||||
return undoBinds, fmt.Errorf("checking if directory %q was bound read-only: %w", target, err)
|
||||
}
|
||||
// we need to make sure these flags are maintained in the REMOUNT operation
|
||||
additionalFlags := uintptr(fs.Flags) & (unix.MS_NOEXEC | unix.MS_NOSUID | unix.MS_NODEV)
|
||||
if err := unix.Mount("", target, "", unix.MS_REMOUNT|unix.MS_BIND|unix.MS_RDONLY|additionalFlags, ""); err != nil {
|
||||
return undoBinds, fmt.Errorf("setting flags on the bind mount %q from host to %q in mount namespace (%q): %w", m.Source, m.Destination, target, err)
|
||||
}
|
||||
}
|
||||
logrus.Debugf("bind mounted %q to %q", m.Source, target)
|
||||
case "tmpfs":
|
||||
// Mount a tmpfs.
|
||||
|
||||
27
vendor/github.com/containers/buildah/copier/copier.go
generated
vendored
27
vendor/github.com/containers/buildah/copier/copier.go
generated
vendored
@@ -1571,15 +1571,15 @@ func copierHandlerPut(bulkReader io.Reader, req request, idMappings *idtools.IDM
|
||||
return nil
|
||||
}
|
||||
makeDirectoryWriteable := func(directory string) error {
|
||||
st, err := os.Lstat(directory)
|
||||
if err != nil {
|
||||
return fmt.Errorf("copier: put: error reading permissions of directory %q: %w", directory, err)
|
||||
}
|
||||
mode := st.Mode() & os.ModePerm
|
||||
if _, ok := directoryModes[directory]; !ok {
|
||||
st, err := os.Lstat(directory)
|
||||
if err != nil {
|
||||
return fmt.Errorf("copier: put: error reading permissions of directory %q: %w", directory, err)
|
||||
}
|
||||
mode := st.Mode()
|
||||
directoryModes[directory] = mode
|
||||
}
|
||||
if err = os.Chmod(directory, 0o700); err != nil {
|
||||
if err := os.Chmod(directory, 0o700); err != nil {
|
||||
return fmt.Errorf("copier: put: error making directory %q writable: %w", directory, err)
|
||||
}
|
||||
return nil
|
||||
@@ -1867,16 +1867,21 @@ func copierHandlerPut(bulkReader io.Reader, req request, idMappings *idtools.IDM
|
||||
// set other bits that might have been reset by chown()
|
||||
if hdr.Typeflag != tar.TypeSymlink {
|
||||
if hdr.Mode&cISUID == cISUID {
|
||||
mode |= syscall.S_ISUID
|
||||
mode |= os.ModeSetuid
|
||||
}
|
||||
if hdr.Mode&cISGID == cISGID {
|
||||
mode |= syscall.S_ISGID
|
||||
mode |= os.ModeSetgid
|
||||
}
|
||||
if hdr.Mode&cISVTX == cISVTX {
|
||||
mode |= syscall.S_ISVTX
|
||||
mode |= os.ModeSticky
|
||||
}
|
||||
if err = syscall.Chmod(path, uint32(mode)); err != nil {
|
||||
return fmt.Errorf("setting additional permissions on %q to 0%o: %w", path, mode, err)
|
||||
if hdr.Typeflag == tar.TypeDir {
|
||||
// if/when we do the final setting of permissions on this
|
||||
// directory, make sure to incorporate these bits, too
|
||||
directoryModes[path] = mode
|
||||
}
|
||||
if err = os.Chmod(path, mode); err != nil {
|
||||
return fmt.Errorf("copier: put: setting additional permissions on %q to 0%o: %w", path, mode, err)
|
||||
}
|
||||
}
|
||||
// set xattrs, including some that might have been reset by chown()
|
||||
|
||||
2
vendor/github.com/containers/buildah/define/build.go
generated
vendored
2
vendor/github.com/containers/buildah/define/build.go
generated
vendored
@@ -67,6 +67,8 @@ type CommonBuildOptions struct {
|
||||
// NoHosts tells the builder not to create /etc/hosts content when running
|
||||
// containers.
|
||||
NoHosts bool
|
||||
// NoNewPrivileges removes the ability for the container to gain privileges
|
||||
NoNewPrivileges bool
|
||||
// OmitTimestamp forces epoch 0 as created timestamp to allow for
|
||||
// deterministic, content-addressable builds.
|
||||
OmitTimestamp bool
|
||||
|
||||
17
vendor/github.com/containers/buildah/define/mount_unsupported.go
generated
vendored
Normal file
17
vendor/github.com/containers/buildah/define/mount_unsupported.go
generated
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
//go:build darwin || windows
|
||||
// +build darwin windows
|
||||
|
||||
package define
|
||||
|
||||
const (
|
||||
// TypeBind is the type for mounting host dir
|
||||
TypeBind = "bind"
|
||||
|
||||
// TempDir is the default for storing temporary files
|
||||
TempDir = "/var/tmp"
|
||||
)
|
||||
|
||||
var (
|
||||
// Mount potions for bind
|
||||
BindOptions = []string{""}
|
||||
)
|
||||
16
vendor/github.com/containers/buildah/imagebuildah/build.go
generated
vendored
16
vendor/github.com/containers/buildah/imagebuildah/build.go
generated
vendored
@@ -696,11 +696,17 @@ func baseImages(dockerfilenames []string, dockerfilecontents [][]byte, from stri
|
||||
}
|
||||
base := child.Next.Value
|
||||
if base != "scratch" && !nicknames[base] {
|
||||
// TODO: this didn't undergo variable and arg
|
||||
// expansion, so if the AS clause in another
|
||||
// FROM instruction uses argument values,
|
||||
// we might not record the right value here.
|
||||
baseImages = append(baseImages, base)
|
||||
headingArgs := argsMapToSlice(stage.Builder.HeadingArgs)
|
||||
userArgs := argsMapToSlice(stage.Builder.Args)
|
||||
// append heading args so if --build-arg key=value is not
|
||||
// specified but default value is set in Containerfile
|
||||
// via `ARG key=value` so default value can be used.
|
||||
userArgs = append(headingArgs, userArgs...)
|
||||
baseWithArg, err := imagebuilder.ProcessWord(base, userArgs)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("while replacing arg variables with values for format %q: %w", base, err)
|
||||
}
|
||||
baseImages = append(baseImages, baseWithArg)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
5
vendor/github.com/containers/buildah/imagebuildah/executor.go
generated
vendored
5
vendor/github.com/containers/buildah/imagebuildah/executor.go
generated
vendored
@@ -690,7 +690,12 @@ func (b *Executor) Build(ctx context.Context, stages imagebuilder.Stages) (image
|
||||
base = child.Next.Value
|
||||
}
|
||||
}
|
||||
headingArgs := argsMapToSlice(stage.Builder.HeadingArgs)
|
||||
userArgs := argsMapToSlice(stage.Builder.Args)
|
||||
// append heading args so if --build-arg key=value is not
|
||||
// specified but default value is set in Containerfile
|
||||
// via `ARG key=value` so default value can be used.
|
||||
userArgs = append(headingArgs, userArgs...)
|
||||
baseWithArg, err := imagebuilder.ProcessWord(base, userArgs)
|
||||
if err != nil {
|
||||
return "", nil, fmt.Errorf("while replacing arg variables with values for format %q: %w", base, err)
|
||||
|
||||
4
vendor/github.com/containers/buildah/install.md
generated
vendored
4
vendor/github.com/containers/buildah/install.md
generated
vendored
@@ -52,9 +52,9 @@ rpm-ostree install buildah
|
||||
Note: [`podman`](https://podman.io) build is available by default.
|
||||
|
||||
### [Gentoo](https://www.gentoo.org)
|
||||
[app-containers/podman](https://packages.gentoo.org/packages/app-containers/podman)
|
||||
[app-containers/buildah](https://packages.gentoo.org/packages/app-containers/buildah)
|
||||
```bash
|
||||
sudo emerge app-containers/podman
|
||||
sudo emerge app-containers/buildah
|
||||
```
|
||||
|
||||
### [openSUSE](https://www.opensuse.org)
|
||||
|
||||
16
vendor/github.com/containers/buildah/internal/parse/parse.go
generated
vendored
16
vendor/github.com/containers/buildah/internal/parse/parse.go
generated
vendored
@@ -10,6 +10,7 @@ import (
|
||||
|
||||
"errors"
|
||||
|
||||
"github.com/containers/buildah/define"
|
||||
"github.com/containers/buildah/internal"
|
||||
internalUtil "github.com/containers/buildah/internal/util"
|
||||
"github.com/containers/common/pkg/parse"
|
||||
@@ -17,13 +18,12 @@ import (
|
||||
"github.com/containers/storage"
|
||||
"github.com/containers/storage/pkg/idtools"
|
||||
"github.com/containers/storage/pkg/lockfile"
|
||||
"github.com/containers/storage/pkg/unshare"
|
||||
specs "github.com/opencontainers/runtime-spec/specs-go"
|
||||
selinux "github.com/opencontainers/selinux/go-selinux"
|
||||
)
|
||||
|
||||
const (
|
||||
// TypeBind is the type for mounting host dir
|
||||
TypeBind = "bind"
|
||||
// TypeTmpfs is the type for mounting tmpfs
|
||||
TypeTmpfs = "tmpfs"
|
||||
// TypeCache is the type for mounting a common persistent cache from host
|
||||
@@ -51,7 +51,7 @@ var (
|
||||
// Caller is expected to perform unmount of any mounted images
|
||||
func GetBindMount(ctx *types.SystemContext, args []string, contextDir string, store storage.Store, imageMountLabel string, additionalMountPoints map[string]internal.StageMountDetails) (specs.Mount, string, error) {
|
||||
newMount := specs.Mount{
|
||||
Type: TypeBind,
|
||||
Type: define.TypeBind,
|
||||
}
|
||||
|
||||
mountReadability := false
|
||||
@@ -201,7 +201,7 @@ func GetCacheMount(args []string, store storage.Store, imageMountLabel string, a
|
||||
)
|
||||
fromStage := ""
|
||||
newMount := specs.Mount{
|
||||
Type: TypeBind,
|
||||
Type: define.TypeBind,
|
||||
}
|
||||
// if id is set a new subdirectory with `id` will be created under /host-temp/buildah-build-cache/id
|
||||
id := ""
|
||||
@@ -331,8 +331,8 @@ func GetCacheMount(args []string, store storage.Store, imageMountLabel string, a
|
||||
// create a common cache directory, which persists on hosts within temp lifecycle
|
||||
// add subdirectory if specified
|
||||
|
||||
// cache parent directory
|
||||
cacheParent := filepath.Join(internalUtil.GetTempDir(), BuildahCacheDir)
|
||||
// cache parent directory: creates separate cache parent for each user.
|
||||
cacheParent := filepath.Join(internalUtil.GetTempDir(), BuildahCacheDir+"-"+strconv.Itoa(unshare.GetRootlessUID()))
|
||||
// create cache on host if not present
|
||||
err = os.MkdirAll(cacheParent, os.FileMode(0755))
|
||||
if err != nil {
|
||||
@@ -544,7 +544,7 @@ func GetVolumes(ctx *types.SystemContext, store storage.Store, volumes []string,
|
||||
// If this function succeeds, the caller must unlock the returned lockfile.Lockers if any (when??).
|
||||
func getMounts(ctx *types.SystemContext, store storage.Store, mounts []string, contextDir string) (map[string]specs.Mount, []string, []lockfile.Locker, error) {
|
||||
// If `type` is not set default to "bind"
|
||||
mountType := TypeBind
|
||||
mountType := define.TypeBind
|
||||
finalMounts := make(map[string]specs.Mount)
|
||||
mountedImages := make([]string, 0)
|
||||
targetLocks := make([]lockfile.Locker, 0)
|
||||
@@ -575,7 +575,7 @@ func getMounts(ctx *types.SystemContext, store storage.Store, mounts []string, c
|
||||
}
|
||||
}
|
||||
switch mountType {
|
||||
case TypeBind:
|
||||
case define.TypeBind:
|
||||
mount, image, err := GetBindMount(ctx, tokens, contextDir, store, "", nil)
|
||||
if err != nil {
|
||||
return nil, mountedImages, nil, err
|
||||
|
||||
14
vendor/github.com/containers/buildah/pkg/parse/parse.go
generated
vendored
14
vendor/github.com/containers/buildah/pkg/parse/parse.go
generated
vendored
@@ -222,13 +222,14 @@ func GetAdditionalBuildContext(value string) (define.AdditionalBuildContext, err
|
||||
func parseSecurityOpts(securityOpts []string, commonOpts *define.CommonBuildOptions) error {
|
||||
for _, opt := range securityOpts {
|
||||
if opt == "no-new-privileges" {
|
||||
return errors.New("no-new-privileges is not supported")
|
||||
commonOpts.NoNewPrivileges = true
|
||||
continue
|
||||
}
|
||||
|
||||
con := strings.SplitN(opt, "=", 2)
|
||||
if len(con) != 2 {
|
||||
return fmt.Errorf("invalid --security-opt name=value pair: %q", opt)
|
||||
}
|
||||
|
||||
switch con[0] {
|
||||
case "label":
|
||||
commonOpts.LabelOpts = append(commonOpts.LabelOpts, con[1])
|
||||
@@ -928,10 +929,11 @@ func IsolationOption(isolation string) (define.Isolation, error) {
|
||||
|
||||
// Device parses device mapping string to a src, dest & permissions string
|
||||
// Valid values for device look like:
|
||||
// '/dev/sdc"
|
||||
// '/dev/sdc:/dev/xvdc"
|
||||
// '/dev/sdc:/dev/xvdc:rwm"
|
||||
// '/dev/sdc:rm"
|
||||
//
|
||||
// '/dev/sdc"
|
||||
// '/dev/sdc:/dev/xvdc"
|
||||
// '/dev/sdc:/dev/xvdc:rwm"
|
||||
// '/dev/sdc:rm"
|
||||
func Device(device string) (string, string, string, error) {
|
||||
src := ""
|
||||
dst := ""
|
||||
|
||||
6
vendor/github.com/containers/buildah/run_common.go
generated
vendored
6
vendor/github.com/containers/buildah/run_common.go
generated
vendored
@@ -1455,8 +1455,8 @@ func cleanableDestinationListFromMounts(mounts []spec.Mount) []string {
|
||||
//
|
||||
// If this function succeeds, the caller must unlock runMountArtifacts.TargetLocks (when??)
|
||||
func (b *Builder) runSetupRunMounts(mounts []string, sources runMountInfo, idMaps IDMaps) ([]spec.Mount, *runMountArtifacts, error) {
|
||||
// If `type` is not set default to "bind"
|
||||
mountType := internalParse.TypeBind
|
||||
// If `type` is not set default to TypeBind
|
||||
mountType := define.TypeBind
|
||||
mountTargets := make([]string, 0, 10)
|
||||
tmpFiles := make([]string, 0, len(mounts))
|
||||
mountImages := make([]string, 0, 10)
|
||||
@@ -1510,7 +1510,7 @@ func (b *Builder) runSetupRunMounts(mounts []string, sources runMountInfo, idMap
|
||||
// Count is needed as the default destination of the ssh sock inside the container is /run/buildkit/ssh_agent.{i}
|
||||
sshCount++
|
||||
}
|
||||
case "bind":
|
||||
case define.TypeBind:
|
||||
mount, image, err := b.getBindMount(tokens, sources.SystemContext, sources.ContextDir, sources.StageMountPoints, idMaps)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
|
||||
3
vendor/github.com/containers/buildah/run_freebsd.go
generated
vendored
3
vendor/github.com/containers/buildah/run_freebsd.go
generated
vendored
@@ -357,8 +357,7 @@ func (b *Builder) runSetupVolumeMounts(mountLabel string, volumeMounts []string,
|
||||
if len(spliti) > 2 {
|
||||
options = strings.Split(spliti[2], ",")
|
||||
}
|
||||
options = append(options, "bind")
|
||||
mount, err := parseMount("bind", spliti[0], spliti[1], options)
|
||||
mount, err := parseMount("nullfs", spliti[0], spliti[1], options)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
2
vendor/github.com/containers/buildah/run_linux.go
generated
vendored
2
vendor/github.com/containers/buildah/run_linux.go
generated
vendored
@@ -210,6 +210,8 @@ func (b *Builder) Run(command []string, options RunOptions) error {
|
||||
return err
|
||||
}
|
||||
|
||||
g.SetProcessNoNewPrivileges(b.CommonBuildOpts.NoNewPrivileges)
|
||||
|
||||
g.SetProcessApparmorProfile(b.CommonBuildOpts.ApparmorProfile)
|
||||
|
||||
// Now grab the spec from the generator. Set the generator to nil so that future contributors
|
||||
|
||||
Reference in New Issue
Block a user