diff options
Diffstat (limited to 'urpm/sys.pm')
-rw-r--r-- | urpm/sys.pm | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/urpm/sys.pm b/urpm/sys.pm index b7cb1220..d8da722a 100644 --- a/urpm/sys.pm +++ b/urpm/sys.pm @@ -288,6 +288,39 @@ sub migrate_back_rpmdb_db_version { clean_rpmdb_shared_regions($root); } +=item migrate_rpmdb_to_sqlite($urpm, $root) + +Migrate rpmdb to the new sqlite backend. + +=cut + +sub migrate_rpmdb_to_sqlite { + my ($urpm, $root) = @_; + $urpm->{info}("migrating db from bdb to sqlite (rpm >= 4.16)"); + # Whatever is the default backend: + URPM::add_macro('_db_backend sqlite'); + if (system('chroot', $root, 'rpm', '--rebuilddb') == 0) { + $urpm->{log}("rpm db converted to sqlite successfully"); + } else { + $urpm->{error}("rpm db conversion failed. You will not be able to run rpm >= 4.17"); + } +} + +=item migrate_forward_rpmdb_db_version($urpm, $root) + +Check if we need to migrate rpmdb to a new backend prior to use it +and do it if needed. + +=cut + +sub migrate_forward_rpmdb_db_version { + my ($urpm, $root) = @_; + + if ($urpm->{need_migrate_rpmdb_now} eq '4.16') { + migrate_rpmdb_to_sqlite($urpm, $root); + } +} + =item apply_delta_rpm($deltarpm, $o_dir, $o_pkg) |