mirror of
https://github.com/moparisthebest/pacman
synced 2024-12-24 08:48:50 -05:00
391952600d
From now on _alpm_db_find_fileconflicts() works with upgrade and remove target lists (like checkdeps), which makes it transaction independent (we still need a trans param because of the progressbar). This is a small step towards the universal transaction. So we call this function directly from sync.c before commiting the remove transaction. This is much safer, but we can get false fileconflict error alarms in some tricky cases ("symlinks puzzle" etc). The patch on find_fileconflict looks complex, but it is mainly an "indent-patch", the new code-part can be found after the /* check remove list ... */ comment, and I modified something around the "file has changed hand" case (see comment modifications in the code). Unfortunately sync.c became more ugly, because we have to create 2 parallel internal transactions: to avoid duplicated work, upgrade transaction is used to load package data (filelists). This problem will disappear, when we finally get rid of internal transactions. Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu> Signed-off-by: Dan McGee <dan@archlinux.org>
21 lines
458 B
Python
21 lines
458 B
Python
self.description = "fileconflict error cancels the sync transaction after the removal part"
|
|
|
|
sp = pmpkg("pkg1")
|
|
sp.replaces = ["pkg3"]
|
|
sp.files = ["dir/file"]
|
|
self.addpkg2db("sync", sp)
|
|
|
|
lp1 = pmpkg("pkg3")
|
|
self.addpkg2db("local", lp1)
|
|
|
|
lp2 = pmpkg("pkg2")
|
|
lp2.files = ["dir/file"]
|
|
self.addpkg2db("local", lp2)
|
|
|
|
self.args = "-Su"
|
|
|
|
self.addrule("PACMAN_RETCODE=1")
|
|
self.addrule("!PKG_EXIST=pkg1")
|
|
self.addrule("PKG_EXIST=pkg2")
|
|
self.addrule("PKG_EXIST=pkg3")
|