This patch introduces versioned provisions in "provision 1.0-1" format.
_alpm_db_whatprovides was modified accordingly (added sync500.py),
alpm_depcmp was modified accordingly (add043.py passes now; added add044.py
and add045.py).
Notes:
alpm_db_search now uses the whole versioned %PROVIDES% string in its search.
debug logging was simplified in alpm_depcmp.
Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
[Xavier: fixed a few typos, duplicate const strings with strdup before
modifying them, put some debugging back in alpm_depcmp, minor code cleanups
(var/function renaming), added a note in PKGBUILD man page.]
Signed-off-by: Chantry Xavier <shiningxc@gmail.com>
[Dan: made strcmp checks clearer, added a comment]
Signed-off-by: Dan McGee <dan@archlinux.org>
The pactest demonstrates what happens if fileconflict was found after the
removal part of a sync transaction.
Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
Currently alpm_depcmp uses pkg->version as a version number for provisions,
which is odd. The failure of the pactest demonstrates this.
Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
Also tell pactest to reset IgnoreGroup like it does for IgnorePkg.
Signed-off-by: Nathan Jones <nathanj@insightbb.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
One currently should succeed (006), and 005 fails.
requiredby005.py is originally from Nagy Gabor <ngaba@petra.hos.u-szeged.hu>.
Signed-off-by: Dan McGee <dan@archlinux.org>
As seen with the recent upgrade of pacman and the removal of the
pacman.d/current mirrorlist, files that were formerly in the backup array
get deleted upon their removal, which could be dangerous. Instead, we should
use the combined backup array of the old and new package. This fix should
address this issue in a relatively straightforward way.
In addition, old files should be moved to pacsave locations as expected.
Signed-off-by: Dan McGee <dan@archlinux.org>
That is the problem mentioned by Nagy there (with suggestions for fixing it) :
http://www.archlinux.org/pipermail/pacman-dev/2007-August/009082.html
If a dependency conflicts with a local package and has to replace it,
the PM_SYNC_TYPE_DEPEND information is lost, and the resulting install
reason is wrong (the package is marked as explictly installed).
Signed-off-by: Chantry Xavier <shiningxc@gmail.com>
remove048 is the case mentioned there (fails in 3.0 but works in 3.1) :
http://www.archlinux.org/pipermail/pacman-dev/2007-September/009294.html
It's the same as remove046 with -R instead of -Rc.
sync060 is a case reported this morning on IRC :
a pacman -Su wanted to replace gensplashutils by gensplash,
but pacman said gensplashutils was required by initscripts-gensplash,
while initscripts-gensplash was not even installed.
This is also fixed in the current 3.1 code though.
upgrade02{4,5} are the backup handling problem I described there :
http://www.archlinux.org/pipermail/pacman-dev/2007-September/009376.html
Signed-off-by: Chantry Xavier <shiningxc@gmail.com>
The sync package pkg3 depends on the sync package pkg2, but pkg1 replaces pkg2.
So pkg2 is added to the remove list.
When checkdeps checks if pkg2 can be removed, it looks at the packages that require pkg2
(with the RequiredBy field of pkg2), but this doesn't contain pkg3 at this point.
RequiredBy fields are only updated after the packages are installed.
Proposed solution : checkdeps should know both the remove and upgrade list to decide properly.
Reference:
http://www.archlinux.org/pipermail/pacman-dev/2007-July/008972.html
Signed-off-by: Chantry Xavier <shiningxc@gmail.com>
This patch cleans up and fix the _alpm_trans_update_depends function
and ensure that all requiredby fields are filled in case of multiple satisfiers
(previously, the handling of mutliple satisfiers in that function was inconsistent).
This makes a special case handling of requiredby in commit_single_pkg() obsolete,
and so allows cleaning that code as well.
Also fixed upgrade056 pactest because :
1) the requiredby fields were wrong, and this wouldn't happen with the fixed _alpm_trans_update_depends().
2) this is a very unusual case anyway (and handling all corner cases combined to a broken database
seems nearly impossible to achieve).
References :
http://www.archlinux.org/pipermail/pacman-dev/2007-July/008919.htmlhttp://www.archlinux.org/pipermail/pacman-dev/2007-July/008920.html
Signed-off-by: Chantry Xavier <shiningxc@gmail.com>
A side effect of the previous commit ( ea9a756eea )
is that it's now possible to use versioned conflicts.
Add two new conflict pactests for showing it.
Signed-off-by: Chantry Xavier <shiningxc@gmail.com>
This test installs three packages with a circular dependency,
to check everything still goes fine in that case.
Signed-off-by: Chantry Xavier <shiningxc@gmail.com>
This replaces the former -D operation that was undocumented and rather
hacky. It can be used with add, upgrade, or sync transactions and will affect
all packages installed. Should close FS #7193.
Also tell makepkg to use this new flag.
Signed-off-by: Dan McGee <dan@archlinux.org>
sync022 was added here:
39b6549655
This pactest reverses the installed package to see if it is correctly
picked, in order to test some further changes to this depcheck code that
currently makes sync022 fail.
Signed-off-by: Dan McGee <dan@archlinux.org>
This indicates a problem in the current removedeps function
(no version checking) for which Nagy proposed a fix here :
http://www.archlinux.org/pipermail/pacman-dev/2007-June/008539.html
But as he mentioned there, a better fix might be to use the checkdeps
function in the removedeps one.
Signed-off-by: Chantry Xavier <shiningxc@gmail.com>
Add the ability to check the permissions and type of a file within the
framework of pactest. Two new rules can be used:
self.addrule("FILE_TYPE=bin/foo|file")
self.addrule("FILE_MODE=bin/bar|644")
TODO: add the ability to add different types of files (eg links) via the test
package building framework, and add the ability to change the modes on files.
Signed-off-by: Dan McGee <dan@archlinux.org>
As described in the bug report, installing taglib-rcc (sync900 pactest)
works fine. But installing taglib back (sync901 pactest) doesn't.
Signed-off-by: Chantry Xavier <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
Same as remove040, with cascaded remove instead of simple remove.
Signed-off-by: Chantry Xavier <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
Most of these new tests deal with provisions upon sync or upgrade being
changed by packages, and pacman not being smart enough to deal with
it yet.
Signed-off-by: Dan McGee <dan@archlinux.org>
These should test various aspects of the DB when dealing with requiredby
entries. At least one fails without Nagy's alpm_depcmp patch.
Signed-off-by: Dan McGee <dan@archlinux.org>
for and is a dependency of another package. (upgrade057)
* Removed man2html stuff from doc/Makefile.am.
* Patch: improved depends checking in _alpm_checkdeps
Nagy Gabor <ngaba@petra.hos.u-szeged.hu>
* Slight revisions to pmrule.py to allow for a PKG_PROVIDES test.
* Very quick updates to the pactest README.
* Added rules to some of the newer upgrade tests. Note: upgrade055 now fails
due to requiredby entries not being written packages that are dependencies
in a provides role.
* Added the actual "Nagy's bug" as upgrade055.py.
* Updated the Makefile to distribute the pactest readme.
* Removed COPYING from the pactest directory- see COPYING at the root for the
same license.
provides, and conflicts.
- upgrade051 is known to fail- but we want to eventually make it work.
- upgrade052 is Nagy's bug as reported on the ML- I think. If it isn't,
let me know.