From ff9545f8629ac2e96d5ba2776a2e7e9d70f6a153 Mon Sep 17 00:00:00 2001 From: Arne Fitzenreiter Date: Mon, 2 Nov 2009 16:18:10 +0100 Subject: [PATCH] Pakfire: Update also the meta db at package list update. This prevent using old dependencies at package update. --- config/rootfiles/core/33/filelists/files | 2 ++ src/pakfire/lib/functions.pl | 45 ++++++++++++++++++++++++ src/pakfire/pakfire | 4 +-- 3 files changed, 49 insertions(+), 2 deletions(-) diff --git a/config/rootfiles/core/33/filelists/files b/config/rootfiles/core/33/filelists/files index 0037af1833..5bbe9c9e18 100644 --- a/config/rootfiles/core/33/filelists/files +++ b/config/rootfiles/core/33/filelists/files @@ -1 +1,3 @@ etc/system-release +opt/pakfire/pakfire +opt/pakfire/lib/functions.pl diff --git a/src/pakfire/lib/functions.pl b/src/pakfire/lib/functions.pl index ff330b5463..8d4a7da7db 100644 --- a/src/pakfire/lib/functions.pl +++ b/src/pakfire/lib/functions.pl @@ -369,6 +369,51 @@ sub dbgetlist { fetchfile("lists/packages_list.db", ""); move("$Conf::cachedir/packages_list.db", "$Conf::dbdir/lists/packages_list.db"); } + + # Update the meta database if new packages was in the package list + my @meta; + my $file; + my $line; + my $prog; + my ($name, $version, $release); + my @templine; + + open(FILE, "<$Conf::dbdir/lists/packages_list.db"); + my @db = ; + close(FILE); + + opendir(DIR,"$Conf::dbdir/meta"); + my @files = readdir(DIR); + closedir(DIR); + foreach $file (@files) { + next if ( $file eq "." ); + next if ( $file eq ".." ); + next if ( $file =~ /^old/ ); + open(FILE, "<$Conf::dbdir/meta/$file"); + @meta = ; + close(FILE); + foreach $line (@meta) { + @templine = split(/\: /,$line); + if ("$templine[0]" eq "Name") { + $name = $templine[1]; + chomp($name); + } elsif ("$templine[0]" eq "ProgVersion") { + $version = $templine[1]; + chomp($version); + } elsif ("$templine[0]" eq "Release") { + $release = $templine[1]; + chomp($release); + } + } + foreach $prog (@db) { + @templine = split(/\;/,$prog); + if (("$name" eq "$templine[0]") && ("$release" ne "$templine[2]")) { + move("$Conf::dbdir/meta/meta-$name","$Conf::dbdir/meta/old_meta-$name"); + fetchfile("meta/meta-$name", ""); + move("$Conf::cachedir/meta-$name", "$Conf::dbdir/meta/meta-$name"); + } + } + } } sub dblist { diff --git a/src/pakfire/pakfire b/src/pakfire/pakfire index 4201c253c5..3d0270aa41 100644 --- a/src/pakfire/pakfire +++ b/src/pakfire/pakfire @@ -279,13 +279,13 @@ ### Download first foreach $pak (@upgradepaks) { - system("mv $Conf::dbdir/meta/meta-$pak $Conf::dbdir/meta/old-meta-$pak"); + #system("mv $Conf::dbdir/meta/meta-$pak $Conf::dbdir/meta/old-meta-$pak"); &Pakfire::getpak("$pak", ""); } foreach $pak (@upgradepaks) { if (&Pakfire::upgradepak("$pak")) { - system("mv $Conf::dbdir/meta/old-meta-$pak $Conf::dbdir/meta/meta-$pak"); + #system("mv $Conf::dbdir/meta/old-meta-$pak $Conf::dbdir/meta/meta-$pak"); } } -- 2.39.2