--- /dev/null
+#!/bin/sh
+PATH=/bin:/usr/bin:/sbin:/usr/sbin
+
+source /etc/tizen-platform.conf
+
+PARSER_DB_NAME=.pkgmgr_parser.db
+CERT_DB_NAME=.pkgmgr_cert.db
+GLOBAL_PARSER_DB_PATH=$TZ_SYS_DB/$PARSER_DB_NAME
+GLOBAL_CERT_DB_PATH=$TZ_SYS_DB/$CERT_DB_NAME
+
+SKEL_PATH=$TZ_SYS_ETC/skel/apps_rw
+SHARED_DIR=.shared
+SHARED_TMP_DIR=.shared_tmp
+APPS_RW=apps_rw
+VER_30=3.0
+
+DB_RESULT_FILE=/tmp/result.log
+SHAREDDATA_PRIV=http://tizen.org/privilege/appdir.shareddata
+
+USER_HOME_LABEL=User::Home
+USER_APP_SHARED_LABEL=User::App::Shared
+
+function migrate_global_certdb() {
+ echo "PRAGMA user_version=30005;" | sqlite3 $GLOBAL_CERT_DB_PATH
+}
+
+function create_dir() {
+ local target_dir=$1
+ local label=$2
+
+ echo "#create_dir $target_dir with label $label"
+ mkdir $target_dir
+ chsmack -t -a $label $target_dir
+}
+
+function migrate_shared_dir() {
+ local package=$1
+
+ ls $TZ_SYS_HOME | while read USERNAME
+ do
+ echo "#create shared directory for package $package, for user $USERNAME"
+ create_dir $TZ_SYS_HOME/$USERNAME/$APPS_RW/$SHARED_DIR/$package $USER_HOME_LABEL
+ chmod 755 $TZ_SYS_HOME/$USERNAME/$APPS_RW/$SHARED_DIR/$package
+ chown $USERNAME:users $TZ_SYS_HOME/$USERNAME/$APPS_RW/$SHARED_DIR/$package
+
+ create_dir $TZ_SYS_HOME/$USERNAME/$APPS_RW/$SHARED_TMP_DIR/$package $USER_HOME_LABEL
+ chmod 755 $TZ_SYS_HOME/$USERNAME/$APPS_RW/$SHARED_TMP_DIR/$package
+ chown $USERNAME:users $TZ_SYS_HOME/$USERNAME/$APPS_RW/$SHARED_TMP_DIR/$package
+
+ mv $TZ_SYS_HOME/$USERNAME/$APPS_RW/$package/shared/data $TZ_SYS_HOME/$USERNAME/$APPS_RW/$SHARED_DIR/$package/
+ chsmack -a $USER_APP_SHARED_LABEL $TZ_SYS_HOME/$USERNAME/$APPS_RW/$SHARED_DIR/$package/data
+
+ cd $TZ_SYS_HOME/$USERNAME/$APPS_RW/$package/shared/
+ ln -s ../../$SHARED_DIR/$package/data data
+ done
+
+}
+
+function create_skel() {
+ local package=$1
+
+ echo "#create skel for package $1"
+
+ create_dir $SKEL_PATH/$SHARED_DIR/$package $USER_HOME_LABEL
+ chown root:users $SKEL_PATH/$SHARED_DIR/$package
+
+ create_dir $SKEL_PATH/$SHARED_TMP_DIR/$package $USER_HOME_LABEL
+ chown root:users $SKEL_PATH/$SHARED_TMP_DIR/$package
+
+ create_dir $SKEL_PATH/$SHARED_DIR/$package/data $USER_APP_SHARED_LABEL
+ chown root:system_share $SKEL_PATH/$SHARED_DIR/$package/data
+ chmod 4775 $SKEL_PATH/$SHARED_DIR/$package/data
+
+ cd $SKEL_PATH/$package/shared/
+ rmdir data
+ ln -s ../../$SHARED_DIR/$package/data data
+}
+
+function migrate_global_pkg_shareddata() {
+ # for each pkg in global db,
+ # check whether pkg has shareddata privilege or version is less than 3.0
+ echo "#migrate global pkg shareddata"
+ echo "SELECT DISTINCT pi.package from package_info AS pi LEFT OUTER JOIN package_privilege_info AS ppi ON pi.package=ppi.package
+ WHERE pi.package_api_version < $VER_30 OR ppi.privilege='$SHAREDDATA_PRIV';" | sqlite3 $GLOBAL_PARSER_DB_PATH > $DB_RESULT_FILE
+ while read package
+ do
+ create_skel $package
+ migrate_shared_dir $package
+ done < $DB_RESULT_FILE
+ rm -f $DB_RESULT_FILE
+ echo "PRAGMA user_version=30005;" | sqlite3 $GLOBAL_PARSER_DB_PATH
+}
+
+function migrate_skel_shared_dir() {
+ create_dir $SKEL_PATH/$SHARED_DIR $USER_HOME_LABEL
+ chmod 755 $SKEL_PATH/$SHARED_DIR
+
+ create_dir $SKEL_PATH/$SHARED_TMP_DIR $USER_HOME_LABEL
+ chmod 755 $SKEL_PATH/$SHARED_TMP_DIR
+}
+
+function create_user_shared_dir() {
+ echo "#create user shared dir"
+ ls $TZ_SYS_HOME | while read USERNAME
+ do
+ echo "#create shared directory for $USERNAME"
+ create_dir $TZ_SYS_HOME/$USERNAME/$APPS_RW/$SHARED_DIR $USER_HOME_LABEL
+ chmod 755 $TZ_SYS_HOME/$USERNAME/$APPS_RW/$SHARED_DIR
+ chown $USERNAME:users $TZ_SYS_HOME/$USERNAME/$APPS_RW/$SHARED_DIR
+
+ create_dir $TZ_SYS_HOME/$USERNAME/$APPS_RW/$SHARED_TMP_DIR $USER_HOME_LABEL
+ chmod 755 $TZ_SYS_HOME/$USERNAME/$APPS_RW/$SHARED_TMP_DIR
+ chown $USERNAME:users $TZ_SYS_HOME/$USERNAME/$APPS_RW/$SHARED_TMP_DIR
+ done
+}
+
+function migrate_user_pkg() {
+ local pkg_path=$1
+ local package=$2
+
+ local prefix=`readlink -m "$pkg_path/../../../"`
+ local user_path=`readlink -m "$pkg_path/../../"`
+ local user_name=${user_path#$prefix/}
+
+ local root_shared_path=`readlink -m "$pkg_path/../"`
+ create_dir $root_shared_path/$SHARED_DIR/$package $USER_HOME_LABEL
+ chmod 755 $root_shared_path/$SHARED_DIR/$package
+ chown $user_name:users $root_shared_path/$SHARED_DIR/$package
+
+ mv $pkg_path/shared/data $root_shared_path/$SHARED_DIR/$package/
+ cd $pkg_path/shared/
+ ln -s ../../$SHARED_DIR/$package/data data
+
+ create_dir $root_shared_path/$SHARED_TMP_DIR/$package $USER_HOME_LABEL
+ chmod 755 $root_shared_path/$SHARED_TMP_DIR/$package
+ chown $user_name:users $root_shared_path/$SHARED_TMP_DIR/$package
+}
+
+function migrate_user_pkg_shareddata() {
+ echo "#migrate user pkg shareddata"
+ ls $TZ_SYS_DB/user | while read USERID
+ do
+ echo "SELECT DISTINCT pi.package from package_info AS pi LEFT OUTER JOIN package_privilege_info AS ppi ON pi.package=ppi.package
+ WHERE pi.package_api_version < $VER_30 OR ppi.privilege='$SHAREDDATA_PRIV';" | sqlite3 $TZ_SYS_DB/user/$USERID/$PARSER_DB_NAME > $DB_RESULT_FILE
+ while read package
+ do
+ local pkg_path=`sqlite3 $TZ_SYS_DB/user/$USERID/$PARSER_DB_NAME "SELECT root_path FROM package_info WHERE package=$package"`
+ migrate_user_pkg $pkg_path $package
+ done < $DB_RESULT_FILE
+ rm -f $DB_RESULT_FILE
+
+ echo "PRAGMA user_version=30005;" | sqlite3 $TZ_SYS_DB/user/$USERID/$PARSER_DB_NAME
+ done
+}
+
+rm -f $DB_RESULT_FILE
+
+migrate_skel_shared_dir
+create_user_shared_dir
+
+migrate_global_pkg_shareddata
+
+migrate_user_pkg_shareddata
+
+migrate_global_certdb