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 :
By the way, the above commit actually enabled previously unused code,
as Nagy noticed :
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 :
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.
pacman-dev mailing list