Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
multirepo: fix installation respecting priorities
Baptiste Daroussin committed 11 months ago
commit c94fefb67fadac2cd3f367a730ad6b5e3fcb8130
parent cc949e0
3 files changed +16 -5
modified libpkg/pkgdb.c
@@ -832,6 +832,16 @@ pkgdb_open(struct pkgdb **db_p, pkgdb_t type)
	return (pkgdb_open_all(db_p, type, NULL));
}

+
/* the higher the better */
+
static int
+
repos_prio_cmp(const void *a, const void *b)
+
{
+
	struct pkg_repo *ra = *(struct pkg_repo **)a;
+
	struct pkg_repo *rb = *(struct pkg_repo **)b;
+

+
	return ((ra->priority < rb->priority) - (ra->priority > rb->priority));
+
}
+

static int
pkgdb_open_repos(struct pkgdb *db, const char *reponame)
{
@@ -852,6 +862,7 @@ pkgdb_open_repos(struct pkgdb *db, const char *reponame)
				    " 'pkg update' required", r->name);
		}
	}
+
	qsort(db->repos.d, db->repos.len, sizeof(db->repos.d[0]), repos_prio_cmp);

	return (EPKG_OK);
}
modified libpkg/private/pkgdb.h
@@ -14,11 +14,11 @@
#include <sqlite3.h>
#include "pkg/vec.h"

+
typedef vec_t(struct pkg_repo *) repos_t;
struct pkgdb {
	sqlite3		*sqlite;
	bool		 prstmt_initialized;
-

-
	vec_t(struct pkg_repo *) repos;
+
	repos_t repos;
};

struct pkgdb_sqlite_it {
modified tests/frontend/issue1440.sh
@@ -202,9 +202,9 @@ The following 4 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
	pkgA: 1.0 [repoB]
-
	pkgB: 1.0 [repoA]
-
	pkgC: 1.0 [repoA]
-
	pkgD: 1.0 [repoA]
+
	pkgB: 1.0 [repoB]
+
	pkgC: 1.0 [repoB]
+
	pkgD: 1.0 [repoB]

Number of packages to be installed: 4
${JAILED}[1/4] Installing pkgD-1.0...