From: Hwankyu Jhun Date: Wed, 5 Jan 2022 00:15:22 +0000 (+0900) Subject: Fix upgrade scripts X-Git-Tag: submit/tizen/20220110.232431~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=52f5fd93eccb745b85dcd791a8675f5af62e740f;p=platform%2Fcore%2Fappfw%2Faul-1.git Fix upgrade scripts The 1_component_db_upgrade.sh script is added for upgrading the component db. The 1_appsvc_db_upgrade.sh script is fixed to set the permissions to the appsvc db. Change-Id: I7a66b0e5b3b660ddb12bfe84ecb5f289a2a7022c Signed-off-by: Hwankyu Jhun --- diff --git a/packaging/aul.spec b/packaging/aul.spec index 627af8e..4fb58be 100644 --- a/packaging/aul.spec +++ b/packaging/aul.spec @@ -248,6 +248,7 @@ chmod +x %{_aulresdir}/tpk/install.sh %attr(0755,root,root) %{_datadir}/upgrade/scripts/501.component_upgrade.sh %attr(0755,root,root) %{_datadir}/upgrade/scripts/501.appsvc_db_upgrade.sh %attr(0755,root,root) %{_sysconfdir}/aul/upgrade/scripts/* +%attr(0755,root,root) %{_sysconfdir}/aul/component/upgrade/scripts/* %files exec-checker-plugin %manifest %{name}-exec-checker-plugin.manifest diff --git a/parser/component/CMakeLists.txt b/parser/component/CMakeLists.txt index 82c297f..597fe7b 100644 --- a/parser/component/CMakeLists.txt +++ b/parser/component/CMakeLists.txt @@ -28,6 +28,8 @@ CONFIGURE_FILE(script/14_component-add.post.in script/14_component-add.post @ONLY) CONFIGURE_FILE(script/501.component_upgrade.sh.in script/501.component_upgrade.sh @ONLY) +CONFIGURE_FILE(script/upgrade/1_component_db_upgrade.sh.in + script/upgrade/1_component_db_upgrade.sh @ONLY) INSTALL(TARGETS ${TARGET_COMPONENT_PLUGIN_PARSER} DESTINATION ${SYSCONF_INSTALL_DIR}/package-manager/parserlib) @@ -37,3 +39,5 @@ INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/script/14_component-add.post DESTINATION ${SYSCONF_INSTALL_DIR}/gumd/useradd.d) INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/script/501.component_upgrade.sh DESTINATION ${SHARE_INSTALL_PREFIX}/upgrade/scripts) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/script/upgrade/1_component_db_upgrade.sh + DESTINATION /etc/aul/component/upgrade/scripts) diff --git a/parser/component/script/501.component_upgrade.sh.in b/parser/component/script/501.component_upgrade.sh.in index b636991..8a6c24b 100755 --- a/parser/component/script/501.component_upgrade.sh.in +++ b/parser/component/script/501.component_upgrade.sh.in @@ -1,66 +1,79 @@ #!/bin/sh +PATH="/usr/bin:/bin:/usr/sbin:/sbin" -#------------------------------------------# -# component db upgrade (4.0 -> 5.5) # -#------------------------------------------# +DB_VERSION="@COMPONENT_DB_VERSION@" -# Macro -PATH=/bin:/usr/bin:/sbin:/usr/sbin +FILE_DB=".component.db" +PATH_SYS_DB="/opt/dbspace/${FILE_DB}" +PATH_USER_DB_DIR="/opt/dbspace/user" +PATH_UPGRADE_SCRIPT_DIR="/etc/aul/component/upgrade/scripts" +NAME_UPGRADE_SCRIPT="component_db_upgrade.sh" +CURRENT_DB_VERSION=0 -GLOBAL_USER_DB=/opt/dbspace/.component.db -DEFAULT_USER_DB=/opt/dbspace/user/5001/.component.db +CompareDBVersion() { + PATH_DB=$1 + CURRENT_DB_VERSION=`sqlite3 ${PATH_DB} 'PRAGMA user_version;'` -# Create DB -sqlite3 $GLOBAL_USER_DB << EOF -PRAGMA journal_mode = PERSIST; -PRAGMA user_version = @COMPONENT_DB_VERSION@; + echo "## Compare DB version" + echo " - Path: ${PATH_DB}" + echo " - Current DB version: ${CURRENT_DB_VERSION}" -CREATE TABLE IF NOT EXISTS component_info ( - package TEXT NOT NULL, - app_id TEXT NOT NULL, - component_id TEXT NOT NULL, - component_type TEXT NOT NULL, - component_launch_mode TEXT NOT NULL, - component_main TEXT NOT NULL, - component_icon_display NOT NULL, - component_taskmanage NOT NULL, - PRIMARY KEY (component_id) -); + if [ "${DB_VERSION}" -eq "${CURRENT_DB_VERSION}" ]; then + echo " - DB version[${DB_VERSION}] is equal to current DB version[${CURRENT_DB_VERSION}]" + return 0 + elif [ "${DB_VERSION}" -gt "${CURRENT_DB_VERSION}" ]; then + echo " - DB version[${DB_VERSION}] is greater than current DB version[${CURRENT_DB_VERSION}]" + return 1 + else + echo " - DB version[${DB_VERSION}] is less than current DB version[${CURRENT_DB_VERSION}]" + return 0 + fi + echo "## Compare DB version [Done]" +} -CREATE TABLE IF NOT EXISTS component_localized_info ( - component_id TEXT NOT NULL, - component_locale TEXT NOT NULL DEFAULT 'No Locale', - component_label TEXT, - component_icon TEXT, - PRIMARY KEY (component_id, component_locale) - FOREIGN KEY (component_id) - REFERENCES component_info(component_id) ON DELETE CASCADE -); +UpgradeDB() { + PATH_DB=$1 + VERSION=$2 + echo "## UpgradeDB Path[${PATH_DB}] Version[${VERSION}]" + i=${VERSION} + while [ ${i} -le ${DB_VERSION} ]; do + FILE_SCRIPT="${i}_${NAME_UPGRADE_SCRIPT}" + PATH_SCRIPT="${PATH_UPGRADE_SCRIPT_DIR}/${FILE_SCRIPT}" + if [ -e "${PATH_SCRIPT}" ]; then + echo " - Script: ${PATH_SCRIPT}" + ${PATH_SCRIPT} ${PATH_DB} + fi -EOF + i=`expr ${i} + 1` + done + echo "## UpgradeDB Path[${PATH_DB}] Version[${VERSION}] [Done]" +} -# Create DB Path for default user -mkdir -p /opt/dbspace/user/5001 -chmod 770 /opt/dbspace/user/5001 -chown owner:system_share /opt/dbspace/user/5001 -chsmack -a User::Home /opt/dbspace/user -chsmack -a User::Home /opt/dbspace/user/5001 +CheckAndUpgradeDB() { + echo "### Check and upgrade DB" -# Copy DB -cp $GLOBAL_USER_DB $DEFAULT_USER_DB + CompareDBVersion ${PATH_SYS_DB} + RESULT=$? + if [ "${RESULT}" -eq 1 ]; then + VERSION=`expr ${CURRENT_DB_VERSION} + 1` + UpgradeDB ${PATH_SYS_DB} ${VERSION} + fi -# Adjust Permission -chmod 664 $GLOBAL_USER_DB -chmod 664 $GLOBAL_USER_DB-journal + for DIR in ${PATH_USER_DB_DIR}/*; do + echo " - Directory: ${DIR}" + if [ -d "${DIR}" ]; then + PATH_DB="${DIR}/${FILE_DB}" + CompareDBVersion ${PATH_DB} + RESULT=$? + if [ "${RESULT}" -eq 1 ]; then + VERSION=`expr ${CURRENT_DB_VERSION} + 1` + UpgradeDB ${PATH_DB} ${VERSION} + fi + fi + done + echo "### Check and upgrade DB [Done]" +} -chown owner:users $GLOBAL_USER_DB -chown owner:users $GLOBAL_USER_DB-journal - -chsmack -a User::Home $GLOBAL_USER_DB -chsmack -a User::Home $GLOBAL_USER_DB-journal - -chmod 666 $DEFAULT_USER_DB -chmod 666 $DEFAULT_USER_DB-journal - -chsmack -a User::Home $DEFAULT_USER_DB -chsmack -a User::Home $DEFAULT_USER_DB-journal +echo "#### Upgrade component db ####" +CheckAndUpgradeDB +echo "#### Upgrade component db [Done] ####" diff --git a/parser/component/script/upgrade/1_component_db_upgrade.sh.in b/parser/component/script/upgrade/1_component_db_upgrade.sh.in new file mode 100755 index 0000000..5946178 --- /dev/null +++ b/parser/component/script/upgrade/1_component_db_upgrade.sh.in @@ -0,0 +1,113 @@ +#!/bin/sh + +#------------------------------------------# +# component db upgrade ver.1 (4.0 -> 5.5) # +#------------------------------------------# + +# Macro +PATH=/bin:/usr/bin:/sbin:/usr/sbin + +PATH_DB="$1" +PATH_NEW_DB="${PATH_DB}.new" +PATH_BACKUP_DB="${PATH_DB}.bak" + +Init() { + echo "### Initialize" + cp ${PATH_DB} ${PATH_BACKUP_DB} + cp ${PATH_DB}-journal ${PATH_BACKUP_DB}-journal + + if [ -e "${PATH_NEW_DB}" ]; then + rm ${PATH_NEW_DB} + fi + + if [ -e "${PATH_NEW_DB}-journal" ]; then + rm ${PATH_NEW_DB}-journal + fi +} + +# Create new DB +CreateNewDB() { +sqlite3 ${PATH_NEW_DB} << EOF +PRAGMA journal_mode = PERSIST; +PRAGMA user_version = @COMPONENT_DB_VERSION@; + +CREATE TABLE IF NOT EXISTS component_info ( + package TEXT NOT NULL, + app_id TEXT NOT NULL, + component_id TEXT NOT NULL, + component_type TEXT NOT NULL, + component_launch_mode TEXT NOT NULL, + component_main TEXT NOT NULL, + component_icon_display NOT NULL, + component_taskmanage NOT NULL, + PRIMARY KEY (component_id) +); + +CREATE TABLE IF NOT EXISTS component_localized_info ( + component_id TEXT NOT NULL, + component_locale TEXT NOT NULL DEFAULT 'No Locale', + component_label TEXT, + component_icon TEXT, + PRIMARY KEY (component_id, component_locale) + FOREIGN KEY (component_id) + REFERENCES component_info(component_id) ON DELETE CASCADE +); + +EOF +} + +# Insert old data into new DB +InsertComponentInfo() { + echo " - Insert component_info" + TABLE=`sqlite3 ${PATH_DB} 'SELECT package, app_id, component_id, component_type, component_launch_mode, component_main, component_icon_display, component_taskmanage FROM component_info;'` + for ROW in ${TABLE}; do + IFS='|' read -ra VALUE <<< "${ROW}"; + QUERY="INSERT INTO component_info(package, app_id, component_id, component_type, component_launch_mode, component_main, component_icon_display, component_taskmanage) VALUES('${VALUE[0]}', '${VALUE[1]}', '${VALUE[2]}', '${VALUE[3]}', '${VALUE[4]}', '${VALUE[5]}', '${VALUE[6]}', '${VALUE[7]}');" + echo " + Query: ${QUERY}" + sqlite3 ${PATH_NEW_DB} "${QUERY}" + done +} + +InsertComponentLocalizedInfo() { + echo " - Insert component_localized_info" + TABLE=`sqlite3 ${PATH_DB} 'SELECT component_id, component_locale, component_label, component_icon FROM component_localized_info;'` + for ROW in ${TABLE}; do + IFS='|' read -ra VALUE <<< "${ROW}"; + QUERY="INSERT INTO component_localized_info(component_id, component_locale, component_label, component_icon) VALUES('${VALUE[0]}', '${VALUE[1]}', '${VALUE[2]}', '${VALUE[3]}');" + echo " + Query: ${QUERY}" + sqlite3 ${PATH_NEW_DB} "${QUERY}" + done +} + +Upgrade() { + echo "### Upgrade" + CreateNewDB + + InsertComponentInfo + InsertComponentLocalizedInfo + + cp ${PATH_NEW_DB} ${PATH_DB} + cp ${PATH_NEW_DB}-journal ${PATH_DB}-journal + + chown :system_share ${PATH_DB} + chown :system_share ${PATH_DB}-journal + chsmack -a User::Home ${PATH_DB} + chsmack -a User::Home ${PATH_DB}-journal + chmod 664 ${PATH_DB} + chmod 664 ${PATH_DB}-journal +} + +Fini() { + echo "### Finish" + rm ${PATH_NEW_DB} + rm ${PATH_NEW_DB}-journal + + rm ${PATH_BACKUP_DB} + rm ${PATH_BACKUP_DB}-journal +} + +echo "#### 1. Upgrade component db ####" +Init +Upgrade +Fini +echo "#### 1. Upgrade component db [Done] ####" diff --git a/scripts/upgrade/1_appsvc_db_upgrade.sh.in b/scripts/upgrade/1_appsvc_db_upgrade.sh.in index 22789ae..2dba7d5 100755 --- a/scripts/upgrade/1_appsvc_db_upgrade.sh.in +++ b/scripts/upgrade/1_appsvc_db_upgrade.sh.in @@ -126,6 +126,13 @@ Upgrade() { cp ${PATH_NEW_DB} ${PATH_DB} cp ${PATH_NEW_DB}-journal ${PATH_DB}-journal + + chown :system_share ${PATH_DB} + chown :system_share ${PATH_DB}-journal + chsmack -a User::Home ${PATH_DB} + chsmack -a User::Home ${PATH_DB}-journal + chmod 664 ${PATH_DB} + chmod 664 ${PATH_DB}-journal } Fini() {