[pacman-dev] REPLACES and FORCE in depends or desc files
While inspecting the freshly rebuilt databases, I noticed the following problem : * repo-add adds these two entries in desc file * pacman reads them from desc file (for both local or sync db) * pacman writes them to depends file (only possible with local db) after the following commit : http://projects.archlinux.org/?p=pacman.git;a=commitdiff;h=26f4993e1d67a7daa... By the way, the above commit actually enabled previously unused code, as Nagy noticed : http://www.archlinux.org/pipermail/pacman-dev/2008-January/010662.html This code was only run when local == 0. But when we use db_write, it is always on local db, so we always have local == 1. The fact that this code was previously unused probably explains why this problem hasn't been detected until now. But actually I just found the real reason by going deeper in the history. The replaces and force fields were originally moved from desc to depends during pacman 3 development, but then it was reverted before the release : http://projects.archlinux.org/?p=pacman.git;a=commitdiff;h=13e21110459aaf99d... But only db_read was reverted, not db_write. This was impossible to detect back then because this code was unused. This code was later enabled, leading to the inconsistency. I guess the quickest / easiest fix is to fix db_write to also put force / replaces in the desc file, and then have a new 3.1.x release. The local database will be slightly messed up but it will go away eventually, as upgrade goes. Note that this is totally harmless, because the force / replaces in local db are totally unused. They were just added for consistency / completeness, and to have all informations on -Qi operations. So harmless but still worth fixing imo.
While inspecting the freshly rebuilt databases, I noticed the following problem : * repo-add adds these two entries in desc file * pacman reads them from desc file (for both local or sync db) * pacman writes them to depends file (only possible with local db)
Good catch.
I guess the quickest / easiest fix is to fix db_write to also put force / replaces in the desc file, and then have a new 3.1.x release. The local database will be slightly messed up but it will go away eventually, as upgrade goes. Note that this is totally harmless, because the force / replaces in local db are totally unused. They were just added for consistency / completeness, and to have all informations on -Qi operations. So harmless but still worth fixing imo.
+1 Bye ---------------------------------------------------- SZTE Egyetemi Könyvtár - http://www.bibl.u-szeged.hu This mail sent through IMP: http://horde.org/imp/
2008/5/22 Nagy Gabor <ngaba@bibl.u-szeged.hu>:
While inspecting the freshly rebuilt databases, I noticed the following problem : * repo-add adds these two entries in desc file * pacman reads them from desc file (for both local or sync db) * pacman writes them to depends file (only possible with local db)
Good catch.
I guess the quickest / easiest fix is to fix db_write to also put force / replaces in the desc file, and then have a new 3.1.x release. The local database will be slightly messed up but it will go away eventually, as upgrade goes. Note that this is totally harmless, because the force / replaces in local db are totally unused. They were just added for consistency / completeness, and to have all informations on -Qi operations. So harmless but still worth fixing imo.
+1
I agree too, sounds like a simple enough fix until this is fully corrected. Awesome catch, thanks a lot for checking my work 8)
Xavier wrote:
I guess the quickest / easiest fix is to fix db_write to also put force / replaces in the desc file, and then have a new 3.1.x release. The local database will be slightly messed up but it will go away eventually, as upgrade goes.
Wait, that part is irrelevant, I just noticed this change didn't make it into 3.1.x, it is just in master, and pacman-git package :) So just a small patch to push to master and all will be well.
participants (3)
-
Aaron Griffin
-
Nagy Gabor
-
Xavier