Просмотр исходного кода

libdpkg: Refactor deparchsatisfied() from archsatisfied()

This allows to specify an architecture different from the package one.
Guillem Jover лет назад: 14
Родитель
Сommit
ff180c359c
3 измененных файлов с 12 добавлено и 2 удалено
  1. 9 2
      lib/dpkg/depcon.c
  2. 2 0
      lib/dpkg/dpkg-db.h
  3. 1 0
      lib/dpkg/libdpkg.map

+ 9 - 2
lib/dpkg/depcon.c

@@ -51,7 +51,8 @@ versionsatisfied(struct pkgbin *it, struct deppossi *against)
  * - Conflicts/Replaces/Breaks are assumed to apply to packages of any arch.
  */
 bool
-archsatisfied(struct pkgbin *it, struct deppossi *against)
+deparchsatisfied(struct pkgbin *it, const struct dpkg_arch *it_arch,
+                 struct deppossi *against)
 {
 	const struct dpkg_arch *dep_arch, *pkg_arch;
 
@@ -67,7 +68,7 @@ archsatisfied(struct pkgbin *it, struct deppossi *against)
 	     against->up->type == dep_breaks))
 		return true;
 
-	pkg_arch = it->arch;
+	pkg_arch = it_arch;
 	if (dep_arch->type == arch_none || dep_arch->type == arch_all)
 		dep_arch = dpkg_arch_get(arch_native);
 	if (pkg_arch->type == arch_none || pkg_arch->type == arch_all)
@@ -75,3 +76,9 @@ archsatisfied(struct pkgbin *it, struct deppossi *against)
 
 	return (dep_arch == pkg_arch);
 }
+
+bool
+archsatisfied(struct pkgbin *it, struct deppossi *against)
+{
+	return deparchsatisfied(it, it->arch, against);
+}

+ 2 - 0
lib/dpkg/dpkg-db.h

@@ -376,6 +376,8 @@ void varbufdependency(struct varbuf *vb, struct dependency *dep);
 /*** from depcon.c ***/
 
 bool versionsatisfied(struct pkgbin *it, struct deppossi *against);
+bool deparchsatisfied(struct pkgbin *it, const struct dpkg_arch *arch,
+                      struct deppossi *against);
 bool archsatisfied(struct pkgbin *it, struct deppossi *against);
 
 /*** from nfmalloc.c ***/

+ 1 - 0
lib/dpkg/libdpkg.map

@@ -274,6 +274,7 @@ LIBDPKG_PRIVATE {
 	pkg_db_iter_free;
 
 	# Dependency and Conflict functions
+	deparchsatisfied;
 	archsatisfied;
 	versionsatisfied;