GLOBAL_ERROR="0"
-OPT_TARGET=false
-OPT_EMULATOR=false
+OPT_TARGET=true
+OPT_EMULATOR=true
OPT_DOWNLOAD_RPM=false
OPT_CLEAN=false
OPT_CONF=""
if [ "$OPT_TARGET" = false ] && [ "$OPT_EMULATOR" = false ]
then
OPT_TARGET=true
- OPT_EMULATOR=false
+ OPT_EMULATOR=true
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-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
--- /dev/null
+#!/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
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"
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}] ... "
+ )
}
#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
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"
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
#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
###############################################################################
--- /dev/null
+#!/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
# 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/"
--- /dev/null
+#/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
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
--- /dev/null
+#!/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
##################################################################
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
--- /dev/null
+#!/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
--- /dev/null
+#!/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
--- /dev/null
+#!/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