Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package podman for openSUSE:Factory checked 
in at 2026-03-17 19:02:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/podman (Old)
 and      /work/SRC/openSUSE:Factory/.podman.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "podman"

Tue Mar 17 19:02:20 2026 rev:168 rq:1339204 version:5.8.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/podman/podman.changes    2026-02-26 
18:50:52.719089652 +0100
+++ /work/SRC/openSUSE:Factory/.podman.new.8177/podman.changes  2026-03-17 
19:03:13.505507745 +0100
@@ -1,0 +2,15 @@
+Thu Mar 12 16:14:32 UTC 2026 - Danish Prakash <[email protected]>
+
+- Update to version 5.8.1:
+  * Bump to v5.8.1
+  * Release notes for v5.8.1
+  * docs: make the --migrate-db more clear
+  * update boltdb migrating warning
+  * libpod: prefer sqlite in getDBState()
+  * libpod: fix parallel migration issue
+  * libpod: return full path in sqliteStatePath()
+  * migrate to oidc
+  * Bump Podman to v5.8.1-dev
+  * Disable lint to fix CI
+
+-------------------------------------------------------------------

Old:
----
  podman-5.8.0.obscpio

New:
----
  podman-5.8.1.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ podman.spec ++++++
--- /var/tmp/diff_new_pack.pWn5Ob/_old  2026-03-17 19:03:14.625554162 +0100
+++ /var/tmp/diff_new_pack.pWn5Ob/_new  2026-03-17 19:03:14.629554328 +0100
@@ -22,7 +22,7 @@
 %bcond_without  apparmor
 
 Name:           podman
-Version:        5.8.0
+Version:        5.8.1
 Release:        0
 Summary:        Daemon-less container engine for managing containers, pods and 
images
 License:        Apache-2.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.pWn5Ob/_old  2026-03-17 19:03:14.689556815 +0100
+++ /var/tmp/diff_new_pack.pWn5Ob/_new  2026-03-17 19:03:14.701557312 +0100
@@ -2,7 +2,7 @@
   <service name="obs_scm" mode="manual">
     <param name="url">https://github.com/containers/podman.git</param>
     <param name="scm">git</param>
-    <param name="revision">v5.8.0</param>
+    <param name="revision">v5.8.1</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="changesgenerate">enable</param>
     <param name="versionrewrite-pattern">v(.*)</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.pWn5Ob/_old  2026-03-17 19:03:14.745559135 +0100
+++ /var/tmp/diff_new_pack.pWn5Ob/_new  2026-03-17 19:03:14.757559633 +0100
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/containers/podman.git</param>
-              <param 
name="changesrevision">07efc23e05c3d9aa15a0f30d57194737bfc4b6b1</param></service></servicedata>
+              <param 
name="changesrevision">c6077f645788743258a1a749f8005b4fb3cbe533</param></service></servicedata>
 (No newline at EOF)
 

++++++ podman-5.8.0.obscpio -> podman-5.8.1.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/podman-5.8.0/.cirrus.yml new/podman-5.8.1/.cirrus.yml
--- old/podman-5.8.0/.cirrus.yml        2026-02-12 16:41:26.000000000 +0100
+++ new/podman-5.8.1/.cirrus.yml        2026-03-11 14:31:04.000000000 +0100
@@ -74,7 +74,10 @@
 
 gcp_credentials: 
ENCRYPTED[a28959877b2c9c36f151781b0a05407218cda646c7d047fc556e42f55e097e897ab63ee78369dae141dcf0b46a9d0cdd]
 
-aws_credentials: 
ENCRYPTED[b4127fef212e5bc38dd3d96eff17440f2c62d6d04219fa97fa7acdcd81475352e70a34863705b5e01289fdc4012d5ee2]
+aws_credentials:
+  role_arn: arn:aws:iam::449134212816:role/podman-ci-role
+  role_session_name: cirrus
+  region: us-east-1
 
 
 validate-source_task:
@@ -295,8 +298,6 @@
     # This host is/was shared with potentially many other CI tasks.
     # The previous task may have been canceled or aborted.
     prep_script: &mac_cleanup "contrib/cirrus/mac_cleanup.sh"
-    lint_script:
-        - make golangci-lint
     basic_build_script:
         - make .install.ginkgo
         - make podman-remote
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/podman-5.8.0/RELEASE_NOTES.md 
new/podman-5.8.1/RELEASE_NOTES.md
--- old/podman-5.8.0/RELEASE_NOTES.md   2026-02-12 16:41:26.000000000 +0100
+++ new/podman-5.8.1/RELEASE_NOTES.md   2026-03-11 14:31:04.000000000 +0100
@@ -1,5 +1,9 @@
 # Release Notes
 
+## 5.8.1
+### Bugfixes
+- Fixed a critical bug where automatic migration from BoltDB to SQLite after a 
reboot could perform a partial migration, with some containers in SQLite and 
some remaining in BoltDB, when Quadlets were in use 
([#28215](https://github.com/containers/podman/issues/28216)). For those who 
encountered this bug with 5.8.0 there is no way to automatically recover. If 
you do not have persistent containers/pods/volumes (i.e. all containers are run 
using Quadlets) then the easiest option is to move the `db.sql` file in 
Podman's storage directory to `db.sql.bak` (or similar) and reboot again with 
v5.8.1 to attempt another migration. Please contact the maintainers with any 
issues during migration and we will assist as able.
+
 ## 5.8.0
 ### Features
 - The `podman quadlet install` command can now install files which contain 
multiple separate Quadlet files. The files must be separated with a `---` 
delimeter on a new line, and each section must begin with a `# FileName=<name>` 
line to name the new Quadlet 
([#27384](https://github.com/containers/podman/pull/27384)).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/podman-5.8.0/docs/source/markdown/podman-system-migrate.1.md 
new/podman-5.8.1/docs/source/markdown/podman-system-migrate.1.md
--- old/podman-5.8.0/docs/source/markdown/podman-system-migrate.1.md    
2026-02-12 16:41:26.000000000 +0100
+++ new/podman-5.8.1/docs/source/markdown/podman-system-migrate.1.md    
2026-03-11 14:31:04.000000000 +0100
@@ -31,9 +31,11 @@
 Migrate from the legacy BoltDB database to SQLite.
 Support for BoltDB will be removed in Podman 6.0.
 Podman will display a warning if this migration is necessary.
-To ensure complete migration, all other Podman commands should be shut down 
before database migration.
+To ensure complete migration, all other Podman commands must be shut down 
before database migration.
 In particular, systemd-activated services like **podman system service** and 
Quadlets should be manually stopped prior to migration.
-The legacy database will not be removed, so no data loss should occur even on 
failure.
+If you are unsure please reboot instead and run any podman command afterwards 
which will trigger the migration
+automatically as we can ensure there that no other parallel commands can 
interfere with the database.
+The legacy database will not be removed, just renamed, so no permanent data 
loss should occur even on failure.
 
 #### **--new-runtime**=*runtime*
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/podman-5.8.0/libpod/runtime.go 
new/podman-5.8.1/libpod/runtime.go
--- old/podman-5.8.0/libpod/runtime.go  2026-02-12 16:41:26.000000000 +0100
+++ new/podman-5.8.1/libpod/runtime.go  2026-03-11 14:31:04.000000000 +0100
@@ -305,10 +305,23 @@
 
        // get default boltdb path
        boltDBPath := getBoltDBPath(runtime)
+       sqlitePath := sqliteStatePath(runtime)
 
        switch backend {
        case config.DBBackendDefault:
-               // for backwards compatibility check if boltdb exists, if it 
does not we use sqlite
+               // First check if we have a sqlite file, then we know we must 
use sqlite.
+               if err := fileutils.Exists(sqlitePath); err == nil {
+                       // need to set DBBackend string so podman info will 
show the backend name correctly
+                       runtime.config.Engine.DBBackend = 
config.DBBackendSQLite.String()
+                       return NewSqliteState(runtime)
+               } else if !errors.Is(err, fs.ErrNotExist) {
+                       // Return error here some other problem with the sqlite 
file, rather than silently
+                       // switch to boltdb which would be hard to debug for 
the user return the error back
+                       // as this likely a real bug.
+                       return nil, err
+               }
+
+               // for backwards compatibility check if boltdb exists, if it 
does not we also use sqlite
                if err := fileutils.Exists(boltDBPath); err != nil {
                        if errors.Is(err, fs.ErrNotExist) {
                                // need to set DBBackend string so podman info 
will show the backend name correctly
@@ -372,6 +385,9 @@
                return fmt.Errorf("creating runtime volume path directory: %w", 
err)
        }
 
+       // Must be set before getDBState() as this will override it otherwise.
+       originalDBConfig := runtime.config.Engine.DBBackend
+
        // Set up the state.
        runtime.state, err = getDBState(runtime)
        if err != nil {
@@ -642,10 +658,20 @@
                if err2 := runtime.refresh(ctx, runtimeAliveFile); err2 != nil {
                        return err2
                }
-       } else if os.Getenv("SUPPRESS_BOLTDB_WARNING") == "" && 
os.Getenv("CI_DESIRED_DATABASE") != "boltdb" && runtime.state.Type() == 
"boltdb" {
-               // Only warn about the database if we're not refreshing the 
state.
-               // Refresh will attempt an automatic migration.
-               logrus.Warnf("The deprecated BoltDB database driver is in use. 
This driver will be removed in the upcoming Podman 6.0 release in mid 2026. It 
is advised that you migrate to SQLite to avoid issues when this occurs using 
the `podman system migrate --migrate-db` command. Set SUPPRESS_BOLTDB_WARNING 
environment variable to remove this message.")
+       } else if runtime.state.Type() == "boltdb" {
+               if originalDBConfig == "" && 
fileutils.Exists(sqliteStatePath(runtime)) == nil {
+                       // Another process must have migrated to sqlite in 
parallel, boltdb is now invalid so switch the state to sqlite.
+                       // Ignore errors as there is nothing we can do about 
them at this point.
+                       _ = runtime.state.Close()
+                       runtime.state, err = NewSqliteState(runtime)
+                       if err != nil {
+                               return fmt.Errorf("failed to load sqlite state 
after detecting database migration: %w", err)
+                       }
+               } else if os.Getenv("SUPPRESS_BOLTDB_WARNING") == "" && 
os.Getenv("CI_DESIRED_DATABASE") != "boltdb" {
+                       // Only warn about the database if we're not refreshing 
the state.
+                       // Refresh will attempt an automatic migration.
+                       logrus.Warnf("The deprecated BoltDB database driver is 
in use. This driver will be removed in the upcoming Podman 6.0 release in mid 
2026. It is advised that you migrate to SQLite to avoid issues when this occurs 
by rebooting and running podman again or using the `podman system migrate 
--migrate-db` command. IMPORTANT, only use that command when you can ensure 
they will be no parallel podman processes running, if you are unsure do the 
reboot. Set SUPPRESS_BOLTDB_WARNING environment variable to remove this 
message.")
+               }
        }
 
        // Check current boot ID - will be written to the alive file.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/podman-5.8.0/libpod/runtime_migrate.go 
new/podman-5.8.1/libpod/runtime_migrate.go
--- old/podman-5.8.0/libpod/runtime_migrate.go  2026-02-12 16:41:26.000000000 
+0100
+++ new/podman-5.8.1/libpod/runtime_migrate.go  2026-03-11 14:31:04.000000000 
+0100
@@ -139,8 +139,7 @@
 
 func (r *Runtime) migrateDB() error {
        // Does the SQLite state already exist?
-       dbBasePath, dbFilename := sqliteStatePath(r)
-       dbPath := filepath.Join(dbBasePath, dbFilename)
+       dbPath := sqliteStatePath(r)
        if err := fileutils.Exists(dbPath); err == nil {
                return fmt.Errorf("a SQLite database already exists at %s, 
refusing to overwrite", dbPath)
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/podman-5.8.0/libpod/sqlite_state.go 
new/podman-5.8.1/libpod/sqlite_state.go
--- old/podman-5.8.0/libpod/sqlite_state.go     2026-02-12 16:41:26.000000000 
+0100
+++ new/podman-5.8.1/libpod/sqlite_state.go     2026-03-11 14:31:04.000000000 
+0100
@@ -45,7 +45,7 @@
        sqliteOptionCaseSensitiveLike = "&_cslike=TRUE"
 
        // Assembled sqlite options used when opening the database.
-       sqliteOptions = sqliteDbFilename + "?" +
+       sqliteOptions = "?" +
                sqliteOptionLocation +
                sqliteOptionSynchronous +
                sqliteOptionForeignKeys +
@@ -58,12 +58,12 @@
        logrus.Info("Using sqlite as database backend")
        state := new(SQLiteState)
 
-       basePath, _ := sqliteStatePath(runtime)
+       dbPath := sqliteStatePath(runtime)
 
        // c/storage is set up *after* the DB - so even though we use the c/s
        // root (or, for transient, runroot) dir, we need to make the dir
        // ourselves.
-       if err := os.MkdirAll(basePath, 0o700); err != nil {
+       if err := os.MkdirAll(filepath.Dir(dbPath), 0o700); err != nil {
                return nil, fmt.Errorf("creating root directory: %w", err)
        }
 
@@ -78,7 +78,7 @@
        }
        sqliteOptionBusyTimeout := "&_busy_timeout=" + busyTimeout
 
-       conn, err := sql.Open("sqlite3", filepath.Join(basePath, 
sqliteOptions+sqliteOptionBusyTimeout))
+       conn, err := sql.Open("sqlite3", 
dbPath+sqliteOptions+sqliteOptionBusyTimeout)
        if err != nil {
                return nil, fmt.Errorf("initializing sqlite database: %w", err)
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/podman-5.8.0/libpod/sqlite_state_internal.go 
new/podman-5.8.1/libpod/sqlite_state_internal.go
--- old/podman-5.8.0/libpod/sqlite_state_internal.go    2026-02-12 
16:41:26.000000000 +0100
+++ new/podman-5.8.1/libpod/sqlite_state_internal.go    2026-03-11 
14:31:04.000000000 +0100
@@ -7,6 +7,7 @@
        "errors"
        "fmt"
        "os"
+       "path/filepath"
        "strings"
 
        "github.com/containers/podman/v5/libpod/define"
@@ -17,16 +18,15 @@
        _ "github.com/mattn/go-sqlite3"
 )
 
-// Returns two strings. First is base path - directory we'll create in.
-// Second is the filename of the database itself.
-func sqliteStatePath(runtime *Runtime) (string, string) {
+// sqliteStatePath returns the path to the sqlite file.
+func sqliteStatePath(runtime *Runtime) string {
        basePath := runtime.storageConfig.GraphRoot
        if runtime.storageConfig.TransientStore {
                basePath = runtime.storageConfig.RunRoot
        } else if !runtime.storageSet.StaticDirSet {
                basePath = runtime.config.Engine.StaticDir
        }
-       return basePath, sqliteDbFilename
+       return filepath.Join(basePath, sqliteDbFilename)
 }
 
 func initSQLiteDB(conn *sql.DB) (defErr error) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/podman-5.8.0/test/e2e/info_test.go 
new/podman-5.8.1/test/e2e/info_test.go
--- old/podman-5.8.0/test/e2e/info_test.go      2026-02-12 16:41:26.000000000 
+0100
+++ new/podman-5.8.1/test/e2e/info_test.go      2026-03-11 14:31:04.000000000 
+0100
@@ -196,12 +196,9 @@
                        // default should be sqlite
                        {arg: "", want: "sqlite"},
                        {arg: "boltdb", want: "boltdb"},
-                       // now because a boltdb exists it should use boltdb 
when default is requested
-                       {arg: "", want: "boltdb"},
+                       // now when both boltdb and sqlite exists it should use 
sqlite when default is requested
+                       {arg: "", want: "sqlite"},
                        {arg: "sqlite", want: "sqlite"},
-                       // just because we requested sqlite doesn't mean it 
stays that way.
-                       // once a boltdb exists, podman will forevermore stick 
with it
-                       {arg: "", want: "boltdb"},
                }
 
                for _, tt := range backends {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/podman-5.8.0/version/rawversion/version.go 
new/podman-5.8.1/version/rawversion/version.go
--- old/podman-5.8.0/version/rawversion/version.go      2026-02-12 
16:41:26.000000000 +0100
+++ new/podman-5.8.1/version/rawversion/version.go      2026-03-11 
14:31:04.000000000 +0100
@@ -4,4 +4,4 @@
 //
 // This indirection is needed to prevent semver packages from bloating
 // Quadlet's binary size.
-const RawVersion = "5.8.0"
+const RawVersion = "5.8.1"

++++++ podman.obsinfo ++++++
--- /var/tmp/diff_new_pack.pWn5Ob/_old  2026-03-17 19:03:29.334163712 +0100
+++ /var/tmp/diff_new_pack.pWn5Ob/_new  2026-03-17 19:03:29.350164374 +0100
@@ -1,5 +1,5 @@
 name: podman
-version: 5.8.0
-mtime: 1770910886
-commit: 07efc23e05c3d9aa15a0f30d57194737bfc4b6b1
+version: 5.8.1
+mtime: 1773235864
+commit: c6077f645788743258a1a749f8005b4fb3cbe533
 

Reply via email to