summaryrefslogtreecommitdiffstats
path: root/urpm/sys.pm
diff options
context:
space:
mode:
Diffstat (limited to 'urpm/sys.pm')
-rw-r--r--urpm/sys.pm33
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)