Add common profile
author이상욱/SE팀(SR)/삼성전자 <sangwook96.lee@samsung.com>
Mon, 10 Apr 2023 02:20:51 +0000 (11:20 +0900)
committer이상욱/SE팀(SR)/삼성전자 <sangwook96.lee@samsung.com>
Mon, 10 Apr 2023 02:20:51 +0000 (11:20 +0900)
Change-Id: I224c05b7f8ae952b95a3ec3f508d5652556660fb
Signed-off-by: 이상욱/SE팀(SR)/삼성전자 <sangwook96.lee@samsung.com>
12 files changed:
make_rootstrap.sh
make_rootstrap_64.sh [new file with mode: 0644]
package_rootstrap.sh
package_rootstrap_64.sh [new file with mode: 0644]
rs-config
script/convert32.sh [new file with mode: 0644]
script/convert64.sh
script/roostrap_info_gen_1.0_64.sh [new file with mode: 0644]
script/rootstrap_gen_1.0.sh
script/rootstrap_gen_1.0_64.sh [new file with mode: 0644]
script/rootstrap_info_gen_1.0_64.sh [new file with mode: 0644]
script/rootstrap_plugin_gen_1.0_64.sh [new file with mode: 0644]

index 542ec97c01fe3b273e5117895c210d1cb5db1ce2..053407e62bc5e0ba792c3800b59711ff1ec8bc38 100755 (executable)
@@ -137,8 +137,8 @@ function callRootstrapGen () {
 
 
 GLOBAL_ERROR="0"
-OPT_TARGET=false
-OPT_EMULATOR=false
+OPT_TARGET=true
+OPT_EMULATOR=true
 OPT_DOWNLOAD_RPM=false
 OPT_CLEAN=false
 OPT_CONF=""
@@ -208,7 +208,7 @@ done
 if [ "$OPT_TARGET" = false ] && [ "$OPT_EMULATOR" = false ]
 then
     OPT_TARGET=true
-    OPT_EMULATOR=false
+    OPT_EMULATOR=true
 fi
 
 ###############################################################################
@@ -378,7 +378,7 @@ if [ "$OPT_EMULATOR" = true ]; then
     if [ "$PLATFORM_VERSION" == "3.0" ] || [ "$PLATFORM_VERSION" == "4.0" ] || [ "$PLATFORM_VERSION" == "5.0" ] || [ "$PLATFORM_VERSION" == "5.5" ] || [ "$PLATFORM_VERSION" == "6.0" ] || [ "$PLATFORM_VERSION" == "6.5" ] || [ "$PLATFORM_VERSION" == "7.0" ] || [ "$PLATFORM_VERSION" == "7.5" ]
     then
         mv ${DIR_EMULATOR}/usr/include/asm-x86 ${DIR_EMULATOR}/usr/include/asm
-        mv ${DIR_EMULATOR}/usr/include/base/deprecated/* ${DIR_EMULATOR}/usr/include/base/
+        #mv ${DIR_EMULATOR}/usr/include/base/deprecated/* ${DIR_EMULATOR}/usr/include/base/
     fi
 
     if [ "$INTERNAL" = false ]; then    
diff --git a/make_rootstrap_64.sh b/make_rootstrap_64.sh
new file mode 100644 (file)
index 0000000..da2c729
--- /dev/null
@@ -0,0 +1,417 @@
+#!/bin/bash
+
+SCRIPT_NAME="$(basename ${BASH_SOURCE[0]})"
+SCRIPT_FULLPATH="$(readlink -f ${BASH_SOURCE[0]})"
+SCRIPT_BASE="$(dirname ${SCRIPT_FULLPATH})"
+SCRIPT_VER="0.0.2"
+
+CMD_RS_GEN="${SCRIPT_BASE}/script/rootstrap_gen_1.0_64.sh"
+CMD_RS_INFO="${SCRIPT_BASE}/script/rootstrap_info_gen_1.0_64.sh"
+CMD_RS_PLUGIN="${SCRIPT_BASE}/script/rootstrap_plugin_gen_1.0_64.sh"
+CMD_API_FILTER="${SCRIPT_BASE}/script/api_filter_7.5.py"
+CMD_API_GDBUS_FILTER="${SCRIPT_BASE}/script/api_filter_7.5_gdbus.py"
+
+DIR_INFO=".info"
+DIR_RPM=".rpm"
+DIR_PLUGIN=".plugin"
+DIR_TMP=".tmp"
+DIR_EMULATOR=".emulator"
+DIR_TARGET=".target"
+DIR_ZIP=".zip"
+
+PRIVATE_STRING=""
+
+LOGFILE="rs.log"
+
+if [ -e ${LOGFILE} ]; then
+    rm ${LOGFILE};
+fi
+
+touch ${LOGFILE}
+
+###############################################################################
+# function log
+###############################################################################
+function log()
+{
+    printf "[${SCRIPT_NAME}:${BASH_LINENO[0]}] ${@}\n"
+}
+
+###############################################################################
+# function check_error
+# $1 : Error code(integer)
+# $2 : Error Message
+# $3 : Error Xml File)
+# Example : check_error $? "Fail to function"
+###############################################################################
+function check_error()
+{
+    if [ "$1" -ne "0" ]; then
+        printf "[${SCRIPT_NAME}:${BASH_LINENO[0]}] ERROR : $2  - exit code ($1) \n" 1>&2
+        exit $1
+    fi
+}
+
+###############################################################################
+# function remove_dir
+# $@ : Files
+# Example : remove_dir test_dir test_file
+###############################################################################
+function remove_dir () {
+    echo "remove dir : $@"
+    rm -rf $@ >/dev/null 2>&1
+}
+
+###############################################################################
+## function callRootstrapGen
+# $1 : emulator/target
+# $2 : ${RPM_PKG_SVR_EMULATOR}
+# $3 : ${BASE_PKG_SVR_EMULATOR}
+# Example : callRootstrapGen emulator ${RPM_PKG_SVR_EMULATOR} ${BASE_PKG_SVR_EMULATOR}
+###############################################################################
+function callRootstrapGen () {
+    log "make rootstrap for ${1}..." 1>&2
+    ROOTSTRAP_TYPE=${1};
+
+    if [[ -z ${3} ]]
+    then
+        FULL_RS_CMD="${CMD_RS_GEN} -t ${1} -u ${2} ${xmlList}"
+    else
+        FULL_RS_CMD="${CMD_RS_GEN} -t ${1} -u ${2} -b ${3} ${xmlList}"
+    fi
+
+    FULL_RS_INFO_CMD="${CMD_RS_INFO} -t $1 -l ${xmlList} -p $PLATFORM_PROFILE -v $PLATFORM_VERSION"
+
+    if [[ "${ROOTSTRAP_TYPE}" == "emulator" ]]; then
+        FULL_CMD_RS_PLUGIN_GEN="${CMD_RS_PLUGIN} -t ${ROOTSTRAP_TYPE} -i .info/$PLATFORM_PROFILE-$PLATFORM_VERSION-emulator64.core.dev.xml -p ${PLATFORM_PROFILE} -v ${PLATFORM_VERSION}"
+    elif [[ "${ROOTSTRAP_TYPE}" == "target" ]]; then
+        FULL_CMD_RS_PLUGIN_GEN="${CMD_RS_PLUGIN} -t ${ROOTSTRAP_TYPE} -i .info/$PLATFORM_PROFILE-$PLATFORM_VERSION-device64.core.dev.xml -p ${PLATFORM_PROFILE} -v ${PLATFORM_VERSION}"
+    else
+        exit 1;
+    fi
+
+    if [[ ${DEBUG_MODE} == "1" ]]
+    then
+        log "$FULL_RS_CMD"
+        $FULL_RS_CMD
+        check_error $? "Fail to ${CMD_RS_GEN}"
+
+        log "$FULL_RS_INFO_CMD"
+        $FULL_RS_INFO_CMD
+        check_error $? "Fail to ${CMD_RS_INFO}"
+
+        log "$FULL_CMD_RS_PLUGIN_GEN"
+        $FULL_CMD_RS_PLUGIN_GEN
+        check_error $? "Fail to ${FULL_CMD_RS_PLUGIN_GEN}"
+
+    else
+        if [[ -e ${LOGFILE} ]]; then
+            log "$FULL_RS_CMD"  | tee -a ${LOGFILE}
+        fi
+        $FULL_RS_CMD >/dev/null
+        check_error $? "Fail to ${CMD_RS_GEN}"
+
+        log "$FULL_RS_INFO_CMD"
+        $FULL_RS_INFO_CMD >/dev/null
+        check_error $? "Fail to ${CMD_RS_INFO}"
+
+        log "$FULL_CMD_RS_PLUGIN_GEN"
+        $FULL_CMD_RS_PLUGIN_GEN >/dev/null
+        check_error $? "Fail to ${FULL_CMD_RS_PLUGIN_GEN}"
+    fi
+
+    ##Append Snapshot
+    if [ -n "${SNAPSHOT_BASE}" ]; then
+
+        log "ADD Snapshot : ${SNAPSHOT_BASE}"
+
+        if [[ "${ROOTSTRAP_TYPE}" == "emulator" ]]; then
+            echo '<!-- '${SNAPSHOT_BASE}' -->' | tee -a .info/$PLATFORM_PROFILE-$PLATFORM_VERSION-emulator64.core.dev.xml
+        elif [[ "${ROOTSTRAP_TYPE}" == "target" ]]; then
+            echo '<!-- '${SNAPSHOT_BASE}' -->' | tee -a .info/$PLATFORM_PROFILE-$PLATFORM_VERSION-device64.core.dev.xml
+        fi
+    fi
+
+    log "Done... [$SECONDS]Sec" 1>&2
+}
+
+
+GLOBAL_ERROR="0"
+OPT_TARGET=true
+OPT_EMULATOR=true
+OPT_DOWNLOAD_RPM=false
+OPT_CLEAN=false
+OPT_CONF=""
+INTERNAL=false
+
+###############################################################################
+# function usage
+###############################################################################
+function usage () {
+echo "$SCRIPT_NAME ($SCRIPT_VER) is script to make rootstrap using xml from OBS"
+    echo "Usage: $SCRIPT_NAME -C [<config_file>] [<OPTION>]... [<FILE>]..."
+    echo "    -e, --emulator      : Make Rootstrap for Emulator"
+    echo "    -t, --target        : Make Rootstrap for Target"
+    echo "    -c, --clean        : Delete .rpm cache folder"
+    echo "    -h, --help"
+    echo "    -v, --version       : Display script version information"
+    echo ""
+    echo "Example:"
+    echo " >$SCRIPT_NAME  -C rs-config ./rs_resource/NativeAPI/capi-appfw-app-manager-rs.xml"
+    echo " >$SCRIPT_NAME  -C rs-config -e ./rs_resource"
+    echo " >$SCRIPT_NAME  -C rs-config -t ./rs_resource"
+    echo ""
+    echo "Output Diretory:"
+    echo ".info"
+    echo ".emulator"
+    echo ".target"
+    echo ".rpm"
+    echo ".plugin"
+    echo ".tmp"
+
+
+    return
+}
+
+###############################################################################
+## Get Parameter
+###############################################################################
+OPTS=`getopt -o -C:tedchv --long target,emulator,downloadrpm,clean,help,version,internal -- "$@"`
+if [ $? != 0 ] ; then echo "Failed parsing options." >&2 ; exit 1 ; fi
+
+echo ""
+echo "#EXEC_CMD : $SCRIPT_NAME $OPTS"
+eval set -- "$OPTS"
+
+while true; do
+case "$1" in
+        -C | --conf )OPT_CONF=$2;shift;shift;;
+        -t | --target )OPT_TARGET=true;shift;;
+        -e | --emulator )OPT_EMULATOR=true;shift;;
+        -d | --downloadrpm )OPT_DOWNLOAD_RPM=true;shift;;
+        -c | --clean )OPT_CLEAN=true;shift;;
+        -h | --help )usage;exit 0;;
+        -v | --version )echo "${SCRIPT_NAME}" "version : $SCRIPT_VER"; exit 0 ;;
+        --internal ) INTERNAL=true; shift;;
+        -- ) shift; break ;;
+        *) #file or directory
+            if [ -d "${1}" ]  || [ -f "${1}" ]; then
+                xmlList+="${1} "
+            else
+                usage >&2
+                exit 1
+            fi
+            shift;;
+esac
+done
+
+if [ "$OPT_TARGET" = false ] && [ "$OPT_EMULATOR" = false ]
+then
+    OPT_TARGET=true
+    OPT_EMULATOR=true
+fi
+
+###############################################################################
+## Print Parameter Option
+###############################################################################
+printf "\n#OPTION\n"
+echo "OPT_CONF=${OPT_CONF}"
+echo "OPT_CLEAN = $OPT_CLEAN"
+echo "OPT_TARGET = $OPT_TARGET"
+echo "OPT_EMULATOR = $OPT_EMULATOR"
+echo "OPT_DOWNLOAD_RPM = $OPT_DOWNLOAD_RPM"
+echo "OPT_CLEAN=$OPT_CLEAN"
+
+if [ "$RS_INTERNAL" = true ] || [ "$INTERNAL" = true ]; then
+echo "OPT_INTERNAL=TRUE"
+fi
+
+echo "xmlList=$xmlList"
+printf "\n"
+
+###############################################################################
+## Check Environment
+###############################################################################
+if [[ "$xmlList" == "" ]]; then
+    usage >&2
+    exit 1
+fi
+
+if [[ -e ${OPT_CONF} ]]; then
+    log "source ${OPT_CONF}"
+    source "${OPT_CONF}"
+else
+    log "[Error] Configuration File Does not Exist"
+    usage
+    exit 1
+fi
+
+if [[ ! -f ${CMD_RS_GEN} ]]; then
+    log "[Error] File not found ![${CMD_RS_GEN}]"
+    exit 1
+fi
+
+if [[ ! -f ${CMD_RS_INFO} ]]; then
+    log "[Error] File not found ![${CMD_RS_INFO}]"
+    exit 1
+fi
+
+if [[ ! -f ${CMD_RS_PLUGIN} ]]; then
+    log "[Error] File not found ![${CMD_RS_PLUGIN}]"
+    exit 1
+fi
+
+if [ "$OPT_CLEAN" = true ]; then
+    log "Clean dir ..."
+    remove_dir $DIR_INFO $DIR_RPM $DIR_PLUGIN $DIR_TMP $DIR_EMULATOR $DIR_TARGET
+fi
+
+if [[ -z ${RPM_PKG_SVR_EMULATOR} ]]; then
+    log "[Error] RPM_PKG_SVR_EMULATOR is NULL"
+    exit 1
+fi
+if [[ -z ${RPM_PKG_SVR_TARGET} ]]; then
+    log "[Error] RPM_PKG_SVR_TARGET is NULL"
+    exit 1
+fi
+
+log ""
+log "BASE_PKG_SVR_EMULATOR = ${BASE_PKG_SVR_EMULATOR}"
+log "BASE_PKG_SVR_TARGET = ${BASE_PKG_SVR_TARGET}"
+log "RPM_PKG_SVR_EMULATOR = ${RPM_PKG_SVR_EMULATOR}"
+log "RPM_PKG_SVR_TARGET = ${RPM_PKG_SVR_TARGET}"
+log ""
+
+
+SNAPSHOT_BASE=$(basename $SNAPSHOT_URL_PREFIX)
+log "SNAPSHOT_BASE=$SNAPSHOT_BASE"
+log ""
+
+if [ "$RS_INTERNAL" = true ] || [ "$INTERNAL" = true ]; then
+CMD_RS_GEN="$CMD_RS_GEN --internal"
+CMD_RS_INFO="$CMD_RS_INFO"
+CMD_RS_PLUGIN="$CMD_RS_PLUGIN --internal"
+PRIVATE_STRING=".private"
+fi
+
+if [ -n "${ID}" ] && [ -n "${PW}" ]
+then
+    CMD_RS_GEN="$CMD_RS_GEN -i ${ID} -p ${PW}"
+    echo "Append ID/PW Option : ${CMD_RS_GEN}"
+fi
+
+
+if [[ -e ${LOGFILE} ]]; then
+    CMD_RS_GEN="$CMD_RS_GEN --log ${LOGFILE}"
+fi
+
+###############################################################################
+## Rootstrap Generation
+###############################################################################
+if [[ "$GLOBAL_ERROR" != "0" ]]; then
+    log "[Error] Failed download rpm";
+    exit 1;
+fi
+
+if [ "$OPT_TARGET" = true ]; then
+    remove_dir ${DIR_TMP} ${DIR_TARGET}
+    callRootstrapGen target ${RPM_PKG_SVR_TARGET} ${BASE_PKG_SVR_TARGET}
+
+    log "[INFO] Postscript ${DIR_TARGET}";
+    if [ "$PLATFORM_VERSION" == "2.4" ]
+    then
+        #dali patch
+        unzip dali-patch.zip -d .target/usr/include
+
+        echo "remove Non-Public EFL API"
+        $CMD_API_FILTER .target>/dev/null #EFL filter
+        check_error $? "Failed to remove Non-Public EFL API"
+    fi
+
+    if [ "$PLATFORM_VERSION" == "3.0" ] || [ "$PLATFORM_VERSION" == "4.0" ]  || [ "$PLATFORM_VERSION" == "5.0" ] || [ "$PLATFORM_VERSION" == "5.5" ] || [ "$PLATFORM_VERSION" == "6.0" ] || [ "$PLATFORM_VERSION" == "6.5" ] || [ "$PLATFORM_VERSION" == "7.0" ]  || [ "$PLATFORM_VERSION" == "7.5" ]
+    then
+        mv ${DIR_TARGET}/usr/include/asm-arm64 ${DIR_TARGET}/usr/include/asm
+        mv ${DIR_TARGET}/usr/include/base/deprecated/* ${DIR_TARGET}/usr/include/base/
+    fi
+
+    if [ "$INTERNAL" = false ]; then
+        echo "remove Non-Public EFL API"
+        $CMD_API_FILTER .target>/dev/null #EFL filter
+        echo "remove Non-Public GDBUS API"
+        $CMD_API_GDBUS_FILTER .target>/dev/null #GDBUS filter
+    fi
+    #echo "remove Public GDBUS API"
+    #$CMD_API_GDBUS_FILTER .target>/dev/null #GDBUS filter 
+
+    if [ "$INTERNAL" = true ]; then
+         log "[INFO] Skip .. removing dlog-internal.h"
+        find ${DIR_TARGET} -name "dlog.h" -exec perl -pi -e 's/#include\ \"dlog-internal\.h\"//g' {} \;
+    else
+        find ${DIR_TARGET} -name "dlog.h" -exec perl -pi -e 's/#include\ \"dlog-internal\.h\"//g' {} \;
+    fi
+
+    if [ ! -d "${DIR_TARGET}/usr/lib64" ]; then
+        mkdir -p ${DIR_TARGET}/usr/lib64
+    fi
+
+    for FILE in $(find ${DIR_TARGET} -name "*.so.*mobile");
+    do
+               mv ${FILE} ${FILE%.mobile};
+    done;
+fi
+
+if [ "$OPT_EMULATOR" = true ]; then
+    remove_dir ${DIR_TMP} ${DIR_EMULATOR}
+    callRootstrapGen emulator ${RPM_PKG_SVR_EMULATOR} ${BASE_PKG_SVR_EMULATOR}
+
+    log "[INFO] Postscript ${DIR_EMULATOR}";
+    if [ "$PLATFORM_VERSION" == "2.4" ]
+    then
+        #dali patch
+        unzip dali-patch.zip -d .emulator/usr/include
+
+        echo "remove Non-Public EFL API"
+        $CMD_API_FILTER .emulator >/dev/null #EFL filter
+        check_error $? "Failed to remove Non-Public EFL API"
+    fi
+
+    if [ "$PLATFORM_VERSION" == "3.0" ] || [ "$PLATFORM_VERSION" == "4.0" ] || [ "$PLATFORM_VERSION" == "5.0" ] || [ "$PLATFORM_VERSION" == "5.5" ] || [ "$PLATFORM_VERSION" == "6.0" ] || [ "$PLATFORM_VERSION" == "6.5" ] || [ "$PLATFORM_VERSION" == "7.0" ] || [ "$PLATFORM_VERSION" == "7.5" ]
+    then
+        mv ${DIR_EMULATOR}/usr/include/asm-ia64 ${DIR_EMULATOR}/usr/include/asm
+        mv ${DIR_EMULATOR}/usr/include/base/deprecated/* ${DIR_EMULATOR}/usr/include/base/
+    fi
+
+    if [ "$INTERNAL" = false ]; then    
+        echo "remove Non-Public EFL API"
+        #$CMD_API_FILTER .target>/dev/null #EFL filter
+        $CMD_API_FILTER .emulator>/dev/null #EFL filter
+        echo "remove Non-Public GDBUS API"
+        #$CMD_API_GDBUS_FILTER .target>/dev/null #GDBUS filter
+        $CMD_API_GDBUS_FILTER .emulator>/dev/null #GDBUS filter
+    fi
+
+    if [ "$INTERNAL" = true ]; then
+         log "[INFO] Skip .. removing dlog-internal.h"
+        find ${DIR_EMULATOR} -name "dlog.h" -exec perl -pi -e 's/#include\ \"dlog-internal\.h\"//g' {} \;
+    else
+        find ${DIR_EMULATOR} -name "dlog.h" -exec perl -pi -e 's/#include\ \"dlog-internal\.h\"//g' {} \;
+    fi
+
+    if [ ! -d "${DIR_EMULATOR}/usr/lib64" ]; then
+        mkdir -p ${DIR_EMULATOR}/usr/lib64
+    fi
+
+    for FILE in $(find ${DIR_EMULATOR} -name "*.so.*mobile");
+    do
+               mv ${FILE} ${FILE%.mobile};
+    done;
+
+fi
+
+if [[ -e ${LOGFILE} ]]; then
+    log "END"  | tee -a ${LOGFILE}
+fi
+###############################################################################
+## END
+###############################################################################
+exit 0
index 4f38f89aea7d9a06a61637a04b1eea7a810c2b61..701c69bc6d7ff2bc4745b4649e97845d1970b585 100755 (executable)
@@ -166,11 +166,11 @@ function pkg_build_internal()
 
     xmlstarlet ed -L -u "//property[@key='DEV_PACKAGE_CONFIG_PATH']/@value" -v "${DEV_PACKAGE_CONFIG_PATH}" ${DIR_PLUGIN_DEST}/${RS_ID}.xml
     
-    if [[ ${TYPE} == *"device64"* ]]; then 
-        xmlstarlet ed -L -u "//rootstrap/@architecture" -v "aarch64" ${DIR_PLUGIN_DEST}/${RS_ID}.xml
-    elif [[ ${TYPE} == *"emulator64"* ]]; then
-        xmlstarlet ed -L -u "//rootstrap/@architecture" -v "x86_64" ${DIR_PLUGIN_DEST}/${RS_ID}.xml
-    fi
+    #if [[ ${TYPE} == *"device64"* ]]; then 
+    #    xmlstarlet ed -L -u "//rootstrap/@architecture" -v "aarch64" ${DIR_PLUGIN_DEST}/${RS_ID}.xml
+    #elif [[ ${TYPE} == *"emulator64"* ]]; then
+    #    xmlstarlet ed -L -u "//rootstrap/@architecture" -v "x86_64" ${DIR_PLUGIN_DEST}/${RS_ID}.xml
+    #fi
 
     # Rename Plugin XML
     #log_info "mv ${DIR_PLUGIN}/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}*.xml ${DIR_PLUGIN}/${RS_ID}.xml"
@@ -237,13 +237,13 @@ function pkg_build()
     log_info "Genarated Basic RS resource [${pkg_dir}] ... "
     )
 
-#    pkg_build_internal ${EMULATOR}
-#    (
-#    cd ${PATH_PACKAGE_RES}
-#    zip -r ${NAME_EMULATOR_PKG_ZIP} data >/dev/null
-#    mv ${PATH_PACKAGE_RES}/*.zip ${pkg_dir}
-#    log_info "Genarated Basic RS resource [${pkg_dir}] ... "
-#    )
+    pkg_build_internal ${EMULATOR}
+    (
+    cd ${PATH_PACKAGE_RES}
+    zip -r ${NAME_EMULATOR_PKG_ZIP} data >/dev/null
+    mv ${PATH_PACKAGE_RES}/*.zip ${pkg_dir}
+    log_info "Genarated Basic RS resource [${pkg_dir}] ... "
+    )
 
 }
 
@@ -388,10 +388,11 @@ printf "Done\n\n"
 
 #CHECK Resource from make_rootstrap.sh
 printf "check Resource Directory ... "
-if [ ! -e ${DIR_INFO} ] || [ ! -e ${DIR_PLUGIN} ] || [ ! -e ${DIR_TARGET} ]
+if [ ! -e ${DIR_INFO} ] || [ ! -e ${DIR_PLUGIN} ] || [ ! -e ${DIR_EMULATOR} ] || [ ! -e ${DIR_TARGET} ]
 then
     echo "Check resource dirs are exist !" 1>&2
     echo "${DIR_INFO}" 1>&2
+    echo "${DIR_EMULATOR}" 1>&2
     echo "${DIR_TARGET}" 1>&2
     echo "${DIR_PLUGIN}" 1>&2
     exit -1
@@ -477,13 +478,13 @@ mv ${PATH_PACKAGE_RES}/*.zip ${pkg_dir}
 log_info "Genarated Basic RS resource [${pkg_dir}] ... \n\n"
 )
 
-#pkg_build_internal ${EMULATOR}
-#(
-#cd ${PATH_PACKAGE_RES}
-#zip -r ${NAME_EMULATOR_PKG_ZIP} data >/dev/null
-#mv ${PATH_PACKAGE_RES}/*.zip ${pkg_dir}
-#log_info "Genarated Basic RS resource [${pkg_dir}] ... \n\n"
-#)
+pkg_build_internal ${EMULATOR}
+(
+cd ${PATH_PACKAGE_RES}
+zip -r ${NAME_EMULATOR_PKG_ZIP} data >/dev/null
+mv ${PATH_PACKAGE_RES}/*.zip ${pkg_dir}
+log_info "Genarated Basic RS resource [${pkg_dir}] ... \n\n"
+)
 
 log "Done... [$SECONDS]Sec\n\n"
 
@@ -511,9 +512,9 @@ if [[ "$SDKPKG" == true ]] && [[ -z "$SNAPSHOT" ]] ; then
         zip "${DIR_TMP_SDK_PKG}/${OS}/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-rs-${DEVICE}.core${PRIVATE}_${TMP_PKG_VERSION}_${OS}.zip" pkginfo.manifest
         
         #emulator
-#        mv ${DIR_TMP_SDK_PKG}/${OS}/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-rs-${EMULATOR}.core*.zip ${DIR_TMP_SDK_PKG}/${OS}/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-rs-${EMULATOR}.core${PRIVATE}_${TMP_PKG_VERSION}_${OS}.zip
-#        create_pkginfo "${PLATFORM_PROFILE}-${PLATFORM_VERSION}-rs-${EMULATOR}.core${PRIVATE}" "$TMP_PKG_VERSION" "all"
-#        zip "${DIR_TMP_SDK_PKG}/${OS}/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-rs-${EMULATOR}.core${PRIVATE}_${TMP_PKG_VERSION}_${OS}.zip" pkginfo.manifest
+        mv ${DIR_TMP_SDK_PKG}/${OS}/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-rs-${EMULATOR}.core*.zip ${DIR_TMP_SDK_PKG}/${OS}/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-rs-${EMULATOR}.core${PRIVATE}_${TMP_PKG_VERSION}_${OS}.zip
+        create_pkginfo "${PLATFORM_PROFILE}-${PLATFORM_VERSION}-rs-${EMULATOR}.core${PRIVATE}" "$TMP_PKG_VERSION" "all"
+        zip "${DIR_TMP_SDK_PKG}/${OS}/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-rs-${EMULATOR}.core${PRIVATE}_${TMP_PKG_VERSION}_${OS}.zip" pkginfo.manifest
     done
     
     rm $DIR_OUTPUT/*.zip
@@ -529,8 +530,8 @@ if [[ -n "$SNAPSHOT" ]] ; then
     
 
     #emulator
-#    create_pkginfo "${PLATFORM_PROFILE}-${PLATFORM_VERSION}-rs-${EMULATOR}.core${PRIVATE}" "0.0.1" "all"
-#    find $DIR_OUTPUT -name "*emulator*.zip" -exec zip {} pkginfo.manifest \;
+    create_pkginfo "${PLATFORM_PROFILE}-${PLATFORM_VERSION}-rs-${EMULATOR}.core${PRIVATE}" "0.0.1" "all"
+    find $DIR_OUTPUT -name "*emulator*.zip" -exec zip {} pkginfo.manifest \;
 fi
 
 ###############################################################################
diff --git a/package_rootstrap_64.sh b/package_rootstrap_64.sh
new file mode 100644 (file)
index 0000000..b6fec37
--- /dev/null
@@ -0,0 +1,549 @@
+#!/bin/bash
+###############################################################################
+# Init
+###############################################################################
+SCRIPT_NAME="$(basename ${BASH_SOURCE[0]})"
+SCRIPT_FULLPATH="$(readlink -f ${BASH_SOURCE[0]})"
+SCRIPT_BASE="$(dirname ${SCRIPT_FULLPATH})"
+SCRIPT_VER="0.0.3"
+
+DIR_TMP_PKG=".temp_pkg"
+DIR_TMP_SDK_PKG=$(pwd)/".temp_sdk_pkg"
+DIR_OUTPUT=".pkg"
+
+#OS_LIST="ubuntu-32 ubuntu-64 windows-32 windows-64 macos-64"
+OS_LIST="ubuntu-64"
+
+DIR_INFO=".info"
+DIR_RPM=".rpm"
+DIR_PLUGIN=".plugin"
+DIR_TMP=".tmp"
+DIR_EMULATOR=".emulator"
+DIR_TARGET=".target"
+
+PATH_PACKAGE_RES=""
+
+OPT_CONF=""
+
+PRIVATE=""
+TMP_PKG_VERSION="0.0.1"
+
+INTERNAL=false
+SDKPKG=false
+SNAPSHOT=""
+
+DEVICE="device64"
+EMULATOR="emulator64"
+###############################################################################
+echo ""
+echo " $SCRIPT_NAME ($SCRIPT_VER) is packaging tool of rootstrap"
+echo ""
+
+###############################################################################
+# function log
+###############################################################################
+function log()
+{
+    #printf "[${SCRIPT_NAME}:${BASH_LINENO[0]}] ${@}\n"
+    printf "${@}\n\n"
+}
+
+function log_info()
+{
+    printf "[INFO] ${@}\n\n"
+}
+
+function log_warn()
+{
+    printf "[WARN] ${@}\n\n"
+}
+
+function log_error()
+{
+    printf "[${SCRIPT_NAME}:${BASH_LINENO[0]}][ERROR] ${@}\n"
+}
+###############################################################################
+# function check_error
+# $1 : Error code(integer)
+# $2 : Error Message
+# $3 : Error Xml File)
+# Example : check_error $? "Fail to function"
+###############################################################################
+function check_error()
+{
+    if [ "$1" -ne "0" ]; then
+        printf "[${SCRIPT_NAME}:${BASH_LINENO[0]}] ERROR : $2  - exit code ($1) \n" 1>&2
+        exit $1
+    fi
+}
+
+###############################################################################
+# function pkg_build_internal
+# $1 : Type (emulator/device/emulator64/device64)
+# $2 : resource Path (.emulator/.target)
+###############################################################################
+function pkg_build_internal()
+{
+    
+    TYPE=${1}
+
+    if [[ ${TYPE} == *"device"* ]]; then
+        PLUGIN_FILE="${DIR_PLUGIN}/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-device64.core.xml"
+        INFO_FILE="${DIR_INFO}/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-device64.core.dev.xml"
+    else 
+        PLUGIN_FILE="${DIR_PLUGIN}/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-emulator64.core.xml"
+        INFO_FILE="${DIR_INFO}/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-emulator64.core.dev.xml"
+    fi
+
+    log_info "Clean up Resource Directory ${PATH_PACKAGE_RES}"
+    if [[ -n ${PATH_PACKAGE_RES} ]] && [[ -e "${PATH_PACKAGE_RES}/data" ]] ; then
+        rm -rf "${PATH_PACKAGE_RES}/data"
+    fi
+    
+    log_info "mkdir -p ${DIR_PLUGIN_DEST}"
+    mkdir -p ${DIR_PLUGIN_DEST}
+    
+    log_info "mkdir -p ${DIR_INFO_DEST}"
+    mkdir -p ${DIR_INFO_DEST}
+    
+    log_info "mkdir -p ${DIR_ROOTSTRAP_DEST}"
+    mkdir -p ${DIR_ROOTSTRAP_DEST}
+    
+    
+    # Get Current Info
+    log_info "Get Current RS_ID, RS_PATH, DEV_PACKAGE_CONFIG_PATH"
+    
+    RS_ID=$(xmlstarlet sel -t -m "//rootstrap/@id" -v "." $PLUGIN_FILE)
+    RS_PATH=$(xmlstarlet sel -t -m "//rootstrap/@path" -v "." $PLUGIN_FILE)
+    DEV_PACKAGE_CONFIG_PATH=$(xmlstarlet sel -t -m "//property[@key='DEV_PACKAGE_CONFIG_PATH']/@value" -v "." $PLUGIN_FILE)
+
+    log_info "TYPE=$TYPE"
+    log_info "RS_ID=$RS_ID"
+    log_info "RS_PATH=$RS_PATH"
+    log_info "DEV_PACKAGE_CONFIG_PATH=$DEV_PACKAGE_CONFIG_PATH"
+    
+    
+    # Replace Info
+    log_info "Convert RS_ID, RS_PATH, DEV_PACKAGE_CONFIG_PATH"
+    
+    if [ "$INTERNAL" = true ]; then
+    RS_ID=${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}.core${PRIVATE}${SNAPSHOT}
+    else
+    RS_ID=${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}.core${SNAPSHOT}
+    fi
+    
+    RS_PATH=$(dirname $RS_PATH)"/${RS_ID}"
+    DEV_PACKAGE_CONFIG_PATH=$(dirname $DEV_PACKAGE_CONFIG_PATH)"/${RS_ID}.dev.xml"
+
+    log_info "NEW RS_ID=$RS_ID"
+    log_info "NEW RS_PATH=$RS_PATH"
+    log_info "NEW DEV_PACKAGE_CONFIG_PATH=$DEV_PACKAGE_CONFIG_PATH"
+  
+  
+    # Copy
+    log_info "cp ${PLUGIN_FILE} ${DIR_PLUGIN_DEST}/${RS_ID}.xml"
+    cp ${PLUGIN_FILE} ${DIR_PLUGIN_DEST}/${RS_ID}.xml >/dev/null
+    
+    log_info "cp ${INFO_FILE} ${DIR_INFO_DEST}/${RS_ID}.dev.xml"
+    cp ${INFO_FILE} ${DIR_INFO_DEST}/${RS_ID}.dev.xml >/dev/null
+
+  
+  
+    # Change Plugin XML
+    xmlstarlet ed -L -u "//rootstrap/@id" -v "${RS_ID}" ${DIR_PLUGIN_DEST}/${RS_ID}.xml
+    xmlstarlet ed -L -u "//rootstrap/@path" -v "${RS_PATH}" ${DIR_PLUGIN_DEST}/${RS_ID}.xml
+
+    if [ "$INTERNAL" = true ]; then
+        if [ -n "${SNAPSHOT}" ]; then
+            log_info "SNAPSHOT = [$SNAPSHOT]"
+            xmlstarlet ed -L -u "//rootstrap/@name" -v "Tizen ${TYPE[*]^} $PLATFORM_VERSION ${PRIVATE:1} (${SNAPSHOT:1})" ${DIR_PLUGIN_DEST}/${RS_ID}.xml
+        else
+            xmlstarlet ed -L -u "//rootstrap/@name" -v "Tizen ${TYPE[*]^} $PLATFORM_VERSION ${PRIVATE:1}" ${DIR_PLUGIN_DEST}/${RS_ID}.xml
+        fi
+    else
+        xmlstarlet ed -L -u "//rootstrap/@name" -v "Tizen ${TYPE[*]^} $PLATFORM_VERSION" ${DIR_PLUGIN_DEST}/${RS_ID}.xml
+    fi
+
+    xmlstarlet ed -L -u "//property[@key='DEV_PACKAGE_CONFIG_PATH']/@value" -v "${DEV_PACKAGE_CONFIG_PATH}" ${DIR_PLUGIN_DEST}/${RS_ID}.xml
+    
+    if [[ ${TYPE} == *"device64"* ]]; then 
+        xmlstarlet ed -L -u "//rootstrap/@architecture" -v "aarch64" ${DIR_PLUGIN_DEST}/${RS_ID}.xml
+    elif [[ ${TYPE} == *"emulator64"* ]]; then
+        xmlstarlet ed -L -u "//rootstrap/@architecture" -v "x86_64" ${DIR_PLUGIN_DEST}/${RS_ID}.xml
+    fi
+
+    # Rename Plugin XML
+    #log_info "mv ${DIR_PLUGIN}/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}*.xml ${DIR_PLUGIN}/${RS_ID}.xml"
+    #mv ${DIR_PLUGIN}/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}*.xml ${DIR_PLUGIN}/${RS_ID}.xml >/dev/null
+    
+    #log_info "mv ${DIR_INFO}/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}*.dev.xml ${DIR_INFO}/${RS_ID}.dev.xml"
+    #mv ${DIR_INFO}/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}*.dev.xml ${DIR_INFO}/${RS_ID}.dev.xml >/dev/null
+
+    # Copy Resource
+    #DIR_PLUGIN_DEST="${PATH_PACKAGE_RES}/data/tools/smart-build-interface/plugins/"
+    #DIR_INFO_DEST="${PATH_PACKAGE_RES}/data/platforms/tizen-${PLATFORM_VERSION}/${PLATFORM_PROFILE}/rootstraps/info/"
+    #DIR_ROOTSTRAP_DEST="${PATH_PACKAGE_RES}/data/platforms/tizen-${PLATFORM_VERSION}/${PLATFORM_PROFILE}/rootstraps/"
+
+    #mkdir -p ${DIR_PLUGIN_DEST}
+    #mkdir -p ${DIR_INFO_DEST}
+    #mkdir -p ${DIR_ROOTSTRAP_DEST}
+
+    if [[ ${TYPE} == *"device64"* ]]; then
+    (
+        log_info "Copy RS Resource [${DIR_TARGET}] to [${DIR_ROOTSTRAP_DEST}/${RS_ID}] ... "
+        cd ${DIR_TARGET}
+       rm ./usr/lib/*
+#        rm ./usr/lib64/*
+        zip -r --symlinks ${RS_ID}.zip lib64 lib usr >/dev/null
+        unzip ${RS_ID}.zip -d ${DIR_ROOTSTRAP_DEST}/${RS_ID} >/dev/null
+        rm *.zip
+    )
+    elif [[ ${TYPE} == *"emulator64"* ]]; then
+    (
+        log_info "Copy RS Resource [${DIR_EMULATOR}] to [${DIR_ROOTSTRAP_DEST}/${RS_ID}] ... "
+        cd ${DIR_EMULATOR}
+       rm ./usr/lib/*
+#        rm ./usr/lib64/*
+        zip -r --symlinks ${RS_ID}.zip lib64 lib usr >/dev/null
+        unzip ${RS_ID}.zip -d ${DIR_ROOTSTRAP_DEST}/${RS_ID} >/dev/null
+        rm *.zip
+    )
+    elif [[ ${TYPE} == *"device"* ]]; then
+    (
+        log_info "Copy RS Resource [${DIR_TARGET}] to [${DIR_ROOTSTRAP_DEST}/${RS_ID}] ... "
+        cd ${DIR_TARGET}
+        zip -r --symlinks ${RS_ID}.zip lib usr >/dev/null
+        unzip ${RS_ID}.zip -d ${DIR_ROOTSTRAP_DEST}/${RS_ID} >/dev/null
+        rm *.zip
+    )
+    elif [[ ${TYPE} == *"emulator"* ]]; then
+    (
+        log_info "Copy RS Resource [${DIR_EMULATOR}] to [${DIR_ROOTSTRAP_DEST}/${RS_ID}] ... "
+        cd ${DIR_EMULATOR}
+        zip -r --symlinks ${RS_ID}.zip lib usr >/dev/null
+        unzip ${RS_ID}.zip -d ${DIR_ROOTSTRAP_DEST}/${RS_ID} >/dev/null
+        rm *.zip
+    )
+    fi
+}
+
+function pkg_build()
+{
+
+    pkg_build_internal ${DEVICE}
+
+    (
+    cd ${PATH_PACKAGE_RES}
+    zip -r ${NAME_DEVICE_PKG_ZIP} data >/dev/null
+    mv ${PATH_PACKAGE_RES}/*.zip ${pkg_dir}
+    log_info "Genarated Basic RS resource [${pkg_dir}] ... "
+    )
+
+    pkg_build_internal ${EMULATOR}
+    (
+    cd ${PATH_PACKAGE_RES}
+    zip -r ${NAME_EMULATOR_PKG_ZIP} data >/dev/null
+    mv ${PATH_PACKAGE_RES}/*.zip ${pkg_dir}
+    log_info "Genarated Basic RS resource [${pkg_dir}] ... "
+    )
+
+}
+
+###############################################################################
+# function create_pkginfo
+# VAL_PKG="$1"
+# VAL_VERSION="$2"
+# VAL_OS="$3"
+###############################################################################
+function create_pkginfo()
+{
+
+    #pkginfo.manifest
+    #Package : mobile-3.0-rs-device.core
+    #Version : 3.0.8
+    #OS : ubuntu-32
+    #Maintainer : Seunghwan Lee <sh.cat.lee@samsung.com>
+    #Attribute : binary
+    #Description : ARM rootstrap for native app development
+
+    FILE_PKGINFO="pkginfo.manifest"
+    ATTR_PKG="Package"
+    ATTR_VERSION="Version"
+    ATTR_OS="OS"
+    ATTR_MAIN="Maintainer : Seunghwan Lee <sh.cat.lee@samsung.com>"
+    ATTR_ATTR="Attribute : binary"
+    ATTR_DESC="Description : rootstrap for native app development"
+
+
+    if [[ -e $FILE_PKGINFO ]]; then
+        rm $FILE_PKGINFO
+    fi
+
+    VAL_PKG="$1"
+    VAL_VERSION="$2"
+    VAL_OS="$3"
+
+    echo "$ATTR_PKG : $VAL_PKG" | tee -a $FILE_PKGINFO
+    echo "$ATTR_VERSION : $VAL_VERSION" | tee -a $FILE_PKGINFO
+    
+    if [[ ${VAL_OS} == "all" ]]; then
+    echo "$ATTR_OS : ubuntu-64, windows-64, macos-64" | tee -a $FILE_PKGINFO
+    else
+    echo "$ATTR_OS : $VAL_OS" | tee -a $FILE_PKGINFO
+    fi
+    
+    echo "$ATTR_MAIN" | tee -a $FILE_PKGINFO
+    echo "$ATTR_ATTR" | tee -a $FILE_PKGINFO
+    echo "$ATTR_DESC" | tee -a $FILE_PKGINFO
+
+    
+}
+
+###############################################################################
+# function usage
+###############################################################################
+function usage () {
+    echo "$SCRIPT_NAME ($SCRIPT_VER) is script to package rootstrap for SDK"
+    echo "Usage: $SCRIPT_NAME -C [<config_file>] [<OPTION>]"
+    echo "    -C, --conf      : Configuration File"
+    echo "    -o, --os        : Package OS (ubuntu-64 windows-64 macos-64)"
+    echo "    -h, --help"
+    echo "    -v, --version   : Display script version information"
+    echo "    --internal      : "
+    echo "    --snapshot      : "
+    echo "    --sdkpkg        : "
+    echo "    --pkgver        : "
+    echo ""
+    echo "Example:"
+    echo " >$SCRIPT_NAME -C rs-config"
+    echo " > mobile-3.0-device.core, mobile-3.0-emulator.core"
+    echo " >$SCRIPT_NAME -C rs-config -os ubuntu-64"
+    echo ""
+    echo "Example:"
+    echo " >$SCRIPT_NAME -C rs-config"
+    echo " > mobile-3.0-device.core, mobile-3.0-emulator.core"
+
+    echo ""
+    echo "Output Diretory:"
+    echo ".temp_pkg"
+    echo ".pkg"
+
+    return
+}
+
+###############################################################################
+## Get Parameter
+###############################################################################
+OPTS=`getopt -o -d:o:C: --long dir:,os:,conf:,internal,public,snapshot:,sdkpkg,pkgver:,64bit -- "$@"`
+if [ $? != 0 ] ; then echo "Failed parsing options." >&2 ; exit 1 ; fi
+
+echo ""
+echo " #EXEC_CMD : $SCRIPT_NAME $OPTS"
+eval set -- "$OPTS"
+
+while true; do
+case "$1" in
+        -C | --conf ) OPT_CONF=$2;shift;shift;;
+        -o | --os ) OS_LIST="${2}"; shift;shift;;
+        -h | --help ) usage; exit 0;;
+        -v | --version ) echo "${SCRIPT_NAME}" "version : $SCRIPT_VER"; exit 0 ;;
+        --internal ) INTERNAL=true; shift;;
+        --public ) PUBLIC=true; shift;;
+        --snapshot ) SNAPSHOT=$2; shift;shift;;
+        --sdkpkg ) SDKPKG=true; shift;;
+        --pkgver ) TMP_PKG_VERSION=$2; shift;shift;;
+        --64bit ) 
+            echo "64bit!!"; 
+            DEVICE="device64"
+            EMULATOR="emulator64"
+            shift;;
+        -- ) shift; break ;;
+        *)
+        echo "param error";
+        exit 1; shift;;
+esac
+done
+
+###############################################################################
+## Check Environment
+###############################################################################
+if [[ -e ${OPT_CONF} ]]; then
+    log_info "source ${OPT_CONF}"
+    source "${OPT_CONF}"
+else
+    log_error "[Error] Configuration File Does not Exist"
+    usage
+    exit 1
+fi
+
+log_info "OS_LIST = $OS_LIST"
+
+#CHECK CMD available
+printf "check command ... "
+if [ -z $(which xmlstarlet) ]
+then
+    log_error "[Error] Check xmlstarlet command" 1>&2
+    exit -1
+fi
+printf "Done\n\n"
+
+
+#CHECK Resource from make_rootstrap.sh
+printf "check Resource Directory ... "
+if [ ! -e ${DIR_INFO} ] || [ ! -e ${DIR_PLUGIN} ] || [ ! -e ${DIR_EMULATOR} ] || [ ! -e ${DIR_TARGET} ]
+then
+    echo "Check resource dirs are exist !" 1>&2
+    echo "${DIR_INFO}" 1>&2
+    echo "${DIR_EMULATOR}" 1>&2
+    echo "${DIR_TARGET}" 1>&2
+    echo "${DIR_PLUGIN}" 1>&2
+    exit -1
+fi
+printf "Done\n\n"
+
+#CHECK configuration
+if [[ -z $PLATFORM_VERSION ]]; then
+    echo "[Error] Configure PLATFORM_VERSION is NULL" 1>&2
+    exit -1
+fi
+
+if [[ -z $PLATFORM_PROFILE ]]; then
+    echo "[Error] Configure PLATFORM_PROFILE is NULL" 1>&2
+    exit -1
+fi
+
+if [[ -n $SNAPSHOT ]]; then
+SNAPSHOT=".$SNAPSHOT"
+fi
+
+if [ "$INTERNAL" = true ]; then
+PRIVATE=".private"
+fi
+
+if [ "$PUBLIC" = true ]; then
+PRIVATE=".public"
+INTERNAL=true;
+fi
+
+if [ -z $SNAPSHOT ] && [ "$INTERNAL" = false ]; then
+log_info "SET SDKPKG = true (Snapshot = NULL,  INTERNAL = false)"
+SDKPKG=true
+fi 
+
+    
+###############################################################################
+## Clean Up
+###############################################################################
+
+PATH_PACKAGE_RES=$PWD/$DIR_TMP_PKG
+printf "Clean up Directory ${PATH_PACKAGE_RES} ... "
+
+if [[  -e "$PATH_PACKAGE_RES" ]]; then
+    rm -rf $PATH_PACKAGE_RES
+fi
+mkdir $PATH_PACKAGE_RES
+
+printf "Done\n\n"
+
+pkg_dir=$PWD"/$DIR_OUTPUT"
+
+printf "Clean up Directory ${pkg_dir} ... "
+
+if [[ -e ${pkg_dir} ]]; then
+    rm -rf ${pkg_dir};
+fi
+mkdir ${pkg_dir};
+printf "Done\n\n"
+
+
+###############################################################################
+## Build rootstarp SDK package
+###############################################################################
+
+printf "make rootstrap Package\n\n"
+
+NAME_DEVICE_PKG_ZIP=${PLATFORM_PROFILE}-${PLATFORM_VERSION}-rs-${DEVICE}.core${PRIVATE}${SNAPSHOT}.zip
+NAME_EMULATOR_PKG_ZIP=${PLATFORM_PROFILE}-${PLATFORM_VERSION}-rs-${EMULATOR}.core${PRIVATE}${SNAPSHOT}.zip
+
+DIR_PLUGIN_DEST="${PATH_PACKAGE_RES}/data/tools/smart-build-interface/plugins/"
+DIR_INFO_DEST="${PATH_PACKAGE_RES}/data/platforms/tizen-${PLATFORM_VERSION}/${PLATFORM_PROFILE}/rootstraps/info/"
+DIR_ROOTSTRAP_DEST="${PATH_PACKAGE_RES}/data/platforms/tizen-${PLATFORM_VERSION}/${PLATFORM_PROFILE}/rootstraps/"
+
+###############################################################################
+#Create Rootstrap Basic Resource to .pkg
+###############################################################################
+pkg_build_internal ${DEVICE}
+(
+cd ${PATH_PACKAGE_RES}
+zip -r ${NAME_DEVICE_PKG_ZIP} data >/dev/null
+mv ${PATH_PACKAGE_RES}/*.zip ${pkg_dir}
+log_info "Genarated Basic RS resource [${pkg_dir}] ... \n\n"
+)
+
+pkg_build_internal ${EMULATOR}
+(
+cd ${PATH_PACKAGE_RES}
+zip -r ${NAME_EMULATOR_PKG_ZIP} data >/dev/null
+mv ${PATH_PACKAGE_RES}/*.zip ${pkg_dir}
+log_info "Genarated Basic RS resource [${pkg_dir}] ... \n\n"
+)
+
+log "Done... [$SECONDS]Sec\n\n"
+
+###############################################################################
+#Create Rootstrap Package for SDK to .pkg
+###############################################################################
+if [[ "$SDKPKG" == true ]] && [[ -z "$SNAPSHOT" ]] ; then
+    echo "Start SDK package .. from temp"
+
+    if [[ -e ${DIR_TMP_SDK_PKG} ]]; then
+        rm -rf ${DIR_TMP_SDK_PKG};
+    fi
+    mkdir ${DIR_TMP_SDK_PKG};
+    
+    for OS in $OS_LIST
+    do
+        mkdir -p ${DIR_TMP_SDK_PKG}/${OS};
+        
+        cp $DIR_OUTPUT/*.zip $DIR_TMP_SDK_PKG/$OS
+        
+        mv ${DIR_TMP_SDK_PKG}/${OS}/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-rs-${DEVICE}.core*.zip ${DIR_TMP_SDK_PKG}/${OS}/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-rs-${DEVICE}.core${PRIVATE}_${TMP_PKG_VERSION}_${OS}.zip
+        
+        #device
+        create_pkginfo "${PLATFORM_PROFILE}-${PLATFORM_VERSION}-rs-${DEVICE}.core${PRIVATE}" "$TMP_PKG_VERSION" "all"
+        zip "${DIR_TMP_SDK_PKG}/${OS}/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-rs-${DEVICE}.core${PRIVATE}_${TMP_PKG_VERSION}_${OS}.zip" pkginfo.manifest
+        
+        #emulator
+        mv ${DIR_TMP_SDK_PKG}/${OS}/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-rs-${EMULATOR}.core*.zip ${DIR_TMP_SDK_PKG}/${OS}/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-rs-${EMULATOR}.core${PRIVATE}_${TMP_PKG_VERSION}_${OS}.zip
+        create_pkginfo "${PLATFORM_PROFILE}-${PLATFORM_VERSION}-rs-${EMULATOR}.core${PRIVATE}" "$TMP_PKG_VERSION" "all"
+        zip "${DIR_TMP_SDK_PKG}/${OS}/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-rs-${EMULATOR}.core${PRIVATE}_${TMP_PKG_VERSION}_${OS}.zip" pkginfo.manifest
+    done
+    
+    rm $DIR_OUTPUT/*.zip
+    find ${DIR_TMP_SDK_PKG} -name "*.zip" -exec mv {} $DIR_OUTPUT \;
+    
+fi
+
+if [[ -n "$SNAPSHOT" ]] ; then
+    log_info "Add PkgInfo for ABS [$SNAPSHOT] \n\n"
+    #device
+    create_pkginfo "${PLATFORM_PROFILE}-${PLATFORM_VERSION}-rs-${DEVICE}.core${PRIVATE}" "0.0.1" "all"
+    find $DIR_OUTPUT -name "*device*.zip" -exec zip {} pkginfo.manifest \;
+    
+
+    #emulator
+    create_pkginfo "${PLATFORM_PROFILE}-${PLATFORM_VERSION}-rs-${EMULATOR}.core${PRIVATE}" "0.0.1" "all"
+    find $DIR_OUTPUT -name "*emulator*.zip" -exec zip {} pkginfo.manifest \;
+fi
+
+###############################################################################
+# Show PKG
+###############################################################################
+echo "$(ls ${pkg_dir}/*.zip | wc -l) files Genereated ... "
+for i in $(ls ${pkg_dir}/*.zip)
+do
+    echo "$(du -h $i | awk '{print $2,"["$1"]"}')"
+done
+
+echo "Done... [$SECONDS]Sec"
+exit 0
index 14617b33f5d4f0ea2a4f25864d4f3edd40ea21c7..ce2719f6868809f88bb55b5f44e1ee2b802baa2d 100755 (executable)
--- a/rs-config
+++ b/rs-config
@@ -1,6 +1,6 @@
 # Rootstrap configraution
 export PLATFORM_VERSION="7.5"
-export PLATFORM_PROFILE="iot-headed"
+export PLATFORM_PROFILE="tizen-headed"
 
 export BASE_URL_PREFIX="https://download.tizen.org/snapshots/TIZEN/Tizen/Tizen-Base/latest/"
 export BASE_URL_POSTFIX_TARGET="/repos/standard/packages/"
diff --git a/script/convert32.sh b/script/convert32.sh
new file mode 100644 (file)
index 0000000..6793dc5
--- /dev/null
@@ -0,0 +1,34 @@
+#/bin/bash
+
+# xml Converter
+git checkout ./rs_resource ./rs_resource_invisible
+find ./ \( -name "*-rs.xml" ! -iname "kernel-headers-linux-rs.xml" \) \
+-exec xmlstarlet ed -L -u //rootstrap/emulator/rpm/@arch -v "i686" {} \; \
+-exec xmlstarlet ed -L -u //rootstrap/target/rpm/@arch -v "armv7l" {} \; \
+-exec xmlstarlet ed -L -u //rootstrap/library_path -v "/usr/lib" {} \; \
+-exec sed -i "s@<file>/usr/lib64/@<file>/usr/lib/@" {} \; \
+-exec sed -i "s@<file>/lib64/@<file>/lib32/@" {} \; \
+-exec sed -i "s@<include_path>/usr/lib64/@<include_path>/usr/lib32/@" {} \;
+
+# rs-config
+BASE_URL_POSTFIX_TARGET="/repos/standard/packages/"
+BASE_URL_POSTFIX_EMULATOR="/repos/standard/packages/"
+
+sed -i "s@BASE_URL_POSTFIX_TARGET=.*@BASE_URL_POSTFIX_TARGET=\"${BASE_URL_POSTFIX_TARGET}\"@" rs-config
+sed -i "s@BASE_URL_POSTFIX_EMULATOR=.*@BASE_URL_POSTFIX_EMULATOR=\"${BASE_URL_POSTFIX_EMULATOR}\"@" rs-config
+
+SNAPSHOT_URL_POSTFIX_EMULATOR="/repos/emulator/packages/"
+SNAPSHOT_URL_POSTFIX_TARGET="/repos/standard/packages/"
+
+sed -i "s@SNAPSHOT_URL_POSTFIX_EMULATOR=.*@SNAPSHOT_URL_POSTFIX_EMULATOR=\"${SNAPSHOT_URL_POSTFIX_EMULATOR}\"@" rs-config
+sed -i "s@SNAPSHOT_URL_POSTFIX_TARGET=.*@SNAPSHOT_URL_POSTFIX_TARGET=\"${SNAPSHOT_URL_POSTFIX_TARGET}\"@" rs-config
+
+# Post Script
+#git checkout ./make_rootstrap.sh
+#sed -i "s/asm-arm64/asm-arm/g" make_rootstrap.sh
+#sed -i "s/asm-ia64/asm-x86/g" make_rootstrap.sh
+
+#git checkout ./script/rootstrap_gen_1.0.sh
+#POSTLINKER_PATH=${PWD_BACKUP}"/script/postlinker"
+#3sed -i "s@POSTLINKER_PATH=.*postlinker.*\$@POSTLINKER_PATH=\$\{PWD_BACKUP\}/script/postlinker@" ./script/rootstrap_gen_1.0.sh
+#sed -i "s@/usr/lib64@/usr/lib@" ./script/rootstrap_gen_1.0.sh
index 7757aa3f9248704cc3c052168a8ad91003c74d6c..6255ee116a5cee450ce5eb347d0d8912d02673d8 100755 (executable)
@@ -24,11 +24,11 @@ sed -i "s@SNAPSHOT_URL_POSTFIX_EMULATOR=.*@SNAPSHOT_URL_POSTFIX_EMULATOR=\"${SNA
 sed -i "s@SNAPSHOT_URL_POSTFIX_TARGET=.*@SNAPSHOT_URL_POSTFIX_TARGET=\"${SNAPSHOT_URL_POSTFIX_TARGET}\"@" rs-config
 
 # Post Script
-git checkout ./make_rootstrap.sh
-sed -i "s/asm-arm/asm-arm64/g" make_rootstrap.sh
-sed -i "s/asm-x86/asm-ia64/g" make_rootstrap.sh
+#git checkout ./make_rootstrap_64.sh
+#sed -i "s/asm-arm/asm-arm64/g" make_rootstrap_64.sh
+#sed -i "s/asm-x86/asm-ia64/g" make_rootstrap_64.sh
 
-git checkout ./script/rootstrap_gen_1.0.sh
-POSTLINKER_PATH=${PWD_BACKUP}"/script/postlinker"
-sed -i "s@POSTLINKER_PATH=.*postlinker.*\$@POSTLINKER_PATH=\$\{PWD_BACKUP\}/script/postlinker_64@" ./script/rootstrap_gen_1.0.sh
-sed -i "s@/usr/lib@/usr/lib64@" ./script/rootstrap_gen_1.0.sh
+#git checkout ./script/rootstrap_gen_1.0_64.sh
+#POSTLINKER_PATH=${PWD_BACKUP}"/script/postlinker"
+#sed -i "s@POSTLINKER_PATH=.*postlinker.*\$@POSTLINKER_PATH=\$\{PWD_BACKUP\}/script/postlinker_64@" ./script/rootstrap_gen_1.0_64.sh
+#sed -i "s@/usr/lib@/usr/lib64@" ./script/rootstrap_gen_1.0_64.sh
diff --git a/script/roostrap_info_gen_1.0_64.sh b/script/roostrap_info_gen_1.0_64.sh
new file mode 100644 (file)
index 0000000..d83668a
--- /dev/null
@@ -0,0 +1,231 @@
+#!/bin/bash
+
+function log()
+{
+    printf "[${SCRIPT_NAME}:${BASH_LINENO[0]}] ${@}\n"
+}
+
+function print_usage_exit()
+{
+echo "$SCRIPT_NAME is rootstrap info generator using xml"
+echo "Usage: $SCRIPT_NAME [<OPTION>]..."
+echo ""
+echo "  -t,--type   rootstrap type emulator, target."
+echo "  -l,--list   xml file or directory list."
+echo "  -i,--info   IDE rootstrap info file to get Build Option"
+echo "  -p,--profile    mobile, wearable, tv"
+echo "  -v,--version    2.3, 2.3.1, 2.4, 3.0"
+echo ""
+echo "Example 1"
+echo ">$SCRIPT_NAME -t \"emulator\" -i \".info\/mobile-2.3-emulator.core.dev.xml\" -p \"mobile\" -v \"2.3\""
+echo ""
+
+exit $1
+}
+
+function get_build_option()
+{
+    BUILD_OPT_INC_PATH+=$(xmlstarlet sel -t -m "/rootstrap" -m "include_path" -v "text()" -o "" -n ${1})$'\n';
+    BUILD_OPT_LIB_PATH+=$(xmlstarlet sel -t -m "/rootstrap" -m "library_path" -v "text()" -o "" -n ${1})$'\n';
+    BUILD_OPT_LIB_NAME+=$(xmlstarlet sel -t -m "/rootstrap" -m "library" -v "text()" -o "" -n ${1})$'\n'$'\n';
+    #BUILD_OPT_CLI_RS_LIBRARIES+=$(xmlstarlet sel -t -m "/rootstrap" -m "library" -v "text()" -o "" -n ${1})$'\n'$'\n';
+}
+
+function generate_info()
+{
+log "# $FUNCNAME------"
+(
+echo '<PackageInfo>
+<DevPackage name="Native_API" is_framework="true" is_virtual="false">
+</DevPackage>
+</PackageInfo>'| tee $INFO_FILENAME >/dev/null 2>&1
+)
+
+for i in $BUILD_OPT_INC_PATH
+do
+    xmlstarlet ed -L -s "/PackageInfo/DevPackage" -t elem -n "include_path" -v "$i" $INFO_FILENAME
+done;
+
+for i in $BUILD_OPT_LIB_PATH
+do
+    xmlstarlet ed -L -s "/PackageInfo/DevPackage" -t elem -n "library_path" -v "$i" $INFO_FILENAME
+done;
+
+for i in $BUILD_OPT_LIB_NAME
+do
+    if [ "$i" == "liblibrary.so" ]; then
+        log "AFTER CONTINUE: $i"
+        continue;
+    fi
+    xmlstarlet ed -L -s "/PackageInfo/DevPackage" -t elem -n "library" -v "$i" $INFO_FILENAME
+done;
+
+xmlstarlet ed -L -s "/PackageInfo/DevPackage" -t elem -n "description" -v "Native_API Libraries" $INFO_FILENAME
+}
+
+###########################################################################################
+
+#script start
+BUILD_OPT_INC_PATH=""
+BUILD_OPT_LIB_PATH=""
+BUILD_OPT_LIB_NAME=""
+
+SCRIPT_NAME=$(basename ${0})
+SCRIPT_VER="0.0.1"
+SCRIPT_PATH=$(dirname ${0})
+
+OPTS=`getopt -o -t:l:p:v:i:h --long type:,list:,profile:,version:,info:,help,internal -- "$@"`
+if [ $? != 0 ] ; then log "Failed parsing options." >&2 ; exit 1 ; fi
+
+log ""
+log "# PARAMETER : $SCRIPT_NAME $OPTS"
+eval set -- "$OPTS"
+
+ROOTSTRAP_TYPE=""
+XML_INPUT_LIST=""
+
+while true; do
+case "$1" in
+-t | --type ) ROOTSTRAP_TYPE="$2"; shift;shift ;;
+-l | --list ) XML_INPUT_LIST="$2 "; shift; shift ;;
+-p | --profile ) PLATFORM_PROFILE="$2"; shift; shift ;;
+-v | --version ) PLATFORM_VERSION="$2"; shift; shift ;;
+-i | --info ) INFO_FILENAME="$2"; shift; shift ;;
+--internal ) INTERNAL=true; shift ;;
+-h | --help ) exit; shift; shift ;;
+-- ) shift; break ;;
+* ) 
+    if [ -d "$1" ]  || [ -f "$1" ]; then
+            XML_INPUT_LIST+="${1} "
+        else
+                print_usage_exit -1;
+        fi
+        shift;;
+esac
+done
+
+log "# ROOTSTRAP_TYPE = $ROOTSTRAP_TYPE"
+log "# XML_INPUT_LIST = $XML_INPUT_LIST"
+log "# PLATFORM_PROFILE = $PLATFORM_PROFILE"
+log "# PLATFORM_VERSION = $PLATFORM_VERSION"
+log "# INFO_FILENAME = $INFO_FILENAME"
+log ""
+
+if [ -z "$PLATFORM_PROFILE" ] || [ -z "$PLATFORM_VERSION" ]
+then
+    source "$SCRIPT_PATH/../.rs-config"
+fi
+
+##################################################################
+# Generate XML_LIST
+##################################################################
+# 1. ignorelist
+if [ -e ".ignorelist" ]
+then
+        IGNORE_LIST=$(cat .ignorelist);
+        for ignore in $IGNORE_LIST
+        do
+                INAME_OPT+=" ! -name ${ignore} "
+        done
+        log "[INAME_OPT = $INAME_OPT]"
+fi
+
+# 2. get xml list
+for xml_input in $XML_INPUT_LIST
+do
+        if [ -d "$xml_input" ] #dirctory
+        then
+                XML_LIST+=$(find -L $xml_input \( -name "*-rs.xml" ${INAME_OPT} \) )$'\n'
+        elif [ -e "$xml_input" ]
+        then
+                XML_LIST+="$xml_input"$'\n'
+        fi
+done
+
+# 3. delete empty line
+XML_LIST=$(echo "$XML_LIST" | sed '/^$/d')
+if [ "$XML_LIST" == "" ]
+then
+        log "It does not found *-rs.xml"
+        exit 1
+fi
+#echo "$XML_LIST"
+
+
+PWD_BACKUP=`pwd`
+
+INFO_DEST=${PWD_BACKUP}/".info"
+PLUGIN_DEST=${PWD_BACKUP}/".plugin"
+
+log "################# Start Generate Rootstrap Info #################"
+
+PROCESS_CNT=0;
+
+TOTAL_CNT=$(echo "${XML_LIST}" | wc -l)
+
+#get build option from xml
+for item in $XML_LIST
+do
+    get_build_option $item
+done
+
+#generate rootstrap plugin & info
+if [ ! -e ${INFO_DEST} ]
+then
+    mkdir ${INFO_DEST};
+fi
+
+BUILD_OPT_INC_PATH=`echo "$BUILD_OPT_INC_PATH" | sort -d -u`;
+BUILD_OPT_LIB_PATH=`echo "$BUILD_OPT_LIB_PATH" | sort -d -u`;
+BUILD_OPT_LIB_NAME=`echo "$BUILD_OPT_LIB_NAME" | sort -d -u`;
+
+log "> BUILD_OPT_INC_PATH=$BUILD_OPT_INC_PATH"
+log "> BUILD_OPT_LIB_PATH=$BUILD_OPT_LIB_PATH"
+log "> BUILD_OPT_LIB_NAME=$BUILD_OPT_LIB_NAME"
+
+if [[ "${ROOTSTRAP_TYPE}" == "emulator" ]]
+then
+
+#emulator
+TYPE="emulator64"
+#ARCH="i386"
+ARCH="x86_64"
+RS_PATH="#{SBI_HOME}/../../platforms/tizen-${PLATFORM_VERSION}/${PLATFORM_PROFILE}/rootstraps/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}.core"
+DEV_PACKAGE_CONFIG_PATH="#{SBI_HOME}/../../platforms/tizen-${PLATFORM_VERSION}/${PLATFORM_PROFILE}/rootstraps/info/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}.core.dev.xml"
+INFO_FILENAME=${INFO_DEST}/"$PLATFORM_PROFILE-$PLATFORM_VERSION-${TYPE}.core.dev.xml"
+
+#if [ "$INTERNAL" = true ]; then
+#DEV_PACKAGE_CONFIG_PATH="#{SBI_HOME}/../../platforms/tizen-${PLATFORM_VERSION}/${PLATFORM_PROFILE}/rootstraps/info/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}.core.private.dev.xml"
+#INFO_FILENAME=${INFO_DEST}/"$PLATFORM_PROFILE-$PLATFORM_VERSION-${TYPE}.core.private.dev.xml"
+#fi
+
+generate_info
+
+
+elif [[ "${ROOTSTRAP_TYPE}" == "target" ]]
+then
+#device
+TYPE="device64"
+#ARCH="armel"
+ARCH="aarch64"
+RS_PATH="#{SBI_HOME}/../../platforms/tizen-${PLATFORM_VERSION}/${PLATFORM_PROFILE}/rootstraps/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}.core"
+DEV_PACKAGE_CONFIG_PATH="#{SBI_HOME}/../../platforms/tizen-${PLATFORM_VERSION}/${PLATFORM_PROFILE}/rootstraps/info/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}.core.dev.xml"
+INFO_FILENAME=${INFO_DEST}/"$PLATFORM_PROFILE-$PLATFORM_VERSION-${TYPE}.core.dev.xml"
+
+#if [ "$INTERNAL" = true ]; then
+#DEV_PACKAGE_CONFIG_PATH="#{SBI_HOME}/../../platforms/tizen-${PLATFORM_VERSION}/${PLATFORM_PROFILE}/rootstraps/info/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}.core.private.dev.xml"
+#INFO_FILENAME=${INFO_DEST}/"$PLATFORM_PROFILE-$PLATFORM_VERSION-${TYPE}.core.private.dev.xml"
+#fi
+
+generate_info
+
+fi
+
+log "> TYPE = $TYPE"
+log "> ARCH = $ARCH"
+log "> RS_PATH = $RS_PATH"
+log "> DEV_PACKAGE_CONFIG_PATH = $DEV_PACKAGE_CONFIG_PATH"
+log "> INFO_FILENAME = $INFO_FILENAME"
+log "######################## END  [$SECONDS] Sec ##############################"
+
+exit 0
index 79499d91def1004524c39da06e9a6ea483810cc5..a82ab62843142dfbf863d5799affc99c9c001b3e 100755 (executable)
@@ -429,7 +429,7 @@ done #finish copy header & library
 ##################################################################
 log "************* Post link *******************"
 log "# POSTLINKER_PATH=$POSTLINKER_PATH"
-for i in $(find ${DEST}/usr/lib -name "*.so" -o -name "*.so.*")
+for i in $(find ${DEST}/usr/lib64 -name "*.so" -o -name "*.so.*")
 do
     ${POSTLINKER_PATH} $i >/dev/null 1>&2
 done
diff --git a/script/rootstrap_gen_1.0_64.sh b/script/rootstrap_gen_1.0_64.sh
new file mode 100644 (file)
index 0000000..ee22a61
--- /dev/null
@@ -0,0 +1,439 @@
+#!/bin/bash
+SCRIPT_NAME=$(basename $0)
+SCRIPT_VER="0.0.1"
+
+ERROR_USAGE=100
+ERROR_PREREQUISITE=101
+ERROR_NOT_EXIST_FILE=200
+ERROR_NOT_EXIST_XML=201
+ERROR_NOT_EXIST_POSTLINK=202
+ERROR_FAILED_DOWNLOAD_RPM=300
+
+WGET_CMD="wget -nd -nc -q -r -l1 "
+ERRMSG_CONTACT_AUTHOR="E-MAIL ADDRESS : "
+ERR_AUTHOR=""
+
+###############################################################################
+# function log
+###############################################################################
+function log()
+{
+    printf "[${SCRIPT_NAME}:${BASH_LINENO[0]}] ${@}\n"
+}
+
+###############################################################################
+# function check_error
+# $1 : Error code(integer)
+# $2 : Error Message
+# $3 : Error Xml File)
+# Example : check_error $? "Fail to function"
+###############################################################################
+function check_error()
+{
+    if [ "$1" -ne "0" ]; then
+        printf "[${SCRIPT_NAME}:${BASH_LINENO[0]}] ERROR : $2  - exit code ($1) \n" 1>&2
+        exit $1
+    fi
+}
+
+### $1 : xml file path ####################################################################
+function get_author(){
+    for na in $(xmlstarlet sel -t -m "//email" -o "" -v "text()" -o " " -n ${1})
+    do
+        if [[ -z $ERR_AUTHOR ]]; then
+            ERR_AUTHOR=$ERR_AUTHOR"$na"
+        else
+            ERR_AUTHOR=$ERR_AUTHOR", $na"
+        fi
+    done
+
+    if [ ${#ERR_AUTHOR} -ne 0 ]; then
+           log "$ERRMSG_CONTACT_AUTHOR File : ${1}, $ERR_AUTHOR"  1>&2
+           
+           if [ -e ${LOGFILE} ] ; then 
+            log "[ERROR] Filename: ${1}, Contact: $ERR_AUTHOR"  1>&2 | tee -a  $LOGFILE
+           fi
+    fi
+
+    ERR_AUTHOR=""
+}
+
+function print_usage_exit()
+{
+echo "$SCRIPT_NAME is rootstrap generator using xml"
+echo "Usage: $SCRIPT_NAME [<OPTION>]... [<FILE>]..."
+echo ""
+echo "  -t,--type   rootstrap type emulator, target."
+echo "  -l,--list   xml file or directory list."
+echo "  -u,--url    rpm package url."
+echo "  -b,--base   base rpm package url (optional)"
+echo ""
+echo "Example 1"
+echo ">$SCRIPT_NAME -t \"emulator\" -u \"http://168.219.209.58:82/Tizen:/2.4:/Mobile/emulator\" -b \"http://168.219.209.55/download/snapshots/2.4-base/common/latest/repos/emulator/packages/\" -l \"./\""
+echo ""
+echo "Example 2"
+echo ">$SCRIPT_NAME -t \"emulator\" -u \"http://168.219.209.58:82/Tizen:/2.4:/Mobile/emulator\" -b \"http://168.219.209.55/download/snapshots/2.4-base/common/latest/repos/emulator/packages/\" -l \"./NativeAPI/appcore-widget-rs.xml ./EFL\""
+echo ""
+exit $1
+}
+
+## download_rpm $1 : XML file
+function download_rpm()
+{
+    log "***************** $FUNCNAME *****************"
+    DOWNLOAD_COUNT=0;
+
+    for i in $(xmlstarlet sel -t -m "//${ROOTSTRAP_TYPE}/rpm" -v "concat(@accept, ',', @arch )" -o " " ${1});
+    do
+        ACCEPT=`echo $i | cut -d "," -f 1`
+        ARCH=`echo $i | cut -d "," -f 2`
+        log "+ download rpm package [$ACCEPT][$ARCH]";
+        if [[ -z ${ACCEPT} ]] || [[ -z ${ARCH} ]]
+        then
+            log "ACCEPT=${ACCEPT}, ARCH=${ARCH} Skipping..."
+            continue;
+        fi
+
+        log "+ find ${RPM_Directory}/$2 -name '${ACCEPT}-[0-9]*${ARCH}*rpm'"
+        if [[ -z $(find ${RPM_Directory}/${ROOTSTRAP_TYPE} -name "${ACCEPT}-[0-9]*${ARCH}*rpm") ]]
+        then
+            log "+ Not Exist in .rpm cache.."
+            if [[ ${1} == *"baserpm"* ]] && [[ -n ${BASE_PKG_URL} ]]
+            then
+                RPM_DOWN_SVR=${BASE_PKG_URL}/${ARCH}
+            else
+                RPM_DOWN_SVR=${URL}/${ARCH}
+            fi
+
+            log "+ Start download from [${RPM_DOWN_SVR}]"
+            log "+ CMD [${WGET_CMD} -A ${ACCEPT}-[0-9]*rpm -P ${RPM_Directory}/${ROOTSTRAP_TYPE} ${RPM_DOWN_SVR};]"
+            ${WGET_CMD} -A "${ACCEPT}-[0-9]*rpm" -P ${RPM_Directory}/${ROOTSTRAP_TYPE} ${RPM_DOWN_SVR};
+            check_error $? "Fail to wget ${ACCEPT} pkg from ${RPM_DOWN_SVR}"
+        fi
+
+        ln -s ${RPM_Directory}/${ROOTSTRAP_TYPE}/${ACCEPT}-[0-9]*${ARCH}*rpm ${TMP}
+        let "DOWNLOAD_COUNT+=1"
+    done
+
+    #Erro Check
+    FILE_COUNT=$(ls ${TMP} | wc -l)
+    if [ $DOWNLOAD_COUNT -gt $FILE_COUNT ]
+    then
+        #check_error $ERROR_FAILED_DOWNLOAD_RPM "Fail to download rpm from ${1}. Expect number of DOWNLOAD files are [$DOWNLOAD_COUNT]. but actually count [$FILE_COUNT]"
+        log "Fail to download rpm from ${1}.\nExpect number of DOWNLOAD files are [$DOWNLOAD_COUNT].\nbut actually count [$FILE_COUNT]"  1>&2 
+        get_author ${1}
+        return $ERROR_FAILED_DOWNLOAD_RPM
+    fi
+
+    BROKEN_COUNT=$(find -L ${TMP} -type l | sort -d | wc -l)
+    BROKEN_LIST=$(find -L ${TMP} -type l | sort -d)
+    if [  $BROKEN_COUNT -gt 0 ]
+    then
+        log "Fail to download rpm from ${1}.\nExpect number of DOWNLOAD files are [$DOWNLOAD_COUNT].\nbut actually BROKEN FILE [$BROKEN_COUNT], BROKEN LIST are ${BROKEN_LIST}"  1>&2
+        get_author ${1}
+        #check_error $ERROR_FAILED_DOWNLOAD_RPM "Fail to download rpm from ${1}. Expect number of DOWNLOAD files are [$DOWNLOAD_COUNT]. but actually BROKEN FILE [$BROKEN_COUNT], BROKEN LIST are ${BROKEN_LIST}"
+        return $ERROR_FAILED_DOWNLOAD_RPM
+    fi
+}
+
+function unpack_rpm()
+{
+    log "***************** $FUNCNAME *****************"
+(
+    cd ${TMP}
+    for pkg in $(ls *.rpm)
+    do
+        log "+ unpack_rpm $pkg"
+        rpm2cpio $pkg | cpio -idm >/dev/null 2>&1
+    done
+)
+}
+
+function unnecessary_files()
+{
+    log "***************** $FUNCNAME *****************"
+    #remove dir
+    for i in $(xmlstarlet sel -t -m "//unnecessary/file[@type]" -o "." -v "text()" -o  " "  ${1});
+    do
+        if [ -n ${i} ]
+        then
+        log "+ remove dir [${TMP}/$i]";
+        rm -rf ${TMP}/${i}
+        fi
+    done;
+
+    #remove file
+    for i in $(xmlstarlet sel -t -m "//unnecessary/file[not(@type)]" -o "." -v "text()" -o  " "  ${1});
+    do
+        if [ -n ${i} ]
+        then
+        log "+ remove file [${TMP}/$i]";
+        rm -rf ${TMP}/${i}
+    fi
+    done;
+
+    log ""
+
+}
+
+function copy_header_and_so() # $1 : SRCDIR, $2 : DESTDIR, $3 xml
+{
+    log "***************** $FUNCNAME *****************"
+    ALL=$(xmlstarlet sel -t -m "//necessary[count(file)=1]" -v "./file/text()" ${3})
+    log "+ source directory : $1"
+    log "+ destination directory : $2"
+    log "+ xml source file : $3"
+
+    TEMP_SRC_DIR="${1}";
+    TEMP_DEST_DIR="${2}";
+    COPY_ERROR=0;
+    if [[ "${ALL}" == "*" ]] || [ "$INTERNAL" = true ]
+    then
+        (
+        log "+ copy ALL file (h, a, o, so)"
+        cd ${1}
+        find . \( -name "*.h" -o -name "*.a" -o -name "*.o" -o -name "*.so" -o -name "*.so\.[0-9]*" -o -name "*.hpp" -o -name "*.ipp" -o -name "*.x" -o -name "*.def" -o -name "*.so.*" \) \
+            -exec echo "+ copy file [{}]" \; \
+            -exec cp -L -R --parents {} ${2} \;
+        )
+    else
+        log "+ copy necessary files .."
+        for i in $(xmlstarlet sel -t -m "//necessary/file" -o "." -v "text()" -o " " -n  ${3})
+        do
+            #(
+            cd ${1}
+            log "+ copy file from [${i}]"
+            cp -L -R --parents ${i} ${2}
+            if [ "$?" -ne "0" ]; then
+                get_author "../${3}"
+                let "COPY_ERROR+=1"
+            fi
+           cd -
+            #)
+        done
+    fi
+
+    if [ "$COPY_ERROR" -ne "0" ]; then
+        log "Error Occurred Copy file .... "  1>&2
+        exit $ERROR_NOT_EXIST_FILE
+    fi
+#######
+# Pc
+#######
+    if [ -d "${TEMP_SRC_DIR}/usr/lib64/pkgconfig" ]
+    then
+    (
+        cd ${TEMP_SRC_DIR}
+        cp -P -R --parents "./usr/lib64/pkgconfig"  "${TEMP_DEST_DIR}" ;
+    )
+    fi
+
+}
+
+function check_prerequisite()
+{
+    RET=$(which xmlstarlet)
+    if [ -z "${RET}" ]
+    then
+        check_error $ERROR_PREREQUISITE "Error prerequisite : \n\n sudo apt-get install xmlstarlet \n\n";
+    fi
+}
+
+
+###########################################################################################
+#script start
+check_prerequisite
+
+OPTS=`getopt -o -t:u:b:l:i:p:wh --long type:,url:,base:,list:,id:,pw:,withlogin,help,internal,log: -n 'rootstrap_gen_1.0_64' -- "$@"`
+if [ $? != 0 ] ; then log "Failed parsing options." >&2 ; exit 1 ; fi
+
+log ""
+log "# PARAMETER : $SCRIPT_NAME $OPTS"
+eval set -- "$OPTS"
+
+ROOTSTRAP_TYPE=""
+RPM_PKG_URL=""
+BASE_PKG_URL=""
+XML_INPUT_LIST=""
+INTERNAL=false
+
+while true; do
+  case "$1" in
+    -t | --type ) ROOTSTRAP_TYPE="$2"; shift;shift ;;
+    -u | --url ) RPM_PKG_URL="$2"; shift;shift ;;
+    -b | --base ) BASE_PKG_URL="$2"; shift;shift ;;
+    -l | --list ) XML_INPUT_LIST="$2 "; shift; shift ;;
+    -i | --id ) SPIN_ID="$2"; shift; shift ;;
+    -p | --pw ) SPIN_PW="$2"; shift; shift ;;
+    --log ) LOGFILE="$2"; shift; shift ;;
+    -w | --withlogin )
+                if [ -z ${SPIN_ID}] || [ -z ${SPIN_PW} ]
+                then
+                    spin_login;
+                    WGET_CMD="${WGET_CMD} --user=${SPIN_ID} --password=${SPIN_PW}"
+                    log "WGET_CMD = ${WGET_CMD}"
+                else
+                    log "WGET_CMD = ${WGET_CMD}"
+                fi
+                shift;;
+    --internal ) INTERNAL=true; shift;;
+    -h | --help ) print_usage_exit $ERROR_USAGE; shift; shift ;;
+    -- ) shift; break ;;
+    * )
+        if [ -d "$1" ]  || [ -f "$1" ]; then
+            XML_INPUT_LIST+="${1} "
+        else
+            print_usage_exit $ERROR_USAGE;
+        fi
+        shift;;
+  esac
+done
+
+if [ -n "${SPIN_ID}" ] && [ -n "${SPIN_PW}" ]
+then
+    WGET_CMD="${WGET_CMD} --user=${SPIN_ID} --password=${SPIN_PW}"
+    log "WGET_CMD = ${WGET_CMD}"
+fi
+
+#echo "# ROOTSTRAP_TYPE = $ROOTSTRAP_TYPE"
+#echo "# RPM_PKG_URL = $RPM_PKG_URL"
+#echo "# BASE_PKG_URL = $BASE_PKG_URL"
+#echo "# XML_INPUT_LIST = $XML_INPUT_LIST"
+
+#ROOTSTRAP_TYPE=$1; #rootstrap type - target, emulator
+if [ -z $ROOTSTRAP_TYPE ]
+then
+    print_usage_exit $ERROR_USAGE
+fi
+
+#RPM_PKG_URL=$2; #rpm download url
+if [ -z $RPM_PKG_URL ]
+then
+    print_usage_exit $ERROR_USAGE
+fi
+URL=$RPM_PKG_URL
+
+PWD_BACKUP=`pwd`
+DEST=${PWD_BACKUP}/.${ROOTSTRAP_TYPE}
+TMP=${PWD_BACKUP}/".tmp"
+RPM_Directory=${PWD_BACKUP}/".rpm"
+POSTLINKER_PATH=${PWD_BACKUP}/script/postlinker_64
+
+if [ ! -e $POSTLINKER_PATH ]
+then
+    log "postlinker file does not exist"
+    exit 1
+fi
+
+if [ ! -e "${RPM_Directory}/${ROOTSTRAP_TYPE}" ]
+then
+    log "Not Exist ${RPM_Directory}/${ROOTSTRAP_TYPE}"
+    mkdir -p "${RPM_Directory}/${ROOTSTRAP_TYPE}"
+fi
+
+
+log "################# Start Generate Rootstrap #################"
+log "# ROOTSTRAP_TYPE=$ROOTSTRAP_TYPE"
+log "# DOWNLOAD_URL=$URL"
+log "# BASE_PKG_URL(Optional)=$BASE_PKG_URL"
+log "# POSTLINKER_PATH=$POSTLINKER_PATH"
+log "# XML_INPUT_LIST = $XML_INPUT_LIST"
+log "# TMP = $TMP"
+log "# DEST = $DEST"
+log "# RPM_Directory = $RPM_Directory"
+log "############################################################"
+
+##################################################################
+# Generate XML_LIST
+##################################################################
+# 1. ignorelist
+if [ -e ".ignorelist" ]
+then
+    IGNORE_LIST=$(cat .ignorelist);
+    for ignore in $IGNORE_LIST
+    do
+        INAME_OPT+=" ! -name ${ignore} "
+    done
+    #echo "[INAME_OPT = $INAME_OPT]"
+fi
+
+# 2. get xml list
+for xml_input in $XML_INPUT_LIST
+do
+    if [ -d "$xml_input" ] #dirctory
+    then
+        XML_LIST+=$(find -L $xml_input \( -name "*-rs.xml" ${INAME_OPT} \) )$'\n'
+    elif [ -e "$xml_input" ]
+    then
+        XML_LIST+="$xml_input"$'\n'
+    fi
+done
+
+# 3. delete empty line
+XML_LIST=$(echo "$XML_LIST" | sed '/^$/d')
+if [ "$XML_LIST" == "" ]
+then
+    check_error $ERROR_NOT_EXIST_XML "It does not found *-rs.xml"
+fi
+
+#init - DEST
+if [ ! -e ${DEST} ]
+then
+    mkdir ${DEST};
+fi
+
+PROCESS_CNT=0;
+
+TOTAL_CNT=$(echo "${XML_LIST}" | wc -l)
+log "> XML_LIST count is ${TOTAL_CNT}"
+
+##################################################################
+# Generate Rootstrap Resource
+##################################################################
+for item in $XML_LIST
+do
+    #init - TMP
+    rm -rf ${TMP} ; mkdir ${TMP}
+
+    let "PROCESS_CNT+=1"
+    log "[${PROCESS_CNT}/${TOTAL_CNT}]Processing : ${item}" 1>&2
+
+    if [[ -z $(xmlstarlet sel -t -c "//${ROOTSTRAP_TYPE}" $item) ]]
+    then
+        log "+ ${1} Target Info does not described in $item. Skipping ...."
+        continue;
+    fi
+
+    #download rpm
+    download_rpm $item
+    if [ "$?" -ne "0" ]
+    then
+        continue;
+    fi
+    #unpack rpm
+    unpack_rpm $item
+
+    #remove unnessary header, so
+    unnecessary_files $item
+
+    #copy only header & so to dest
+    copy_header_and_so ${TMP} ${DEST} ${item}
+
+    #get build option from xml
+    #get_build_option $item
+done #finish copy header & library
+
+##################################################################
+#postlink for delete needed field from Library
+##################################################################
+log "************* Post link *******************"
+log "# POSTLINKER_PATH=$POSTLINKER_PATH"
+for i in $(find ${DEST}/usr/lib -name "*.so" -o -name "*.so.*")
+do
+    ${POSTLINKER_PATH} $i >/dev/null 1>&2
+done
+log "Deleted needed field of so file"
+
+log "######################## END  [$SECONDS] Sec ##############################" 1>&2
+exit 0
diff --git a/script/rootstrap_info_gen_1.0_64.sh b/script/rootstrap_info_gen_1.0_64.sh
new file mode 100644 (file)
index 0000000..d83668a
--- /dev/null
@@ -0,0 +1,231 @@
+#!/bin/bash
+
+function log()
+{
+    printf "[${SCRIPT_NAME}:${BASH_LINENO[0]}] ${@}\n"
+}
+
+function print_usage_exit()
+{
+echo "$SCRIPT_NAME is rootstrap info generator using xml"
+echo "Usage: $SCRIPT_NAME [<OPTION>]..."
+echo ""
+echo "  -t,--type   rootstrap type emulator, target."
+echo "  -l,--list   xml file or directory list."
+echo "  -i,--info   IDE rootstrap info file to get Build Option"
+echo "  -p,--profile    mobile, wearable, tv"
+echo "  -v,--version    2.3, 2.3.1, 2.4, 3.0"
+echo ""
+echo "Example 1"
+echo ">$SCRIPT_NAME -t \"emulator\" -i \".info\/mobile-2.3-emulator.core.dev.xml\" -p \"mobile\" -v \"2.3\""
+echo ""
+
+exit $1
+}
+
+function get_build_option()
+{
+    BUILD_OPT_INC_PATH+=$(xmlstarlet sel -t -m "/rootstrap" -m "include_path" -v "text()" -o "" -n ${1})$'\n';
+    BUILD_OPT_LIB_PATH+=$(xmlstarlet sel -t -m "/rootstrap" -m "library_path" -v "text()" -o "" -n ${1})$'\n';
+    BUILD_OPT_LIB_NAME+=$(xmlstarlet sel -t -m "/rootstrap" -m "library" -v "text()" -o "" -n ${1})$'\n'$'\n';
+    #BUILD_OPT_CLI_RS_LIBRARIES+=$(xmlstarlet sel -t -m "/rootstrap" -m "library" -v "text()" -o "" -n ${1})$'\n'$'\n';
+}
+
+function generate_info()
+{
+log "# $FUNCNAME------"
+(
+echo '<PackageInfo>
+<DevPackage name="Native_API" is_framework="true" is_virtual="false">
+</DevPackage>
+</PackageInfo>'| tee $INFO_FILENAME >/dev/null 2>&1
+)
+
+for i in $BUILD_OPT_INC_PATH
+do
+    xmlstarlet ed -L -s "/PackageInfo/DevPackage" -t elem -n "include_path" -v "$i" $INFO_FILENAME
+done;
+
+for i in $BUILD_OPT_LIB_PATH
+do
+    xmlstarlet ed -L -s "/PackageInfo/DevPackage" -t elem -n "library_path" -v "$i" $INFO_FILENAME
+done;
+
+for i in $BUILD_OPT_LIB_NAME
+do
+    if [ "$i" == "liblibrary.so" ]; then
+        log "AFTER CONTINUE: $i"
+        continue;
+    fi
+    xmlstarlet ed -L -s "/PackageInfo/DevPackage" -t elem -n "library" -v "$i" $INFO_FILENAME
+done;
+
+xmlstarlet ed -L -s "/PackageInfo/DevPackage" -t elem -n "description" -v "Native_API Libraries" $INFO_FILENAME
+}
+
+###########################################################################################
+
+#script start
+BUILD_OPT_INC_PATH=""
+BUILD_OPT_LIB_PATH=""
+BUILD_OPT_LIB_NAME=""
+
+SCRIPT_NAME=$(basename ${0})
+SCRIPT_VER="0.0.1"
+SCRIPT_PATH=$(dirname ${0})
+
+OPTS=`getopt -o -t:l:p:v:i:h --long type:,list:,profile:,version:,info:,help,internal -- "$@"`
+if [ $? != 0 ] ; then log "Failed parsing options." >&2 ; exit 1 ; fi
+
+log ""
+log "# PARAMETER : $SCRIPT_NAME $OPTS"
+eval set -- "$OPTS"
+
+ROOTSTRAP_TYPE=""
+XML_INPUT_LIST=""
+
+while true; do
+case "$1" in
+-t | --type ) ROOTSTRAP_TYPE="$2"; shift;shift ;;
+-l | --list ) XML_INPUT_LIST="$2 "; shift; shift ;;
+-p | --profile ) PLATFORM_PROFILE="$2"; shift; shift ;;
+-v | --version ) PLATFORM_VERSION="$2"; shift; shift ;;
+-i | --info ) INFO_FILENAME="$2"; shift; shift ;;
+--internal ) INTERNAL=true; shift ;;
+-h | --help ) exit; shift; shift ;;
+-- ) shift; break ;;
+* ) 
+    if [ -d "$1" ]  || [ -f "$1" ]; then
+            XML_INPUT_LIST+="${1} "
+        else
+                print_usage_exit -1;
+        fi
+        shift;;
+esac
+done
+
+log "# ROOTSTRAP_TYPE = $ROOTSTRAP_TYPE"
+log "# XML_INPUT_LIST = $XML_INPUT_LIST"
+log "# PLATFORM_PROFILE = $PLATFORM_PROFILE"
+log "# PLATFORM_VERSION = $PLATFORM_VERSION"
+log "# INFO_FILENAME = $INFO_FILENAME"
+log ""
+
+if [ -z "$PLATFORM_PROFILE" ] || [ -z "$PLATFORM_VERSION" ]
+then
+    source "$SCRIPT_PATH/../.rs-config"
+fi
+
+##################################################################
+# Generate XML_LIST
+##################################################################
+# 1. ignorelist
+if [ -e ".ignorelist" ]
+then
+        IGNORE_LIST=$(cat .ignorelist);
+        for ignore in $IGNORE_LIST
+        do
+                INAME_OPT+=" ! -name ${ignore} "
+        done
+        log "[INAME_OPT = $INAME_OPT]"
+fi
+
+# 2. get xml list
+for xml_input in $XML_INPUT_LIST
+do
+        if [ -d "$xml_input" ] #dirctory
+        then
+                XML_LIST+=$(find -L $xml_input \( -name "*-rs.xml" ${INAME_OPT} \) )$'\n'
+        elif [ -e "$xml_input" ]
+        then
+                XML_LIST+="$xml_input"$'\n'
+        fi
+done
+
+# 3. delete empty line
+XML_LIST=$(echo "$XML_LIST" | sed '/^$/d')
+if [ "$XML_LIST" == "" ]
+then
+        log "It does not found *-rs.xml"
+        exit 1
+fi
+#echo "$XML_LIST"
+
+
+PWD_BACKUP=`pwd`
+
+INFO_DEST=${PWD_BACKUP}/".info"
+PLUGIN_DEST=${PWD_BACKUP}/".plugin"
+
+log "################# Start Generate Rootstrap Info #################"
+
+PROCESS_CNT=0;
+
+TOTAL_CNT=$(echo "${XML_LIST}" | wc -l)
+
+#get build option from xml
+for item in $XML_LIST
+do
+    get_build_option $item
+done
+
+#generate rootstrap plugin & info
+if [ ! -e ${INFO_DEST} ]
+then
+    mkdir ${INFO_DEST};
+fi
+
+BUILD_OPT_INC_PATH=`echo "$BUILD_OPT_INC_PATH" | sort -d -u`;
+BUILD_OPT_LIB_PATH=`echo "$BUILD_OPT_LIB_PATH" | sort -d -u`;
+BUILD_OPT_LIB_NAME=`echo "$BUILD_OPT_LIB_NAME" | sort -d -u`;
+
+log "> BUILD_OPT_INC_PATH=$BUILD_OPT_INC_PATH"
+log "> BUILD_OPT_LIB_PATH=$BUILD_OPT_LIB_PATH"
+log "> BUILD_OPT_LIB_NAME=$BUILD_OPT_LIB_NAME"
+
+if [[ "${ROOTSTRAP_TYPE}" == "emulator" ]]
+then
+
+#emulator
+TYPE="emulator64"
+#ARCH="i386"
+ARCH="x86_64"
+RS_PATH="#{SBI_HOME}/../../platforms/tizen-${PLATFORM_VERSION}/${PLATFORM_PROFILE}/rootstraps/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}.core"
+DEV_PACKAGE_CONFIG_PATH="#{SBI_HOME}/../../platforms/tizen-${PLATFORM_VERSION}/${PLATFORM_PROFILE}/rootstraps/info/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}.core.dev.xml"
+INFO_FILENAME=${INFO_DEST}/"$PLATFORM_PROFILE-$PLATFORM_VERSION-${TYPE}.core.dev.xml"
+
+#if [ "$INTERNAL" = true ]; then
+#DEV_PACKAGE_CONFIG_PATH="#{SBI_HOME}/../../platforms/tizen-${PLATFORM_VERSION}/${PLATFORM_PROFILE}/rootstraps/info/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}.core.private.dev.xml"
+#INFO_FILENAME=${INFO_DEST}/"$PLATFORM_PROFILE-$PLATFORM_VERSION-${TYPE}.core.private.dev.xml"
+#fi
+
+generate_info
+
+
+elif [[ "${ROOTSTRAP_TYPE}" == "target" ]]
+then
+#device
+TYPE="device64"
+#ARCH="armel"
+ARCH="aarch64"
+RS_PATH="#{SBI_HOME}/../../platforms/tizen-${PLATFORM_VERSION}/${PLATFORM_PROFILE}/rootstraps/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}.core"
+DEV_PACKAGE_CONFIG_PATH="#{SBI_HOME}/../../platforms/tizen-${PLATFORM_VERSION}/${PLATFORM_PROFILE}/rootstraps/info/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}.core.dev.xml"
+INFO_FILENAME=${INFO_DEST}/"$PLATFORM_PROFILE-$PLATFORM_VERSION-${TYPE}.core.dev.xml"
+
+#if [ "$INTERNAL" = true ]; then
+#DEV_PACKAGE_CONFIG_PATH="#{SBI_HOME}/../../platforms/tizen-${PLATFORM_VERSION}/${PLATFORM_PROFILE}/rootstraps/info/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}.core.private.dev.xml"
+#INFO_FILENAME=${INFO_DEST}/"$PLATFORM_PROFILE-$PLATFORM_VERSION-${TYPE}.core.private.dev.xml"
+#fi
+
+generate_info
+
+fi
+
+log "> TYPE = $TYPE"
+log "> ARCH = $ARCH"
+log "> RS_PATH = $RS_PATH"
+log "> DEV_PACKAGE_CONFIG_PATH = $DEV_PACKAGE_CONFIG_PATH"
+log "> INFO_FILENAME = $INFO_FILENAME"
+log "######################## END  [$SECONDS] Sec ##############################"
+
+exit 0
diff --git a/script/rootstrap_plugin_gen_1.0_64.sh b/script/rootstrap_plugin_gen_1.0_64.sh
new file mode 100644 (file)
index 0000000..7ad37aa
--- /dev/null
@@ -0,0 +1,311 @@
+#!/bin/bash
+# Version 1.0.1
+function log()
+{
+    printf "[${SCRIPT_NAME}:${BASH_LINENO[0]}] ${@}\n"
+}
+
+function print_usage_exit()
+{
+echo "$SCRIPT_NAME is rootstrap generator using xml"
+echo "Usage: $SCRIPT_NAME [<OPTION>]..."
+echo ""
+echo "  -t,--type   rootstrap type emulator, target."
+echo "  -i,--info   IDE rootstrap info file to get Build Option"
+echo "  -p,--profile    mobile, wearable, tv"
+echo "  -v,--version    2.3, 2.3.1, 2.4, 3.0"
+echo ""
+echo "Example 1"
+echo ">$SCRIPT_NAME -t \"emulator\" -i \".info\/mobile-2.3-emulator.core.dev.xml\" -p \"mobile\" -v \"2.3\""
+echo ""
+
+exit $1
+}
+function get_build_option()
+{
+    BUILD_OPT_INC_PATH+=$(xmlstarlet sel -t -m "/rootstrap" -m "include_path" -v "text()" -o "" -n ${1})$'\n';
+    BUILD_OPT_LIB_PATH+=$(xmlstarlet sel -t -m "/rootstrap" -m "library_path" -v "text()" -o "" -n ${1})$'\n';
+    BUILD_OPT_LIB_NAME+=$(xmlstarlet sel -t -m "/rootstrap" -m "library" -v "text()" -o "" -n ${1})$'\n'$'\n';
+    BUILD_OPT_CLI_RS_LIBRARIES+=$(xmlstarlet sel -t -m "/rootstrap" -m "library" -v "text()" -o "" -n ${1})$'\n'$'\n';
+}
+
+function get_build_option_from_infofile()
+{
+    BUILD_OPT_INC_PATH+=$(xmlstarlet sel -t -m "/PackageInfo/DevPackage" -m "include_path" -v "text()" -o "" -n ${1})$'\n';
+    BUILD_OPT_LIB_PATH+=$(xmlstarlet sel -t -m "/PackageInfo/DevPackage" -m "library_path" -v "text()" -o "" -n ${1})$'\n';
+    BUILD_OPT_LIB_NAME+=$(xmlstarlet sel -t -m "/PackageInfo/DevPackage" -m "library" -v "text()" -o "" -n ${1})$'\n'$'\n';
+    BUILD_OPT_CLI_RS_LIBRARIES+=$(xmlstarlet sel -t -m "/PackageInfo/DevPackage" -m "library" -v "text()" -o "" -n ${1})$'\n'$'\n';
+    
+    BUILD_OPT_INC_PATH=`echo "$BUILD_OPT_INC_PATH" | sort -d -u`;
+    BUILD_OPT_LIB_PATH=`echo "$BUILD_OPT_LIB_PATH" | sort -d -u`;
+    BUILD_OPT_LIB_NAME=`echo "$BUILD_OPT_LIB_NAME" | sort -d -u`;
+    BUILD_OPT_CLI_RS_LIBRARIES=`echo "$BUILD_OPT_CLI_RS_LIBRARIES" | sort -d -u | sed 's/^lib/-l/g' | sed 's/.so$/ /g'`;
+}
+
+function generate_plugin()
+{
+log "# $FUNCNAME------"
+(
+echo '<extension point="rootstrapDefinition">
+</extension>'| tee $PLUGIN_FILENAME >/dev/null 2>&1
+)
+
+xmlstarlet ed -L -s "/extension" -t elem -n "rootstrap" -v "" $PLUGIN_FILENAME
+xmlstarlet ed -L -s "/extension/rootstrap" -t attr -n "id" -v "$PLATFORM_PROFILE-$PLATFORM_VERSION-${TYPE}.core" $PLUGIN_FILENAME
+xmlstarlet ed -L -s "/extension/rootstrap" -t attr -n "name" -v "Tizen ${TYPE[*]^} $PLATFORM_VERSION" $PLUGIN_FILENAME
+xmlstarlet ed -L -s "/extension/rootstrap" -t attr -n "version" -v "${PLATFORM_PROFILE[*]^} $PLATFORM_VERSION" $PLUGIN_FILENAME
+xmlstarlet ed -L -s "/extension/rootstrap" -t attr -n "architecture" -v "$ARCH" $PLUGIN_FILENAME
+xmlstarlet ed -L -s "/extension/rootstrap" -t attr -n "path" -v "$RS_PATH" $PLUGIN_FILENAME
+xmlstarlet ed -L -s "/extension/rootstrap" -t attr -n "supportToolchainType" -v "tizen.core" $PLUGIN_FILENAME
+
+xmlstarlet ed -L -s "/extension/rootstrap" -t elem -n "property" -v "" $PLUGIN_FILENAME
+xmlstarlet ed -L -s "/extension/rootstrap/property[last()]" -t attr -n "key" -v "DEV_PACKAGE_CONFIG_PATH" $PLUGIN_FILENAME
+xmlstarlet ed -L -s "/extension/rootstrap/property[last()]" -t attr -n "value" -v "$DEV_PACKAGE_CONFIG_PATH" $PLUGIN_FILENAME
+
+xmlstarlet ed -L -s "/extension/rootstrap" -t elem -n "property" -v "" $PLUGIN_FILENAME
+xmlstarlet ed -L -s "/extension/rootstrap/property[last()]" -t attr -n "key" -v "LINKER_MISCELLANEOUS_OPTION" $PLUGIN_FILENAME
+xmlstarlet ed -L -s "/extension/rootstrap/property[last()]" -t attr -n "value" -v "" $PLUGIN_FILENAME
+
+xmlstarlet ed -L -s "/extension/rootstrap" -t elem -n "property" -v "" $PLUGIN_FILENAME
+xmlstarlet ed -L -s "/extension/rootstrap/property[last()]" -t attr -n "key" -v "COMPILER_MISCELLANEOUS_OPTION" $PLUGIN_FILENAME
+xmlstarlet ed -L -s "/extension/rootstrap/property[last()]" -t attr -n "value" -v "" $PLUGIN_FILENAME
+
+# OLD tool options
+#xmlstarlet ed -L -s "/extension/rootstrap" -t elem -n "property" -v "" $PLUGIN_FILENAME
+#xmlstarlet ed -L -s "/extension/rootstrap/property[last()]" -t attr -n "key" -v "RS_LIBRARIES" $PLUGIN_FILENAME
+#xmlstarlet ed -L -s "/extension/rootstrap/property[last()]" -t attr -n "value" -v "$RS_LIB_OPT" $PLUGIN_FILENAME
+
+#xmlstarlet ed -L -s "/extension/rootstrap" -t elem -n "property" -v "" $PLUGIN_FILENAME
+#xmlstarlet ed -L -s "/extension/rootstrap/property[last()]" -t attr -n "key" -v "EDJE_CC" $PLUGIN_FILENAME
+#xmlstarlet ed -L -s "/extension/rootstrap/property[last()]" -t attr -n "value" -v "#{SBI_HOME}/../../platforms/tizen-${PLATFORM_VERSION}/common/efl-tool/efl-tools/bin/edje_cc" $PLUGIN_FILENAME
+# end OLD tool option - should be deprecated
+GCC_VERSION="4.9"
+LLVM_VERSION="3.6"
+
+if [[ "${PLATFORM_VERSION}" = "2.3"* ]]
+then
+    GCC_VERSION="4.6"
+    LLVM_VERSION="3.4"
+fi
+if [[ "${PLATFORM_VERSION}" = "4.0"* ]]
+then
+    GCC_VERSION="6.2"
+    LLVM_VERSION="4.0"
+fi
+
+if [[ "${PLATFORM_VERSION}" = "5.0"* ]]
+then
+    GCC_VERSION="6.2"
+    LLVM_VERSION="4.0"
+fi
+
+if [[ "${PLATFORM_VERSION}" = "5.5"* ]]
+then
+    GCC_VERSION="6.2"
+    LLVM_VERSION="4.0"
+fi
+
+if [[ "${PLATFORM_VERSION}" = "6.0"* ]]
+then
+    GCC_VERSION="9.2"
+    LLVM_VERSION="10.0"
+fi
+
+
+if [[ "${PLATFORM_VERSION}" = "6.5"* ]]
+then
+    GCC_VERSION="9.2"
+    LLVM_VERSION="10.0"
+fi
+
+if [[ "${PLATFORM_VERSION}" = "7.0"* ]]
+then
+    GCC_VERSION="9.2"
+    LLVM_VERSION="10.0"
+fi
+
+if [[ "${PLATFORM_VERSION}" = "7.5"* ]]
+then
+    GCC_VERSION="9.2"
+    LLVM_VERSION="10.0"
+fi
+
+# Deprecated LLVM version
+#xmlstarlet ed -L -s "/extension/rootstrap" -t elem -n "toolchain" -v "" $PLUGIN_FILENAME
+#xmlstarlet ed -L -s "/extension/rootstrap/toolchain[last()]" -t attr -n "name" -v "llvm" $PLUGIN_FILENAME
+#xmlstarlet ed -L -s "/extension/rootstrap/toolchain[last()]" -t attr -n "version" -v "${LLVM_VERSION}" $PLUGIN_FILENAME
+
+xmlstarlet ed -L -s "/extension/rootstrap" -t elem -n "toolchain" -v "" $PLUGIN_FILENAME
+xmlstarlet ed -L -s "/extension/rootstrap/toolchain[last()]" -t attr -n "name" -v "gcc" $PLUGIN_FILENAME
+xmlstarlet ed -L -s "/extension/rootstrap/toolchain[last()]" -t attr -n "version" -v "${GCC_VERSION}" $PLUGIN_FILENAME
+
+xmlstarlet ed -L -s "/extension/rootstrap" -t elem -n "tool" -v "" $PLUGIN_FILENAME
+xmlstarlet ed -L -s "/extension/rootstrap/tool[last()]" -t attr -n "name" -v "EDJE_CC" $PLUGIN_FILENAME
+xmlstarlet ed -L -s "/extension/rootstrap/tool[last()]" -t attr -n "version" -v "" $PLUGIN_FILENAME
+#xmlstarlet ed -L -s "/extension/rootstrap/tool[last()]" -t attr -n "path" -v "#{SBI_HOME}/../../platforms/tizen-${PLATFORM_VERSION}/common/efl-tool/efl-tools/bin/edje_cc" $PLUGIN_FILENAME
+xmlstarlet ed -L -s "/extension/rootstrap/tool[last()]" -t attr -n "path" -v "#{SBI_HOME}/../../platforms/tizen-7.0/common/efl-tool/efl-tools/bin/edje_cc" $PLUGIN_FILENAME
+
+if [ "$INTERNAL" = true ]; then
+xmlstarlet ed -L -s "/extension/rootstrap" -t elem -n "property" -v "" $PLUGIN_FILENAME
+xmlstarlet ed -L -s "/extension/rootstrap/property[last()]" -t attr -n "key" -v "TYPE" $PLUGIN_FILENAME
+xmlstarlet ed -L -s "/extension/rootstrap/property[last()]" -t attr -n "value" -v "private" $PLUGIN_FILENAME
+
+xmlstarlet ed -L -s "/extension/rootstrap" -t elem -n "property" -v "" $PLUGIN_FILENAME
+xmlstarlet ed -L -s "/extension/rootstrap/property[last()]" -t attr -n "key" -v "DEFAULT" $PLUGIN_FILENAME
+xmlstarlet ed -L -s "/extension/rootstrap/property[last()]" -t attr -n "value" -v "false" $PLUGIN_FILENAME
+fi
+
+}
+###########################################################################################
+
+#script start
+BUILD_OPT_INC_PATH=""
+BUILD_OPT_LIB_PATH=""
+BUILD_OPT_LIB_NAME=""
+BUILD_OPT_CLI_RS_LIBRARIES=""
+
+
+SCRIPT_NAME=$(basename ${0})
+SCRIPT_VER="0.0.1"
+SCRIPT_PATH=$(dirname ${0})
+
+INFO_FILE=$1; #OLD
+
+OPTS=`getopt -o -t:i:p:v:h --long type:,info:,profile:,version:,help,internal -- "$@"`
+if [ $? != 0 ] ; then log "Failed parsing options." >&2 ; exit 1 ; fi
+
+log "$SCRIPT_NAME PARAMETER : $OPTS"
+eval set -- "$OPTS"
+
+ROOTSTRAP_TYPE=""
+
+while true; do
+case "$1" in
+-t | --type ) ROOTSTRAP_TYPE="$2"; shift;shift ;;
+-i | --info ) INFO_FILE="$2"; shift; shift ;;
+-p | --profile ) PLATFORM_PROFILE="$2"; shift; shift ;;
+-v | --version ) PLATFORM_VERSION="$2"; shift; shift ;;
+-h | --help ) exit; shift; shift ;;
+--internal ) INTERNAL=true; shift ;;
+-- ) shift; break ;;
+* ) #print_usage_exit -1; 
+    break ;;
+esac
+done
+
+log "INFO_FILE = $INFO_FILE"
+log "ROOTSTRAP_TYPE = $ROOTSTRAP_TYPE"
+log "PLATFORM_PROFILE = $PLATFORM_PROFILE"
+log "PLATFORM_VERSION = $PLATFORM_VERSION"
+
+if [ -z "$PLATFORM_PROFILE" ] || [ -z "$PLATFORM_VERSION" ] #to support old version 
+then
+    source "$SCRIPT_PATH/../.rs-config"
+fi
+
+if [[ -z ${INFO_FILE} ]] || [[ ! -e ${INFO_FILE} ]]
+then
+    print_usage_exit
+fi
+
+
+PWD_BACKUP=`pwd`
+
+INFO_DEST=${PWD_BACKUP}/".info"
+PLUGIN_DEST=${PWD_BACKUP}/".plugin"
+
+log "################# Start Generate Rootstrap Plugin#################"
+
+#0. get build option from info file 
+get_build_option_from_infofile $INFO_FILE
+
+#generate rootstrap plugin
+if [ ! -e ${PLUGIN_DEST} ]
+then
+    mkdir ${PLUGIN_DEST};
+fi
+
+
+
+TEST=""
+for i in $BUILD_OPT_CLI_RS_LIBRARIES
+do
+    TEST+="$i ";
+done;
+
+RS_LIB_OPT=`echo "$TEST" | sed 's/ $//g'`;
+
+#echo "BUILD_OPT_INC_PATH=$BUILD_OPT_INC_PATH"
+#echo "BUILD_OPT_LIB_PATH=$BUILD_OPT_LIB_PATH"
+#echo "BUILD_OPT_LIB_NAME=$BUILD_OPT_LIB_NAME"
+#echo "RS_LIB_OPT=$RS_LIB_OPT"
+log "${INFO_FILE}"
+
+if [[ "${INFO_FILE}" == *"emulator64.core.dev.xml"* ]] || [[ "${INFO_FILE}" == *"emulator64.core.private.dev.xml"* ]]
+then 
+
+#emulator
+TYPE="emulator64"
+ARCH="x86_64"
+
+RS_PATH="#{SBI_HOME}/../../platforms/tizen-${PLATFORM_VERSION}/${PLATFORM_PROFILE}/rootstraps/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}.core"
+DEV_PACKAGE_CONFIG_PATH="#{SBI_HOME}/../../platforms/tizen-${PLATFORM_VERSION}/${PLATFORM_PROFILE}/rootstraps/info/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}.core.dev.xml"
+PLUGIN_FILENAME=${PLUGIN_DEST}/"$PLATFORM_PROFILE-$PLATFORM_VERSION-${TYPE}.core.xml"
+
+
+#if [ "$INTERNAL" = true ]; then
+#DEV_PACKAGE_CONFIG_PATH="#{SBI_HOME}/../../platforms/tizen-${PLATFORM_VERSION}/${PLATFORM_PROFILE}/rootstraps/info/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}.core.private.dev.xml"
+#PLUGIN_FILENAME=${PLUGIN_DEST}/"$PLATFORM_PROFILE-$PLATFORM_VERSION-${TYPE}.core.private.xml"
+#fi
+
+log "TYPE = $TYPE"
+log "ARCH = $ARCH"
+log "RS_PATH = $RS_PATH"
+log "DEV_PACKAGE_CONFIG_PATH = $DEV_PACKAGE_CONFIG_PATH"
+log "PLUGIN_FILENAME = $PLUGIN_FILENAME"
+
+if [ -e ${PLUGIN_FILENAME} ]
+then
+    rm ${PLUGIN_FILENAME};
+fi
+
+generate_plugin
+fi
+
+if [[ "{$INFO_FILE}" == *"device64.core.dev.xml"* ]] || [[ "$INFO_FILE" == *"device64.core.private.dev.xml"* ]]
+then 
+
+#device
+TYPE="device64"
+ARCH="aarch64"
+
+RS_PATH="#{SBI_HOME}/../../platforms/tizen-${PLATFORM_VERSION}/${PLATFORM_PROFILE}/rootstraps/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}.core"
+DEV_PACKAGE_CONFIG_PATH="#{SBI_HOME}/../../platforms/tizen-${PLATFORM_VERSION}/${PLATFORM_PROFILE}/rootstraps/info/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}.core.dev.xml"
+PLUGIN_FILENAME=${PLUGIN_DEST}/"$PLATFORM_PROFILE-$PLATFORM_VERSION-${TYPE}.core.xml"
+
+
+#if [ "$INTERNAL" = true ]; then
+#DEV_PACKAGE_CONFIG_PATH="#{SBI_HOME}/../../platforms/tizen-${PLATFORM_VERSION}/${PLATFORM_PROFILE}/rootstraps/info/${PLATFORM_PROFILE}-${PLATFORM_VERSION}-${TYPE}.core.private.dev.xml"
+#PLUGIN_FILENAME=${PLUGIN_DEST}/"$PLATFORM_PROFILE-$PLATFORM_VERSION-${TYPE}.core.private.xml"
+#fi
+
+log "TYPE = $TYPE"
+log "ARCH = $ARCH"
+log "RS_PATH = $RS_PATH"
+log "DEV_PACKAGE_CONFIG_PATH = $DEV_PACKAGE_CONFIG_PATH"
+log "PLUGIN_FILENAME = $PLUGIN_FILENAME"
+
+if [ -e ${PLUGIN_FILENAME} ]
+then
+    rm ${PLUGIN_FILENAME};
+fi
+
+generate_plugin
+
+else
+log "No File : $INFO_FILE"
+fi
+
+#log "######################## END  [$SECONDS] Sec ##############################" 1>&2
+
+exit 0