[pacman-dev] REPLACES and FORCE in depends or desc files

Xavier shiningxc at gmail.com
Thu May 22 09:09:58 EDT 2008


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=26f4993e1d67a7daae1dcac47e112f9b15a6bf97

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=13e21110459aaf99dd739802c2b07b3d5b9e2a68
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.




More information about the pacman-dev mailing list