Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
allow to pass a savepoint name when registring a package
Baptiste Daroussin committed 6 years ago
commit 87e807366eb2bcbcbbf01df90d97a77dec6272b8
parent f7e1a3f
4 files changed +14 -14
modified libpkg/pkg_add.c
@@ -1115,8 +1115,7 @@ pkg_add_common(struct pkgdb *db, const char *path, unsigned flags,

	/* register the package before installing it in case there are
	 * problems that could be caught here. */
-
	retcode = pkgdb_register_pkg(db, pkg,
-
			flags & PKG_ADD_FORCE);
+
	retcode = pkgdb_register_pkg(db, pkg, flags & PKG_ADD_FORCE, NULL);

	if (retcode != EPKG_OK)
		goto cleanup;
@@ -1165,7 +1164,7 @@ pkg_add_common(struct pkgdb *db, const char *path, unsigned flags,

	retcode = pkg_extract_finalize(pkg);
cleanup_reg:
-
	pkgdb_register_finale(db, retcode);
+
	pkgdb_register_finale(db, retcode, NULL);
	/*
	 * Execute post install scripts
	 */
modified libpkg/pkg_ports.c
@@ -1314,7 +1314,7 @@ pkg_add_port(struct pkgdb *db, struct pkg *pkg, const char *input_path,

	pkg_emit_install_begin(pkg);

-
	rc = pkgdb_register_pkg(db, pkg, 0);
+
	rc = pkgdb_register_pkg(db, pkg, 0, NULL);

	if (rc != EPKG_OK)
		goto cleanup;
@@ -1358,7 +1358,7 @@ pkg_add_port(struct pkgdb *db, struct pkg *pkg, const char *input_path,
	}

cleanup:
-
	pkgdb_register_finale(db, rc);
+
	pkgdb_register_finale(db, rc, NULL);

	return (rc);
}
modified libpkg/pkgdb.c
@@ -1724,7 +1724,8 @@ prstmt_finalize(struct pkgdb *db)
}

int
-
pkgdb_register_pkg(struct pkgdb *db, struct pkg *pkg, int forced)
+
pkgdb_register_pkg(struct pkgdb *db, struct pkg *pkg, int forced,
+
    const char *savepoint)
{
	struct pkg		*pkg2 = NULL;
	struct pkg_dep		*dep = NULL;
@@ -1753,7 +1754,7 @@ pkgdb_register_pkg(struct pkgdb *db, struct pkg *pkg, int forced)

	s = db->sqlite;

-
	if (pkgdb_transaction_begin_sqlite(s, NULL) != EPKG_OK)
+
	if (pkgdb_transaction_begin_sqlite(s, savepoint) != EPKG_OK)
		return (EPKG_FATAL);

	/* Prefer new ABI over old one */
@@ -2366,16 +2367,16 @@ pkgdb_delete_annotation(struct pkgdb *db, struct pkg *pkg, const char *tag)


int
-
pkgdb_register_finale(struct pkgdb *db, int retcode)
+
pkgdb_register_finale(struct pkgdb *db, int retcode, const char *savepoint)
{
	int	ret = EPKG_OK;

	assert(db != NULL);

	if (retcode == EPKG_OK)
-
		ret = pkgdb_transaction_commit_sqlite(db->sqlite, NULL);
+
		ret = pkgdb_transaction_commit_sqlite(db->sqlite, savepoint);
	else
-
		ret = pkgdb_transaction_rollback_sqlite(db->sqlite, NULL);
+
		ret = pkgdb_transaction_rollback_sqlite(db->sqlite, savepoint);

	return (ret);
}
@@ -2387,11 +2388,11 @@ pkgdb_register_ports(struct pkgdb *db, struct pkg *pkg)

	pkg_emit_install_begin(pkg);

-
	ret = pkgdb_register_pkg(db, pkg, 0);
+
	ret = pkgdb_register_pkg(db, pkg, 0, NULL);
	if (ret == EPKG_OK)
		pkg_emit_install_finished(pkg, NULL);

-
	pkgdb_register_finale(db, ret);
+
	pkgdb_register_finale(db, ret, NULL);

	return (ret);
}
modified libpkg/private/pkg.h
@@ -764,13 +764,13 @@ int sql_exec(sqlite3 *, const char *, ...);
int get_pragma(sqlite3 *, const char *sql, int64_t *res, bool silence);
int get_sql_string(sqlite3 *, const char *sql, char **res);

-
int pkgdb_register_pkg(struct pkgdb *db, struct pkg *pkg, int forced);
+
int pkgdb_register_pkg(struct pkgdb *db, struct pkg *pkg, int forced, const char *);
int pkgdb_update_shlibs_required(struct pkg *pkg, int64_t package_id, sqlite3 *s);
int pkgdb_update_shlibs_provided(struct pkg *pkg, int64_t package_id, sqlite3 *s);
int pkgdb_update_provides(struct pkg *pkg, int64_t package_id, sqlite3 *s);
int pkgdb_update_requires(struct pkg *pkg, int64_t package_id, sqlite3 *s);
int pkgdb_insert_annotations(struct pkg *pkg, int64_t package_id, sqlite3 *s);
-
int pkgdb_register_finale(struct pkgdb *db, int retcode);
+
int pkgdb_register_finale(struct pkgdb *db, int retcode, const char *);
int pkgdb_set_pkg_digest(struct pkgdb *db, struct pkg *pkg);
int pkgdb_is_dir_used(struct pkgdb *db, struct pkg *p, const char *dir, int64_t *res);
int pkgdb_file_set_cksum(struct pkgdb *db, struct pkg_file *file, const char *sha256);