On Jan 9, 2008 6:24 PM, Aaron Griffin <aaronmgriffin@gmail.com> wrote:
On Jan 9, 2008 6:10 PM, Dan McGee <dpmcgee@gmail.com> wrote:
On Jan 9, 2008 9:40 AM, Xavier <shiningxc@gmail.com> wrote:
Dan McGee wrote:
So my point still stands. Do you know for a fact that having a non-empty replaces list for a local package will not affect conflict and dependency resolving? Until you have proved this, I don't feel comfortable making the change.
I have to admit I was also a bit confused by the whole discussion, but didn't speak up because it looked like a minor problem.
To answer your question, it's actually rather easy. get_replaces is really just used once, and that is in find_replacements. find_replacements is only used for the -Su operation, and has 0 effect on conflict and dependency resolving.
grep -r get_replaces lib/libalpm/*.c lib/libalpm/package.c: alpm_list_t SYMEXPORT *alpm_pkg_get_replaces(pmpkg_t *pkg) lib/libalpm/package.c: newpkg->replaces = alpm_list_strdup(alpm_pkg_get_replaces(pkg)); lib/libalpm/sync.c: for(k = alpm_pkg_get_replaces(spkg); k; k = k->next) {
And it's called on spkg, so a sync pkg, in a sync database.
Patches welcome from anyone, this shouldn't be a hard fix. Thanks for looking into the details, Xavier.
Bam? http://code.phraktured.net/?p=pacman.git;a=shortlog;h=woot
409 /* the REPLACES tag is special -- it only appears in sync repositories, 410 * not the local one. */ ^^ We should probably get rid of that misleading comment too. And why we are at it, any reason not to store that FORCE tag too? It seems like it could be useful information (knowing that this package was force-sysupgraded). If we do that, then we don't have any if(local) constructs left. -Dan