Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Add manifestdigest field to repository.
Vsevolod Stakhov committed 13 years ago
commit 6170a9618c5f99b5e85c9616d3466b342d7762ea
parent 4d77ca4
5 files changed +30 -9
modified libpkg/pkg.h.in
@@ -219,6 +219,7 @@ typedef enum {
	PKG_LOCKED,
	PKG_ROWID,
	PKG_TIME,
+
	PKG_DIGEST
} pkg_attr;

typedef enum {
modified libpkg/pkg_repo.c
@@ -54,7 +54,7 @@
/* The package repo schema minor revision.
   Minor schema changes don't prevent older pkgng
   versions accessing the repo. */
-
#define REPO_SCHEMA_MINOR 3
+
#define REPO_SCHEMA_MINOR 4

#define REPO_SCHEMA_VERSION (REPO_SCHEMA_MAJOR * 1000 + REPO_SCHEMA_MINOR)

@@ -1110,7 +1110,7 @@ apply_repo_change(struct pkgdb *db, const char *database,
	char			 sql[BUFSIZ];
	char			*errmsg;
	
-
        for (change = repo_changes; change->version != -1; change++) {
+
	for (change = repo_changes; change->version != -1; change++) {
		if (change->version == version) {
			found = true;
			break;
modified libpkg/pkgdb.c
@@ -53,7 +53,7 @@
#include "private/utils.h"

#include "private/db_upgrades.h"
-
#define DBVERSION 14
+
#define DBVERSION 16

#define PKGGT	(1U << 1)
#define PKGLT	(1U << 2)
@@ -108,6 +108,7 @@ static struct column_mapping {
	{ "infos",	PKG_INFOS },
	{ "rowid",	PKG_ROWID },
	{ "id",		PKG_ROWID },
+
	{ "manifestdigest",	PKG_DIGEST },
	{ "weight",	-1 },
	{ NULL,		-1 }
};
@@ -479,6 +480,7 @@ pkgdb_init(sqlite3 *sdb)
		"licenselogic INTEGER NOT NULL,"
		"infos TEXT, "
		"time INTEGER, "
+
		"manifestdigest TEXT NULL, "
		"pkg_format_version INTEGER"
	");"
	"CREATE TABLE mtree ("
@@ -617,6 +619,7 @@ pkgdb_init(sqlite3 *sdb)
	"CREATE INDEX pkg_shlibs_provided_package_id ON pkg_shlibs_provided (package_id);"
	"CREATE INDEX pkg_directories_directory_id ON pkg_directories (directory_id);"
	"CREATE INDEX pkg_abstract_package_id ON pkg_abstract(package_id);"
+
	"CREATE INDEX pkg_digest_id ON packages(origin, manifestdigest);"

	"PRAGMA user_version = %d;"
	"COMMIT;"
@@ -636,7 +639,8 @@ pkgdb_remote_init(struct pkgdb *db, const char *repo)
	int		 ret;
	const char	 init_sql[] = ""
	"BEGIN;"
-
	"CREATE INDEX '%s'.deps_origin ON deps(origin);"
+
	"CREATE INDEX IF NOT EXISTS '%s'.deps_origin ON deps(origin);"
+
	"CREATE INDEX IF NOT EXISTS '%s'.pkg_digest_id ON packages(origin, manifestdigest);"
	"COMMIT;"
	;

@@ -645,7 +649,7 @@ pkgdb_remote_init(struct pkgdb *db, const char *repo)
	}

	sql = sbuf_new_auto();
-
	sbuf_printf(sql, init_sql, reponame);
+
	sbuf_printf(sql, init_sql, reponame, reponame);

	ret = sql_exec(db->sqlite, sbuf_data(sql));
	sbuf_delete(sql);
modified libpkg/private/db_upgrades.h
@@ -302,9 +302,13 @@ static struct db_upgrades {
	");"
	"CREATE INDEX pkg_abstract_package_id ON pkg_abstract(package_id);"
	},
+
	{16,
+
	"ALTER TABLE packages ADD COLUMN manifestdigest TEXT NULL;"
+
	"CREATE INDEX IF NOT EXISTS pkg_digest_id ON packages(origin, manifestdigest);"
+
	},

	/* Mark the end of the array */
-
	{ -1, NULL },
+
	{ -1, NULL }

};

modified libpkg/private/repodb.h
@@ -48,7 +48,8 @@ static const char initsql[] = ""
	    "cksum TEXT NOT NULL,"
	    /* relative path to the package in the repository */
	    "path TEXT NOT NULL,"
-
	    "pkg_format_version INTEGER"
+
	    "pkg_format_version INTEGER,"
+
	    "manifestdigest TEXT NULL"
	");"
	"CREATE TABLE deps ("
	    "origin TEXT,"
@@ -168,15 +169,26 @@ static struct repo_changes repo_upgrades[] = {
		" ON DELETE CASCADE ON UPDATE RESTRICT"
	 ");"
	},
+
	{2003,
+
	 2004,
+
	"Add manifest digest field",
+
	"ALTER TABLE %Q.packages ADD COLUMN manifestdigest TEXT NULL;"
+
	"CREATE INDEX IF NOT EXISTS %Q.pkg_digest_id ON packages(origin, manifestdigest);"
+
	},

	/* Mark the end of the array */
-
	{ -1, -1, NULL, NULL, },
+
	{ -1, -1, NULL, NULL, }

};

/* How to downgrade a newer repo to match what the current system
   expects */
static struct repo_changes repo_downgrades[] = {
+
	{2004,
+
	 2003,
+
	 "Drop manifest digest index",
+
	 "DROP INDEX %Q.pkg_digest_id;"
+
	},
	{2003,
	 2002,
	 "Drop abstract metadata",
@@ -210,7 +222,7 @@ static struct repo_changes repo_downgrades[] = {


	/* Mark the end of the array */
-
	{ -1, -1, NULL, NULL, },
+
	{ -1, -1, NULL, NULL, }

};