summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/pkgs.pm61
1 files changed, 33 insertions, 28 deletions
diff --git a/perl-install/pkgs.pm b/perl-install/pkgs.pm
index 8147d4d44..c0df1ba8c 100644
--- a/perl-install/pkgs.pm
+++ b/perl-install/pkgs.pm
@@ -119,7 +119,7 @@ sub packageMedium { my ($packages, $p) = @_; $p or die "invalid package from\n"
#sub packageHeader { $_[0] && $_[0]->[$HEADER] }
#sub packageFreeHeader { $_[0] && c::headerFree(delete $_[0]->[$HEADER]) }
-sub packageSelectedOrInstalled { $_[0] && ($_[0]->flag_selected || $_[0]->flag_installed) }
+#sub packageSelectedOrInstalled { $_[0] && ($_[0]->flag_selected || $_[0]->flag_installed) }
#sub packageId {
# my ($packages, $pkg) = @_;
@@ -425,8 +425,6 @@ sub psUsingHdlists {
#- add additional fields used by DrakX.
@{$packages}{qw(count mediums)} = (0, {});
- $packages->{rpmdb} = URPM::DB::open($prefix);
- $packages->{rpmdb} ||= new URPM;
#- parse hdlists file.
my $medium = 1;
@@ -888,7 +886,7 @@ sub computeGroupSize {
}
-sub init_db {
+sub openInstallLog {
my ($prefix) = @_;
my $f = "$prefix/root/drakx/install.log";
@@ -899,10 +897,15 @@ sub init_db {
#- c::rpmSetVeryVerbose();
}
-sub rebuild_db_open_for_traversal {
- my ($packages, $prefix) = @_;
+sub closeInstallLog {
+ log::l("closing install.log file");
+ close LOG;
+}
+
+sub rpmDbOpen {
+ my ($prefix, $rebuild_needed) = @_;
- unless (exists $packages->{rebuild_db}) {
+ if ($rebuild_needed) {
if (my $pid = fork()) {
waitpid $pid, 0;
($? & 0xff00) and die "rebuilding of rpm database failed";
@@ -915,16 +918,20 @@ sub rebuild_db_open_for_traversal {
c::_exit(0);
}
- $packages->{rebuild_db} = undef;
}
- my $db = URPM::DB::open($prefix) or die "unable to open $prefix/var/lib/rpm/Packages";
- log::l("opened rpm database for examining existing packages");
+ my $db;
+ if ($db = URPM::DB::open($prefix)) {
+ log::l("opened rpm database for examining existing packages");
+ } else {
+ log::l("unable to open rpm database, using empty rpm db emulation");
+ $db = new URPM;
+ }
$db;
}
-sub clean_old_rpm_db {
+sub cleanOldRpmDb {
my ($prefix) = @_;
my $failed;
@@ -945,25 +952,23 @@ sub clean_old_rpm_db {
}
}
-sub done_db {
- log::l("closing install.log file");
- close LOG;
-}
-
sub selectPackagesAlreadyInstalled {
my ($packages, $prefix) = @_;
- #- avoid rebuilding the database if such case.
- $packages->{rebuild_db} = "oem does not need rebuilding the rpm db";
- my $db = rebuild_db_open_for_traversal($packages, $prefix);
-
- $packages->compute_installed_flags($db);
- log::l("done selecting packages to upgrade");
+ $packages->compute_installed_flags($packages->{rpmdb});
}
-#OBSOLETED TODO
-sub selectPackagesToUpgrade($$$;$$) {
- return;
+sub selectPackagesToUpgrade {
+ my ($packages, $prefix, $base, $toRemove, $toSave) = @_;
+
+ my $state = $packages->{state} ||= {};
+ $state->{selected} = {};
+ $state->{requested} = {};
+
+ $packages->resolve_packages_to_upgrade($packages->{rpmdb}, $state, requested => undef);
+ $packages->resolve_requested($packages->{rpmdb}, $state, callback_choices => \&packageCallbackChoices);
+}
+# return;
# my ($packages, $prefix, $base, $toRemove, $toSave) = @_;
# local $_; #- else perl complains on the map { ... } grep { ... } @...;
#
@@ -1260,7 +1265,7 @@ sub selectPackagesToUpgrade($$$;$$) {
# foreach my $p (values %{$packages->{names}}) {
# packageSetFlagUpgrade($p, 1) if packageFlagSelected($p);
# }
-}
+#}
sub allowedToUpgrade { $_[0] !~ /^(kernel|kernel22|kernel2.2|kernel-secure|kernel-smp|kernel-linus|kernel-linus2.2|hackkernel|kernel-enterprise)$/ }
@@ -1321,7 +1326,7 @@ sub install($$$;$$) {
log::l("pkgs::install the following: ", join(" ", map { $_->name } values %packages));
eval { fs::mount("/proc", "$prefix/proc", "proc", 0) } unless -e "$prefix/proc/cpuinfo";
- init_db($prefix);
+ openInstallLog($prefix);
#- do not modify/translate the message used with installCallback since
#- these are keys during progressing installation, or change in other
@@ -1504,7 +1509,7 @@ sub install($$$;$$) {
cleanHeaders($prefix);
} while ($nb > 0 && !$pkgs::cancel_install);
- done_db();
+ closeInstallLog();
cleanHeaders($prefix);