From 7c5413bd427c5cc61617637020ffea60299a0fff Mon Sep 17 00:00:00 2001 From: jongmyeongko Date: Tue, 13 Jun 2017 21:44:04 +0900 Subject: [PATCH 01/16] Release version 0.3.7 Changes: - Change scripts Change-Id: Ic1b6d46eae756459c5afda6c48e4f6d5ecccd9d8 Signed-off-by: jongmyeongko --- packaging/pkgmgr-tool.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/pkgmgr-tool.spec b/packaging/pkgmgr-tool.spec index e060666..581fa2b 100644 --- a/packaging/pkgmgr-tool.spec +++ b/packaging/pkgmgr-tool.spec @@ -1,6 +1,6 @@ Name: pkgmgr-tool Summary: Packager Manager Tool package -Version: 0.3.6 +Version: 0.3.7 Release: 1 Group: Application Framework/Package Management License: Apache-2.0 -- 2.7.4 From 73a504010bbf88b42072c715cd9bed434e63e74f Mon Sep 17 00:00:00 2001 From: Junghyun Yeon Date: Tue, 13 Jun 2017 19:47:19 +0900 Subject: [PATCH 02/16] Fix upgrade script - copy manifest of user tpk file to manifest location to be initialized by pkg_initdb - get user wgt packages and invoke backend to be initialized - Add initialization of restriction db Change-Id: If92bfdd7346f5ce2e30e00c1d920b23a285ed993 Signed-off-by: Junghyun Yeon --- data/700.pkgmgr.patch.sh.in | 61 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 55 insertions(+), 6 deletions(-) diff --git a/data/700.pkgmgr.patch.sh.in b/data/700.pkgmgr.patch.sh.in index cb154b9..e845d9c 100644 --- a/data/700.pkgmgr.patch.sh.in +++ b/data/700.pkgmgr.patch.sh.in @@ -39,6 +39,8 @@ TIZEN_MANIFEST=tizen-manifest.xml OWNER_SYSTEM_SHARE=owner:system_share TRUSTED_LABEL=User::Author::1 +RESTRICTION_DBPATH=/var/lib/package-manager +RESTRICTION_DBNAME=restriction.db #---------------------------------- # upgrade script for pkgmgr #---------------------------------- @@ -48,6 +50,15 @@ function backup_db(){ mv $PARSER_DB_PATH $PARSER_BACKUP_DB_PATH } +function create_restriction_db(){ + echo "#create restriction db" + local restriction_db=$RESTRICTION_DBPATH/$RESTRICTION_DBNAME + mkdir -p $RESTRICTION_DBPATH + echo "PRAGMA journal_mode=WAL; + CREATE TABLE restriction (uid INTEGER NOT NULL, pkgid TEXT NOT NULL, mode INTEGER NOT NULL, UNIQUE(uid, pkgid));" | + sqlite3 $restriction_db +} + function remove_modified_manifest(){ echo "#remove modified manifest" rm -rf $DEFAULT_PKG_MANIFEST_LOCATION/* @@ -55,10 +66,15 @@ function remove_modified_manifest(){ function remove_unregistered_pkg(){ #remove pkg folder which is not registered at pkg db - rm -rf $OPT_USR_APPS/media-server - rm -rf $OPT_USR_APPS/org.tizen.indicator_Shm - rm -rf $OPT_USR_APPS/org.tizen.sound-player - rm -rf $OPT_USR_APPS/tmp + ls $OPT_USR_APPS/ | while read FOLDER + do + result=$(sqlite3 $PARSER_BACKUP_DB_PATH "SELECT COUNT(*) FROM package_info WHERE package='$FOLDER';") + if [ $result != "1" ] + then + echo "delete unregistered package directory $OPT_USR_APPS/$FOLDER" + rm -r $OPT_USR_APPS/$FOLDER + fi + done } function move_user_tpk_ro_files(){ @@ -103,6 +119,11 @@ function move_user_tpk_rw_files(){ rm -rf $DEFAULT_PKG_APP_LOCATION/$package/shared/cache } +function copy_user_tpk_manifest(){ + local package=$1 + cp $DEFAULT_PKG_APP_LOCATION/$1/$TIZEN_MANIFEST $DEFAULT_PKG_MANIFEST_LOCATION/$package.xml +} + function move_user_tpk_files(){ echo "#move user TPK's files" echo "SELECT package FROM package_info WHERE package_preload='false' COLLATE NOCASE AND package_type='tpk' COLLATE NOCASE;" | @@ -113,6 +134,7 @@ function move_user_tpk_files(){ echo "processing user tpk $package..." move_user_tpk_ro_files $package move_user_tpk_rw_files $package + copy_user_tpk_manifest $package done < $DB_RESULT_FILE rm -f $DB_RESULT_FILE } @@ -254,7 +276,7 @@ function disable_preload_pkg(){ while read package do - echo "disable preload tpk, rpm $package..." + echo "disable preload pkg $package..." tpk-backend -D $package --preload done < $DB_RESULT_FILE rm -f $DB_RESULT_FILE @@ -283,8 +305,10 @@ function disable_user_pkg(){ while read package type do + echo "disable user pkg $package..." + echo "$type-backend -D $package" $type-backend -D $package - done < $DB_RESULT_FILE + done < $DB_RESULT_FILE rm -f $DB_RESULT_FILE } @@ -292,8 +316,31 @@ function remove_backup_db(){ rm $PARSER_BACKUP_DB_PATH } +function init_user_wgt_packages(){ + echo "#init user wgt packages" + echo ".separator \" \" + SELECT package FROM package_info WHERE package_preload='false' COLLATE NOCASE AND package_type='wgt';" | + sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE + + while read package + do + echo "init user wgt package $package..." + wgt-backend -y $package + done < $DB_RESULT_FILE + rm -f $DB_RESULT_FILE +} + +function migrate_external_info(){ + echo "#migrate external storage info" + echo "ATTACH DATABASE '$PARSER_BACKUP_DB_PATH' AS backup; + UPDATE package_info set installed_storage='installed_external' WHERE package IN (SELECT package FROM backup.package_info WHERE installed_storage='installed_external' COLLATE NOCASE);" | + sqlite3 $PARSER_DB_PATH +} + backup_db +create_restriction_db + remove_modified_manifest remove_unregistered_pkg @@ -301,11 +348,13 @@ move_user_tpk_files move_user_wgt_files initdb +init_user_wgt_packages remove_files_for_deleted_packages move_preload_pkg_userdata disable_preload_pkg disable_user_pkg +migrate_external_info remove_backup_db -- 2.7.4 From 9111402dcf66cf0d2f5a5d2e84cc43e8c5669818 Mon Sep 17 00:00:00 2001 From: Sangyoon Jang Date: Fri, 30 Jun 2017 11:09:59 +0900 Subject: [PATCH 03/16] Release version 0.3.8 Changes: - Fix upgrade script Change-Id: I1d93cb63643d449d84d23cae1b6c1d45858492bd Signed-off-by: Sangyoon Jang --- packaging/pkgmgr-tool.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/pkgmgr-tool.spec b/packaging/pkgmgr-tool.spec index 581fa2b..dd1adb5 100644 --- a/packaging/pkgmgr-tool.spec +++ b/packaging/pkgmgr-tool.spec @@ -1,6 +1,6 @@ Name: pkgmgr-tool Summary: Packager Manager Tool package -Version: 0.3.7 +Version: 0.3.8 Release: 1 Group: Application Framework/Package Management License: Apache-2.0 -- 2.7.4 From 7e591af0c1509526d4d84fc0a564ca2925155e62 Mon Sep 17 00:00:00 2001 From: Bartlomiej Kunikowski Date: Mon, 3 Jul 2017 06:29:55 +0000 Subject: [PATCH 04/16] Revert "Add new error handling" This reverts commit 36b92948c41e6f459a89488f6162abd78f69493d. Change-Id: I5b70c9fe3580e2df303b0dffb7a14927b687914c --- src/pkg_cmd.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/pkg_cmd.c b/src/pkg_cmd.c index 2ecdd02..813bd2e 100644 --- a/src/pkg_cmd.c +++ b/src/pkg_cmd.c @@ -160,9 +160,6 @@ static void __error_no_to_string(int errnumber, char **errstr) if (errstr == NULL) return; switch (errnumber) { - case PKGMGR_INSTALLER_ERRCODE_RECOVERY_DONE: - *errstr = PKGMGR_INSTALLER_ERRCODE_RECOVERY_DONE_STR; - break; case PKGMGR_INSTALLER_ERRCODE_GLOBALSYMLINK_ERROR: *errstr = PKGMGR_INSTALLER_ERRCODE_GLOBALSYMLINK_ERROR_STR; break; -- 2.7.4 From 67931845cbcba1781c68f669e481247b5337ae1f Mon Sep 17 00:00:00 2001 From: Sangyoon Jang Date: Tue, 4 Jul 2017 10:40:16 +0900 Subject: [PATCH 05/16] Release version 0.3.9 Changes: - Fix build break Change-Id: I73917bf9ff4ce78ea627ecd9a873bdc399307820 Signed-off-by: Sangyoon Jang --- packaging/pkgmgr-tool.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/pkgmgr-tool.spec b/packaging/pkgmgr-tool.spec index dd1adb5..a06538d 100644 --- a/packaging/pkgmgr-tool.spec +++ b/packaging/pkgmgr-tool.spec @@ -1,6 +1,6 @@ Name: pkgmgr-tool Summary: Packager Manager Tool package -Version: 0.3.8 +Version: 0.3.9 Release: 1 Group: Application Framework/Package Management License: Apache-2.0 -- 2.7.4 From e37b45938ea1e8d64ab0ced11d80efccf55846f8 Mon Sep 17 00:00:00 2001 From: Sangyoon Jang Date: Tue, 25 Jul 2017 15:14:10 +0900 Subject: [PATCH 06/16] Fix code style Change-Id: Ice9a07a1cbca9b2fec964a79184ceab6af9edc1e Signed-off-by: Sangyoon Jang --- src/install_preload_pkg.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/install_preload_pkg.c b/src/install_preload_pkg.c index 4ed08f9..58439e5 100644 --- a/src/install_preload_pkg.c +++ b/src/install_preload_pkg.c @@ -58,7 +58,7 @@ static int _install_preload_pkg(const char *backend, const char *directory, bool readonly) { DIR *dir; - struct dirent *file_info = NULL; + struct dirent *file_info; int ret; char file_path[BUFSZE]; char err_buf[BUFSZE]; @@ -69,7 +69,7 @@ static int _install_preload_pkg(const char *backend, const char *directory, _D("The directory for preloaded pkgs doesn't exist"); return 0; } else { - _E("Failed to access the [%s] because [%s]", directory, + _E("Failed to access [%s]: [%s]", directory, strerror_r(errno, err_buf, sizeof(err_buf))); return -1; } @@ -88,7 +88,7 @@ static int _install_preload_pkg(const char *backend, const char *directory, pid_t pid = fork(); if (pid == 0) { execl(backend, backend, "-i", file_path, - readonly? "--preload":"--preload-rw", + readonly ? "--preload" : "--preload-rw", (char *)NULL); } else if (pid < 0) { _E("failed to fork and execute %s!", backend); @@ -101,12 +101,13 @@ static int _install_preload_pkg(const char *backend, const char *directory, waitpid(pid, &status, 0); } - /* remove a file after installation */ - /* keep rw packages for factory-reset */ + /* remove a file after installation, + * keep rw packages for factory-reset + */ if (readonly) { ret = remove(file_path); if (ret < 0) { - _E("Failed to remove the file [%s] because [%s]", + _E("Failed to remove [%s]: [%s]", file_path, strerror_r(errno, err_buf, sizeof(err_buf))); closedir(dir); @@ -123,7 +124,7 @@ static int _install_preload_pkg(const char *backend, const char *directory, static int _is_authorized(uid_t uid) { /* install_preload_pkg should be called by as root privilege. */ - if ((uid_t) OWNER_ROOT == uid) + if ((uid_t)OWNER_ROOT == uid) return 1; else return 0; @@ -133,7 +134,7 @@ int main(int argc, char *argv[]) { char err_msg[BUFSZE]; int handle = -1; - int ret = 0; + int ret; if (!_is_authorized(getuid())) { _E("You are not an authorized user!"); @@ -161,8 +162,7 @@ error: _E("Failed to open error file"); return -1; } - snprintf(err_msg, sizeof(err_msg), - "install_preload_pkg error!\n"); + snprintf(err_msg, sizeof(err_msg), "install_preload_pkg error!\n"); ret = write(handle, err_msg, strlen(err_msg)); if (ret == -1) _E("Failed to write an error message. (%d)", errno); -- 2.7.4 From 31451842a835f0947335363efb695fd4981fd0a1 Mon Sep 17 00:00:00 2001 From: Sangyoon Jang Date: Tue, 25 Jul 2017 14:59:13 +0900 Subject: [PATCH 07/16] Skip checking reference when installing preload pkgs Requires: - https://review.tizen.org/gerrit/139436 Change-Id: I44eae5ac3c05fe14fe0bceb084bf1f3e06456515 Signed-off-by: Sangyoon Jang --- src/install_preload_pkg.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/install_preload_pkg.c b/src/install_preload_pkg.c index 58439e5..8fda943 100644 --- a/src/install_preload_pkg.c +++ b/src/install_preload_pkg.c @@ -55,7 +55,7 @@ #define WGT_RW_DIR tzplatform_mkpath(TZ_SYS_RO_APP, ".preload-rw-wgt") static int _install_preload_pkg(const char *backend, const char *directory, - bool readonly) + bool readonly, bool skip_reference_check) { DIR *dir; struct dirent *file_info; @@ -89,6 +89,9 @@ static int _install_preload_pkg(const char *backend, const char *directory, if (pid == 0) { execl(backend, backend, "-i", file_path, readonly ? "--preload" : "--preload-rw", + skip_reference_check ? + "--skip-check-reference" : + "", (char *)NULL); } else if (pid < 0) { _E("failed to fork and execute %s!", backend); @@ -135,22 +138,30 @@ int main(int argc, char *argv[]) char err_msg[BUFSZE]; int handle = -1; int ret; + bool skip_reference_check = false; if (!_is_authorized(getuid())) { _E("You are not an authorized user!"); return -1; } - if (_install_preload_pkg(TPK_BACKEND_CMD, TPK_DIR, true) < 0) + if (argc > 1 && !strcmp(argv[1], "--skip-reference-check")) + skip_reference_check = true; + + if (_install_preload_pkg(TPK_BACKEND_CMD, TPK_DIR, true, + skip_reference_check) < 0) goto error; - if (_install_preload_pkg(WGT_BACKEND_CMD, WGT_DIR, true) < 0) + if (_install_preload_pkg(WGT_BACKEND_CMD, WGT_DIR, true, + skip_reference_check) < 0) goto error; - if (_install_preload_pkg(TPK_BACKEND_CMD, TPK_RW_DIR, false) < 0) + if (_install_preload_pkg(TPK_BACKEND_CMD, TPK_RW_DIR, false, + skip_reference_check) < 0) goto error; - if (_install_preload_pkg(WGT_BACKEND_CMD, WGT_RW_DIR, false) < 0) + if (_install_preload_pkg(WGT_BACKEND_CMD, WGT_RW_DIR, false, + skip_reference_check) < 0) goto error; return 0; -- 2.7.4 From d30843ff4f640fd485a7b7fbb374fc7708821c0c Mon Sep 17 00:00:00 2001 From: Sangyoon Jang Date: Tue, 1 Aug 2017 14:40:57 +0900 Subject: [PATCH 08/16] Release version 0.3.10 Changes: - Fix code style - Skip checking reference when installing preload pkgs Change-Id: Iac173e0899f1d0827a32acfe239d570fbcca2cc6 Signed-off-by: Sangyoon Jang --- packaging/pkgmgr-tool.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/pkgmgr-tool.spec b/packaging/pkgmgr-tool.spec index a06538d..1094d74 100644 --- a/packaging/pkgmgr-tool.spec +++ b/packaging/pkgmgr-tool.spec @@ -1,6 +1,6 @@ Name: pkgmgr-tool Summary: Packager Manager Tool package -Version: 0.3.9 +Version: 0.3.10 Release: 1 Group: Application Framework/Package Management License: Apache-2.0 -- 2.7.4 From c6cab34bcce3e4e203dee0b588581f6dcbcb0745 Mon Sep 17 00:00:00 2001 From: Sangyoon Jang Date: Tue, 25 Jul 2017 19:24:08 +0900 Subject: [PATCH 09/16] Support move to extended Change-Id: Ibd99fb34a05bda84c44d20ca89b6ff14cba57e07 Signed-off-by: Sangyoon Jang --- src/pkg_cmd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pkg_cmd.c b/src/pkg_cmd.c index 813bd2e..14e80be 100644 --- a/src/pkg_cmd.c +++ b/src/pkg_cmd.c @@ -420,7 +420,7 @@ static void __print_usage() printf("-p, --package-path provide package path\n"); printf("-n, --package-name provide package name\n"); printf("-t, --package-type provide package type\n"); - printf("-T, --move-type provide move type [0: move to internal / 1: move to external]\n"); + printf("-T, --move-type provide move type [0: move to internal / 1: move to external / 2: move to extended]\n"); printf(" --global Global Mode [Warning: user should be privilegied to use this mode]\n"); printf(" --uid Specify target user's id. This only affect app activation/deactivation.\n"); printf("-e, --tep-path provide TEP package path\n"); @@ -1015,7 +1015,7 @@ static int __process_request(uid_t target_uid) ret = -1; break; } - if (data.type < 0 || data.type > 1) { + if (data.type < 0 || data.type > 2) { printf("Invalid move type...See usage\n"); ret = -1; break; -- 2.7.4 From adb1697a70cf5ecfc72f97c886f359674f6bd3f4 Mon Sep 17 00:00:00 2001 From: Junghyun Yeon Date: Fri, 4 Aug 2017 14:45:19 +0900 Subject: [PATCH 10/16] Release version 0.3.11 Changes: - Support move to extended Change-Id: I7dac639bb1a67467e35bc59020d7cb7a8fe3f594 Signed-off-by: Junghyun Yeon --- packaging/pkgmgr-tool.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/pkgmgr-tool.spec b/packaging/pkgmgr-tool.spec index 1094d74..09acd57 100644 --- a/packaging/pkgmgr-tool.spec +++ b/packaging/pkgmgr-tool.spec @@ -1,6 +1,6 @@ Name: pkgmgr-tool Summary: Packager Manager Tool package -Version: 0.3.10 +Version: 0.3.11 Release: 1 Group: Application Framework/Package Management License: Apache-2.0 -- 2.7.4 From b29231cc1023a077f69442d78616da9318a114b3 Mon Sep 17 00:00:00 2001 From: Junghyun Yeon Date: Fri, 28 Jul 2017 10:46:43 +0900 Subject: [PATCH 11/16] Fix pkgmgr migration script - change to pkg_initdb handle only readonly packages - seperate preload rw package and normal rw packages as seperate functions Related changes: [tpk-backend] : https://review.tizen.org/gerrit/#/c/141412/ Change-Id: I16d7aa4f43bf1acc27803a6a6ab79aba0b4941f7 Signed-off-by: Junghyun Yeon --- data/700.pkgmgr.patch.sh.in | 65 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 55 insertions(+), 10 deletions(-) diff --git a/data/700.pkgmgr.patch.sh.in b/data/700.pkgmgr.patch.sh.in index e845d9c..cd0f1f9 100644 --- a/data/700.pkgmgr.patch.sh.in +++ b/data/700.pkgmgr.patch.sh.in @@ -126,7 +126,7 @@ function copy_user_tpk_manifest(){ function move_user_tpk_files(){ echo "#move user TPK's files" - echo "SELECT package FROM package_info WHERE package_preload='false' COLLATE NOCASE AND package_type='tpk' COLLATE NOCASE;" | + echo "SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_type='tpk' COLLATE NOCASE;" | sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE while read package @@ -181,7 +181,7 @@ function move_user_wgt_rw_files(){ function move_user_wgt_files(){ echo "#move user WGT's files" - echo "SELECT package FROM package_info WHERE package_preload='false' COLLATE NOCASE AND package_type='wgt' COLLATE NOCASE;" | + echo "SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_type='wgt' COLLATE NOCASE;" | sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE while read package @@ -196,7 +196,7 @@ function move_user_wgt_files(){ function initdb(){ echo "#pkg_initdb" - pkg_initdb --partial-rw + pkg_initdb --ro --partial-rw mkdir -m 770 -p /opt/dbspace/user/5001 chmod 755 /opt/dbspace/user @@ -209,7 +209,7 @@ function initdb(){ function migrate_user_tpk(){ #run manifest direct install of user tpk pkgs echo ".separator \" \" - SELECT package, LOWER(package_type) FROM package_info WHERE package_preload='false' COLLATE NOCASE AND (package_type='tpk' COLLATE NOCASE OR package_type='wgt' COLLATE NOCASE);" | + SELECT package, LOWER(package_type) FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND (package_type='tpk' COLLATE NOCASE OR package_type='wgt' COLLATE NOCASE);" | sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE while read package type @@ -224,7 +224,7 @@ function remove_files_for_deleted_packages(){ #delete userdata of packages which are removed in 3.0 echo "#delete userdata of removed packages" echo "ATTACH DATABASE '$PARSER_BACKUP_DB_PATH' AS backup; - SELECT package FROM backup.package_info WHERE package_preload='true' COLLATE NOCASE AND + SELECT package FROM backup.package_info WHERE package_readonly='true' COLLATE NOCASE AND package NOT IN (SELECT package FROM package_info);" | sqlite3 $PARSER_DB_PATH > $DB_RESULT_FILE @@ -239,7 +239,7 @@ function remove_files_for_deleted_packages(){ function move_preload_pkg_userdata(){ echo "#move preload pkg's userdata" echo "ATTACH DATABASE '$PARSER_BACKUP_DB_PATH' AS backup; - SELECT package FROM backup.package_info WHERE package_preload='true' COLLATE NOCASE AND + SELECT package FROM backup.package_info WHERE package_readonly='true' COLLATE NOCASE AND package IN (SELECT package FROM package_info);" | sqlite3 $PARSER_DB_PATH > $DB_RESULT_FILE while read package @@ -270,7 +270,7 @@ function move_preload_pkg_userdata(){ function disable_preload_pkg(){ echo "#disable preload rpm, tpk pkg" echo "ATTACH DATABASE '$PARSER_BACKUP_DB_PATH' AS backup; - SELECT package FROM backup.package_info WHERE package_preload='true' COLLATE NOCASE AND package_type!='wgt' COLLATE NOCASE AND package_disable='true' COLLATE NOCASE AND + SELECT package FROM backup.package_info WHERE package_readonly='true' COLLATE NOCASE AND package_type!='wgt' COLLATE NOCASE AND package_disable='true' COLLATE NOCASE AND package IN (SELECT package FROM package_info);" | sqlite3 $PARSER_DB_PATH > $DB_RESULT_FILE @@ -283,7 +283,7 @@ function disable_preload_pkg(){ echo "#disable preload wgt pkg" echo "ATTACH DATABASE '$PARSER_BACKUP_DB_PATH' AS backup; - SELECT package FROM backup.package_info WHERE package_preload='true' COLLATE NOCASE AND package_type='wgt' COLLATE NOCASE AND package_disable='true' COLLATE NOCASE AND + SELECT package FROM backup.package_info WHERE package_readonly='true' COLLATE NOCASE AND package_type='wgt' COLLATE NOCASE AND package_disable='true' COLLATE NOCASE AND package IN (SELECT package FROM package_info);" | sqlite3 $PARSER_DB_PATH > $DB_RESULT_FILE @@ -299,7 +299,7 @@ function disable_user_pkg(){ echo "#disable user pkg" echo ".separator \" \" ATTACH DATABASE '$PARSER_BACKUP_DB_PATH' AS backup; - SELECT package, package_type FROM backup.package_info WHERE package_preload='false' COLLATE NOCASE AND package_type !='rpm' COLLATE NOCASE AND package_disable='true' COLLATE NOCASE AND + SELECT package, package_type FROM backup.package_info WHERE package_readonly='false' COLLATE NOCASE AND package_type !='rpm' COLLATE NOCASE AND package_disable='true' COLLATE NOCASE AND package IN (SELECT package FROM package_info);" | sqlite3 $PARSER_DB_PATH > $DB_RESULT_FILE @@ -316,10 +316,52 @@ function remove_backup_db(){ rm $PARSER_BACKUP_DB_PATH } +function init_user_tpk_preload_rw_packages() { + echo "#init tpk preload rw packages" + echo ".separator \" \" + SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_preload='true' COLLATE NOCASE AND package_type='tpk';" | + sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE + + while read package + do + echo "init tpk preload rw package $package..." + tpk-backend -y $package --preload-rw + done < $DB_RESULT_FILE + rm -f $DB_RESULT_FILE +} + +function init_user_wgt_preload_rw_packages() { + echo "#init wgt preload rw packages" + echo ".separator \" \" + SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_preload='true' COLLATE NOCASE AND package_type='wgt';" | + sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE + + while read package + do + echo "init wgt preload rw package $package..." + wgt-backend -y $package --preload-rw + done < $DB_RESULT_FILE + rm -f $DB_RESULT_FILE +} + +function init_user_tpk_packages() { + echo "#init user tpk packages" + echo ".separator \" \" + SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_preload='false' COLLATE NOCASE AND package_type='tpk';" | + sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE + + while read package + do + echo "init user tpk package $package..." + tpk-backend -y $package + done < $DB_RESULT_FILE + rm -f $DB_RESULT_FILE +} + function init_user_wgt_packages(){ echo "#init user wgt packages" echo ".separator \" \" - SELECT package FROM package_info WHERE package_preload='false' COLLATE NOCASE AND package_type='wgt';" | + SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_type='wgt';" | sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE while read package @@ -348,7 +390,10 @@ move_user_tpk_files move_user_wgt_files initdb +init_user_tpk_packages +init_user_tpk_preload_rw_packages init_user_wgt_packages +init_user_wgt_preload_rw_packages remove_files_for_deleted_packages move_preload_pkg_userdata -- 2.7.4 From 3830fb2068ddda9c6d7657725942d21054677ab8 Mon Sep 17 00:00:00 2001 From: Sangyoon Jang Date: Fri, 18 Aug 2017 17:39:21 +0900 Subject: [PATCH 12/16] Fix wrong option name Change-Id: Ieb59d0a603230400f9b232f785cc5f2ab610e353 Signed-off-by: Sangyoon Jang --- src/install_preload_pkg.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/install_preload_pkg.c b/src/install_preload_pkg.c index 8fda943..60662e5 100644 --- a/src/install_preload_pkg.c +++ b/src/install_preload_pkg.c @@ -55,7 +55,7 @@ #define WGT_RW_DIR tzplatform_mkpath(TZ_SYS_RO_APP, ".preload-rw-wgt") static int _install_preload_pkg(const char *backend, const char *directory, - bool readonly, bool skip_reference_check) + bool readonly, bool skip_check_reference) { DIR *dir; struct dirent *file_info; @@ -89,7 +89,7 @@ static int _install_preload_pkg(const char *backend, const char *directory, if (pid == 0) { execl(backend, backend, "-i", file_path, readonly ? "--preload" : "--preload-rw", - skip_reference_check ? + skip_check_reference ? "--skip-check-reference" : "", (char *)NULL); @@ -138,30 +138,30 @@ int main(int argc, char *argv[]) char err_msg[BUFSZE]; int handle = -1; int ret; - bool skip_reference_check = false; + bool skip_check_reference = false; if (!_is_authorized(getuid())) { _E("You are not an authorized user!"); return -1; } - if (argc > 1 && !strcmp(argv[1], "--skip-reference-check")) - skip_reference_check = true; + if (argc > 1 && !strcmp(argv[1], "--skip-check-reference")) + skip_check_reference = true; if (_install_preload_pkg(TPK_BACKEND_CMD, TPK_DIR, true, - skip_reference_check) < 0) + skip_check_reference) < 0) goto error; if (_install_preload_pkg(WGT_BACKEND_CMD, WGT_DIR, true, - skip_reference_check) < 0) + skip_check_reference) < 0) goto error; if (_install_preload_pkg(TPK_BACKEND_CMD, TPK_RW_DIR, false, - skip_reference_check) < 0) + skip_check_reference) < 0) goto error; if (_install_preload_pkg(WGT_BACKEND_CMD, WGT_RW_DIR, false, - skip_reference_check) < 0) + skip_check_reference) < 0) goto error; return 0; -- 2.7.4 From 2c327a2c9dcf522d375d0e540f1145d30c079e9b Mon Sep 17 00:00:00 2001 From: Junghyun Yeon Date: Fri, 18 Aug 2017 10:28:42 +0900 Subject: [PATCH 13/16] Fix upgrade script - Remove unused function - Add function to remove files at previous location(/opt/usr/apps) after coping it to new location Change-Id: I7a48df2d6c9a78aa6c8d0f4f7e8dbfdcabb3e829 Signed-off-by: Junghyun Yeon --- data/700.pkgmgr.patch.sh.in | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/data/700.pkgmgr.patch.sh.in b/data/700.pkgmgr.patch.sh.in index cd0f1f9..7bf1c09 100644 --- a/data/700.pkgmgr.patch.sh.in +++ b/data/700.pkgmgr.patch.sh.in @@ -194,6 +194,18 @@ function move_user_wgt_files(){ } +function remove_previous_files(){ + echo "#remove files from previous location" + echo "SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE;" | + sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE + + while read package + do + rm -rf $OPT_USR_APPS/$package + done < $DB_RESULT_FILE + rm -f $DB_RESULT_FILE +} + function initdb(){ echo "#pkg_initdb" pkg_initdb --ro --partial-rw @@ -206,20 +218,6 @@ function initdb(){ pkg_initdb --uid 5001 } -function migrate_user_tpk(){ - #run manifest direct install of user tpk pkgs - echo ".separator \" \" - SELECT package, LOWER(package_type) FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND (package_type='tpk' COLLATE NOCASE OR package_type='wgt' COLLATE NOCASE);" | - sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE - - while read package type - do - echo "processing $package..." - $type-backend -y $package - done < $DB_RESULT_FILE - rm -f $DB_RESULT_FILE -} - function remove_files_for_deleted_packages(){ #delete userdata of packages which are removed in 3.0 echo "#delete userdata of removed packages" @@ -388,6 +386,7 @@ remove_unregistered_pkg move_user_tpk_files move_user_wgt_files +remove_previous_files initdb init_user_tpk_packages -- 2.7.4 From b7018589208329a64d7c7ed7f255e6174ef530f6 Mon Sep 17 00:00:00 2001 From: Junghyun Yeon Date: Thu, 17 Aug 2017 18:12:07 +0900 Subject: [PATCH 14/16] Fix upgrade script - Add updates directory to store actual upgrade script - Previous upgrade scripts will determine current version and target version and execute proper upgrade script by right order - Add codes for certificate migration to get dist root to determine privilege level because signature file has removed in previous platform for security purpose. - Certificate values now will be inserted into cert db directly. - Fix to not to remove shared/data and shared/cache Change-Id: I52942990115b25d0db489bc4333e6560f978c018 Signed-off-by: Junghyun Yeon --- CMakeLists.txt | 4 + data/700.pkgmgr.patch.sh.in | 428 ++-------------------------- data/updates/upgrade_to_30000.sh.in | 540 ++++++++++++++++++++++++++++++++++++ data/updates/upgrade_to_30001.sh.in | 40 +++ packaging/pkgmgr-tool.spec | 2 + 5 files changed, 616 insertions(+), 398 deletions(-) create mode 100644 data/updates/upgrade_to_30000.sh.in create mode 100644 data/updates/upgrade_to_30001.sh.in diff --git a/CMakeLists.txt b/CMakeLists.txt index f663436..9e507f8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -80,3 +80,7 @@ CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/data/700.pkgmgr.patch.sh.in 700.pkgmg INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/700.pkgmgr.patch.sh DESTINATION /usr/share/upgrade/scripts/) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/data/701.app2sd.patch.sh.in 701.app2sd.patch.sh @ONLY) INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/701.app2sd.patch.sh DESTINATION /usr/share/upgrade/scripts/) +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/data/updates/upgrade_to_30000.sh.in upgrade_to_30000.sh $ONLY) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/upgrade_to_30000.sh DESTINATION /etc/package-manager/updates/) +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/data/updates/upgrade_to_30001.sh.in upgrade_to_30001.sh $ONLY) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/upgrade_to_30001.sh DESTINATION /etc/package-manager/updates/) diff --git a/data/700.pkgmgr.patch.sh.in b/data/700.pkgmgr.patch.sh.in index 7bf1c09..08eeb28 100644 --- a/data/700.pkgmgr.patch.sh.in +++ b/data/700.pkgmgr.patch.sh.in @@ -1,404 +1,36 @@ #!/bin/sh -PATH=/bin:/usr/bin:/sbin:/usr/sbin source /etc/tizen-platform.conf PARSER_DB_NAME=.pkgmgr_parser.db -PARSER_BACKUP_DB_NAME=.pkgmgr_parser_backup.db PARSER_DB_PATH=$TZ_SYS_DB/$PARSER_DB_NAME -PARSER_BACKUP_DB_PATH=$TZ_SYS_DB/$PARSER_BACKUP_DB_NAME -DB_RESULT_FILE=/tmp/result.log - -OPT_USR_APPS=/opt/usr/apps - -#define owner user -DEFAULT_USER=$TZ_SYS_DEFAULT_USER - -#define /opt/usr/home/owner -DEFAULT_USER_HOME=$TZ_SYS_HOME/$DEFAULT_USER - -#define /opt/usr/home/owner/apps_rw -DEFAULT_USER_APPS_RW=$DEFAULT_USER_HOME/apps_rw - -#define /opt/share/packages -DEFAULT_PKG_MANIFEST_LOCATION=$TZ_SYS_RW_PACKAGES - -#define /opt/usr/globalapps -DEFAULT_PKG_APP_LOCATION=$TZ_SYS_RW_APP - - -DEFAULT_RO_OWNER_GROUP=tizenglobalapp:root -DEFAULT_MANIFEST_SMACK_LABEL=System - -DEFAULT_RW_OWNER_GROUP=owner:users -DEFAULT_RW_SMACK_LABEL=User::Pkg:: -DEFAULT_RO_SMACK_LABEL=User::Home - -TIZEN_MANIFEST=tizen-manifest.xml - -OWNER_SYSTEM_SHARE=owner:system_share -TRUSTED_LABEL=User::Author::1 - -RESTRICTION_DBPATH=/var/lib/package-manager -RESTRICTION_DBNAME=restriction.db -#---------------------------------- -# upgrade script for pkgmgr -#---------------------------------- - -function backup_db(){ - echo "#backup previous DB" - mv $PARSER_DB_PATH $PARSER_BACKUP_DB_PATH -} - -function create_restriction_db(){ - echo "#create restriction db" - local restriction_db=$RESTRICTION_DBPATH/$RESTRICTION_DBNAME - mkdir -p $RESTRICTION_DBPATH - echo "PRAGMA journal_mode=WAL; - CREATE TABLE restriction (uid INTEGER NOT NULL, pkgid TEXT NOT NULL, mode INTEGER NOT NULL, UNIQUE(uid, pkgid));" | - sqlite3 $restriction_db -} - -function remove_modified_manifest(){ - echo "#remove modified manifest" - rm -rf $DEFAULT_PKG_MANIFEST_LOCATION/* -} - -function remove_unregistered_pkg(){ - #remove pkg folder which is not registered at pkg db - ls $OPT_USR_APPS/ | while read FOLDER - do - result=$(sqlite3 $PARSER_BACKUP_DB_PATH "SELECT COUNT(*) FROM package_info WHERE package='$FOLDER';") - if [ $result != "1" ] - then - echo "delete unregistered package directory $OPT_USR_APPS/$FOLDER" - rm -r $OPT_USR_APPS/$FOLDER - fi - done -} - -function move_user_tpk_ro_files(){ - #this copy will copy whole things include userdata - local package=$1 - cp -af $OPT_USR_APPS/$package $DEFAULT_PKG_APP_LOCATION/ - chown -R $DEFAULT_RO_OWNER_GROUP $DEFAULT_PKG_APP_LOCATION/$package - chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_PKG_APP_LOCATION/$package - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::RO $DEFAULT_PKG_APP_LOCATION/$package/bin - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::RO $DEFAULT_PKG_APP_LOCATION/$package/lib - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::RO $DEFAULT_PKG_APP_LOCATION/$package/res - chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_PKG_APP_LOCATION/$package/shared - -} - -function move_user_tpk_rw_files(){ - local package=$1 - mkdir -m 751 $DEFAULT_USER_APPS_RW/$package - chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_USER_APPS_RW/$package - mkdir $DEFAULT_USER_APPS_RW/$package/shared - chown -R $DEFAULT_RW_OWNER_GROUP $DEFAULT_USER_APPS_RW/$package - - mv $DEFAULT_PKG_APP_LOCATION/$package/cache $DEFAULT_USER_APPS_RW/$package/ - mv $DEFAULT_PKG_APP_LOCATION/$package/data $DEFAULT_USER_APPS_RW/$package/ - chmod g+s $DEFAULT_USER_APPS_RW/$package/data - chmod 771 $DEFAULT_USER_APPS_RW/$package/data - mv $DEFAULT_PKG_APP_LOCATION/$package/shared/data $DEFAULT_USER_APPS_RW/$package/shared/ - mv $DEFAULT_PKG_APP_LOCATION/$package/shared/trusted $DEFAULT_USER_APPS_RW/$package/shared/ - - chown -R $DEFAULT_RW_OWNER_GROUP $DEFAULT_USER_APPS_RW/$package/cache - chown -R $OWNER_SYSTEM_SHARE $DEFAULT_USER_APPS_RW/$package/data - chown -R $DEFAULT_RW_OWNER_GROUP $DEFAULT_USER_APPS_RW/$package/shared - chown -R $OWNER_SYSTEM_SHARE $DEFAULT_USER_APPS_RW/$package/shared/data - - chsmack -r -t -a $TRUSTED_LABEL $DEFAULT_USER_APPS_RW/$package/shared/trusted - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::SharedRO $DEFAULT_USER_APPS_RW/$package/shared/data - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_USER_APPS_RW/$package/cache - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_USER_APPS_RW/$package/data - - #remove shared/cache - echo "deleting $DEFAULT_PKG_APP_LOCATION/$package/shared/cache" - rm -rf $DEFAULT_PKG_APP_LOCATION/$package/shared/cache -} - -function copy_user_tpk_manifest(){ - local package=$1 - cp $DEFAULT_PKG_APP_LOCATION/$1/$TIZEN_MANIFEST $DEFAULT_PKG_MANIFEST_LOCATION/$package.xml -} - -function move_user_tpk_files(){ - echo "#move user TPK's files" - echo "SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_type='tpk' COLLATE NOCASE;" | - sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE - - while read package - do - echo "processing user tpk $package..." - move_user_tpk_ro_files $package - move_user_tpk_rw_files $package - copy_user_tpk_manifest $package - done < $DB_RESULT_FILE - rm -f $DB_RESULT_FILE -} - -function move_user_wgt_ro_files(){ - #this copy will copy whole things include userdata - local package=$1 - cp -af --no-preserve=ownership $OPT_USR_APPS/$package $DEFAULT_PKG_APP_LOCATION/ - chown -R $DEFAULT_RO_OWNER_GROUP $DEFAULT_PKG_APP_LOCATION/$package - chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_PKG_APP_LOCATION/$package - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::RO $DEFAULT_PKG_APP_LOCATION/$package/bin - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::RO $DEFAULT_PKG_APP_LOCATION/$package/res - chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_PKG_APP_LOCATION/$package/shared - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_PKG_APP_LOCATION/$package/tmp -} - -function move_user_wgt_rw_files(){ - local package=$1 - mkdir -m 751 $DEFAULT_USER_APPS_RW/$package - chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_USER_APPS_RW/$package - - mkdir -m 751 $DEFAULT_USER_APPS_RW/$package/shared - mkdir -m 751 $DEFAULT_USER_APPS_RW/$package/cache - - chown -R $DEFAULT_RW_OWNER_GROUP $DEFAULT_USER_APPS_RW/$package - - mv $DEFAULT_PKG_APP_LOCATION/$package/data $DEFAULT_USER_APPS_RW/$package/ - mv $DEFAULT_PKG_APP_LOCATION/$package/shared/data $DEFAULT_USER_APPS_RW/$package/shared/ - mv $DEFAULT_PKG_APP_LOCATION/$package/shared/trusted $DEFAULT_USER_APPS_RW/$package/shared/ - chmod 751 $DEFAULT_USER_APPS_RW/$package/shared/trusted - chmod g+s $DEFAULT_USER_APPS_RW/$package/data - chmod 771 $DEFAULT_USER_APPS_RW/$package/data - - chown -R $OWNER_SYSTEM_SHARE $DEFAULT_USER_APPS_RW/$package/data - chown -R $DEFAULT_RW_OWNER_GROUP $DEFAULT_USER_APPS_RW/$package/shared - chown -R $OWNER_SYSTEM_SHARE $DEFAULT_USER_APPS_RW/$package/shared/data - - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_USER_APPS_RW/$package/cache - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_USER_APPS_RW/$package/data - chsmack -r -t -a $TRUSTED_LABEL $DEFAULT_USER_APPS_RW/$package/shared/trusted - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::SharedRO $DEFAULT_USER_APPS_RW/$package/shared/data -} - - -function move_user_wgt_files(){ - echo "#move user WGT's files" - echo "SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_type='wgt' COLLATE NOCASE;" | - sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE - - while read package - do - echo "processing user wgt $package..." - move_user_wgt_ro_files $package - move_user_wgt_rw_files $package - done < $DB_RESULT_FILE - rm -f $DB_RESULT_FILE - -} - -function remove_previous_files(){ - echo "#remove files from previous location" - echo "SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE;" | - sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE - - while read package - do - rm -rf $OPT_USR_APPS/$package - done < $DB_RESULT_FILE - rm -f $DB_RESULT_FILE -} - -function initdb(){ - echo "#pkg_initdb" - pkg_initdb --ro --partial-rw - - mkdir -m 770 -p /opt/dbspace/user/5001 - chmod 755 /opt/dbspace/user - chsmack -r -a User::Home /opt/dbspace/user - chown $OWNER_SYSTEM_SHARE /opt/dbspace/user/5001 - - pkg_initdb --uid 5001 -} - -function remove_files_for_deleted_packages(){ - #delete userdata of packages which are removed in 3.0 - echo "#delete userdata of removed packages" - echo "ATTACH DATABASE '$PARSER_BACKUP_DB_PATH' AS backup; - SELECT package FROM backup.package_info WHERE package_readonly='true' COLLATE NOCASE AND - package NOT IN (SELECT package FROM package_info);" | - sqlite3 $PARSER_DB_PATH > $DB_RESULT_FILE - - while read package - do - echo "rm -r $OPT_USR_APPS/$package" - rm -r $OPT_USR_APPS/$package - done < $DB_RESULT_FILE - rm -f $DB_RESULT_FILE -} - -function move_preload_pkg_userdata(){ - echo "#move preload pkg's userdata" - echo "ATTACH DATABASE '$PARSER_BACKUP_DB_PATH' AS backup; - SELECT package FROM backup.package_info WHERE package_readonly='true' COLLATE NOCASE AND - package IN (SELECT package FROM package_info);" | - sqlite3 $PARSER_DB_PATH > $DB_RESULT_FILE - while read package - do - echo "processing preload pkg $package..." - cp -af $OPT_USR_APPS/$package $DEFAULT_USER_APPS_RW/ - chown -R $DEFAULT_RW_OWNER_GROUP $DEFAULT_USER_APPS_RW/$package - chown -R $OWNER_SYSTEM_SHARE $DEFAULT_USER_APPS_RW/$package/data - chmod g+s $DEFAULT_USER_APPS_RW/$package/data - chmod 771 $DEFAULT_USER_APPS_RW/$package/data - rm -rf $OPT_USR_APPS/$package - - rm -rf $DEFAULT_USER_APPS_RW/$package/shared/cache - rm -rf $DEFAULT_USER_APPS_RW/$package/shared/data - - chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_USER_APPS_RW/$package - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_USER_APPS_RW/$package/cache - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_USER_APPS_RW/$package/data - if [ -d $DEFAULT_USER_APPS_RW/$package/shared/trusted ]; - then - chsmack -r -t -a $TRUSTED_LABEL $DEFAULT_USER_APPS_RW/$package/shared/trusted - fi - - done < $DB_RESULT_FILE - rm -f $DB_RESULT_FILE -} - -function disable_preload_pkg(){ - echo "#disable preload rpm, tpk pkg" - echo "ATTACH DATABASE '$PARSER_BACKUP_DB_PATH' AS backup; - SELECT package FROM backup.package_info WHERE package_readonly='true' COLLATE NOCASE AND package_type!='wgt' COLLATE NOCASE AND package_disable='true' COLLATE NOCASE AND - package IN (SELECT package FROM package_info);" | - sqlite3 $PARSER_DB_PATH > $DB_RESULT_FILE - - while read package - do - echo "disable preload pkg $package..." - tpk-backend -D $package --preload - done < $DB_RESULT_FILE - rm -f $DB_RESULT_FILE - - echo "#disable preload wgt pkg" - echo "ATTACH DATABASE '$PARSER_BACKUP_DB_PATH' AS backup; - SELECT package FROM backup.package_info WHERE package_readonly='true' COLLATE NOCASE AND package_type='wgt' COLLATE NOCASE AND package_disable='true' COLLATE NOCASE AND - package IN (SELECT package FROM package_info);" | - sqlite3 $PARSER_DB_PATH > $DB_RESULT_FILE - - while read package - do - echo "disable preload wgt $package..." - wgt-backend -D $package --preload - done < $DB_RESULT_FILE - rm -f $DB_RESULT_FILE -} - -function disable_user_pkg(){ - echo "#disable user pkg" - echo ".separator \" \" - ATTACH DATABASE '$PARSER_BACKUP_DB_PATH' AS backup; - SELECT package, package_type FROM backup.package_info WHERE package_readonly='false' COLLATE NOCASE AND package_type !='rpm' COLLATE NOCASE AND package_disable='true' COLLATE NOCASE AND - package IN (SELECT package FROM package_info);" | - sqlite3 $PARSER_DB_PATH > $DB_RESULT_FILE - - while read package type - do - echo "disable user pkg $package..." - echo "$type-backend -D $package" - $type-backend -D $package - done < $DB_RESULT_FILE - rm -f $DB_RESULT_FILE -} - -function remove_backup_db(){ - rm $PARSER_BACKUP_DB_PATH -} - -function init_user_tpk_preload_rw_packages() { - echo "#init tpk preload rw packages" - echo ".separator \" \" - SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_preload='true' COLLATE NOCASE AND package_type='tpk';" | - sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE - - while read package - do - echo "init tpk preload rw package $package..." - tpk-backend -y $package --preload-rw - done < $DB_RESULT_FILE - rm -f $DB_RESULT_FILE -} - -function init_user_wgt_preload_rw_packages() { - echo "#init wgt preload rw packages" - echo ".separator \" \" - SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_preload='true' COLLATE NOCASE AND package_type='wgt';" | - sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE - - while read package - do - echo "init wgt preload rw package $package..." - wgt-backend -y $package --preload-rw - done < $DB_RESULT_FILE - rm -f $DB_RESULT_FILE -} - -function init_user_tpk_packages() { - echo "#init user tpk packages" - echo ".separator \" \" - SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_preload='false' COLLATE NOCASE AND package_type='tpk';" | - sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE - - while read package - do - echo "init user tpk package $package..." - tpk-backend -y $package - done < $DB_RESULT_FILE - rm -f $DB_RESULT_FILE -} - -function init_user_wgt_packages(){ - echo "#init user wgt packages" - echo ".separator \" \" - SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_type='wgt';" | - sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE - - while read package - do - echo "init user wgt package $package..." - wgt-backend -y $package - done < $DB_RESULT_FILE - rm -f $DB_RESULT_FILE -} - -function migrate_external_info(){ - echo "#migrate external storage info" - echo "ATTACH DATABASE '$PARSER_BACKUP_DB_PATH' AS backup; - UPDATE package_info set installed_storage='installed_external' WHERE package IN (SELECT package FROM backup.package_info WHERE installed_storage='installed_external' COLLATE NOCASE);" | - sqlite3 $PARSER_DB_PATH -} - -backup_db - -create_restriction_db - -remove_modified_manifest -remove_unregistered_pkg - -move_user_tpk_files -move_user_wgt_files -remove_previous_files - -initdb -init_user_tpk_packages -init_user_tpk_preload_rw_packages -init_user_wgt_packages -init_user_wgt_preload_rw_packages - -remove_files_for_deleted_packages -move_preload_pkg_userdata - -disable_preload_pkg -disable_user_pkg -migrate_external_info - -remove_backup_db +DB_VERSION_FILE_PATH="/etc/package-manager/pkg_db_version.txt" +DB_VERSION_OLD="`\"sqlite3\" \"$PARSER_DB_PATH\" 'PRAGMA user_version;'`" +DB_VERSION_QUERY="`grep 'PRAGMA user_version' $DB_VERSION_FILE_PATH`" +DB_VERSION_TARGET="`echo \"$DB_VERSION_QUERY\" | sed -r 's/.* ([0-9]+).*/\1/'`" +DB_VERSION_TIZEN24=1 +DB_VERSION_TIZEN30_DEFAULT=30000 +UPDATE_SCRIPT_LOCATION="/etc/package-manager/updates/" +UPDATE_SCRIPT_PREFIX="upgrade_to_" + +#execute script from DB_VERSION_OLD to DB_VERSION_OLD+1 until DB_VERSION_OLD+1 reaches DB_VERSION_TARGET + +[ $DB_VERSION_OLD -eq $DB_VERSION_NEW ] && echo "Database is already up to date." && exit +[ $DB_VERSION_OLD -gt $DB_VERSION_NEW ] && echo "Downgrading is not supported." && exit + +echo "Current version: $DB_VERSION_OLD, target version: $DB_VERSION_TARGET" + +#if old version is less than 1, upgrade to 30000, default version of tizen_3.0 +if [ $DB_VERSION_OLD -le $DB_VERSION_TIZEN24 ]; then + echo "Updating $PARSER_DB_PATH to $DB_VERSION_TIZEN30_DEFAULT" + exec "$UPDATE_SCRIPT_LOCATION/$UPDATE_SCRIPT_PREFIX$DB_VERSION_TIZEN30_DEFAULT.sh" + DB_VERSION_OLD=30000 +fi + +for i in `seq $((DB_VERSION_OLD+1)) $DB_VERSION_TARGET` +do + echo "Updating $PARSER_DB_PATH to $i (target version is $DB_VERSION_TARGET)" + UPDATE_SCRIPT="$UPDATE_SCRIPT_LOCATION/$UPDATE_SCRIPT_PREFIX$i.sh" + [ ! -e "$UPDATE_SCRIPT" ] && echo "Can't find script $UPDATE_SCRIPT" && exit 1 + exec $UPDATE_SCRIPT +done diff --git a/data/updates/upgrade_to_30000.sh.in b/data/updates/upgrade_to_30000.sh.in new file mode 100644 index 0000000..f62ca77 --- /dev/null +++ b/data/updates/upgrade_to_30000.sh.in @@ -0,0 +1,540 @@ +#!/bin/sh +PATH=/bin:/usr/bin:/sbin:/usr/sbin + +source /etc/tizen-platform.conf + +CERT_DB_NAME=.pkgmgr_cert.db +CERT_BACKUP_DB_NAME=.pkgmgr_cert_backup.db +CERT_BACKUP_DB_PATH=$TZ_SYS_DB/$CERT_BACKUP_DB_NAME +CERT_DB_PATH=$TZ_SYS_DB/$CERT_DB_NAME +CERT_TEMP_FILEPATH=/tmp + +PARSER_DB_NAME=.pkgmgr_parser.db +PARSER_BACKUP_DB_NAME=.pkgmgr_parser_backup.db +PARSER_DB_PATH=$TZ_SYS_DB/$PARSER_DB_NAME +PARSER_BACKUP_DB_PATH=$TZ_SYS_DB/$PARSER_BACKUP_DB_NAME +DB_RESULT_FILE=/tmp/result.log + +OPT_USR_APPS=/opt/usr/apps + +#define owner user +DEFAULT_USER=$TZ_SYS_DEFAULT_USER + +#define /opt/usr/home/owner +DEFAULT_USER_HOME=$TZ_SYS_HOME/$DEFAULT_USER + +#define /opt/usr/home/owner/apps_rw +DEFAULT_USER_APPS_RW=$DEFAULT_USER_HOME/apps_rw + +#define /opt/share/packages +DEFAULT_PKG_MANIFEST_LOCATION=$TZ_SYS_RW_PACKAGES + +#define /opt/usr/globalapps +DEFAULT_PKG_APP_LOCATION=$TZ_SYS_RW_APP + + +DEFAULT_RO_OWNER_GROUP=tizenglobalapp:root +DEFAULT_MANIFEST_SMACK_LABEL=System + +DEFAULT_RW_OWNER_GROUP=owner:users +DEFAULT_RW_SMACK_LABEL=User::Pkg:: +DEFAULT_RO_SMACK_LABEL=User::Home + +TIZEN_MANIFEST=tizen-manifest.xml + +OWNER_SYSTEM_SHARE=owner:system_share +TRUSTED_LABEL=User::Author::1 + +RESTRICTION_DBPATH=/var/lib/package-manager +RESTRICTION_DBNAME=restriction.db +#---------------------------------- +# upgrade script for pkgmgr +#---------------------------------- + +function backup_db(){ + echo "#backup previous DB" + mv $PARSER_DB_PATH $PARSER_BACKUP_DB_PATH + mv $CERT_DB_PATH $CERT_BACKUP_DB_PATH +} + +function create_restriction_db(){ + echo "#create restriction db" + local restriction_db=$RESTRICTION_DBPATH/$RESTRICTION_DBNAME + mkdir -p $RESTRICTION_DBPATH + echo "PRAGMA journal_mode=WAL; + CREATE TABLE restriction (uid INTEGER NOT NULL, pkgid TEXT NOT NULL, mode INTEGER NOT NULL, UNIQUE(uid, pkgid));" | + sqlite3 $restriction_db +} + +function remove_modified_manifest(){ + echo "#remove modified manifest" + rm -rf $DEFAULT_PKG_MANIFEST_LOCATION/* +} + +function remove_unregistered_pkg(){ + #remove pkg folder which is not registered at pkg db + ls $OPT_USR_APPS/ | while read FOLDER + do + result=$(sqlite3 $PARSER_BACKUP_DB_PATH "SELECT COUNT(*) FROM package_info WHERE package='$FOLDER';") + if [ $result != "1" ] + then + echo "delete unregistered package directory $OPT_USR_APPS/$FOLDER" + rm -r $OPT_USR_APPS/$FOLDER + fi + done +} + +function move_user_tpk_ro_files(){ + #this copy will copy whole things include userdata + local package=$1 + cp -af $OPT_USR_APPS/$package $DEFAULT_PKG_APP_LOCATION/ + chown -R $DEFAULT_RO_OWNER_GROUP $DEFAULT_PKG_APP_LOCATION/$package + chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_PKG_APP_LOCATION/$package + chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::RO $DEFAULT_PKG_APP_LOCATION/$package/bin + chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::RO $DEFAULT_PKG_APP_LOCATION/$package/lib + chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::RO $DEFAULT_PKG_APP_LOCATION/$package/res + chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_PKG_APP_LOCATION/$package/shared + +} + +function move_user_tpk_rw_files(){ + local package=$1 + mkdir -m 751 $DEFAULT_USER_APPS_RW/$package + chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_USER_APPS_RW/$package + mkdir $DEFAULT_USER_APPS_RW/$package/shared + chown -R $DEFAULT_RW_OWNER_GROUP $DEFAULT_USER_APPS_RW/$package + + mv $DEFAULT_PKG_APP_LOCATION/$package/cache $DEFAULT_USER_APPS_RW/$package/ + mv $DEFAULT_PKG_APP_LOCATION/$package/data $DEFAULT_USER_APPS_RW/$package/ + chmod g+s $DEFAULT_USER_APPS_RW/$package/data + chmod 771 $DEFAULT_USER_APPS_RW/$package/data + mv $DEFAULT_PKG_APP_LOCATION/$package/shared/data $DEFAULT_USER_APPS_RW/$package/shared/ + mv $DEFAULT_PKG_APP_LOCATION/$package/shared/trusted $DEFAULT_USER_APPS_RW/$package/shared/ + + chown -R $DEFAULT_RW_OWNER_GROUP $DEFAULT_USER_APPS_RW/$package/cache + chown -R $OWNER_SYSTEM_SHARE $DEFAULT_USER_APPS_RW/$package/data + chown -R $DEFAULT_RW_OWNER_GROUP $DEFAULT_USER_APPS_RW/$package/shared + chown -R $OWNER_SYSTEM_SHARE $DEFAULT_USER_APPS_RW/$package/shared/data + + chsmack -r -t -a $TRUSTED_LABEL $DEFAULT_USER_APPS_RW/$package/shared/trusted + chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::SharedRO $DEFAULT_USER_APPS_RW/$package/shared/data + chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_USER_APPS_RW/$package/cache + chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_USER_APPS_RW/$package/data +} + +function copy_user_tpk_manifest(){ + local package=$1 + cp $DEFAULT_PKG_APP_LOCATION/$1/$TIZEN_MANIFEST $DEFAULT_PKG_MANIFEST_LOCATION/$package.xml +} + +function move_user_tpk_files(){ + echo "#move user TPK's files" + echo "SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_type='tpk' COLLATE NOCASE;" | + sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE + + while read package + do + echo "processing user tpk $package..." + move_user_tpk_ro_files $package + move_user_tpk_rw_files $package + copy_user_tpk_manifest $package + done < $DB_RESULT_FILE + rm -f $DB_RESULT_FILE +} + +function move_user_wgt_ro_files(){ + #this copy will copy whole things include userdata + local package=$1 + cp -af --no-preserve=ownership $OPT_USR_APPS/$package $DEFAULT_PKG_APP_LOCATION/ + chown -R $DEFAULT_RO_OWNER_GROUP $DEFAULT_PKG_APP_LOCATION/$package + chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_PKG_APP_LOCATION/$package + chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::RO $DEFAULT_PKG_APP_LOCATION/$package/bin + chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::RO $DEFAULT_PKG_APP_LOCATION/$package/res + chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_PKG_APP_LOCATION/$package/shared + chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_PKG_APP_LOCATION/$package/tmp +} + +function move_user_wgt_rw_files(){ + local package=$1 + mkdir -m 751 $DEFAULT_USER_APPS_RW/$package + chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_USER_APPS_RW/$package + + mkdir -m 751 $DEFAULT_USER_APPS_RW/$package/shared + mkdir -m 751 $DEFAULT_USER_APPS_RW/$package/cache + + chown -R $DEFAULT_RW_OWNER_GROUP $DEFAULT_USER_APPS_RW/$package + + mv $DEFAULT_PKG_APP_LOCATION/$package/data $DEFAULT_USER_APPS_RW/$package/ + mv $DEFAULT_PKG_APP_LOCATION/$package/shared/data $DEFAULT_USER_APPS_RW/$package/shared/ + mv $DEFAULT_PKG_APP_LOCATION/$package/shared/trusted $DEFAULT_USER_APPS_RW/$package/shared/ + chmod 751 $DEFAULT_USER_APPS_RW/$package/shared/trusted + chmod g+s $DEFAULT_USER_APPS_RW/$package/data + chmod 771 $DEFAULT_USER_APPS_RW/$package/data + + chown -R $OWNER_SYSTEM_SHARE $DEFAULT_USER_APPS_RW/$package/data + chown -R $DEFAULT_RW_OWNER_GROUP $DEFAULT_USER_APPS_RW/$package/shared + chown -R $OWNER_SYSTEM_SHARE $DEFAULT_USER_APPS_RW/$package/shared/data + + chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_USER_APPS_RW/$package/cache + chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_USER_APPS_RW/$package/data + chsmack -r -t -a $TRUSTED_LABEL $DEFAULT_USER_APPS_RW/$package/shared/trusted + chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::SharedRO $DEFAULT_USER_APPS_RW/$package/shared/data +} + + +function move_user_wgt_files(){ + echo "#move user WGT's files" + echo "SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_type='wgt' COLLATE NOCASE;" | + sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE + + while read package + do + echo "processing user wgt $package..." + move_user_wgt_ro_files $package + move_user_wgt_rw_files $package + done < $DB_RESULT_FILE + rm -f $DB_RESULT_FILE + +} + +function remove_previous_files(){ + echo "#remove files from previous location" + echo "SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE;" | + sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE + + while read package + do + rm -rf $OPT_USR_APPS/$package + done < $DB_RESULT_FILE + rm -f $DB_RESULT_FILE +} + +function initdb(){ + echo "#pkg_initdb" + pkg_initdb --ro --partial-rw + + mkdir -m 770 -p /opt/dbspace/user/5001 + chmod 755 /opt/dbspace/user + chsmack -r -a User::Home /opt/dbspace/user + chown $OWNER_SYSTEM_SHARE /opt/dbspace/user/5001 + + pkg_initdb --uid 5001 +} + +function remove_files_for_deleted_packages(){ + #delete userdata of packages which are removed in 3.0 + echo "#delete userdata of removed packages" + echo "ATTACH DATABASE '$PARSER_BACKUP_DB_PATH' AS backup; + SELECT package FROM backup.package_info WHERE package_readonly='true' COLLATE NOCASE AND + package NOT IN (SELECT package FROM package_info);" | + sqlite3 $PARSER_DB_PATH > $DB_RESULT_FILE + + while read package + do + echo "rm -r $OPT_USR_APPS/$package" + rm -r $OPT_USR_APPS/$package + done < $DB_RESULT_FILE + rm -f $DB_RESULT_FILE +} + +function move_preload_pkg_userdata(){ + echo "#move preload pkg's userdata" + echo "ATTACH DATABASE '$PARSER_BACKUP_DB_PATH' AS backup; + SELECT package FROM backup.package_info WHERE package_readonly='true' COLLATE NOCASE AND + package IN (SELECT package FROM package_info);" | + sqlite3 $PARSER_DB_PATH > $DB_RESULT_FILE + while read package + do + echo "processing preload pkg $package..." + cp -af $OPT_USR_APPS/$package $DEFAULT_USER_APPS_RW/ + chown -R $DEFAULT_RW_OWNER_GROUP $DEFAULT_USER_APPS_RW/$package + chown -R $OWNER_SYSTEM_SHARE $DEFAULT_USER_APPS_RW/$package/data + chmod g+s $DEFAULT_USER_APPS_RW/$package/data + chmod 771 $DEFAULT_USER_APPS_RW/$package/data + rm -rf $OPT_USR_APPS/$package + + chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_USER_APPS_RW/$package + chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_USER_APPS_RW/$package/cache + chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_USER_APPS_RW/$package/data + if [ -d $DEFAULT_USER_APPS_RW/$package/shared/trusted ]; + then + chsmack -r -t -a $TRUSTED_LABEL $DEFAULT_USER_APPS_RW/$package/shared/trusted + fi + + done < $DB_RESULT_FILE + rm -f $DB_RESULT_FILE +} + +function disable_preload_pkg(){ + echo "#disable preload rpm, tpk pkg" + echo "ATTACH DATABASE '$PARSER_BACKUP_DB_PATH' AS backup; + SELECT package FROM backup.package_info WHERE package_readonly='true' COLLATE NOCASE AND package_type!='wgt' COLLATE NOCASE AND package_disable='true' COLLATE NOCASE AND + package IN (SELECT package FROM package_info);" | + sqlite3 $PARSER_DB_PATH > $DB_RESULT_FILE + + while read package + do + echo "disable preload pkg $package..." + tpk-backend -D $package --preload + done < $DB_RESULT_FILE + rm -f $DB_RESULT_FILE + + echo "#disable preload wgt pkg" + echo "ATTACH DATABASE '$PARSER_BACKUP_DB_PATH' AS backup; + SELECT package FROM backup.package_info WHERE package_readonly='true' COLLATE NOCASE AND package_type='wgt' COLLATE NOCASE AND package_disable='true' COLLATE NOCASE AND + package IN (SELECT package FROM package_info);" | + sqlite3 $PARSER_DB_PATH > $DB_RESULT_FILE + + while read package + do + echo "disable preload wgt $package..." + wgt-backend -D $package --preload + done < $DB_RESULT_FILE + rm -f $DB_RESULT_FILE +} + +function disable_user_pkg(){ + echo "#disable user pkg" + echo ".separator \" \" + ATTACH DATABASE '$PARSER_BACKUP_DB_PATH' AS backup; + SELECT package, package_type FROM backup.package_info WHERE package_readonly='false' COLLATE NOCASE AND package_type !='rpm' COLLATE NOCASE AND package_disable='true' COLLATE NOCASE AND + package IN (SELECT package FROM package_info);" | + sqlite3 $PARSER_DB_PATH > $DB_RESULT_FILE + + while read package type + do + echo "disable user pkg $package..." + echo "$type-backend -D $package" + $type-backend -D $package + done < $DB_RESULT_FILE + rm -f $DB_RESULT_FILE +} + +function remove_backup_db(){ + rm $PARSER_BACKUP_DB_PATH + # TODO(jungh.yeon temp block)rm $CERT_BACKUP_DB_PATH +} + +function init_user_tpk_preload_rw_packages() { + echo "#init tpk preload rw packages" + echo ".separator \" \" + SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_preload='true' COLLATE NOCASE AND package_type='tpk';" | + sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE + + while read package + do + echo "init tpk preload rw package $package..." + echo "SELECT cert_info FROM package_cert_index_info WHERE cert_id=(SELECT dist_root_cert FROM package_cert_info WHERE package='$package');" | + sqlite3 $CERT_BACKUP_DB_PATH > $CERT_TEMP_FILEPATH/$package.txt + + tpk-backend -y $package --preload-rw + rm -f $CERT_TEMP_FILEPATH/$package.txt + migrate_cert_info $package + done < $DB_RESULT_FILE + rm -f $DB_RESULT_FILE +} + +function init_user_wgt_preload_rw_packages() { + echo "#init wgt preload rw packages" + echo ".separator \" \" + SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_preload='true' COLLATE NOCASE AND package_type='wgt';" | + sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE + + while read package + do + echo "init wgt preload rw package $package..." + wgt-backend -y $package --preload-rw + done < $DB_RESULT_FILE + rm -f $DB_RESULT_FILE +} + +function insert_cert_index_info() { + local cert_index=$1 + if [ ! $cert_index ] || [ $cert_index -eq 0 ]; then + echo "given cert_index is null" + return + fi + + local cert_value=`sqlite3 $CERT_BACKUP_DB_PATH "SELECT cert_info FROM package_cert_index_info WHERE cert_id=$cert_index"` + if [ ! $cert_value ]; then + echo "retrieved cert value with id [$cert_index] is null." + return + fi + + sqlite3 $CERT_DB_PATH "INSERT OR REPLACE INTO package_cert_index_info(cert_info, cert_id, cert_ref_count) + VALUES('$cert_value', + (SELECT cert_id FROM package_cert_index_info WHERE cert_info='$cert_value'), + COALESCE(((SELECT cert_ref_count FROM package_cert_index_info WHERE cert_info='$cert_value')+1), 1))" +} + +function insert_cert_info() { + local package=$1 + local author_root_index=$2 + local author_im_index=$3 + local author_signer_index=$4 + local dist_root_index=$5 + local dist_im_index=$6 + local dist_signer_index=$7 + local dist2_root_index=$8 + local dist2_im_index=$9 + local dist2_signer_index=${10} + + local dist_root_value=`sqlite3 $CERT_DB_PATH "ATTACH database '$CERT_BACKUP_DB_PATH' as backup; + SELECT cert_id FROM package_cert_index_info WHERE cert_info= + (SELECT cert_info FROM backup.package_cert_index_info WHERE cert_id='$dist_root_index')"` + local dist_im_value=`sqlite3 $CERT_DB_PATH "ATTACH database '$CERT_BACKUP_DB_PATH' as backup; + SELECT cert_id FROM package_cert_index_info WHERE cert_info= + (SELECT cert_info FROM backup.package_cert_index_info WHERE cert_id='$dist_im_index')"` + local dist_signer_value=`sqlite3 $CERT_DB_PATH "ATTACH database '$CERT_BACKUP_DB_PATH' as backup; + SELECT cert_id FROM package_cert_index_info WHERE cert_info= + (SELECT cert_info FROM backup.package_cert_index_info WHERE cert_id='$dist_signer_index')"` + + local dist2_root_value=`sqlite3 $CERT_DB_PATH "ATTACH database '$CERT_BACKUP_DB_PATH' as backup; + SELECT cert_id FROM package_cert_index_info WHERE cert_info= + (SELECT cert_info FROM backup.package_cert_index_info WHERE cert_id='$dist2_root_index')"` + local dist2_im_value=`sqlite3 $CERT_DB_PATH "ATTACH database '$CERT_BACKUP_DB_PATH' as backup; + SELECT cert_id FROM package_cert_index_info WHERE cert_info= + (SELECT cert_info FROM backup.package_cert_index_info WHERE cert_id='$dist2_im_index')"` + local dist2_signer_value=`sqlite3 $CERT_DB_PATH "ATTACH database '$CERT_BACKUP_DB_PATH' as backup; + SELECT cert_id FROM package_cert_index_info WHERE cert_info= + (SELECT cert_info FROM backup.package_cert_index_info WHERE cert_id='$dist2_signer_index')"` + + #update dist, dist2 value of package_cert_info determined by given pkg + local is_update_needed="" + local query="UPDATE package_cert_info SET " + if [ "$dist_root_value" != "" ]; then + is_update_needed="true" + query=$query"dist_root_cert='$dist_root_value'" + fi + + if [ "$dist_im_value" != "" ]; then + is_update_needed="true" + query=$query", dist_im_cert='$dist_im_value'" + fi + + if [ "$dist_signer_value" != "" ]; then + is_update_needed="true" + query=$query", dist_signer_cert='$dist_signer_value'" + fi + + if [ "$dist2_root_value" != "" ]; then + is_update_needed="true" + query=$query"dist2_root_cert='$dist2_root_value'" + fi + + if [ "$dist2_im_value" != "" ]; then + is_update_needed="true" + query=$query", dist2_im_cert='$dist2_im_value'" + fi + + if [ "$dist2_signer_value" != "" ]; then + is_update_needed="true" + query=$query", dist2_signer_cert='$dist2_signer_value'" + fi + + if [ "$is_update_needed" != "true" ]; then + echo "no update needed" + return + fi + + query=$query" WHERE package='$package'" + echo "debugging query is [$query]" + sqlite3 $CERT_DB_PATH "$query" +} + +function migrate_cert_info() { + local package=$1 + + #get certificate value from old cert db and insert into new cert db + echo ".separator \" \" + SELECT author_root_cert, author_im_cert, author_signer_cert, dist_root_cert, dist_im_cert, dist_signer_cert, dist2_root_cert, dist2_im_cert, dist2_signer_cert + FROM package_cert_info WHERE package='$package';" | + sqlite3 $CERT_BACKUP_DB_PATH > $CERT_TEMP_FILEPATH/$package.txt + + while read author_root_cert author_im_cert author_signer_cert dist_root_cert dist_im_cert dist_signer_cert dist2_root_cert dist2_im_cert dist2_signer_cert + do + insert_cert_index_info $author_root_cert + insert_cert_index_info $author_im_cert + insert_cert_index_info $author_signer_cert + insert_cert_index_info $dist_root_cert + insert_cert_index_info $dist_im_cert + insert_cert_index_info $dist_signer_cert + insert_cert_index_info $dist2_root_cert + insert_cert_index_info $dist2_im_cert + insert_cert_index_info $dist2_signer_cert + + insert_cert_info $package $author_root_cert $author_im_cert $author_signer_cert $dist_root_cert $dist_im_cert $dist_signer_cert $dist2_root_cert $dist2_im_cert $dist2_signer_cert + done < $CERT_TEMP_FILEPATH/$package.txt + rm -f $CERT_TEMP_FILEPATH/$package.txt +} + +function init_user_tpk_packages() { + echo "#init user tpk packages" + echo ".separator \" \" + SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND + package_preload='false' COLLATE NOCASE AND package_type='tpk';" | + sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE + + while read package + do + echo "init user tpk package $package..." + + echo "SELECT cert_info FROM package_cert_index_info WHERE cert_id= + (SELECT dist_root_cert FROM package_cert_info WHERE package='$package');" | + sqlite3 $CERT_BACKUP_DB_PATH > $CERT_TEMP_FILEPATH/$package.txt + + tpk-backend -y $package + rm -f $CERT_TEMP_FILEPATH/$package.txt + + migrate_cert_info $package + done < $DB_RESULT_FILE + rm -f $DB_RESULT_FILE +} + +function init_user_wgt_packages(){ + echo "#init user wgt packages" + echo ".separator \" \" + SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_type='wgt';" | + sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE + + while read package + do + echo "init user wgt package $package..." + wgt-backend -y $package + done < $DB_RESULT_FILE + rm -f $DB_RESULT_FILE +} + +function migrate_external_info(){ + echo "#migrate external storage info" + echo "ATTACH DATABASE '$PARSER_BACKUP_DB_PATH' AS backup; + UPDATE package_info set installed_storage='installed_external' WHERE package IN + (SELECT package FROM backup.package_info WHERE installed_storage='installed_external' COLLATE NOCASE);" | + sqlite3 $PARSER_DB_PATH +} + +backup_db + +create_restriction_db + +remove_modified_manifest +remove_unregistered_pkg + +move_user_tpk_files +move_user_wgt_files +remove_previous_files + +initdb +init_user_tpk_packages +init_user_tpk_preload_rw_packages +init_user_wgt_packages +init_user_wgt_preload_rw_packages + +remove_files_for_deleted_packages +move_preload_pkg_userdata + +disable_preload_pkg +disable_user_pkg +migrate_external_info + +remove_backup_db diff --git a/data/updates/upgrade_to_30001.sh.in b/data/updates/upgrade_to_30001.sh.in new file mode 100644 index 0000000..092acdb --- /dev/null +++ b/data/updates/upgrade_to_30001.sh.in @@ -0,0 +1,40 @@ +#!/bin/sh +PATH=/bin:/usr/bin:/sbin:/usr/sbin + +source /etc/tizen-platform.conf + +PARSER_DB_NAME=.pkgmgr_parser.db +PARSER_BACKUP_DB_NAME=.pkgmgr_parser_backup.db +PARSER_DB_PATH=$TZ_SYS_DB/$PARSER_DB_NAME +DB_RESULT_FILE=/tmp/result.log + +#define owner user +DEFAULT_USER=$TZ_SYS_DEFAULT_USER + +#define /opt/usr/home/owner +DEFAULT_USER_HOME=$TZ_SYS_HOME/$DEFAULT_USER + +echo "CREATE TABLE IF NOT EXISTS package_appdefined_privilege_info (\n" \ + " package TEXT NOT NULL,\n" \ + " privilege TEXT NOT NULL,\n" \ + " license TEXT,\n" \ + " type TEXT NOT NULL,\n" \ + " PRIMARY KEY(package, privilege, type)\n" \ + " FOREIGN KEY(package)\n" \ + " REFERENCES package_info(package) ON DELETE CASCADE);" | sqlite3 $PARSER_DB_PATH + +echo "CREATE TABLE IF NOT EXISTS package_update_info (\n" \ + " package TEXT NOT NULL,\n" \ + " update_version TEXT NOT NULL,\n" \ + " update_type TEXT NOT NULL DEFAULT 'none',\n" \ + " PRIMARY KEY(package)\n" \ + " FOREIGN KEY(package)\n" \ + " REFERENCES package_info(package) ON DELETE CASCADE); " | sqlite3 $PARSER_DB_PATH + +echo "DROP TABLE package_app_icon_section_info;" | sqlite3 $PARSER_DB_PATH +echo "DROP TABLE package_app_image_info;" | sqlite3 $PARSER_DB_PATH +echo "DROP TABLE package_app_app_permission;" | sqlite3 $PARSER_DB_PATH +echo "DROP TABLE package_app_share_allowed;" | sqlite3 $PARSER_DB_PATH +echo "DROP TABLE package_app_share_request;" | sqlite3 $PARSER_DB_PATH + +echo "PRAGMA user_version=30001;" | sqlite3 $PARSER_DB_PATH diff --git a/packaging/pkgmgr-tool.spec b/packaging/pkgmgr-tool.spec index 09acd57..3759850 100644 --- a/packaging/pkgmgr-tool.spec +++ b/packaging/pkgmgr-tool.spec @@ -72,6 +72,8 @@ update-mime-database %{_datadir}/mime %attr(0700,root,root) /etc/package-manager/pkgmgr-unzip-pkg.sh %attr(0700,root,root) /etc/package-manager/pkgmgr-create-delta.sh %attr(0700,root,root) /usr/share/upgrade/scripts/700.pkgmgr.patch.sh +%attr(0700,root,root) /etc/package-manager/updates/upgrade_to_30000.sh +%attr(0700,root,root) /etc/package-manager/updates/upgrade_to_30001.sh %attr(0700,root,root) /usr/share/upgrade/scripts/701.app2sd.patch.sh %attr(0700,root,root) %{_sysconfdir}/opt/upgrade/pkgmgr.patch.sh %attr(0700,root,root) /usr/share/fixed_multiuser/scripts/pkgmgr-clear-skel.sh -- 2.7.4 From 840dc37d72ad74f3baaa77ebffc079e7ec414673 Mon Sep 17 00:00:00 2001 From: Junghyun Yeon Date: Fri, 8 Sep 2017 15:55:36 +0900 Subject: [PATCH 15/16] Release version 0.3.12 Changes: - Fix pkgmgr migration script - Fix wrong option name Change-Id: Icc0020463552431792cb911b731c951f8edc7698 Signed-off-by: Junghyun Yeon --- packaging/pkgmgr-tool.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/pkgmgr-tool.spec b/packaging/pkgmgr-tool.spec index 3759850..009d965 100644 --- a/packaging/pkgmgr-tool.spec +++ b/packaging/pkgmgr-tool.spec @@ -1,6 +1,6 @@ Name: pkgmgr-tool Summary: Packager Manager Tool package -Version: 0.3.11 +Version: 0.3.12 Release: 1 Group: Application Framework/Package Management License: Apache-2.0 -- 2.7.4 From 188a3ae0a4303a69ae23c53aee11a9b41d8c5f39 Mon Sep 17 00:00:00 2001 From: Junghyun Yeon Date: Mon, 4 Sep 2017 08:39:01 +0900 Subject: [PATCH 16/16] Fix bugs on upgrade script - Signature file has removed by previous platform for security purpose so there are no way to determine privilege level while upgrading. - So, now upgrade script will make file which stores root cert value each package and installer will retrieve it at runtime when there are no signature file to read. - After migration, cert db will be migrated directly into pkg cert db. - Remove chsmack in script. - Now tpk related functions will handle rpm packages, too. Change-Id: I2ec688c94876c903e82274a2eefd63290514578b Signed-off-by: Junghyun Yeon --- data/updates/upgrade_to_30000.sh.in | 117 ++++++++++-------------------------- 1 file changed, 31 insertions(+), 86 deletions(-) diff --git a/data/updates/upgrade_to_30000.sh.in b/data/updates/upgrade_to_30000.sh.in index f62ca77..fa0c31f 100644 --- a/data/updates/upgrade_to_30000.sh.in +++ b/data/updates/upgrade_to_30000.sh.in @@ -89,37 +89,20 @@ function move_user_tpk_ro_files(){ local package=$1 cp -af $OPT_USR_APPS/$package $DEFAULT_PKG_APP_LOCATION/ chown -R $DEFAULT_RO_OWNER_GROUP $DEFAULT_PKG_APP_LOCATION/$package - chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_PKG_APP_LOCATION/$package - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::RO $DEFAULT_PKG_APP_LOCATION/$package/bin - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::RO $DEFAULT_PKG_APP_LOCATION/$package/lib - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::RO $DEFAULT_PKG_APP_LOCATION/$package/res - chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_PKG_APP_LOCATION/$package/shared } function move_user_tpk_rw_files(){ local package=$1 - mkdir -m 751 $DEFAULT_USER_APPS_RW/$package - chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_USER_APPS_RW/$package - mkdir $DEFAULT_USER_APPS_RW/$package/shared - chown -R $DEFAULT_RW_OWNER_GROUP $DEFAULT_USER_APPS_RW/$package - - mv $DEFAULT_PKG_APP_LOCATION/$package/cache $DEFAULT_USER_APPS_RW/$package/ - mv $DEFAULT_PKG_APP_LOCATION/$package/data $DEFAULT_USER_APPS_RW/$package/ - chmod g+s $DEFAULT_USER_APPS_RW/$package/data - chmod 771 $DEFAULT_USER_APPS_RW/$package/data - mv $DEFAULT_PKG_APP_LOCATION/$package/shared/data $DEFAULT_USER_APPS_RW/$package/shared/ - mv $DEFAULT_PKG_APP_LOCATION/$package/shared/trusted $DEFAULT_USER_APPS_RW/$package/shared/ - - chown -R $DEFAULT_RW_OWNER_GROUP $DEFAULT_USER_APPS_RW/$package/cache - chown -R $OWNER_SYSTEM_SHARE $DEFAULT_USER_APPS_RW/$package/data - chown -R $DEFAULT_RW_OWNER_GROUP $DEFAULT_USER_APPS_RW/$package/shared - chown -R $OWNER_SYSTEM_SHARE $DEFAULT_USER_APPS_RW/$package/shared/data - - chsmack -r -t -a $TRUSTED_LABEL $DEFAULT_USER_APPS_RW/$package/shared/trusted - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::SharedRO $DEFAULT_USER_APPS_RW/$package/shared/data - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_USER_APPS_RW/$package/cache - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_USER_APPS_RW/$package/data + + local target="$DEFAULT_USER_APPS_RW/$package" + local source="$OPT_USR_APPS/$package" + + rm -rf $source/shared/cache + cp -Rf $source/cache/* $target/cache/ + cp -Rf $source/data/* $target/data/ + cp -Rf $source/shared/* $target/shared/ + rm -rf $source } function copy_user_tpk_manifest(){ @@ -129,14 +112,13 @@ function copy_user_tpk_manifest(){ function move_user_tpk_files(){ echo "#move user TPK's files" - echo "SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_type='tpk' COLLATE NOCASE;" | + echo "SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_type COLLATE NOCASE IN ('tpk', 'rpm');" | sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE while read package do echo "processing user tpk $package..." move_user_tpk_ro_files $package - move_user_tpk_rw_files $package copy_user_tpk_manifest $package done < $DB_RESULT_FILE rm -f $DB_RESULT_FILE @@ -147,38 +129,19 @@ function move_user_wgt_ro_files(){ local package=$1 cp -af --no-preserve=ownership $OPT_USR_APPS/$package $DEFAULT_PKG_APP_LOCATION/ chown -R $DEFAULT_RO_OWNER_GROUP $DEFAULT_PKG_APP_LOCATION/$package - chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_PKG_APP_LOCATION/$package - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::RO $DEFAULT_PKG_APP_LOCATION/$package/bin - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::RO $DEFAULT_PKG_APP_LOCATION/$package/res - chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_PKG_APP_LOCATION/$package/shared - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_PKG_APP_LOCATION/$package/tmp } function move_user_wgt_rw_files(){ local package=$1 - mkdir -m 751 $DEFAULT_USER_APPS_RW/$package - chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_USER_APPS_RW/$package - - mkdir -m 751 $DEFAULT_USER_APPS_RW/$package/shared - mkdir -m 751 $DEFAULT_USER_APPS_RW/$package/cache - - chown -R $DEFAULT_RW_OWNER_GROUP $DEFAULT_USER_APPS_RW/$package - - mv $DEFAULT_PKG_APP_LOCATION/$package/data $DEFAULT_USER_APPS_RW/$package/ - mv $DEFAULT_PKG_APP_LOCATION/$package/shared/data $DEFAULT_USER_APPS_RW/$package/shared/ - mv $DEFAULT_PKG_APP_LOCATION/$package/shared/trusted $DEFAULT_USER_APPS_RW/$package/shared/ - chmod 751 $DEFAULT_USER_APPS_RW/$package/shared/trusted - chmod g+s $DEFAULT_USER_APPS_RW/$package/data - chmod 771 $DEFAULT_USER_APPS_RW/$package/data - chown -R $OWNER_SYSTEM_SHARE $DEFAULT_USER_APPS_RW/$package/data - chown -R $DEFAULT_RW_OWNER_GROUP $DEFAULT_USER_APPS_RW/$package/shared - chown -R $OWNER_SYSTEM_SHARE $DEFAULT_USER_APPS_RW/$package/shared/data + local target="$DEFAULT_USER_APPS_RW/$package" + local source="$OPT_USR_APPS/$package" - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_USER_APPS_RW/$package/cache - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_USER_APPS_RW/$package/data - chsmack -r -t -a $TRUSTED_LABEL $DEFAULT_USER_APPS_RW/$package/shared/trusted - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package::SharedRO $DEFAULT_USER_APPS_RW/$package/shared/data + rm -rf $source/shared/cache + cp -Rf $source/cache/* $target/cache/ + cp -Rf $source/data/* $target/data/ + cp -Rf $source/shared/* $target/shared/ + rm -r $source } @@ -191,24 +154,11 @@ function move_user_wgt_files(){ do echo "processing user wgt $package..." move_user_wgt_ro_files $package - move_user_wgt_rw_files $package done < $DB_RESULT_FILE rm -f $DB_RESULT_FILE } -function remove_previous_files(){ - echo "#remove files from previous location" - echo "SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE;" | - sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE - - while read package - do - rm -rf $OPT_USR_APPS/$package - done < $DB_RESULT_FILE - rm -f $DB_RESULT_FILE -} - function initdb(){ echo "#pkg_initdb" pkg_initdb --ro --partial-rw @@ -246,21 +196,14 @@ function move_preload_pkg_userdata(){ while read package do echo "processing preload pkg $package..." - cp -af $OPT_USR_APPS/$package $DEFAULT_USER_APPS_RW/ - chown -R $DEFAULT_RW_OWNER_GROUP $DEFAULT_USER_APPS_RW/$package - chown -R $OWNER_SYSTEM_SHARE $DEFAULT_USER_APPS_RW/$package/data - chmod g+s $DEFAULT_USER_APPS_RW/$package/data - chmod 771 $DEFAULT_USER_APPS_RW/$package/data - rm -rf $OPT_USR_APPS/$package - - chsmack -r -t -a $DEFAULT_RO_SMACK_LABEL $DEFAULT_USER_APPS_RW/$package - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_USER_APPS_RW/$package/cache - chsmack -r -t -a $DEFAULT_RW_SMACK_LABEL$package $DEFAULT_USER_APPS_RW/$package/data - if [ -d $DEFAULT_USER_APPS_RW/$package/shared/trusted ]; - then - chsmack -r -t -a $TRUSTED_LABEL $DEFAULT_USER_APPS_RW/$package/shared/trusted - fi - + local source="$OPT_USR_APPS/$package" + local target="$DEFAULT_USER_APPS_RW/$package" + rm -rf $source/shared/cache + cp -Rf $source/cache/* $target/cache/ + cp -Rf $source/data/* $target/data/ + cp -Rf $source/shared $target/shared/ + + rm -rf $source done < $DB_RESULT_FILE rm -f $DB_RESULT_FILE } @@ -312,13 +255,13 @@ function disable_user_pkg(){ function remove_backup_db(){ rm $PARSER_BACKUP_DB_PATH - # TODO(jungh.yeon temp block)rm $CERT_BACKUP_DB_PATH + rm $CERT_BACKUP_DB_PATH } function init_user_tpk_preload_rw_packages() { echo "#init tpk preload rw packages" echo ".separator \" \" - SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_preload='true' COLLATE NOCASE AND package_type='tpk';" | + SELECT package FROM package_info WHERE package_readonly='false' COLLATE NOCASE AND package_preload='true' COLLATE NOCASE AND package_type COLLATE NOCASE IN ('tpk', 'rpm');" | sqlite3 $PARSER_BACKUP_DB_PATH > $DB_RESULT_FILE while read package @@ -330,6 +273,7 @@ function init_user_tpk_preload_rw_packages() { tpk-backend -y $package --preload-rw rm -f $CERT_TEMP_FILEPATH/$package.txt migrate_cert_info $package + move_user_tpk_rw_files $package done < $DB_RESULT_FILE rm -f $DB_RESULT_FILE } @@ -344,6 +288,7 @@ function init_user_wgt_preload_rw_packages() { do echo "init wgt preload rw package $package..." wgt-backend -y $package --preload-rw + move_user_wgt_rw_files $package done < $DB_RESULT_FILE rm -f $DB_RESULT_FILE } @@ -438,7 +383,6 @@ function insert_cert_info() { fi query=$query" WHERE package='$package'" - echo "debugging query is [$query]" sqlite3 $CERT_DB_PATH "$query" } @@ -487,6 +431,7 @@ function init_user_tpk_packages() { rm -f $CERT_TEMP_FILEPATH/$package.txt migrate_cert_info $package + move_user_tpk_rw_files $package done < $DB_RESULT_FILE rm -f $DB_RESULT_FILE } @@ -501,6 +446,7 @@ function init_user_wgt_packages(){ do echo "init user wgt package $package..." wgt-backend -y $package + move_user_wgt_rw_files $package done < $DB_RESULT_FILE rm -f $DB_RESULT_FILE } @@ -522,7 +468,6 @@ remove_unregistered_pkg move_user_tpk_files move_user_wgt_files -remove_previous_files initdb init_user_tpk_packages -- 2.7.4