[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