Change mechanism of setting db version 21/144521/4
authorJunghyun Yeon <jungh.yeon@samsung.com>
Thu, 17 Aug 2017 05:44:02 +0000 (14:44 +0900)
committerJunghyun Yeon <jungh.yeon@samsung.com>
Mon, 21 Aug 2017 01:57:22 +0000 (01:57 +0000)
- Previously, DB version was defined at codes so
  scripts such as upgrade scripts cannot retrieve it for upgrade.
- So, create new file which stores db version and read it at runtime
  to let codes and script read it properly.

Change-Id: I3f643f421228026c38c8507c0af25928144a2ee7
Signed-off-by: Junghyun Yeon <jungh.yeon@samsung.com>
CMakeLists.txt
packaging/pkgmgr-info.spec
parser/src/pkgmgr_parser_db.c
parser/src/pkgmgr_parser_db_queries.h
pkg_db_version.txt.in [new file with mode: 0644]

index 203d872..03c002d 100644 (file)
@@ -51,6 +51,7 @@ CONFIGURE_FILE(parser_path.conf.in parser_path.conf @ONLY)
 CONFIGURE_FILE(mdparser_list.txt.in mdparser_list.txt @ONLY)
 CONFIGURE_FILE(category_parser_list.txt.in category_parser_list.txt @ONLY)
 CONFIGURE_FILE(tag_parser_list.txt.in tag_parser_list.txt @ONLY)
+CONFIGURE_FILE(pkg_db_version.txt.in pkg_db_version.txt @ONLY)
 
 INSTALL(TARGETS pkgmgr-info DESTINATION ${LIB_INSTALL_DIR} COMPONENT RuntimeLibraries)
 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgmgr-info.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
@@ -59,3 +60,4 @@ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/parser_path.conf DESTINATION ${SYSCONF
 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/mdparser_list.txt DESTINATION ${SYSCONFDIR}/package-manager/parserlib/metadata)
 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/category_parser_list.txt DESTINATION ${SYSCONFDIR}/package-manager/parserlib/category)
 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/tag_parser_list.txt DESTINATION ${SYSCONFDIR}/package-manager/parserlib)
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkg_db_version.txt DESTINATION ${SYSCONFDIR}/package-manager/)
index 9f38ae3..2f11fa4 100644 (file)
@@ -95,6 +95,7 @@ ln -sf ../pkg-db-recovery.service %{buildroot}%{_unitdir}/multi-user.target.want
 %config %{_sysconfdir}/package-manager/parserlib/metadata/mdparser_list.txt
 %config %{_sysconfdir}/package-manager/parserlib/category/category_parser_list.txt
 %config %{_sysconfdir}/package-manager/parserlib/tag_parser_list.txt
+%config %{_sysconfdir}/package-manager/pkg_db_version.txt
 
 %files parser-devel
 %manifest %{name}.manifest
index 27abc3f..a525066 100644 (file)
@@ -186,19 +186,36 @@ static const char *__get_cert_db_path(void)
        return tzplatform_mkpath(TZ_SYS_DB, ".pkgmgr_cert.db");
 }
 
+#define DB_VERSION_PATH SYSCONFDIR "/package-manager/pkg_db_version.txt"
 static int __set_db_version(sqlite3 *db)
 {
-       static const char query_raw[] = "PRAGMA user_version=";
-       char query[BUFSIZE];
        int ret;
+       FILE *fp = NULL;
+       char version[PKG_STRING_LEN_MAX] = { 0 };
+       char *query = NULL;
 
-       snprintf(query, sizeof(query), "%s%d", query_raw, PKG_DB_VERSION);
+       fp = fopen(DB_VERSION_PATH, "r");
+       retvm_if(fp == NULL, -1, "Failed to open db version file");
+       if (fgets(version, sizeof(version), fp) == NULL) {
+               _LOGE("Failed to get version information");
+               fclose(fp);
+               return -1;
+       }
+       fclose(fp);
+
+       query = sqlite3_mprintf("PRAGMA user_version=%Q", version);
+       if (!query) {
+               _LOGE("Out of memory");
+               return -1;
+       }
 
        ret = sqlite3_exec(db, query, NULL, NULL, NULL);
        if (ret != SQLITE_OK) {
                _LOGE("exec failed: %s", sqlite3_errmsg(db));
+               sqlite3_free(query);
                return -1;
        }
+       sqlite3_free(query);
 
        return 0;
 }
index 924f8ac..67d3304 100644 (file)
@@ -18,8 +18,6 @@
 #ifndef __PKGMGR_PARSER_DB_QUERIES_H__
 #define __PKGMGR_PARSER_DB_QUERIES_H__
 
-#define PKG_DB_VERSION 30001
-
 #define QUERY_CREATE_TABLE_PACKAGE_INFO \
        "CREATE TABLE IF NOT EXISTS package_info (\n" \
        "  package TEXT PRIMARY KEY NOT NULL,\n" \
diff --git a/pkg_db_version.txt.in b/pkg_db_version.txt.in
new file mode 100644 (file)
index 0000000..4b1526e
--- /dev/null
@@ -0,0 +1 @@
+30001