[pacman-dev] [patch] Conflict variables
Xavier
shiningxc at gmail.com
Sat Aug 4 11:24:43 EDT 2007
On Thu, Aug 02, 2007 at 09:17:16PM +0200, Nagy Gabor wrote:
> Hi!
> After the professional cleanup of conflict.c (by Xavier, thx; anyway, do
> you want to add conflict checking to db_test?;-) we don't need to restrict
> conflicts to conflict-name only, we can use the depend syntax.
> So this patch doesn't change any important thing in the source code, mainly
> this is a testcase instead.
> Bye, ngaba
Indeed, we now get versioned conflicts for free, that's pretty cool :)
About adding it to db_test, do you mean just checking that there are no
conflicts between the locally installed packages, by calling something like :
check_conflict(dblist, dblist, &baddeps, 0);
> diff --git a/lib/libalpm/conflict.c b/lib/libalpm/conflict.c
> index d52f7e1..1baa0c2 100644
> --- a/lib/libalpm/conflict.c
> +++ b/lib/libalpm/conflict.c
> @@ -112,13 +112,6 @@ static void check_conflict(alpm_list_t *list1, alpm_list_t *list2,
> for(j = alpm_pkg_get_conflicts(pkg1); j; j = j->next) {
> const char *conflict = j->data;
>
> - if(strcmp(pkg1name, conflict) == 0) {
> - /* a package cannot conflict with itself -- that's just not nice */
> - _alpm_log(PM_LOG_DEBUG, "package '%s' conflicts with itself - packaging error",
> - pkg1name);
> - continue;
> - }
> -
> for(k = list2; k; k = k->next) {
> pmpkg_t *pkg2 = k->data;
> const char *pkg2name = alpm_pkg_get_name(pkg2);
> @@ -140,8 +133,7 @@ static void check_conflict(alpm_list_t *list1, alpm_list_t *list2,
> }
> }
>
> -/* Returns a alpm_list_t* of pmdepmissing_t pointers.
> - * conflicts are always name only */
> +/* Returns a alpm_list_t* of pmdepmissing_t pointers. */
> alpm_list_t *_alpm_checkconflicts(pmdb_t *db, alpm_list_t *packages)
> {
> alpm_list_t *baddeps = NULL;
> diff --git a/pactest/tests/conflict002.py b/pactest/tests/conflict002.py
> new file mode 100644
> index 0000000..2e326f5
> --- /dev/null
> +++ b/pactest/tests/conflict002.py
> @@ -0,0 +1,13 @@
> +self.description = "conflict with version (conflict)"
> +
> +p = pmpkg("pkg1")
> +p.conflicts = ["pkg2<=1.0-2"]
> +self.addpkg(p);
> +
> +lp = pmpkg("pkg2", "1.0-1")
> +self.addpkg2db("local", lp)
> +
> +self.args = "-A %s" % p.filename()
> +self.addrule("PACMAN_RETCODE=1")
> +self.addrule("!PKG_EXIST=pkg1")
> +self.addrule("PKG_EXIST=pkg2")
> diff --git a/pactest/tests/conflict003.py b/pactest/tests/conflict003.py
> new file mode 100644
> index 0000000..7205086
> --- /dev/null
> +++ b/pactest/tests/conflict003.py
> @@ -0,0 +1,13 @@
> +self.description = "conflict with version (no conflict)"
> +
> +p = pmpkg("pkg1")
> +p.conflicts = ["pkg2=1.0-2"]
> +self.addpkg(p);
> +
> +lp = pmpkg("pkg2", "1.0-1")
> +self.addpkg2db("local", lp)
> +
> +self.args = "-A %s" % p.filename()
> +self.addrule("PACMAN_RETCODE=0")
> +self.addrule("PKG_EXIST=pkg1")
> +self.addrule("PKG_EXIST=pkg2")
That looks nice, applied it in my git tree :)
More information about the pacman-dev
mailing list