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 <h.jhun@samsung.com>
%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
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)
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)
#!/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] ####"
--- /dev/null
+#!/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] ####"
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() {