[Midnightbsd-cvs] src [6611] trunk/lib/libmport/check_preconditions.c: try to deal with os version in upgrade checks.
laffer1 at midnightbsd.org
laffer1 at midnightbsd.org
Sat Mar 1 13:48:19 EST 2014
Revision: 6611
http://svnweb.midnightbsd.org/src/?rev=6611
Author: laffer1
Date: 2014-03-01 13:48:19 -0500 (Sat, 01 Mar 2014)
Log Message:
-----------
try to deal with os version in upgrade checks. force new update
Modified Paths:
--------------
trunk/lib/libmport/check_preconditions.c
Modified: trunk/lib/libmport/check_preconditions.c
===================================================================
--- trunk/lib/libmport/check_preconditions.c 2014-03-01 18:47:36 UTC (rev 6610)
+++ trunk/lib/libmport/check_preconditions.c 2014-03-01 18:48:19 UTC (rev 6611)
@@ -147,6 +147,7 @@
sqlite3 *db = mport->db;
sqlite3_stmt *stmt, *lookup;
const char *depend_pkg, *depend_version, *inst_version;
+ const char *os_release;
int ret;
/* check for depends */
@@ -155,7 +156,7 @@
RETURN_CURRENT_ERROR;
}
- if (mport_db_prepare(db, &lookup, "SELECT version FROM packages WHERE pkg=? AND status='clean'") != MPORT_OK) {
+ if (mport_db_prepare(db, &lookup, "SELECT version, os_release FROM packages WHERE pkg=? AND status='clean'") != MPORT_OK) {
sqlite3_finalize(stmt);
RETURN_CURRENT_ERROR;
}
@@ -177,7 +178,15 @@
switch (sqlite3_step(lookup)) {
case SQLITE_ROW:
inst_version = sqlite3_column_text(lookup, 0);
+ os_release = sqlite3_column_text(lookup, 1);
int ok;
+
+ if (strcmp(os_release, mport_get_osrelease()) != 0) {
+ SET_ERRORX(MPORT_ERR_FATAL, "%s depends on %s version %s. Version %s for MidnightBSD %s is installed.", pack->name, depend_pkg, depend_version, inst_version, os_release);
+ sqlite3_finalize(lookup);
+ sqlite3_finalize(stmt);
+ RETURN_CURRENT_ERROR;
+ }
if (depend_version == NULL)
/* no minimum version */
@@ -230,28 +239,32 @@
}
/* check to see if an older version of a package is installed. */
-static int check_if_older_installed(mportInstance *mport, mportPackageMeta *pkg)
+static int
+check_if_older_installed(mportInstance *mport, mportPackageMeta *pkg)
{
- sqlite3_stmt *stmt;
- int ret;
-
- if (mport_db_prepare(mport->db, &stmt, "SELECT 1 FROM packages WHERE pkg=%Q and mport_version_cmp(version, %Q) < 0", pkg->name, pkg->version) != MPORT_OK) {
- sqlite3_finalize(stmt);
- RETURN_CURRENT_ERROR;
- }
+ sqlite3_stmt *stmt;
+ int ret;
+ const char *os_release;
+
+ os_release = mport_get_osrelease();
+
+ if (mport_db_prepare(mport->db, &stmt, "SELECT os_release FROM packages WHERE pkg=%Q and ((mport_version_cmp(version, %Q) < 0 and os_release=%Q) or os_release != %Q)", pkg->name, pkg->version, os_release, os_release) != MPORT_OK) {
+ sqlite3_finalize(stmt);
+ RETURN_CURRENT_ERROR;
+ }
- switch (sqlite3_step(stmt)) {
- case SQLITE_ROW:
- ret = MPORT_OK;
- break;
- case SQLITE_DONE:
- ret = SET_ERRORX(MPORT_ERR_FATAL, "No older version of %s installed", pkg->name);
- break;
- default:
- ret = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(mport->db));
- break;
- }
+ switch (sqlite3_step(stmt)) {
+ case SQLITE_ROW:
+ ret = MPORT_OK;
+ break;
+ case SQLITE_DONE:
+ ret = SET_ERRORX(MPORT_ERR_FATAL, "No older version of %s installed", pkg->name);
+ break;
+ default:
+ ret = SET_ERROR(MPORT_ERR_FATAL, sqlite3_errmsg(mport->db));
+ break;
+ }
- sqlite3_finalize(stmt);
- return ret;
+ sqlite3_finalize(stmt);
+ return ret;
}
More information about the Midnightbsd-cvs
mailing list