mirror of
https://github.com/containers/podman.git
synced 2025-08-06 19:44:14 +08:00
fix bud-multiple-platform-with-base-as-default-arg flake
By vendoring the latest c/common. Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
This commit is contained in:
5
vendor/github.com/containers/common/libimage/copier.go
generated
vendored
5
vendor/github.com/containers/common/libimage/copier.go
generated
vendored
@ -16,6 +16,7 @@ import (
|
||||
"github.com/containers/image/v5/docker/reference"
|
||||
"github.com/containers/image/v5/pkg/compression"
|
||||
"github.com/containers/image/v5/signature"
|
||||
"github.com/containers/image/v5/signature/signer"
|
||||
storageTransport "github.com/containers/image/v5/storage"
|
||||
"github.com/containers/image/v5/types"
|
||||
encconfig "github.com/containers/ocicrypt/config"
|
||||
@ -99,6 +100,9 @@ type CopyOptions struct {
|
||||
PolicyAllowStorage bool
|
||||
// SignaturePolicyPath to overwrite the default one.
|
||||
SignaturePolicyPath string
|
||||
// If non-empty, asks for signatures to be added during the copy
|
||||
// using the provided signers.
|
||||
Signers []*signer.Signer
|
||||
// If non-empty, asks for a signature to be added during the copy, and
|
||||
// specifies a key ID.
|
||||
SignBy string
|
||||
@ -299,6 +303,7 @@ func (r *Runtime) newCopier(options *CopyOptions) (*copier, error) {
|
||||
c.imageCopyOptions.OciEncryptLayers = options.OciEncryptLayers
|
||||
c.imageCopyOptions.OciDecryptConfig = options.OciDecryptConfig
|
||||
c.imageCopyOptions.RemoveSignatures = options.RemoveSignatures
|
||||
c.imageCopyOptions.Signers = options.Signers
|
||||
c.imageCopyOptions.SignBy = options.SignBy
|
||||
c.imageCopyOptions.SignPassphrase = options.SignPassphrase
|
||||
c.imageCopyOptions.SignBySigstorePrivateKeyFile = options.SignBySigstorePrivateKeyFile
|
||||
|
1
vendor/github.com/containers/common/libimage/manifest_list.go
generated
vendored
1
vendor/github.com/containers/common/libimage/manifest_list.go
generated
vendored
@ -452,6 +452,7 @@ func (m *ManifestList) Push(ctx context.Context, destination string, options *Ma
|
||||
ImageListSelection: options.ImageListSelection,
|
||||
Instances: options.Instances,
|
||||
ReportWriter: options.Writer,
|
||||
Signers: options.Signers,
|
||||
SignBy: options.SignBy,
|
||||
SignPassphrase: options.SignPassphrase,
|
||||
SignBySigstorePrivateKeyFile: options.SignBySigstorePrivateKeyFile,
|
||||
|
3
vendor/github.com/containers/common/libimage/manifests/manifests.go
generated
vendored
3
vendor/github.com/containers/common/libimage/manifests/manifests.go
generated
vendored
@ -15,6 +15,7 @@ import (
|
||||
"github.com/containers/image/v5/image"
|
||||
"github.com/containers/image/v5/manifest"
|
||||
"github.com/containers/image/v5/signature"
|
||||
"github.com/containers/image/v5/signature/signer"
|
||||
is "github.com/containers/image/v5/storage"
|
||||
"github.com/containers/image/v5/transports"
|
||||
"github.com/containers/image/v5/transports/alltransports"
|
||||
@ -61,6 +62,7 @@ type PushOptions struct {
|
||||
ImageListSelection cp.ImageListSelection // set to either CopySystemImage, CopyAllImages, or CopySpecificImages
|
||||
Instances []digest.Digest // instances to copy if ImageListSelection == CopySpecificImages
|
||||
ReportWriter io.Writer // will be used to log the writing of the list and any blobs
|
||||
Signers []*signer.Signer // if non-empty, asks for signatures to be added during the copy using the provided signers.
|
||||
SignBy string // fingerprint of GPG key to use to sign images
|
||||
SignPassphrase string // passphrase to use when signing with the key ID from SignBy.
|
||||
SignBySigstorePrivateKeyFile string // if non-empty, asks for a signature to be added during the copy, using a sigstore private key file at the provided path.
|
||||
@ -244,6 +246,7 @@ func (l *list) Push(ctx context.Context, dest types.ImageReference, options Push
|
||||
DestinationCtx: options.SystemContext,
|
||||
ReportWriter: options.ReportWriter,
|
||||
RemoveSignatures: options.RemoveSignatures,
|
||||
Signers: options.Signers,
|
||||
SignBy: options.SignBy,
|
||||
SignPassphrase: options.SignPassphrase,
|
||||
SignBySigstorePrivateKeyFile: options.SignBySigstorePrivateKeyFile,
|
||||
|
24
vendor/github.com/containers/common/libimage/pull.go
generated
vendored
24
vendor/github.com/containers/common/libimage/pull.go
generated
vendored
@ -497,26 +497,16 @@ func (r *Runtime) copySingleImageFromRegistry(ctx context.Context, imageName str
|
||||
|
||||
customPlatform := len(options.Architecture)+len(options.OS)+len(options.Variant) > 0
|
||||
if customPlatform && pullPolicy != config.PullPolicyAlways && pullPolicy != config.PullPolicyNever {
|
||||
// Unless the specified platform matches the local image, we
|
||||
// must pessimistically assume that the local image has an
|
||||
// invalid architecture (see containers/podman/issues/10682).
|
||||
// Hence, whenever the user requests a custom platform, set the
|
||||
// pull policy to "newer" to make sure we're pulling down the
|
||||
// Unless the pull policy is always/never, we must
|
||||
// pessimistically assume that the local image has an invalid
|
||||
// architecture (see containers/podman/issues/10682). Hence,
|
||||
// whenever the user requests a custom platform, set the pull
|
||||
// policy to "newer" to make sure we're pulling down the
|
||||
// correct image.
|
||||
//
|
||||
// NOTE that this is will even override --pull={false,never}.
|
||||
localImageMatches := false
|
||||
if localImage != nil {
|
||||
_, matches, err := localImage.matchesPlatform(ctx, options.OS, options.Architecture, options.Variant)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
localImageMatches = matches
|
||||
}
|
||||
if !localImageMatches {
|
||||
pullPolicy = config.PullPolicyNewer
|
||||
logrus.Debugf("Enforcing pull policy to %q to pull custom platform (arch: %q, os: %q, variant: %q) - local image may mistakenly specify wrong platform", pullPolicy, options.Architecture, options.OS, options.Variant)
|
||||
}
|
||||
pullPolicy = config.PullPolicyNewer
|
||||
logrus.Debugf("Enforcing pull policy to %q to pull custom platform (arch: %q, os: %q, variant: %q) - local image may mistakenly specify wrong platform", pullPolicy, options.Architecture, options.OS, options.Variant)
|
||||
}
|
||||
|
||||
if pullPolicy == config.PullPolicyNever {
|
||||
|
2
vendor/github.com/containers/storage/VERSION
generated
vendored
2
vendor/github.com/containers/storage/VERSION
generated
vendored
@ -1 +1 @@
|
||||
1.45.0
|
||||
1.45.1
|
||||
|
6
vendor/github.com/containers/storage/types/options.go
generated
vendored
6
vendor/github.com/containers/storage/types/options.go
generated
vendored
@ -300,7 +300,11 @@ func getRootlessStorageOpts(rootlessUID int, systemOpts StoreOptions) (StoreOpti
|
||||
}
|
||||
}
|
||||
if opts.GraphDriverName == "" {
|
||||
opts.GraphDriverName = "vfs"
|
||||
if len(systemOpts.GraphDriverPriority) == 0 {
|
||||
opts.GraphDriverName = "vfs"
|
||||
} else {
|
||||
opts.GraphDriverPriority = systemOpts.GraphDriverPriority
|
||||
}
|
||||
}
|
||||
|
||||
if os.Getenv("STORAGE_OPTS") != "" {
|
||||
|
12
vendor/github.com/onsi/gomega/CHANGELOG.md
generated
vendored
12
vendor/github.com/onsi/gomega/CHANGELOG.md
generated
vendored
@ -1,3 +1,15 @@
|
||||
## 1.25.0
|
||||
|
||||
### Features
|
||||
- add `MustPassRepeatedly(int)` to asyncAssertion (#619) [4509f72]
|
||||
- compare unwrapped errors using DeepEqual (#617) [aaeaa5d]
|
||||
|
||||
### Maintenance
|
||||
- Bump golang.org/x/net from 0.4.0 to 0.5.0 (#614) [c7cfea4]
|
||||
- Bump github.com/onsi/ginkgo/v2 from 2.6.1 to 2.7.0 (#615) [71b8adb]
|
||||
- Docs: Fix typo "MUltiple" -> "Multiple" (#616) [9351dda]
|
||||
- clean up go.sum [cd1dc1d]
|
||||
|
||||
## 1.24.2
|
||||
|
||||
### Fixes
|
||||
|
12
vendor/github.com/onsi/gomega/gomega_dsl.go
generated
vendored
12
vendor/github.com/onsi/gomega/gomega_dsl.go
generated
vendored
@ -22,7 +22,7 @@ import (
|
||||
"github.com/onsi/gomega/types"
|
||||
)
|
||||
|
||||
const GOMEGA_VERSION = "1.24.2"
|
||||
const GOMEGA_VERSION = "1.25.0"
|
||||
|
||||
const nilGomegaPanic = `You are trying to make an assertion, but haven't registered Gomega's fail handler.
|
||||
If you're using Ginkgo then you probably forgot to put your assertion in an It().
|
||||
@ -360,6 +360,16 @@ You can also pass additional arugments to functions that take a Gomega. The onl
|
||||
g.Expect(elements).To(ConsistOf(expected))
|
||||
}).WithContext(ctx).WithArguments("/names", "Joe", "Jane", "Sam").Should(Succeed())
|
||||
|
||||
You can ensure that you get a number of consecutive successful tries before succeeding using `MustPassRepeatedly(int)`. For Example:
|
||||
|
||||
int count := 0
|
||||
Eventually(func() bool {
|
||||
count++
|
||||
return count > 2
|
||||
}).MustPassRepeatedly(2).Should(BeTrue())
|
||||
// Because we had to wait for 2 calls that returned true
|
||||
Expect(count).To(Equal(3))
|
||||
|
||||
Finally, in addition to passing timeouts and a context to Eventually you can be more explicit with Eventually's chaining configuration methods:
|
||||
|
||||
Eventually(..., "1s", "2s", ctx).Should(...)
|
||||
|
54
vendor/github.com/onsi/gomega/internal/async_assertion.go
generated
vendored
54
vendor/github.com/onsi/gomega/internal/async_assertion.go
generated
vendored
@ -55,21 +55,23 @@ type AsyncAssertion struct {
|
||||
actual interface{}
|
||||
argsToForward []interface{}
|
||||
|
||||
timeoutInterval time.Duration
|
||||
pollingInterval time.Duration
|
||||
ctx context.Context
|
||||
offset int
|
||||
g *Gomega
|
||||
timeoutInterval time.Duration
|
||||
pollingInterval time.Duration
|
||||
mustPassRepeatedly int
|
||||
ctx context.Context
|
||||
offset int
|
||||
g *Gomega
|
||||
}
|
||||
|
||||
func NewAsyncAssertion(asyncType AsyncAssertionType, actualInput interface{}, g *Gomega, timeoutInterval time.Duration, pollingInterval time.Duration, ctx context.Context, offset int) *AsyncAssertion {
|
||||
func NewAsyncAssertion(asyncType AsyncAssertionType, actualInput interface{}, g *Gomega, timeoutInterval time.Duration, pollingInterval time.Duration, mustPassRepeatedly int, ctx context.Context, offset int) *AsyncAssertion {
|
||||
out := &AsyncAssertion{
|
||||
asyncType: asyncType,
|
||||
timeoutInterval: timeoutInterval,
|
||||
pollingInterval: pollingInterval,
|
||||
offset: offset,
|
||||
ctx: ctx,
|
||||
g: g,
|
||||
asyncType: asyncType,
|
||||
timeoutInterval: timeoutInterval,
|
||||
pollingInterval: pollingInterval,
|
||||
mustPassRepeatedly: mustPassRepeatedly,
|
||||
offset: offset,
|
||||
ctx: ctx,
|
||||
g: g,
|
||||
}
|
||||
|
||||
out.actual = actualInput
|
||||
@ -115,6 +117,11 @@ func (assertion *AsyncAssertion) WithArguments(argsToForward ...interface{}) typ
|
||||
return assertion
|
||||
}
|
||||
|
||||
func (assertion *AsyncAssertion) MustPassRepeatedly(count int) types.AsyncAssertion {
|
||||
assertion.mustPassRepeatedly = count
|
||||
return assertion
|
||||
}
|
||||
|
||||
func (assertion *AsyncAssertion) Should(matcher types.GomegaMatcher, optionalDescription ...interface{}) bool {
|
||||
assertion.g.THelper()
|
||||
vetOptionalDescription("Asynchronous assertion", optionalDescription...)
|
||||
@ -202,6 +209,13 @@ You can learn more at https://onsi.github.io/gomega/#eventually
|
||||
`, assertion.asyncType, t, t.NumIn(), numProvided, have, assertion.asyncType)
|
||||
}
|
||||
|
||||
func (assertion *AsyncAssertion) invalidMustPassRepeatedlyError(reason string) error {
|
||||
return fmt.Errorf(`Invalid use of MustPassRepeatedly with %s %s
|
||||
|
||||
You can learn more at https://onsi.github.io/gomega/#eventually
|
||||
`, assertion.asyncType, reason)
|
||||
}
|
||||
|
||||
func (assertion *AsyncAssertion) buildActualPoller() (func() (interface{}, error), error) {
|
||||
if !assertion.actualIsFunc {
|
||||
return func() (interface{}, error) { return assertion.actual, nil }, nil
|
||||
@ -257,6 +271,13 @@ func (assertion *AsyncAssertion) buildActualPoller() (func() (interface{}, error
|
||||
return nil, assertion.argumentMismatchError(actualType, len(inValues))
|
||||
}
|
||||
|
||||
if assertion.mustPassRepeatedly != 1 && assertion.asyncType != AsyncAssertionTypeEventually {
|
||||
return nil, assertion.invalidMustPassRepeatedlyError("it can only be used with Eventually")
|
||||
}
|
||||
if assertion.mustPassRepeatedly < 1 {
|
||||
return nil, assertion.invalidMustPassRepeatedlyError("parameter can't be < 1")
|
||||
}
|
||||
|
||||
return func() (actual interface{}, err error) {
|
||||
var values []reflect.Value
|
||||
assertionFailure = nil
|
||||
@ -396,6 +417,8 @@ func (assertion *AsyncAssertion) match(matcher types.GomegaMatcher, desiredMatch
|
||||
}
|
||||
}
|
||||
|
||||
// Used to count the number of times in a row a step passed
|
||||
passedRepeatedlyCount := 0
|
||||
for {
|
||||
var nextPoll <-chan time.Time = nil
|
||||
var isTryAgainAfterError = false
|
||||
@ -413,13 +436,18 @@ func (assertion *AsyncAssertion) match(matcher types.GomegaMatcher, desiredMatch
|
||||
|
||||
if err == nil && matches == desiredMatch {
|
||||
if assertion.asyncType == AsyncAssertionTypeEventually {
|
||||
return true
|
||||
passedRepeatedlyCount += 1
|
||||
if passedRepeatedlyCount == assertion.mustPassRepeatedly {
|
||||
return true
|
||||
}
|
||||
}
|
||||
} else if !isTryAgainAfterError {
|
||||
if assertion.asyncType == AsyncAssertionTypeConsistently {
|
||||
fail("Failed")
|
||||
return false
|
||||
}
|
||||
// Reset the consecutive pass count
|
||||
passedRepeatedlyCount = 0
|
||||
}
|
||||
|
||||
if oracleMatcherSaysStop {
|
||||
|
2
vendor/github.com/onsi/gomega/internal/gomega.go
generated
vendored
2
vendor/github.com/onsi/gomega/internal/gomega.go
generated
vendored
@ -109,7 +109,7 @@ func (g *Gomega) makeAsyncAssertion(asyncAssertionType AsyncAssertionType, offse
|
||||
}
|
||||
}
|
||||
|
||||
return NewAsyncAssertion(asyncAssertionType, actual, g, timeoutInterval, pollingInterval, ctx, offset)
|
||||
return NewAsyncAssertion(asyncAssertionType, actual, g, timeoutInterval, pollingInterval, 1, ctx, offset)
|
||||
}
|
||||
|
||||
func (g *Gomega) SetDefaultEventuallyTimeout(t time.Duration) {
|
||||
|
12
vendor/github.com/onsi/gomega/matchers/match_error_matcher.go
generated
vendored
12
vendor/github.com/onsi/gomega/matchers/match_error_matcher.go
generated
vendored
@ -25,7 +25,17 @@ func (matcher *MatchErrorMatcher) Match(actual interface{}) (success bool, err e
|
||||
expected := matcher.Expected
|
||||
|
||||
if isError(expected) {
|
||||
return reflect.DeepEqual(actualErr, expected) || errors.Is(actualErr, expected.(error)), nil
|
||||
// first try the built-in errors.Is
|
||||
if errors.Is(actualErr, expected.(error)) {
|
||||
return true, nil
|
||||
}
|
||||
// if not, try DeepEqual along the error chain
|
||||
for unwrapped := actualErr; unwrapped != nil; unwrapped = errors.Unwrap(unwrapped) {
|
||||
if reflect.DeepEqual(unwrapped, expected) {
|
||||
return true, nil
|
||||
}
|
||||
}
|
||||
return false, nil
|
||||
}
|
||||
|
||||
if isString(expected) {
|
||||
|
1
vendor/github.com/onsi/gomega/types/types.go
generated
vendored
1
vendor/github.com/onsi/gomega/types/types.go
generated
vendored
@ -75,6 +75,7 @@ type AsyncAssertion interface {
|
||||
ProbeEvery(interval time.Duration) AsyncAssertion
|
||||
WithContext(ctx context.Context) AsyncAssertion
|
||||
WithArguments(argsToForward ...interface{}) AsyncAssertion
|
||||
MustPassRepeatedly(count int) AsyncAssertion
|
||||
}
|
||||
|
||||
// Assertions are returned by Ω and Expect and enable assertions against Gomega matchers
|
||||
|
Reference in New Issue
Block a user