Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kubelogin for openSUSE:Factory checked in at 2026-04-14 17:50:12 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kubelogin (Old) and /work/SRC/openSUSE:Factory/.kubelogin.new.21863 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kubelogin" Tue Apr 14 17:50:12 2026 rev:27 rq:1346868 version:0.2.17 Changes: -------- --- /work/SRC/openSUSE:Factory/kubelogin/kubelogin.changes 2026-03-11 20:57:34.147490734 +0100 +++ /work/SRC/openSUSE:Factory/.kubelogin.new.21863/kubelogin.changes 2026-04-14 17:51:55.440479329 +0200 @@ -1,0 +2,11 @@ +Sat Apr 11 06:59:26 UTC 2026 - Johannes Kastl <[email protected]> + +- Update to version 0.2.17: + * Bug Fixes + - fix: add cross-process lock around cache.New to prevent macOS + keychain race by @weinong in #744 + * Maintenance + - chore: upgrade Go toolchain from 1.24 to 1.25.9 by @Copilot + in #745 + +------------------------------------------------------------------- Old: ---- kubelogin-0.2.16.obscpio New: ---- kubelogin-0.2.17.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kubelogin.spec ++++++ --- /var/tmp/diff_new_pack.gprvZv/_old 2026-04-14 17:51:56.180509919 +0200 +++ /var/tmp/diff_new_pack.gprvZv/_new 2026-04-14 17:51:56.180509919 +0200 @@ -17,14 +17,14 @@ Name: kubelogin -Version: 0.2.16 +Version: 0.2.17 Release: 0 Summary: Kubernetes client credential plugin implementing Azure authentication License: MIT URL: https://github.com/Azure/kubelogin Source0: %{name}-%{version}.tar.gz Source1: vendor.tar.gz -BuildRequires: go1.24 >= 1.24.13 +BuildRequires: go1.25 >= 1.25.9 BuildRequires: golang-packaging %{go_provides} ++++++ _service ++++++ --- /var/tmp/diff_new_pack.gprvZv/_old 2026-04-14 17:51:56.216511408 +0200 +++ /var/tmp/diff_new_pack.gprvZv/_new 2026-04-14 17:51:56.220511573 +0200 @@ -2,7 +2,7 @@ <service name="obs_scm" mode="manual"> <param name="url">https://github.com/Azure/kubelogin.git</param> <param name="scm">git</param> - <param name="revision">v0.2.16</param> + <param name="revision">v0.2.17</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.gprvZv/_old 2026-04-14 17:51:56.252512896 +0200 +++ /var/tmp/diff_new_pack.gprvZv/_new 2026-04-14 17:51:56.260513227 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/Azure/kubelogin.git</param> - <param name="changesrevision">f2dcbd90666712e664d61419dc093219b3e5b1d5</param></service></servicedata> + <param name="changesrevision">dff9ca0779c3b6425af3e1cb59109bef29fb95e1</param></service></servicedata> (No newline at EOF) ++++++ kubelogin-0.2.16.obscpio -> kubelogin-0.2.17.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kubelogin-0.2.16/.bingo/README.md new/kubelogin-0.2.17/.bingo/README.md --- old/kubelogin-0.2.16/.bingo/README.md 2026-03-10 05:48:14.000000000 +0100 +++ new/kubelogin-0.2.17/.bingo/README.md 2026-04-09 04:04:52.000000000 +0200 @@ -10,4 +10,4 @@ ## Requirements -* Go 1.24.x or 1.25.x +* Go 1.25.x or 1.26.x diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kubelogin-0.2.16/.bingo/golangci-lint.mod new/kubelogin-0.2.17/.bingo/golangci-lint.mod --- old/kubelogin-0.2.16/.bingo/golangci-lint.mod 2026-03-10 05:48:14.000000000 +0100 +++ new/kubelogin-0.2.17/.bingo/golangci-lint.mod 2026-04-09 04:04:52.000000000 +0200 @@ -1,5 +1,5 @@ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT -go 1.24.13 +go 1.25.9 require github.com/golangci/golangci-lint/v2 v2.7.2 // cmd/golangci-lint diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kubelogin-0.2.16/.tool-versions new/kubelogin-0.2.17/.tool-versions --- old/kubelogin-0.2.16/.tool-versions 2026-03-10 05:48:14.000000000 +0100 +++ new/kubelogin-0.2.17/.tool-versions 2026-04-09 04:04:52.000000000 +0200 @@ -1 +1 @@ -golang 1.24.13 \ No newline at end of file +golang 1.25.9 \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kubelogin-0.2.16/CHANGELOG.md new/kubelogin-0.2.17/CHANGELOG.md --- old/kubelogin-0.2.16/CHANGELOG.md 2026-03-10 05:48:14.000000000 +0100 +++ new/kubelogin-0.2.17/CHANGELOG.md 2026-04-09 04:04:52.000000000 +0200 @@ -1,5 +1,17 @@ # Change Log +## [0.2.17] + +### Bug Fixes + +* fix: add cross-process lock around cache.New to prevent macOS keychain race by @weinong in https://github.com/Azure/kubelogin/pull/744 + +### Maintenance + +* chore: upgrade Go toolchain from 1.24 to 1.25.9 by @Copilot in https://github.com/Azure/kubelogin/pull/745 + +**Full Changelog**: https://github.com/Azure/kubelogin/compare/v0.2.16...v0.2.17 + ## [0.2.16] ### Maintenance diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kubelogin-0.2.16/go.mod new/kubelogin-0.2.17/go.mod --- old/kubelogin-0.2.16/go.mod 2026-03-10 05:48:14.000000000 +0100 +++ new/kubelogin-0.2.17/go.mod 2026-04-09 04:04:52.000000000 +0200 @@ -1,7 +1,7 @@ module github.com/Azure/kubelogin // NOTE: kubelogin follows the same support policy as Go, which supports the last two major versions. -go 1.24.13 +go 1.25.9 require ( github.com/Azure/azure-sdk-for-go/sdk/azcore v1.14.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kubelogin-0.2.16/hack/changelog-generator/README.md new/kubelogin-0.2.17/hack/changelog-generator/README.md --- old/kubelogin-0.2.16/hack/changelog-generator/README.md 2026-03-10 05:48:14.000000000 +0100 +++ new/kubelogin-0.2.17/hack/changelog-generator/README.md 2026-04-09 04:04:52.000000000 +0200 @@ -136,5 +136,5 @@ ## Requirements - [`gh` CLI](https://cli.github.com/) authenticated via `gh auth login` -- Go 1.24.13 or later +- Go 1.25.9 or later diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kubelogin-0.2.16/hack/changelog-generator/go.mod new/kubelogin-0.2.17/hack/changelog-generator/go.mod --- old/kubelogin-0.2.16/hack/changelog-generator/go.mod 2026-03-10 05:48:14.000000000 +0100 +++ new/kubelogin-0.2.17/hack/changelog-generator/go.mod 2026-04-09 04:04:52.000000000 +0200 @@ -1,3 +1,3 @@ module github.com/Azure/kubelogin/hack/changelog-generator -go 1.24.13 +go 1.25.9 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kubelogin-0.2.16/pkg/internal/token/azurepipelinescredential.go new/kubelogin-0.2.17/pkg/internal/token/azurepipelinescredential.go --- old/kubelogin-0.2.16/pkg/internal/token/azurepipelinescredential.go 2026-03-10 05:48:14.000000000 +0100 +++ new/kubelogin-0.2.17/pkg/internal/token/azurepipelinescredential.go 2026-04-09 04:04:52.000000000 +0200 @@ -8,7 +8,6 @@ "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" - "github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache" "k8s.io/klog/v2" "github.com/Azure/kubelogin/pkg/internal/env" @@ -31,7 +30,7 @@ err error ) if opts.UsePersistentCache { - c, err = cache.New(nil) + c, err = newPersistentCache() if err != nil { klog.V(5).Infof("failed to create cache: %v", err) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kubelogin-0.2.16/pkg/internal/token/clientcertcredential.go new/kubelogin-0.2.17/pkg/internal/token/clientcertcredential.go --- old/kubelogin-0.2.16/pkg/internal/token/clientcertcredential.go 2026-03-10 05:48:14.000000000 +0100 +++ new/kubelogin-0.2.17/pkg/internal/token/clientcertcredential.go 2026-04-09 04:04:52.000000000 +0200 @@ -12,7 +12,6 @@ "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" - "github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache" "golang.org/x/crypto/pkcs12" "k8s.io/klog/v2" ) @@ -38,7 +37,7 @@ err error ) if opts.UsePersistentCache { - c, err = cache.New(nil) + c, err = newPersistentCache() if err != nil { klog.V(5).Infof("failed to create cache: %v", err) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kubelogin-0.2.16/pkg/internal/token/clientsecretcredential.go new/kubelogin-0.2.17/pkg/internal/token/clientsecretcredential.go --- old/kubelogin-0.2.16/pkg/internal/token/clientsecretcredential.go 2026-03-10 05:48:14.000000000 +0100 +++ new/kubelogin-0.2.17/pkg/internal/token/clientsecretcredential.go 2026-04-09 04:04:52.000000000 +0200 @@ -7,7 +7,6 @@ "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" - "github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache" "k8s.io/klog/v2" ) @@ -32,7 +31,7 @@ err error ) if opts.UsePersistentCache { - c, err = cache.New(nil) + c, err = newPersistentCache() if err != nil { klog.V(5).Infof("failed to create cache: %v", err) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kubelogin-0.2.16/pkg/internal/token/devicecodecredential.go new/kubelogin-0.2.17/pkg/internal/token/devicecodecredential.go --- old/kubelogin-0.2.16/pkg/internal/token/devicecodecredential.go 2026-03-10 05:48:14.000000000 +0100 +++ new/kubelogin-0.2.17/pkg/internal/token/devicecodecredential.go 2026-04-09 04:04:52.000000000 +0200 @@ -8,7 +8,6 @@ "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" - "github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache" "k8s.io/klog/v2" ) @@ -30,7 +29,7 @@ err error ) if opts.UsePersistentCache { - c, err = cache.New(nil) + c, err = newPersistentCache() if err != nil { klog.V(5).Infof("failed to create cache: %v", err) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kubelogin-0.2.16/pkg/internal/token/interactivebrowsercredential.go new/kubelogin-0.2.17/pkg/internal/token/interactivebrowsercredential.go --- old/kubelogin-0.2.16/pkg/internal/token/interactivebrowsercredential.go 2026-03-10 05:48:14.000000000 +0100 +++ new/kubelogin-0.2.17/pkg/internal/token/interactivebrowsercredential.go 2026-04-09 04:04:52.000000000 +0200 @@ -7,7 +7,6 @@ "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" - "github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache" "k8s.io/klog/v2" ) @@ -29,7 +28,7 @@ err error ) if opts.UsePersistentCache { - c, err = cache.New(nil) + c, err = newPersistentCache() if err != nil { klog.V(5).Infof("failed to create cache: %v", err) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kubelogin-0.2.16/pkg/internal/token/persistentcache.go new/kubelogin-0.2.17/pkg/internal/token/persistentcache.go --- old/kubelogin-0.2.16/pkg/internal/token/persistentcache.go 1970-01-01 01:00:00.000000000 +0100 +++ new/kubelogin-0.2.17/pkg/internal/token/persistentcache.go 2026-04-09 04:04:52.000000000 +0200 @@ -0,0 +1,56 @@ +package token + +import ( + "fmt" + "os" + "path/filepath" + + "github.com/Azure/azure-sdk-for-go/sdk/azidentity" + "github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache" +) + +// cacheNewFunc is the function used to create a new persistent cache. +// It is a variable to allow overriding in tests. +var cacheNewFunc = cache.New + +// newPersistentCache creates a persistent token cache with cross-process +// synchronization to prevent a race condition when multiple kubelogin +// processes start concurrently. The upstream azidentity/cache package +// tests storage availability using a non-atomic check-then-add pattern +// on macOS keychain, which fails with "The specified item already exists +// in the keychain" (-25299) when two processes race. +// +// This function uses a file lock to serialize the storage test across +// processes. If the lock cannot be acquired, it proceeds without locking +// (best-effort) to avoid breaking existing behavior. +// +// See https://github.com/Azure/kubelogin/issues/740 +func newPersistentCache() (azidentity.Cache, error) { + lockDir := lockFileDir() + lockPath := filepath.Join(lockDir, "cache-test.lock") + unlock := acquireProcessLock(lockPath) + defer unlock() + return cacheNewFunc(nil) +} + +// lockFileDir returns a user-scoped directory for the lock file. +// It prefers os.UserCacheDir()/kubelogin and falls back to +// os.TempDir()/kubelogin-<uid> so that the lock file is never +// placed directly in a shared, world-writable directory. +func lockFileDir() string { + if cacheDir, err := os.UserCacheDir(); err == nil { + dir := filepath.Join(cacheDir, "kubelogin") + if err := os.MkdirAll(dir, 0700); err == nil { + return dir + } + } + // Fallback: use a UID-scoped subdirectory under the temp dir + // so the lock file is not directly in a world-writable location. + dir := filepath.Join(os.TempDir(), fmt.Sprintf("kubelogin-%d", os.Getuid())) + if err := os.MkdirAll(dir, 0700); err != nil { + // Last resort: use temp dir directly. The lock is best-effort, + // so this is acceptable. + return os.TempDir() + } + return dir +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kubelogin-0.2.16/pkg/internal/token/persistentcache_test.go new/kubelogin-0.2.17/pkg/internal/token/persistentcache_test.go --- old/kubelogin-0.2.16/pkg/internal/token/persistentcache_test.go 1970-01-01 01:00:00.000000000 +0100 +++ new/kubelogin-0.2.17/pkg/internal/token/persistentcache_test.go 2026-04-09 04:04:52.000000000 +0200 @@ -0,0 +1,90 @@ +package token + +import ( + "fmt" + "path/filepath" + "sync" + "testing" + + "github.com/Azure/azure-sdk-for-go/sdk/azidentity" + "github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestNewPersistentCache_Success(t *testing.T) { + original := cacheNewFunc + defer func() { cacheNewFunc = original }() + + called := false + cacheNewFunc = func(opts *cache.Options) (azidentity.Cache, error) { + called = true + assert.Nil(t, opts) + return azidentity.Cache{}, nil + } + + c, err := newPersistentCache() + assert.NoError(t, err) + assert.Equal(t, azidentity.Cache{}, c) + assert.True(t, called) +} + +func TestNewPersistentCache_Error(t *testing.T) { + original := cacheNewFunc + defer func() { cacheNewFunc = original }() + + expectedErr := fmt.Errorf("test error") + cacheNewFunc = func(opts *cache.Options) (azidentity.Cache, error) { + return azidentity.Cache{}, expectedErr + } + + c, err := newPersistentCache() + assert.ErrorIs(t, err, expectedErr) + assert.Equal(t, azidentity.Cache{}, c) +} + +func TestNewPersistentCache_ConcurrentAccess(t *testing.T) { + original := cacheNewFunc + defer func() { cacheNewFunc = original }() + + var mu sync.Mutex + callCount := 0 + cacheNewFunc = func(opts *cache.Options) (azidentity.Cache, error) { + mu.Lock() + callCount++ + mu.Unlock() + return azidentity.Cache{}, nil + } + + var wg sync.WaitGroup + const goroutines = 10 + for i := 0; i < goroutines; i++ { + wg.Add(1) + go func() { + defer wg.Done() + _, err := newPersistentCache() + assert.NoError(t, err) + }() + } + wg.Wait() + assert.Equal(t, goroutines, callCount) +} + +func TestAcquireProcessLock_ReturnsUnlockFunc(t *testing.T) { + lockPath := filepath.Join(t.TempDir(), "test.lock") + unlock := acquireProcessLock(lockPath) + require.NotNil(t, unlock) + + // Release the lock — should not panic + unlock() +} + +func TestAcquireProcessLock_InvalidPath(t *testing.T) { + // Use a path in a non-existent directory + lockPath := filepath.Join(t.TempDir(), "nonexistent", "subdir", "test.lock") + unlock := acquireProcessLock(lockPath) + require.NotNil(t, unlock) + + // Should be a no-op function, calling it should not panic + unlock() +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kubelogin-0.2.16/pkg/internal/token/persistentcache_unix.go new/kubelogin-0.2.17/pkg/internal/token/persistentcache_unix.go --- old/kubelogin-0.2.16/pkg/internal/token/persistentcache_unix.go 1970-01-01 01:00:00.000000000 +0100 +++ new/kubelogin-0.2.17/pkg/internal/token/persistentcache_unix.go 2026-04-09 04:04:52.000000000 +0200 @@ -0,0 +1,32 @@ +//go:build unix + +package token + +import ( + "os" + + "golang.org/x/sys/unix" + "k8s.io/klog/v2" +) + +// acquireProcessLock attempts to acquire an exclusive file lock at the given path. +// It returns a function that releases the lock. If the lock cannot be acquired, +// it returns a no-op function so callers always get a valid unlock function. +func acquireProcessLock(path string) func() { + f, err := os.OpenFile(path, os.O_CREATE|os.O_RDWR, 0600) + if err != nil { + klog.V(5).Infof("failed to open lock file %s: %v", path, err) + return func() {} + } + if err := unix.Flock(int(f.Fd()), unix.LOCK_EX); err != nil { + klog.V(5).Infof("failed to acquire lock on %s: %v", path, err) + f.Close() + return func() {} + } + return func() { + if err := unix.Flock(int(f.Fd()), unix.LOCK_UN); err != nil { + klog.V(5).Infof("failed to release lock on %s: %v", path, err) + } + f.Close() + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kubelogin-0.2.16/pkg/internal/token/persistentcache_windows.go new/kubelogin-0.2.17/pkg/internal/token/persistentcache_windows.go --- old/kubelogin-0.2.16/pkg/internal/token/persistentcache_windows.go 1970-01-01 01:00:00.000000000 +0100 +++ new/kubelogin-0.2.17/pkg/internal/token/persistentcache_windows.go 2026-04-09 04:04:52.000000000 +0200 @@ -0,0 +1,9 @@ +//go:build windows + +package token + +// acquireProcessLock is a no-op on Windows because the macOS keychain +// race condition (issue #740) does not apply. Returns a no-op unlock function. +func acquireProcessLock(_ string) func() { + return func() {} +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kubelogin-0.2.16/pkg/internal/token/usernamepasswordcredential.go new/kubelogin-0.2.17/pkg/internal/token/usernamepasswordcredential.go --- old/kubelogin-0.2.16/pkg/internal/token/usernamepasswordcredential.go 2026-03-10 05:48:14.000000000 +0100 +++ new/kubelogin-0.2.17/pkg/internal/token/usernamepasswordcredential.go 2026-04-09 04:04:52.000000000 +0200 @@ -7,7 +7,6 @@ "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" - "github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache" "k8s.io/klog/v2" ) @@ -35,7 +34,7 @@ err error ) if opts.UsePersistentCache { - c, err = cache.New(nil) + c, err = newPersistentCache() if err != nil { klog.V(5).Infof("failed to create cache: %v", err) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kubelogin-0.2.16/pkg/internal/token/workloadidentitycredential.go new/kubelogin-0.2.17/pkg/internal/token/workloadidentitycredential.go --- old/kubelogin-0.2.16/pkg/internal/token/workloadidentitycredential.go 2026-03-10 05:48:14.000000000 +0100 +++ new/kubelogin-0.2.17/pkg/internal/token/workloadidentitycredential.go 2026-04-09 04:04:52.000000000 +0200 @@ -7,7 +7,6 @@ "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" "github.com/Azure/azure-sdk-for-go/sdk/azidentity" - "github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache" "k8s.io/klog/v2" ) @@ -39,7 +38,7 @@ err error ) if opts.UsePersistentCache { - c, err = cache.New(nil) + c, err = newPersistentCache() if err != nil { klog.V(5).Infof("failed to create cache: %v", err) } ++++++ kubelogin.obsinfo ++++++ --- /var/tmp/diff_new_pack.gprvZv/_old 2026-04-14 17:51:56.708531747 +0200 +++ /var/tmp/diff_new_pack.gprvZv/_new 2026-04-14 17:51:56.716532077 +0200 @@ -1,5 +1,5 @@ name: kubelogin -version: 0.2.16 -mtime: 1773118094 -commit: f2dcbd90666712e664d61419dc093219b3e5b1d5 +version: 0.2.17 +mtime: 1775700292 +commit: dff9ca0779c3b6425af3e1cb59109bef29fb95e1 ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/kubelogin/vendor.tar.gz /work/SRC/openSUSE:Factory/.kubelogin.new.21863/vendor.tar.gz differ: char 13, line 1
