From 770916984b70d1fe274e929b6c17e612b38341a1 Mon Sep 17 00:00:00 2001 From: Junghyun Yeon Date: Fri, 22 Sep 2017 10:13:34 +0900 Subject: [PATCH] Fix upgrade script - Fix wrong scripts to get latest db version properly. - Remove usage of undefined variable. - Add codes to migrate user db - Add codes to migrate cert db Change-Id: Iec8f5b670959dc984f623ed14e1662fed7c61ccd Signed-off-by: Junghyun Yeon --- data/700.pkgmgr.patch.sh.in | 11 +++--- data/updates/upgrade_to_30001.sh.in | 67 ++++++++++++++++++++++++------------- 2 files changed, 49 insertions(+), 29 deletions(-) diff --git a/data/700.pkgmgr.patch.sh.in b/data/700.pkgmgr.patch.sh.in index 08eeb28..4ed13ca 100644 --- a/data/700.pkgmgr.patch.sh.in +++ b/data/700.pkgmgr.patch.sh.in @@ -6,19 +6,18 @@ PARSER_DB_NAME=.pkgmgr_parser.db PARSER_DB_PATH=$TZ_SYS_DB/$PARSER_DB_NAME 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_NEW="`cat $DB_VERSION_FILE_PATH`" 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 +#execute script from DB_VERSION_OLD to DB_VERSION_OLD+1 until DB_VERSION_OLD+1 reaches DB_VERSION_NEW [ $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" +echo "Current version: $DB_VERSION_OLD, target version: $DB_VERSION_NEW" #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 @@ -27,9 +26,9 @@ if [ $DB_VERSION_OLD -le $DB_VERSION_TIZEN24 ]; then DB_VERSION_OLD=30000 fi -for i in `seq $((DB_VERSION_OLD+1)) $DB_VERSION_TARGET` +for i in `seq $(($DB_VERSION_OLD+1)) $DB_VERSION_NEW` do - echo "Updating $PARSER_DB_PATH to $i (target version is $DB_VERSION_TARGET)" + echo "Updating $PARSER_DB_PATH to $i (target version is $DB_VERSION_NEW)" 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 diff --git a/data/updates/upgrade_to_30001.sh.in b/data/updates/upgrade_to_30001.sh.in index 092acdb..a509d0f 100644 --- a/data/updates/upgrade_to_30001.sh.in +++ b/data/updates/upgrade_to_30001.sh.in @@ -4,37 +4,58 @@ 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 +function migrate_cert_db() { + echo "PRAGMA user_version=30001;" | sqlite3 $TZ_SYS_DB/.pkgmgr_cert.db +} -#define /opt/usr/home/owner -DEFAULT_USER_HOME=$TZ_SYS_HOME/$DEFAULT_USER +function migrate_parser_db() { + local dbpath=$1 -echo "CREATE TABLE IF NOT EXISTS package_appdefined_privilege_info (\n" \ + echo -e "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 + " REFERENCES package_info(package) ON DELETE CASCADE);" | sqlite3 $dbpath + + echo -e "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 $dbpath + + echo -e "CREATE TABLE IF NOT EXISTS package_app_app_control_privilege (\n" \ + " app_id TEXT NOT NULL,\n" \ + " app_control TEXT NOT NULL,\n" \ + " privilege TEXT NOT NULL,\n" \ + " FOREIGN KEY(app_id,app_control)\n" \ + " REFERENCES package_app_app_control(app_id,app_control) ON DELETE CASCADE);" | sqlite3 $dbpath + + echo "DROP TABLE IF EXISTS package_app_icon_section_info;" | sqlite3 $dbpath + echo "DROP TABLE IF EXISTS package_app_image_info;" | sqlite3 $dbpath + echo "DROP TABLE IF EXISTS package_app_app_permission;" | sqlite3 $dbpath + echo "DROP TABLE IF EXISTS package_app_share_allowed;" | sqlite3 $dbpath + echo "DROP TABLE IF EXISTS package_app_share_request;" | sqlite3 $dbpath + + echo "PRAGMA user_version=30001;" | sqlite3 $dbpath +} + +function migrate_user_db() { + #get each user db path and call migrate_parser_db for each of it + + find $TZ_SYS_DB/user -name $PARSER_DB_NAME | while read DBPATH + do + migrate_parser_db $DBPATH + done +} + +migrate_parser_db $PARSER_DB_PATH +migrate_user_db +migrate_cert_db -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 -- 2.7.4