mirror of
https://github.com/containers/podman.git
synced 2025-06-25 03:52:15 +08:00
Vendor in latest containers/storage
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
This commit is contained in:
2
go.mod
2
go.mod
@ -17,7 +17,7 @@ require (
|
||||
github.com/containers/image/v5 v5.23.1-0.20230104183125-aaf0985b36f9
|
||||
github.com/containers/ocicrypt v1.1.6
|
||||
github.com/containers/psgo v1.8.0
|
||||
github.com/containers/storage v1.44.1-0.20230105105526-fc91849352e5
|
||||
github.com/containers/storage v1.44.1-0.20230112185043-9e5983234687
|
||||
github.com/coreos/go-systemd/v22 v22.5.0
|
||||
github.com/coreos/stream-metadata-go v0.0.0-20210225230131-70edb9eb47b3
|
||||
github.com/cyphar/filepath-securejoin v0.2.3
|
||||
|
4
go.sum
4
go.sum
@ -281,8 +281,8 @@ github.com/containers/psgo v1.8.0 h1:2loGekmGAxM9ir5OsXWEfGwFxorMPYnc6gEDsGFQvhY
|
||||
github.com/containers/psgo v1.8.0/go.mod h1:T8ZxnX3Ur4RvnhxFJ7t8xJ1F48RhiZB4rSrOaR/qGHc=
|
||||
github.com/containers/storage v1.37.0/go.mod h1:kqeJeS0b7DO2ZT1nVWs0XufrmPFbgV3c+Q/45RlH6r4=
|
||||
github.com/containers/storage v1.43.0/go.mod h1:uZ147thiIFGdVTjMmIw19knttQnUCl3y9zjreHrg11s=
|
||||
github.com/containers/storage v1.44.1-0.20230105105526-fc91849352e5 h1:OMxomJOShHWEPN3d6F22WU+9ljd9WNMvhkzY0lwZe1A=
|
||||
github.com/containers/storage v1.44.1-0.20230105105526-fc91849352e5/go.mod h1:OdRUYHrq1HP6iAo79VxqtYuJzC5j4eA2I60jKOoCT7g=
|
||||
github.com/containers/storage v1.44.1-0.20230112185043-9e5983234687 h1:EGMHFWSFtz8OgCymoQahIF7hrwQ28pT6gKLiORP40Ik=
|
||||
github.com/containers/storage v1.44.1-0.20230112185043-9e5983234687/go.mod h1:OdRUYHrq1HP6iAo79VxqtYuJzC5j4eA2I60jKOoCT7g=
|
||||
github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
|
||||
github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
|
||||
github.com/coreos/go-iptables v0.4.5/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU=
|
||||
|
2
vendor/github.com/containers/storage/.cirrus.yml
generated
vendored
2
vendor/github.com/containers/storage/.cirrus.yml
generated
vendored
@ -116,7 +116,7 @@ lint_task:
|
||||
echo "deb http://deb.debian.org/debian stretch-backports main" > /etc/apt/sources.list.d/backports.list
|
||||
apt-get update
|
||||
apt-get install -y libbtrfs-dev libdevmapper-dev
|
||||
test_script: make local-validate && make lint
|
||||
test_script: make TAGS=regex_precompile local-validate && make lint && make clean
|
||||
|
||||
|
||||
# Update metadata on VM images referenced by this repository state
|
||||
|
18
vendor/github.com/containers/storage/drivers/driver.go
generated
vendored
18
vendor/github.com/containers/storage/drivers/driver.go
generated
vendored
@ -322,6 +322,7 @@ func getBuiltinDriver(name, home string, options Options) (Driver, error) {
|
||||
type Options struct {
|
||||
Root string
|
||||
RunRoot string
|
||||
DriverPriority []string
|
||||
DriverOptions []string
|
||||
UIDMaps []idtools.IDMap
|
||||
GIDMaps []idtools.IDMap
|
||||
@ -337,9 +338,18 @@ func New(name string, config Options) (Driver, error) {
|
||||
|
||||
// Guess for prior driver
|
||||
driversMap := scanPriorDrivers(config.Root)
|
||||
for _, name := range priority {
|
||||
if name == "vfs" {
|
||||
// don't use vfs even if there is state present.
|
||||
|
||||
// use the supplied priority list unless it is empty
|
||||
prioList := config.DriverPriority
|
||||
if len(prioList) == 0 {
|
||||
prioList = priority
|
||||
}
|
||||
|
||||
for _, name := range prioList {
|
||||
if name == "vfs" && len(config.DriverPriority) == 0 {
|
||||
// don't use vfs even if there is state present and vfs
|
||||
// has not been explicitly added to the override driver
|
||||
// priority list
|
||||
continue
|
||||
}
|
||||
if _, prior := driversMap[name]; prior {
|
||||
@ -372,7 +382,7 @@ func New(name string, config Options) (Driver, error) {
|
||||
}
|
||||
|
||||
// Check for priority drivers first
|
||||
for _, name := range priority {
|
||||
for _, name := range prioList {
|
||||
driver, err := getBuiltinDriver(name, config.Root, config)
|
||||
if err != nil {
|
||||
if isDriverNotSupported(err) {
|
||||
|
5
vendor/github.com/containers/storage/pkg/idtools/usergroupadd_linux.go
generated
vendored
5
vendor/github.com/containers/storage/pkg/idtools/usergroupadd_linux.go
generated
vendored
@ -2,11 +2,12 @@ package idtools
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"regexp"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/containers/storage/pkg/regexp"
|
||||
)
|
||||
|
||||
// add a user and/or group to Linux /etc/passwd, /etc/group using standard
|
||||
@ -24,7 +25,7 @@ var (
|
||||
"usermod": "-%s %d-%d %s",
|
||||
}
|
||||
|
||||
idOutRegexp = regexp.MustCompile(`uid=([0-9]+).*gid=([0-9]+)`)
|
||||
idOutRegexp = regexp.Delayed(`uid=([0-9]+).*gid=([0-9]+)`)
|
||||
// default length for a UID/GID subordinate range
|
||||
defaultRangeLen = 65536
|
||||
defaultRangeStart = 100000
|
||||
|
214
vendor/github.com/containers/storage/pkg/regexp/regexp.go
generated
vendored
Normal file
214
vendor/github.com/containers/storage/pkg/regexp/regexp.go
generated
vendored
Normal file
@ -0,0 +1,214 @@
|
||||
package regexp
|
||||
|
||||
import (
|
||||
"io"
|
||||
"regexp"
|
||||
"sync"
|
||||
)
|
||||
|
||||
// Regexp is a wrapper struct used for wrapping MustCompile regex expressions
|
||||
// used as global variables. Using this stucture helps speed the startup time
|
||||
// of apps that want to use global regex variables. This library initializes them on
|
||||
// first use as opposed to the start of the executable.
|
||||
type Regexp struct {
|
||||
once sync.Once
|
||||
regexp *regexp.Regexp
|
||||
val string
|
||||
}
|
||||
|
||||
func Delayed(val string) Regexp {
|
||||
re := Regexp{
|
||||
val: val,
|
||||
}
|
||||
if precompile {
|
||||
re.regexp = regexp.MustCompile(re.val)
|
||||
}
|
||||
return re
|
||||
}
|
||||
|
||||
func (re *Regexp) compile() {
|
||||
if precompile {
|
||||
return
|
||||
}
|
||||
re.once.Do(func() {
|
||||
re.regexp = regexp.MustCompile(re.val)
|
||||
})
|
||||
}
|
||||
|
||||
func (re *Regexp) Expand(dst []byte, template []byte, src []byte, match []int) []byte {
|
||||
re.compile()
|
||||
return re.regexp.Expand(dst, template, src, match)
|
||||
}
|
||||
|
||||
func (re *Regexp) ExpandString(dst []byte, template string, src string, match []int) []byte {
|
||||
re.compile()
|
||||
return re.regexp.ExpandString(dst, template, src, match)
|
||||
}
|
||||
func (re *Regexp) Find(b []byte) []byte {
|
||||
re.compile()
|
||||
return re.regexp.Find(b)
|
||||
}
|
||||
|
||||
func (re *Regexp) FindAll(b []byte, n int) [][]byte {
|
||||
re.compile()
|
||||
return re.regexp.FindAll(b, n)
|
||||
}
|
||||
|
||||
func (re *Regexp) FindAllIndex(b []byte, n int) [][]int {
|
||||
re.compile()
|
||||
return re.regexp.FindAllIndex(b, n)
|
||||
}
|
||||
|
||||
func (re *Regexp) FindAllString(s string, n int) []string {
|
||||
re.compile()
|
||||
return re.regexp.FindAllString(s, n)
|
||||
}
|
||||
|
||||
func (re *Regexp) FindAllStringIndex(s string, n int) [][]int {
|
||||
re.compile()
|
||||
return re.regexp.FindAllStringIndex(s, n)
|
||||
}
|
||||
|
||||
func (re *Regexp) FindAllStringSubmatch(s string, n int) [][]string {
|
||||
re.compile()
|
||||
return re.regexp.FindAllStringSubmatch(s, n)
|
||||
}
|
||||
|
||||
func (re *Regexp) FindAllStringSubmatchIndex(s string, n int) [][]int {
|
||||
re.compile()
|
||||
return re.regexp.FindAllStringSubmatchIndex(s, n)
|
||||
}
|
||||
|
||||
func (re *Regexp) FindAllSubmatch(b []byte, n int) [][][]byte {
|
||||
re.compile()
|
||||
return re.regexp.FindAllSubmatch(b, n)
|
||||
}
|
||||
|
||||
func (re *Regexp) FindAllSubmatchIndex(b []byte, n int) [][]int {
|
||||
re.compile()
|
||||
return re.regexp.FindAllSubmatchIndex(b, n)
|
||||
}
|
||||
|
||||
func (re *Regexp) FindIndex(b []byte) (loc []int) {
|
||||
re.compile()
|
||||
return re.regexp.FindIndex(b)
|
||||
}
|
||||
|
||||
func (re *Regexp) FindReaderIndex(r io.RuneReader) (loc []int) {
|
||||
re.compile()
|
||||
return re.regexp.FindReaderIndex(r)
|
||||
}
|
||||
|
||||
func (re *Regexp) FindReaderSubmatchIndex(r io.RuneReader) []int {
|
||||
re.compile()
|
||||
return re.regexp.FindReaderSubmatchIndex(r)
|
||||
}
|
||||
|
||||
func (re *Regexp) FindString(s string) string {
|
||||
re.compile()
|
||||
return re.regexp.FindString(s)
|
||||
}
|
||||
|
||||
func (re *Regexp) FindStringIndex(s string) (loc []int) {
|
||||
re.compile()
|
||||
return re.regexp.FindStringIndex(s)
|
||||
}
|
||||
|
||||
func (re *Regexp) FindStringSubmatch(s string) []string {
|
||||
re.compile()
|
||||
return re.regexp.FindStringSubmatch(s)
|
||||
}
|
||||
|
||||
func (re *Regexp) FindStringSubmatchIndex(s string) []int {
|
||||
re.compile()
|
||||
return re.regexp.FindStringSubmatchIndex(s)
|
||||
}
|
||||
|
||||
func (re *Regexp) FindSubmatch(b []byte) [][]byte {
|
||||
re.compile()
|
||||
return re.regexp.FindSubmatch(b)
|
||||
}
|
||||
|
||||
func (re *Regexp) FindSubmatchIndex(b []byte) []int {
|
||||
re.compile()
|
||||
return re.regexp.FindSubmatchIndex(b)
|
||||
}
|
||||
|
||||
func (re *Regexp) LiteralPrefix() (prefix string, complete bool) {
|
||||
re.compile()
|
||||
return re.regexp.LiteralPrefix()
|
||||
}
|
||||
|
||||
func (re *Regexp) Longest() {
|
||||
re.compile()
|
||||
re.regexp.Longest()
|
||||
}
|
||||
|
||||
func (re *Regexp) Match(b []byte) bool {
|
||||
re.compile()
|
||||
return re.regexp.Match(b)
|
||||
}
|
||||
|
||||
func (re *Regexp) MatchReader(r io.RuneReader) bool {
|
||||
re.compile()
|
||||
return re.regexp.MatchReader(r)
|
||||
}
|
||||
func (re *Regexp) MatchString(s string) bool {
|
||||
re.compile()
|
||||
return re.regexp.MatchString(s)
|
||||
}
|
||||
|
||||
func (re *Regexp) NumSubexp() int {
|
||||
re.compile()
|
||||
return re.regexp.NumSubexp()
|
||||
}
|
||||
|
||||
func (re *Regexp) ReplaceAll(src, repl []byte) []byte {
|
||||
re.compile()
|
||||
return re.regexp.ReplaceAll(src, repl)
|
||||
}
|
||||
|
||||
func (re *Regexp) ReplaceAllFunc(src []byte, repl func([]byte) []byte) []byte {
|
||||
re.compile()
|
||||
return re.regexp.ReplaceAllFunc(src, repl)
|
||||
}
|
||||
|
||||
func (re *Regexp) ReplaceAllLiteral(src, repl []byte) []byte {
|
||||
re.compile()
|
||||
return re.regexp.ReplaceAllLiteral(src, repl)
|
||||
}
|
||||
|
||||
func (re *Regexp) ReplaceAllLiteralString(src, repl string) string {
|
||||
re.compile()
|
||||
return re.regexp.ReplaceAllLiteralString(src, repl)
|
||||
}
|
||||
|
||||
func (re *Regexp) ReplaceAllString(src, repl string) string {
|
||||
re.compile()
|
||||
return re.regexp.ReplaceAllString(src, repl)
|
||||
}
|
||||
|
||||
func (re *Regexp) ReplaceAllStringFunc(src string, repl func(string) string) string {
|
||||
re.compile()
|
||||
return re.regexp.ReplaceAllStringFunc(src, repl)
|
||||
}
|
||||
|
||||
func (re *Regexp) Split(s string, n int) []string {
|
||||
re.compile()
|
||||
return re.regexp.Split(s, n)
|
||||
}
|
||||
|
||||
func (re *Regexp) String() string {
|
||||
re.compile()
|
||||
return re.regexp.String()
|
||||
}
|
||||
|
||||
func (re *Regexp) SubexpIndex(name string) int {
|
||||
re.compile()
|
||||
return re.regexp.SubexpIndex(name)
|
||||
}
|
||||
|
||||
func (re *Regexp) SubexpNames() []string {
|
||||
re.compile()
|
||||
return re.regexp.SubexpNames()
|
||||
}
|
6
vendor/github.com/containers/storage/pkg/regexp/regexp_dontprecompile.go
generated
vendored
Normal file
6
vendor/github.com/containers/storage/pkg/regexp/regexp_dontprecompile.go
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
//go:build !regexp_precompile
|
||||
// +build !regexp_precompile
|
||||
|
||||
package regexp
|
||||
|
||||
const precompile = false
|
6
vendor/github.com/containers/storage/pkg/regexp/regexp_precompile.go
generated
vendored
Normal file
6
vendor/github.com/containers/storage/pkg/regexp/regexp_precompile.go
generated
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
//go:build regexp_precompile
|
||||
// +build regexp_precompile
|
||||
|
||||
package regexp
|
||||
|
||||
const precompile = true
|
7
vendor/github.com/containers/storage/pkg/stringid/stringid.go
generated
vendored
7
vendor/github.com/containers/storage/pkg/stringid/stringid.go
generated
vendored
@ -9,18 +9,19 @@ import (
|
||||
"math"
|
||||
"math/big"
|
||||
"math/rand"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/containers/storage/pkg/regexp"
|
||||
)
|
||||
|
||||
const shortLen = 12
|
||||
|
||||
var (
|
||||
validShortID = regexp.MustCompile("^[a-f0-9]{12}$")
|
||||
validHex = regexp.MustCompile(`^[a-f0-9]{64}$`)
|
||||
validShortID = regexp.Delayed("^[a-f0-9]{12}$")
|
||||
validHex = regexp.Delayed(`^[a-f0-9]{64}$`)
|
||||
|
||||
rngLock sync.Mutex
|
||||
rng *rand.Rand // A RNG with seeding properties we control. It can only be accessed with randLock held.
|
||||
|
45
vendor/github.com/containers/storage/store.go
generated
vendored
45
vendor/github.com/containers/storage/store.go
generated
vendored
@ -599,8 +599,9 @@ type store struct {
|
||||
|
||||
// The following fields are only set when constructing store, and must never be modified afterwards.
|
||||
// They are safe to access without any other locking.
|
||||
runRoot string
|
||||
graphDriverName string // Initially set to the user-requested value, possibly ""; updated during store construction, and does not change afterwards.
|
||||
runRoot string
|
||||
graphDriverName string // Initially set to the user-requested value, possibly ""; updated during store construction, and does not change afterwards.
|
||||
graphDriverPriority []string
|
||||
// graphLock:
|
||||
// - Ensures that we always reload graphDriver, and the primary layer store, after any process does store.Shutdown. This is necessary
|
||||
// because (??) the Shutdown may forcibly unmount and clean up, affecting graph driver state in a way only a graph driver
|
||||
@ -731,20 +732,21 @@ func GetStore(options types.StoreOptions) (Store, error) {
|
||||
autoNsMaxSize = AutoUserNsMaxSize
|
||||
}
|
||||
s := &store{
|
||||
runRoot: options.RunRoot,
|
||||
graphDriverName: options.GraphDriverName,
|
||||
graphLock: graphLock,
|
||||
usernsLock: usernsLock,
|
||||
graphRoot: options.GraphRoot,
|
||||
graphOptions: options.GraphDriverOptions,
|
||||
pullOptions: options.PullOptions,
|
||||
uidMap: copyIDMap(options.UIDMap),
|
||||
gidMap: copyIDMap(options.GIDMap),
|
||||
autoUsernsUser: options.RootAutoNsUser,
|
||||
autoNsMinSize: autoNsMinSize,
|
||||
autoNsMaxSize: autoNsMaxSize,
|
||||
disableVolatile: options.DisableVolatile,
|
||||
transientStore: options.TransientStore,
|
||||
runRoot: options.RunRoot,
|
||||
graphDriverName: options.GraphDriverName,
|
||||
graphDriverPriority: options.GraphDriverPriority,
|
||||
graphLock: graphLock,
|
||||
usernsLock: usernsLock,
|
||||
graphRoot: options.GraphRoot,
|
||||
graphOptions: options.GraphDriverOptions,
|
||||
pullOptions: options.PullOptions,
|
||||
uidMap: copyIDMap(options.UIDMap),
|
||||
gidMap: copyIDMap(options.GIDMap),
|
||||
autoUsernsUser: options.RootAutoNsUser,
|
||||
autoNsMinSize: autoNsMinSize,
|
||||
autoNsMaxSize: autoNsMaxSize,
|
||||
disableVolatile: options.DisableVolatile,
|
||||
transientStore: options.TransientStore,
|
||||
|
||||
additionalUIDs: nil,
|
||||
additionalGIDs: nil,
|
||||
@ -942,11 +944,12 @@ func (s *store) stopUsingGraphDriver() {
|
||||
// The caller must hold s.graphLock.
|
||||
func (s *store) createGraphDriverLocked() (drivers.Driver, error) {
|
||||
config := drivers.Options{
|
||||
Root: s.graphRoot,
|
||||
RunRoot: s.runRoot,
|
||||
DriverOptions: s.graphOptions,
|
||||
UIDMaps: s.uidMap,
|
||||
GIDMaps: s.gidMap,
|
||||
Root: s.graphRoot,
|
||||
RunRoot: s.runRoot,
|
||||
DriverPriority: s.graphDriverPriority,
|
||||
DriverOptions: s.graphOptions,
|
||||
UIDMaps: s.uidMap,
|
||||
GIDMaps: s.gidMap,
|
||||
}
|
||||
return drivers.New(s.graphDriverName, config)
|
||||
}
|
||||
|
18
vendor/github.com/containers/storage/types/options.go
generated
vendored
18
vendor/github.com/containers/storage/types/options.go
generated
vendored
@ -19,6 +19,7 @@ import (
|
||||
type TomlConfig struct {
|
||||
Storage struct {
|
||||
Driver string `toml:"driver,omitempty"`
|
||||
DriverPriority []string `toml:"driver_priority,omitempty"`
|
||||
RunRoot string `toml:"runroot,omitempty"`
|
||||
GraphRoot string `toml:"graphroot,omitempty"`
|
||||
RootlessStoragePath string `toml:"rootless_storage_path,omitempty"`
|
||||
@ -213,10 +214,16 @@ type StoreOptions struct {
|
||||
// RootlessStoragePath is the storage path for rootless users
|
||||
// default $HOME/.local/share/containers/storage
|
||||
RootlessStoragePath string `toml:"rootless_storage_path"`
|
||||
// GraphDriverName is the underlying storage driver that we'll be
|
||||
// using. It only needs to be specified the first time a Store is
|
||||
// initialized for a given RunRoot and GraphRoot.
|
||||
// If the driver is not specified, the best suited driver will be picked
|
||||
// either from GraphDriverPriority, if specified, or from the platform
|
||||
// dependent priority list (in that order).
|
||||
GraphDriverName string `json:"driver,omitempty"`
|
||||
// GraphDriverPriority is a list of storage drivers that will be tried
|
||||
// to initialize the Store for a given RunRoot and GraphRoot unless a
|
||||
// GraphDriverName is set.
|
||||
// This list can be used to define a custom order in which the drivers
|
||||
// will be tried.
|
||||
GraphDriverPriority []string `json:"driver-priority,omitempty"`
|
||||
// GraphDriverOptions are driver-specific options.
|
||||
GraphDriverOptions []string `json:"driver-options,omitempty"`
|
||||
// UIDMap and GIDMap are used for setting up a container's root filesystem
|
||||
@ -380,8 +387,9 @@ func ReloadConfigurationFile(configFile string, storeOptions *StoreOptions) erro
|
||||
logrus.Warnf("Switching default driver from overlay2 to the equivalent overlay driver")
|
||||
storeOptions.GraphDriverName = overlayDriver
|
||||
}
|
||||
if storeOptions.GraphDriverName == "" {
|
||||
logrus.Errorf("The storage 'driver' option must be set in %s to guarantee proper operation", configFile)
|
||||
storeOptions.GraphDriverPriority = config.Storage.DriverPriority
|
||||
if storeOptions.GraphDriverName == "" && len(storeOptions.GraphDriverPriority) == 0 {
|
||||
logrus.Warnf("The storage 'driver' option should be set in %s. A driver was picked automatically.", configFile)
|
||||
}
|
||||
if config.Storage.RunRoot != "" {
|
||||
storeOptions.RunRoot = config.Storage.RunRoot
|
||||
|
3
vendor/modules.txt
vendored
3
vendor/modules.txt
vendored
@ -264,7 +264,7 @@ github.com/containers/psgo/internal/dev
|
||||
github.com/containers/psgo/internal/host
|
||||
github.com/containers/psgo/internal/proc
|
||||
github.com/containers/psgo/internal/process
|
||||
# github.com/containers/storage v1.44.1-0.20230105105526-fc91849352e5
|
||||
# github.com/containers/storage v1.44.1-0.20230112185043-9e5983234687
|
||||
## explicit; go 1.17
|
||||
github.com/containers/storage
|
||||
github.com/containers/storage/drivers
|
||||
@ -303,6 +303,7 @@ github.com/containers/storage/pkg/parsers/kernel
|
||||
github.com/containers/storage/pkg/pools
|
||||
github.com/containers/storage/pkg/promise
|
||||
github.com/containers/storage/pkg/reexec
|
||||
github.com/containers/storage/pkg/regexp
|
||||
github.com/containers/storage/pkg/stringid
|
||||
github.com/containers/storage/pkg/stringutils
|
||||
github.com/containers/storage/pkg/system
|
||||
|
Reference in New Issue
Block a user