[Midnightbsd-cvs] src [7376] trunk/lib/libmport: use the sql queue
laffer1 at midnightbsd.org
laffer1 at midnightbsd.org
Sat Nov 28 21:48:55 EST 2015
Revision: 7376
http://svnweb.midnightbsd.org/src/?rev=7376
Author: laffer1
Date: 2015-11-28 21:48:54 -0500 (Sat, 28 Nov 2015)
Log Message:
-----------
use the sql queue
Modified Paths:
--------------
trunk/lib/libmport/bundle_write.c
trunk/lib/libmport/create_primative.c
Modified: trunk/lib/libmport/bundle_write.c
===================================================================
--- trunk/lib/libmport/bundle_write.c 2015-11-29 01:13:18 UTC (rev 7375)
+++ trunk/lib/libmport/bundle_write.c 2015-11-29 02:48:54 UTC (rev 7376)
@@ -357,27 +357,28 @@
}
-static void free_linktable(struct links_table *links)
+static void
+free_linktable(struct links_table *links)
{
- size_t i;
- struct link_node *node;
-
- if ((links == NULL) || (links->buckets == NULL))
- return;
+ size_t i;
+ struct link_node *node;
- for (i = 0; i < links->nbuckets; i++) {
- while (links->buckets[i] != NULL) {
- node = links->buckets[i];
- links->buckets[i] = node->next;
-
- if (node->name != NULL)
- free(node->name);
-
- free(node);
- }
- }
-
- free(links->buckets);
- links->buckets = NULL;
+ if ((links == NULL) || (links->buckets == NULL))
+ return;
+
+ for (i = 0; i < links->nbuckets; i++) {
+ while (links->buckets[i] != NULL) {
+ node = links->buckets[i];
+ links->buckets[i] = node->next;
+
+ if (node->name != NULL)
+ free(node->name);
+
+ free(node);
+ }
+ }
+
+ free(links->buckets);
+ links->buckets = NULL;
}
Modified: trunk/lib/libmport/create_primative.c
===================================================================
--- trunk/lib/libmport/create_primative.c 2015-11-29 01:13:18 UTC (rev 7375)
+++ trunk/lib/libmport/create_primative.c 2015-11-29 02:48:54 UTC (rev 7376)
@@ -1,4 +1,5 @@
/*-
+ * Copyright (c) 2015 Lucas Holt
* Copyright (c) 2007-2009 Chris Reinhardt
* All rights reserved.
*
@@ -54,59 +55,71 @@
static int clean_up(const char *);
-MPORT_PUBLIC_API int mport_create_primative(mportAssetList *assetlist, mportPackageMeta *pack, mportCreateExtras *extra)
+MPORT_PUBLIC_API int
+mport_create_primative(mportAssetList *assetlist, mportPackageMeta *pack, mportCreateExtras *extra)
{
-
- int ret;
- sqlite3 *db = NULL;
+ __block int error_code = MPORT_OK;
- char dirtmpl[] = "/tmp/mport.XXXXXXXX";
- char *tmpdir = mkdtemp(dirtmpl);
+ dispatch_sync(mportTaskSerial, ^{
+ sqlite3 *db = NULL;
- if (tmpdir == NULL) {
- ret = SET_ERROR(MPORT_ERR_FATAL, strerror(errno));
- goto CLEANUP;
- }
+ char dirtmpl[] = "/tmp/mport.XXXXXXXX";
+ char *tmpdir = mkdtemp(dirtmpl);
- if ((ret = create_stub_db(&db, tmpdir)) != MPORT_OK)
- goto CLEANUP;
+ if (tmpdir == NULL) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, strerror(errno));
+ goto CLEANUP;
+ }
- if ((ret = insert_assetlist(db, assetlist, pack, extra)) != MPORT_OK)
- goto CLEANUP;
+ if ((error_code = create_stub_db(&db, tmpdir)) != MPORT_OK)
+ goto CLEANUP;
- if ((ret = insert_meta(db, pack, extra)) != MPORT_OK)
- goto CLEANUP;
-
- if (sqlite3_close(db) != SQLITE_OK) {
- ret = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- goto CLEANUP;
- }
+ if ((error_code = insert_assetlist(db, assetlist, pack, extra)) != MPORT_OK)
+ goto CLEANUP;
- if ((ret = archive_files(assetlist, pack, extra, tmpdir)) != MPORT_OK)
- goto CLEANUP;
-
- CLEANUP:
- clean_up(tmpdir);
- return ret;
+ if ((error_code = insert_meta(db, pack, extra)) != MPORT_OK)
+ goto CLEANUP;
+
+ if (sqlite3_close(db) != SQLITE_OK) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ goto CLEANUP;
+ }
+
+ if ((error_code = archive_files(assetlist, pack, extra, tmpdir)) != MPORT_OK)
+ goto CLEANUP;
+
+ CLEANUP:
+ clean_up(tmpdir);
+ });
+
+ return error_code;
}
-static int create_stub_db(sqlite3 **db, const char *tmpdir)
+static int
+create_stub_db(sqlite3 **db, const char *tmpdir)
{
- char file[FILENAME_MAX];
-
- (void)snprintf(file, FILENAME_MAX, "%s/%s", tmpdir, MPORT_STUB_DB_FILE);
-
- if (sqlite3_open(file, db) != SQLITE_OK) {
- sqlite3_close(*db);
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(*db));
- }
-
- /* create tables */
- return mport_generate_stub_schema(*db);
+ char file[FILENAME_MAX];
+ __block int error_code = MPORT_OK;
+
+ (void) snprintf(file, FILENAME_MAX, "%s/%s", tmpdir, MPORT_STUB_DB_FILE);
+
+ dispatch_sync(mportSQLSerial, ^{
+ if (sqlite3_open(file, db) != SQLITE_OK) {
+ sqlite3_close(*db);
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(*db));
+ }
+ });
+
+ if (error_code != MPORT_OK)
+ return error_code;
+
+ /* create tables */
+ return mport_generate_stub_schema(*db);
}
-static int insert_assetlist(sqlite3 *db, mportAssetList *assetlist, mportPackageMeta *pack, mportCreateExtras *extra)
+static int
+insert_assetlist(sqlite3 *db, mportAssetList *assetlist, mportPackageMeta *pack, mportCreateExtras *extra)
{
mportAssetListEntry *e = NULL;
sqlite3_stmt *stmnt = NULL;
@@ -185,60 +198,72 @@
return MPORT_OK;
}
-static int insert_meta(sqlite3 *db, mportPackageMeta *pack, mportCreateExtras *extra)
+static int
+insert_meta(sqlite3 *db, mportPackageMeta *pack, mportCreateExtras *extra)
{
- sqlite3_stmt *stmnt = NULL;
- const char *rest = 0;
- char *os_release;
+ __block int error_code = MPORT_OK;
- char sql[] = "INSERT INTO packages (pkg, version, origin, lang, prefix, comment, os_release, cpe) VALUES (?,?,?,?,?,?,?,?)";
+ dispatch_sync(mportSQLSerial, ^{
+ sqlite3_stmt *stmnt = NULL;
+ const char *rest = 0;
+ char sql[] = "INSERT INTO packages (pkg, version, origin, lang, prefix, comment, os_release, cpe) VALUES (?,?,?,?,?,?,?,?)";
- os_release = mport_get_osrelease();
- if (pack->cpe == NULL) {
- pack->cpe = alloca(1);
- pack->cpe[0] = '\0';
- }
-
- if (sqlite3_prepare_v2(db, sql, -1, &stmnt, &rest) != SQLITE_OK) {
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- }
- if (sqlite3_bind_text(stmnt, 1, pack->name, -1, SQLITE_STATIC) != SQLITE_OK) {
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- }
- if (sqlite3_bind_text(stmnt, 2, pack->version, -1, SQLITE_STATIC) != SQLITE_OK) {
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- }
- if (sqlite3_bind_text(stmnt, 3, pack->origin, -1, SQLITE_STATIC) != SQLITE_OK) {
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- }
- if (sqlite3_bind_text(stmnt, 4, pack->lang, -1, SQLITE_STATIC) != SQLITE_OK) {
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- }
- if (sqlite3_bind_text(stmnt, 5, pack->prefix, -1, SQLITE_STATIC) != SQLITE_OK)
- {
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- }
- if (sqlite3_bind_text(stmnt, 6, pack->comment, -1, SQLITE_STATIC) != SQLITE_OK) {
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- }
+ char *os_release = mport_get_osrelease();
+ if (pack->cpe == NULL) {
+ pack->cpe = alloca(1);
+ pack->cpe[0] = '\0';
+ }
- if (sqlite3_bind_text(stmnt, 7, os_release, -1, SQLITE_STATIC) != SQLITE_OK) {
- free(os_release);
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- }
- if (sqlite3_bind_text(stmnt, 8, pack->cpe, -1, SQLITE_STATIC) != SQLITE_OK)
- {
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- }
+ if (sqlite3_prepare_v2(db, sql, -1, &stmnt, &rest) != SQLITE_OK) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ return;
+ }
+ if (sqlite3_bind_text(stmnt, 1, pack->name, -1, SQLITE_STATIC) != SQLITE_OK) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ return;
+ }
+ if (sqlite3_bind_text(stmnt, 2, pack->version, -1, SQLITE_STATIC) != SQLITE_OK) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ return;
+ }
+ if (sqlite3_bind_text(stmnt, 3, pack->origin, -1, SQLITE_STATIC) != SQLITE_OK) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ return;
+ }
+ if (sqlite3_bind_text(stmnt, 4, pack->lang, -1, SQLITE_STATIC) != SQLITE_OK) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ return;
+ }
+ if (sqlite3_bind_text(stmnt, 5, pack->prefix, -1, SQLITE_STATIC) != SQLITE_OK) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ return;
+ }
+ if (sqlite3_bind_text(stmnt, 6, pack->comment, -1, SQLITE_STATIC) != SQLITE_OK) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ return;
+ }
+ if (sqlite3_bind_text(stmnt, 7, os_release, -1, SQLITE_STATIC) != SQLITE_OK) {
+ free(os_release);
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ return;
+ }
+ if (sqlite3_bind_text(stmnt, 8, pack->cpe, -1, SQLITE_STATIC) != SQLITE_OK) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ return;
+ }
- if (sqlite3_step(stmnt) != SQLITE_DONE) {
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- }
-
- sqlite3_finalize(stmnt);
- free(os_release);
+ if (sqlite3_step(stmnt) != SQLITE_DONE) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ }
+ sqlite3_finalize(stmnt);
+ free(os_release);
+ });
+
+ if (error_code != MPORT_OK)
+ return error_code;
+
if (insert_depends(db, pack, extra) != MPORT_OK)
RETURN_CURRENT_ERROR;
if (insert_conflicts(db, pack, extra) != MPORT_OK)
@@ -250,156 +275,193 @@
}
-static int insert_categories(sqlite3 *db, mportPackageMeta *pkg)
+static int
+insert_categories(sqlite3 *db, mportPackageMeta *pkg)
{
- sqlite3_stmt *stmt = NULL;
-
- int i = 0;
- assert(pkg != NULL);
- if (pkg->categories == NULL)
- return MPORT_OK; // or should this be an error?
+ __block sqlite3_stmt *stmt = NULL;
+ __block int error_code = MPORT_OK;
- if (mport_db_prepare(db, &stmt, "INSERT INTO categories (pkg, category) VALUES (?,?)") != MPORT_OK)
- RETURN_CURRENT_ERROR;
+ int i = 0;
+ assert(pkg != NULL);
+ if (pkg->categories == NULL)
+ return MPORT_OK;
- while (pkg->categories[i] != NULL) {
- if (sqlite3_bind_text(stmt, 1, pkg->name, -1, SQLITE_STATIC) != SQLITE_OK) {
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- }
- if (sqlite3_bind_text(stmt, 2, pkg->categories[i], -1, SQLITE_STATIC) != SQLITE_OK) {
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- }
+ if (mport_db_prepare(db, &stmt, "INSERT INTO categories (pkg, category) VALUES (?,?)") != MPORT_OK)
+ RETURN_CURRENT_ERROR;
- if (sqlite3_step(stmt) != SQLITE_DONE) {
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- }
- sqlite3_reset(stmt);
- i++;
- }
-
- sqlite3_finalize(stmt);
- return MPORT_OK;
+ while (pkg->categories[i] != NULL) {
+ dispatch_async(mportSQLSerial, ^{
+ if (sqlite3_bind_text(stmt, 1, pkg->name, -1, SQLITE_STATIC) != SQLITE_OK) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ }
+ if (sqlite3_bind_text(stmt, 2, pkg->categories[i], -1, SQLITE_STATIC) != SQLITE_OK) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ }
+
+ if (sqlite3_step(stmt) != SQLITE_DONE) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ }
+ sqlite3_reset(stmt);
+ });
+ i++;
+ }
+
+ dispatch_sync(mportSQLSerial, ^{
+ sqlite3_finalize(stmt);
+ });
+ return error_code;
}
-static int insert_conflicts(sqlite3 *db, mportPackageMeta *pack, mportCreateExtras *extra)
+static int
+insert_conflicts(sqlite3 *db, mportPackageMeta *pack, mportCreateExtras *extra)
{
- sqlite3_stmt *stmnt = NULL;
- assert(extra != NULL);
- char **conflict = extra->conflicts;
- char *version = NULL;
-
- /* we're done if there are no conflicts to record. */
- if (conflict == NULL)
- return MPORT_OK;
+ __block int error_code = MPORT_OK;
+ sqlite3_stmt *stmnt = NULL;
+ assert(extra != NULL);
+ __block char **conflict = extra->conflicts;
- if (mport_db_prepare(db, &stmnt, "INSERT INTO conflicts (pkg, conflict_pkg, conflict_version) VALUES (?,?,?)") != MPORT_OK)
- RETURN_CURRENT_ERROR;
-
- /* we have a conflict like apache-1.4. We want to do a m/(.*)-(.*)/ */
- while (*conflict != NULL) {
- version = rindex(*conflict, '-');
-
- if (sqlite3_bind_text(stmnt, 1, pack->name, -1, SQLITE_STATIC) != SQLITE_OK) {
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- }
- if (sqlite3_bind_text(stmnt, 2, *conflict, -1, SQLITE_STATIC) != SQLITE_OK) {
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- }
- if (version != NULL) {
- *version = '\0';
- version++;
- if (sqlite3_bind_text(stmnt, 3, version, -1, SQLITE_STATIC) != SQLITE_OK) {
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- }
- } else {
- if (sqlite3_bind_text(stmnt, 3, "*", -1, SQLITE_STATIC) != SQLITE_OK) {
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- }
- }
- if (sqlite3_step(stmnt) != SQLITE_DONE) {
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- }
- sqlite3_reset(stmnt);
- conflict++;
- }
-
- sqlite3_finalize(stmnt);
-
- return MPORT_OK;
+ /* we're done if there are no conflicts to record. */
+ if (conflict == NULL)
+ return MPORT_OK;
+
+ if (mport_db_prepare(db, &stmnt, "INSERT INTO conflicts (pkg, conflict_pkg, conflict_version) VALUES (?,?,?)") !=
+ MPORT_OK)
+ RETURN_CURRENT_ERROR;
+
+ /* we have a conflict like apache-1.4. We want to do a m/(.*)-(.*)/ */
+ while (*conflict != NULL) {
+ dispatch_async(mportSQLSerial, ^{
+ char *version = rindex(*conflict, '-');
+
+ if (sqlite3_bind_text(stmnt, 1, pack->name, -1, SQLITE_STATIC) != SQLITE_OK) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ return;
+ }
+ if (sqlite3_bind_text(stmnt, 2, *conflict, -1, SQLITE_STATIC) != SQLITE_OK) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ return;
+ }
+ if (version != NULL) {
+ *version = '\0';
+ version++;
+ if (sqlite3_bind_text(stmnt, 3, version, -1, SQLITE_STATIC) != SQLITE_OK) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ return;
+ }
+ } else {
+ if (sqlite3_bind_text(stmnt, 3, "*", -1, SQLITE_STATIC) != SQLITE_OK) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ return;
+ }
+ }
+ if (sqlite3_step(stmnt) != SQLITE_DONE) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ return;
+ }
+ sqlite3_reset(stmnt);
+ });
+ conflict++;
+ }
+
+ dispatch_sync(mportSQLSerial, ^{
+ sqlite3_finalize(stmnt);
+ });
+
+ return error_code;
}
-static int insert_depends(sqlite3 *db, mportPackageMeta *pack, mportCreateExtras *extra)
+static int
+insert_depends(sqlite3 *db, mportPackageMeta *pack, mportCreateExtras *extra)
{
- sqlite3_stmt *stmnt = NULL;
- assert(extra != NULL);
- char **depend = extra->depends;
- char *pkgversion = NULL;
- char *port = NULL;
+ __block int error_code = MPORT_OK;
+ sqlite3_stmt *stmnt = NULL;
+ assert(extra != NULL);
+ char **depend = extra->depends;
- /* we're done if there are no deps to record. */
- if (depend == NULL)
- return MPORT_OK;
+ /* we're done if there are no deps to record. */
+ if (depend == NULL)
+ return MPORT_OK;
- if (mport_db_prepare(db, &stmnt, "INSERT INTO depends (pkg, depend_pkgname, depend_pkgversion, depend_port) VALUES (?,?,?,?)") != MPORT_OK)
- RETURN_CURRENT_ERROR;
-
- /* depends look like this. break'em up into port, pkgversion and pkgname
- * perl:lang/perl5.8:>=5.8.3
- */
- while (*depend != NULL) {
- port = strchr(*depend, ':');
- if (port == NULL)
- RETURN_ERRORX(MPORT_ERR_FATAL, "Malformed depend: %s", *depend);
- *port = '\0';
- port++;
+ if (mport_db_prepare(db, &stmnt,
+ "INSERT INTO depends (pkg, depend_pkgname, depend_pkgversion, depend_port) VALUES (?,?,?,?)") !=
+ MPORT_OK)
+ RETURN_CURRENT_ERROR;
- if (*port == 0)
- RETURN_ERRORX(MPORT_ERR_FATAL, "Maformed depend: %s", *depend);
+ /* depends look like this. break'em up into port, pkgversion and pkgname
+ * perl:lang/perl5.8:>=5.8.3
+ */
+ while (*depend != NULL) {
+ dispatch_async(mportSQLSerial, ^{
+ char *port = NULL;
+ char *pkgversion = NULL;
- if (sqlite3_bind_text(stmnt, 1, pack->name, -1, SQLITE_STATIC) != SQLITE_OK) {
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- }
- if (sqlite3_bind_text(stmnt, 2, *depend, -1, SQLITE_STATIC) != SQLITE_OK) {
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- }
-
- pkgversion = index(port, ':');
-
- if (pkgversion != NULL) {
- *pkgversion = '\0';
- pkgversion++;
- if (sqlite3_bind_text(stmnt, 3, pkgversion, -1, SQLITE_STATIC) != SQLITE_OK) {
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- }
- } else {
- if (sqlite3_bind_null(stmnt, 3) != SQLITE_OK) {
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- }
- }
-
- if (sqlite3_bind_text(stmnt, 4, port, -1, SQLITE_STATIC) != SQLITE_OK) {
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- }
-
- if (sqlite3_step(stmnt) != SQLITE_DONE) {
- RETURN_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
- }
- sqlite3_reset(stmnt);
- depend++;
- }
-
- sqlite3_finalize(stmnt);
+ port = strchr(*depend, ':');
+ if (port == NULL) {
+ error_code = SET_ERRORX(MPORT_ERR_FATAL, "Malformed depend: %s", *depend);
+ return;
+ }
- return MPORT_OK;
+ *port = '\0';
+ port++;
+
+ if (*port == 0) {
+ error_code = SET_ERRORX(MPORT_ERR_FATAL, "Maformed depend: %s", *depend);
+ return;
+ }
+
+ if (sqlite3_bind_text(stmnt, 1, pack->name, -1, SQLITE_STATIC) != SQLITE_OK) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ return;
+ }
+ if (sqlite3_bind_text(stmnt, 2, *depend, -1, SQLITE_STATIC) != SQLITE_OK) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ return;
+ }
+
+ pkgversion = index(port, ':');
+
+ if (pkgversion != NULL) {
+ *pkgversion = '\0';
+ pkgversion++;
+ if (sqlite3_bind_text(stmnt, 3, pkgversion, -1, SQLITE_STATIC) != SQLITE_OK) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ return;
+ }
+ } else {
+ if (sqlite3_bind_null(stmnt, 3) != SQLITE_OK) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ return;
+ }
+ }
+
+ if (sqlite3_bind_text(stmnt, 4, port, -1, SQLITE_STATIC) != SQLITE_OK) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ return;
+ }
+
+ if (sqlite3_step(stmnt) != SQLITE_DONE) {
+ error_code = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(db));
+ return;
+ }
+ sqlite3_reset(stmnt);
+ });
+ depend++;
+ }
+
+ dispatch_sync(mportSQLSerial, ^{
+ sqlite3_finalize(stmnt);
+ });
+
+ return error_code;
}
-
-static int archive_files(mportAssetList *assetlist, mportPackageMeta *pack, mportCreateExtras *extra, const char *tmpdir)
+static int
+archive_files(mportAssetList *assetlist, mportPackageMeta *pack, mportCreateExtras *extra, const char *tmpdir)
{
mportBundleWrite *bundle;
char filename[FILENAME_MAX];
@@ -428,83 +490,76 @@
}
-static int archive_metafiles(mportBundleWrite *bundle, mportPackageMeta *pack, mportCreateExtras *extra)
+static int
+archive_metafiles(mportBundleWrite *bundle, mportPackageMeta *pack, mportCreateExtras *extra)
{
- char filename[FILENAME_MAX], dir[FILENAME_MAX];
-
- (void)snprintf(dir, FILENAME_MAX, "%s/%s-%s", MPORT_STUB_INFRA_DIR, pack->name, pack->version);
+ char filename[FILENAME_MAX];
+ char dir[FILENAME_MAX];
- if (extra->mtree != NULL && mport_file_exists(extra->mtree)) {
- (void)snprintf(filename, FILENAME_MAX, "%s/%s", dir, MPORT_MTREE_FILE);
- if (mport_bundle_write_add_file(bundle, extra->mtree, filename) != MPORT_OK)
- RETURN_CURRENT_ERROR;
- }
-
- if (extra->pkginstall != NULL && mport_file_exists(extra->pkginstall)) {
- (void)snprintf(filename, FILENAME_MAX, "%s/%s", dir, MPORT_INSTALL_FILE);
- if (mport_bundle_write_add_file(bundle, extra->pkginstall, filename) != MPORT_OK)
- RETURN_CURRENT_ERROR;
- }
-
- if (extra->pkgdeinstall != NULL && mport_file_exists(extra->pkgdeinstall)) {
- (void)snprintf(filename, FILENAME_MAX, "%s/%s", dir, MPORT_DEINSTALL_FILE);
- if (mport_bundle_write_add_file(bundle, extra->pkgdeinstall, filename) != MPORT_OK)
- RETURN_CURRENT_ERROR;
- }
-
- if (extra->pkgmessage != NULL && mport_file_exists(extra->pkgmessage)) {
- (void)snprintf(filename, FILENAME_MAX, "%s/%s", dir, MPORT_MESSAGE_FILE);
- if (mport_bundle_write_add_file(bundle, extra->pkgmessage, filename) != MPORT_OK)
- RETURN_CURRENT_ERROR;
- }
-
- return MPORT_OK;
+ (void) snprintf(dir, FILENAME_MAX, "%s/%s-%s", MPORT_STUB_INFRA_DIR, pack->name, pack->version);
+
+ if (extra->mtree != NULL && mport_file_exists(extra->mtree)) {
+ (void) snprintf(filename, FILENAME_MAX, "%s/%s", dir, MPORT_MTREE_FILE);
+ if (mport_bundle_write_add_file(bundle, extra->mtree, filename) != MPORT_OK)
+ RETURN_CURRENT_ERROR;
+ }
+
+ if (extra->pkginstall != NULL && mport_file_exists(extra->pkginstall)) {
+ (void) snprintf(filename, FILENAME_MAX, "%s/%s", dir, MPORT_INSTALL_FILE);
+ if (mport_bundle_write_add_file(bundle, extra->pkginstall, filename) != MPORT_OK)
+ RETURN_CURRENT_ERROR;
+ }
+
+ if (extra->pkgdeinstall != NULL && mport_file_exists(extra->pkgdeinstall)) {
+ (void) snprintf(filename, FILENAME_MAX, "%s/%s", dir, MPORT_DEINSTALL_FILE);
+ if (mport_bundle_write_add_file(bundle, extra->pkgdeinstall, filename) != MPORT_OK)
+ RETURN_CURRENT_ERROR;
+ }
+
+ if (extra->pkgmessage != NULL && mport_file_exists(extra->pkgmessage)) {
+ (void) snprintf(filename, FILENAME_MAX, "%s/%s", dir, MPORT_MESSAGE_FILE);
+ if (mport_bundle_write_add_file(bundle, extra->pkgmessage, filename) != MPORT_OK)
+ RETURN_CURRENT_ERROR;
+ }
+
+ return MPORT_OK;
}
-static int archive_assetlistfiles(mportBundleWrite *bundle, mportPackageMeta *pack, mportCreateExtras *extra, mportAssetList *assetlist)
+static int
+archive_assetlistfiles(mportBundleWrite *bundle, mportPackageMeta *pack, mportCreateExtras *extra,
+ mportAssetList *assetlist)
{
- mportAssetListEntry *e = NULL;
- char filename[FILENAME_MAX];
- char *cwd = pack->prefix;
- /*int total = 0;
- int cur = 0;
-
- (mport->progress_init_cb)();
-
- STAILQ_FOREACH(e, assetlist, next) {
- total++;
- } */
-
- STAILQ_FOREACH(e, assetlist, next) {
- if (e->type == ASSET_CWD)
- cwd = e->data == NULL ? pack->prefix : e->data;
-
- if (e->type != ASSET_FILE && e->type != ASSET_SAMPLE && e->type != ASSET_SHELL) {
- continue;
- }
+ mportAssetListEntry *e = NULL;
+ char filename[FILENAME_MAX];
+ char *cwd = pack->prefix;
- /* don't prepend the cwd if the path is abs. */
- if (*(e->data) == '/') {
- (void)snprintf(filename, FILENAME_MAX, "%s%s", extra->sourcedir, e->data);
- } else {
- (void)snprintf(filename, FILENAME_MAX, "%s/%s/%s", extra->sourcedir, cwd, e->data);
- }
-
- if (mport_bundle_write_add_file(bundle, filename, e->data) != MPORT_OK)
- RETURN_CURRENT_ERROR;
-
- /* (mport->progress_step_cb)(++cut, total, e->data); */
- }
-
- /* (mport->progress_free_cb)(); */
-
- return MPORT_OK;
+ STAILQ_FOREACH(e, assetlist, next) {
+ if (e->type == ASSET_CWD)
+ cwd = e->data == NULL ? pack->prefix : e->data;
+
+ if (e->type != ASSET_FILE && e->type != ASSET_SAMPLE && e->type != ASSET_SHELL) {
+ continue;
+ }
+
+ /* don't prepend the cwd if the path is abs. */
+ if (*(e->data) == '/') {
+ (void) snprintf(filename, FILENAME_MAX, "%s%s", extra->sourcedir, e->data);
+ } else {
+ (void) snprintf(filename, FILENAME_MAX, "%s/%s/%s", extra->sourcedir, cwd, e->data);
+ }
+
+ if (mport_bundle_write_add_file(bundle, filename, e->data) != MPORT_OK)
+ RETURN_CURRENT_ERROR;
+ }
+
+ return MPORT_OK;
}
-static int clean_up(const char *tmpdir)
+static int
+clean_up(const char *tmpdir)
{
- return mport_rmtree(tmpdir);
+ return mport_rmtree(tmpdir);
}
More information about the Midnightbsd-cvs
mailing list