#!/bin/sh -e
-TMP_LIB_DIR="$SRCDIR/lib"
-TMP_DEV_DIR="$SRCDIR/dev"
-TMP_DEV_INCLUDE_DIR="$TMP_DEV_DIR/include/"
-TMP_DEV_LIB_DIR="$TMP_DEV_DIR/lib/"
-TMP_DEV_BIN_DIR="$TMP_DEV_DIR/bin/"
-TMP_SWT_DIR="$SRCDIR/swt"
OS_COMMON_DIR="$ROOTDIR/os-common"
-LIB_PACKAGE_DIR="$SRCDIR/package/${BUILD_LIB_PACKAGE}.package.${TARGET_OS}/data/platforms/tizen-3.0/common/emulator/bin/"
-DEV_PACKAGE_DIR="$SRCDIR/package/${BUILD_DEV_PACKAGE}.package.${TARGET_OS}/data/"
-SWT_PACKAGE_DIR="$SRCDIR/package/${BUILD_DEV_PACKAGE}.package.${TARGET_OS}/data/swt_4.3/"
+LIB_PACKAGE_DIR="$SRCDIR/package/${BUILD_LIB_PACKAGE}.package.${TARGET_OS}/data/platforms/tizen-3.0/common/emulator/bin"
+DEV_PACKAGE_DIR="$SRCDIR/package/${BUILD_DEV_PACKAGE}.package.${TARGET_OS}/data"
RESULT_CONTAINS=contains
RESULT_NOT_CONTAINS=not_contains
fi
}
-# $1: mf file path (e.g. xxx.mf)
-exists_file()
-{
- FILE=${1%%.mf}
- if [ ! -f "$FILE" ];then
- echo $FILE does not exist.
- exit 1
- fi
- echo "$FILE"
-}
-
# $1: file to set permission
-set_permission()
+set_file_permission()
{
string="$(/usr/bin/file "$1")"
substring="executable"
# if not, set 644 permission
if test "${string#*$substring}" != "$string"
then
- echo "$1 is excutable"
chmod 755 "$1"
else
chmod 644 "$1"
}
# $1: directory including files to set permission
-set_dev_permission()
+find_file_to_set_permission()
{
- echo "set file permission in this directory: $1"
for file in $(find "$1" -type f)
do
- set_permission "$file"
+ set_file_permission "$file"
echo "change the pemission of $file"
done
}
-# check if the file can be executed on the target os
-# $1: mf file name
-check_os()
+verify_swt()
{
- OSES=$(cat $1 | grep "OS:" | cut -d ':' -f2)
- if [ "$(contains_string "$OSES" "$TARGET_OS")" = "$RESULT_NOT_CONTAINS" ];then
- echo "$OSES not supported"
- exit 1
- fi
- echo "$OSES supported"
-}
+ TMP_SWT_DIR="$SRCDIR/swt"
-# $1: swt file path
-# TODO: checking version
-check_swt()
-{
- FILE=$(exists_file "$1")
+ if [ -d "$TMP_SWT_DIR" ] ; then
+ rm -rf "$TMP_SWT_DIR"
+ fi
+ mkdir -p "$TMP_SWT_DIR"
# especially check for swt.jar
- unzip -jo "$FILE" META-INF/MANIFEST.MF -d "$TMP_SWT_DIR"
+ unzip -jo "$1" META-INF/MANIFEST.MF -d "$TMP_SWT_DIR"
TEMP_SWT_WS=$(cat "$TMP_SWT_DIR/MANIFEST.MF" | grep "SWT-WS:" | cut -d ':' -f2)
SWT_WS=$(trim_string "$TEMP_SWT_WS")
if [ "$(contains_string "$SWT_WS" $BUILD_WS)" = "$RESULT_NOT_CONTAINS" ];then
fi
# if file type has excutable, set 755 permission. if not, set 644 permission
- set_permission "$FILE"
-
- # copy file if validation passed.
- echo "copy $FILE to $TMP_LIB_DIR"
- cp -pPR "$FILE" "$TMP_LIB_DIR"
+ set_file_permission "$1"
}
-# organize files in library directories
-# by copying the files into the following directories
-# include, lib, bin
-# $1: meta.mf file path
-organize_dev_file()
+# $1: BUILD_LIB_PACKAGE (e.g. 3.0-emulator-lib)
+# $2: DIRECTORY_PATH (optional)
+traverse_directory()
{
- DIR=$(dirname $1)
- if [ -d "$DIR/include" ] ; then
- cp -pPR "$DIR/include/"* "$TMP_DEV_INCLUDE_DIR"
- echo "copy "$DIR/include/*" to $TMP_DEV_INCLUDE_DIR"
- fi
- if [ -d "$DIR/lib" ] ; then
- cp -pPR "$DIR/lib/"* "$TMP_DEV_LIB_DIR"
- echo "copy "$DIR/lib/*" to $TMP_DEV_LIB_DIR"
- fi
- if [ -d "$DIR/bin" ] ; then
- cp -pPR "$DIR/bin/"* "$TMP_DEV_BIN_DIR"
- echo "copy "$DIR/bin/*" to $TMP_DEV_BIN_DIR"
+ if [ "$2" = "$OS_COMMON_DIR" ];then
+ TRAVERSE_DIRECTORY_PATH="$2"
+ else
+ TRAVERSE_DIRECTORY_PATH="$ROOTDIR/$TARGET_OS/*/"
fi
- for file in $(find "$DIR" -maxdepth 1 -type f)
+
+ for dirname in $(ls -d $TRAVERSE_DIRECTORY_PATH)
do
- cp -pPR "$file" "$TMP_DEV_DIR"
- echo "copy "$file" to $TMP_DEV_DIR"
+ cd $dirname
+ if [ -f "$dirname/dev.install" ];then
+ . dev.install
+ dev_install "$DEV_PACKAGE_DIR"
+ fi
+
+ if [ -f "$dirname/lib.install" ];then
+ . lib.install
+ lib_install "$LIB_PACKAGE_DIR"
+ fi
done
}
clean_common()
{
rm -rf "$SRCDIR"/*.zip
-
- rm -rf "$TMP_LIB_DIR"
- rm -rf "$TMP_DEV_DIR"
- rm -rf "$TMP_SWT_DIR"
}
prepare_common()
{
- echo "make temp directory for emulator install : ( $TMP_LIB_DIR )"
- mkdir "$TMP_LIB_DIR"
-
- echo "make temp directory for emulator install : ( $TMP_DEV_DIR )"
- mkdir "$TMP_DEV_DIR"
- echo "make temp directory for emulator install : ( $TMP_DEV_INCLUDE_DIR )"
- mkdir "$TMP_DEV_INCLUDE_DIR"
- echo "make temp directory for emulator install : ( $TMP_DEV_LIB_DIR )"
- mkdir "$TMP_DEV_LIB_DIR"
- echo "make temp directory for emulator install : ( $TMP_DEV_BIN_DIR )"
- mkdir "$TMP_DEV_BIN_DIR"
-
- echo "make temp directory for emulator install : ( $TMP_SWT_DIR )"
- mkdir "$TMP_SWT_DIR"
-}
-
-build_common()
-{
- set_dev_permission "$TMP_DEV_INCLUDE_DIR"
- set_dev_permission "$TMP_DEV_LIB_DIR"
- set_dev_permission "$TMP_DEV_BIN_DIR"
+ mkdir -p "$LIB_PACKAGE_DIR"
+ mkdir -p "$DEV_PACKAGE_DIR"
+ mkdir -p "$DEV_PACKAGE_DIR/lib"
+ mkdir -p "$DEV_PACKAGE_DIR/include"
+ mkdir -p "$DEV_PACKAGE_DIR/bin"
}
install_common()
{
- mkdir -p "$LIB_PACKAGE_DIR"
- mkdir -p "$DEV_PACKAGE_DIR"
- mkdir -p "$SWT_PACKAGE_DIR"
-
- # move for general case
- cp -f "$TMP_LIB_DIR"/swt.jar "$SWT_PACKAGE_DIR"
- mv -f "$TMP_LIB_DIR"/* "$LIB_PACKAGE_DIR"
- mv -f "$TMP_DEV_DIR"/* "$DEV_PACKAGE_DIR"
+ find_file_to_set_permission "$LIB_PACKAGE_DIR"
+ find_file_to_set_permission "$DEV_PACKAGE_DIR"
}
fi
}
-# $1: mf file path (e.g. xxx.mf)
-check_lib_file()
+# $1: directory path that library files are in
+verify_library()
{
- # include build.common source
- . $SRCDIR/package/build.common
-
- FILE=$(exists_file "$1")
- check_os "$1"
- if [ "${TARGET_OS}" = "windows-32" ];then
- check_archi_windows_32 "$FILE"
- elif [ "${TARGET_OS}" = "windows-64" ];then
- check_archi_windows_64 "$FILE"
- elif [ "${TARGET_OS}" = "ubuntu-32" ];then
- check_archi_ubuntu_32 "$FILE"
- elif [ "${TARGET_OS}" = "ubuntu-64" ];then
- check_archi_ubuntu_64 "$FILE"
+ if [ "${TARGET_OS}" = "windows-32" ] || [ "${TARGET_OS}" = "windows-64" ];then
+ LIBRARY_EXTENSION=dll
+ elif [ "${TARGET_OS}" = "ubuntu-32" ] || [ "${TARGET_OS}" = "ubuntu-64" ];then
+ LIBRARY_EXTENSION=so
fi
- set_permission "$FILE"
- # copy file if validation passed.
- echo "copy $FILE to $TMP_LIB_DIR"
- cp -pPR "$FILE" "$TMP_LIB_DIR"
+ for file in $(find "$1" -iname '*.'$LIBRARY_EXTENSION)
+ do
+ echo "$file"
+ if [ "${TARGET_OS}" = "windows-32" ];then
+ check_archi_windows_32 "$file"
+ elif [ "${TARGET_OS}" = "windows-64" ];then
+ check_archi_windows_64 "$file"
+ elif [ "${TARGET_OS}" = "ubuntu-32" ];then
+ check_archi_ubuntu_32 "$file"
+ elif [ "${TARGET_OS}" = "ubuntu-64" ];then
+ check_archi_ubuntu_64 "$file"
+ fi
+ done
}
-# $1: meta.mf file path
-check_dev_file()
+verify()
{
. $SRCDIR/package/build.common
- check_os "$1"
-
- # copy directory if validation passed.
- organize_dev_file "$1"
- # TODO: need checking architecture of libraries under DIR
-}
-
-# $1: root directory for traversing
-traverse_manifest()
-{
- . $SRCDIR/package/build.common
-
- for i in $(find "$1" -iname '*.mf')
- do
- TEMP_PACKAGE=$(cat "$i" | grep "Package:" | cut -d ':' -f2)
- PACKAGES=$(trim_string "$(echo "$TEMP_PACKAGE" | tr "," "\n")")
- BUILD_OK=0
-
- # if filename is meta.mf, it's used for packaging dev, lib
- for PACKAGE in $PACKAGES
- do
- if [ ! -e "$PACKAGE" ] && [ "$PACKAGE" = $BUILD_DEV_PACKAGE ];then
- # BUILD_OK=1 means this manifest file support current build project
- BUILD_OK=1
- check_dev_file "$i"
- fi
- if [ $BUILD_OK -eq 0 ];then
- echo "cannot find $BUILD_DEV_PACKAGE in $i skipped."
- fi
- if [ ! -e "$PACKAGE" ] && [ "$PACKAGE" = $BUILD_LIB_PACKAGE ];then
- BUILD_OK=1
-
- if [ "${BASENAME%%.mf}" = "swt.jar" ];then
- check_swt "$i"
- else
- check_lib_file "$i"
- fi
- fi
- if [ $BUILD_OK -eq 0 ];then
- echo "cannot find $BUILD_LIB_PACKAGE in $i skipped."
- fi
- done
- done
+ verify_library "$LIB_PACKAGE_DIR"
+ verify_library "$DEV_PACKAGE_DIR"
+ find_file_to_set_permission "$LIB_PACKAGE_DIR"
+ find_file_to_set_permission "$DEV_PACKAGE_DIR"
+ verify_swt "$LIB_PACKAGE_DIR/swt-4.3.jar"
+ verify_swt "$DEV_PACKAGE_DIR/swt-4.3.jar"
}
clean()
build()
{
- prepare
- . $SRCDIR/package/build.common
-
- echo "traverse_manifest $OS_COMMON_DIR"
- traverse_manifest "$OS_COMMON_DIR"
-
- echo "traverse_manifest $ROOTDIR/$TARGET_OS"
- traverse_manifest "$ROOTDIR/$TARGET_OS"
-
- build_common
+ echo "nothing to do."
}
install()
{
+ prepare
. $SRCDIR/package/build.common
+ traverse_directory "$BUILD_LIB_PACKAGE" "$ROOTDIR/os-common"
+ traverse_directory "$BUILD_LIB_PACKAGE"
+ verify
install_common
-
- if [ "${TARGET_OS}" = "windows-32" ] || [ "${TARGET_OS}" = "windows-64" ];then
- cp -pPR "$ROOTDIR/$TARGET_OS/Qt_5.3.1/plugins/imageformats" "$LIB_PACKAGE_DIR"
- cp -pPR "$ROOTDIR/$TARGET_OS/Qt_5.3.1/plugins/platforms" "$LIB_PACKAGE_DIR"
-
- elif [ "${TARGET_OS}" = "ubuntu-32" ] || [ "${TARGET_OS}" = "ubuntu-64" ];then
- cp -pPR "$ROOTDIR/$TARGET_OS/Qt_5.4.1/plugins/imageformats" "$LIB_PACKAGE_DIR"
- cp -pPR "$ROOTDIR/$TARGET_OS/Qt_5.4.1/plugins/platforms" "$LIB_PACKAGE_DIR"
- cp -pPR "$ROOTDIR/$TARGET_OS/Qt_5.4.1/plugins/platformthemes" "$LIB_PACKAGE_DIR"
- fi
}
echo "build success"
# add library to patch loader_path
for i in $(ls "$LIB_PACKAGE_DIR")
do
- FILE_RESULT="$(/usr/bin/file "$LIB_PACKAGE_DIR$i")"
+ FILE_RESULT="$(/usr/bin/file "$LIB_PACKAGE_DIR/$i")"
if [ $(contains_string "$FILE_RESULT" "dynamically linked shared library") == "contains" ];then
Libs[$cnt]="$i"
cnt=$cnt+1
for i in "${Libs[@]}"
do
# read line by line of otool result
- otool -L "$LIB_PACKAGE_DIR$i" | sed 1d | \
+ otool -L "$LIB_PACKAGE_DIR/$i" | sed 1d | \
while read j
do
# parse only loader path
exit 1
fi
- arr=( $(otool -L "$LIB_PACKAGE_DIR$i" | awk '/\/opt\/local\/lib/ { split($1,lib,"/"); print lib[5] }') )
+ arr=( $(otool -L "$LIB_PACKAGE_DIR/$i" | awk '/\/opt\/local\/lib/ { split($1,lib,"/"); print lib[5] }') )
for lib in "${arr[@]}"
do
echo $lib
if [ "$i" == "$lib" ]
then
# echo $i
- install_name_tool -id $i "$LIB_PACKAGE_DIR$i"
+ install_name_tool -id $i "$LIB_PACKAGE_DIR/$i"
else
- install_name_tool -change /opt/local/lib/$lib @loader_path/$lib "$LIB_PACKAGE_DIR$i"
+ install_name_tool -change /opt/local/lib/$lib @loader_path/$lib "$LIB_PACKAGE_DIR/$i"
fi
done
- arr2=( $(otool -L "$LIB_PACKAGE_DIR$i" | awk '/\/opt\/local\/Library/ { split($1,lib,"/"); print lib[9] }') )
+ arr2=( $(otool -L "$LIB_PACKAGE_DIR/$i" | awk '/\/opt\/local\/Library/ { split($1,lib,"/"); print lib[9] }') )
for lib in "${arr2[@]}"
do
echo $lib
if [ "$i" == "$lib" ]
then
# echo $i
- install_name_tool -id $i "$LIB_PACKAGE_DIR$i"
+ install_name_tool -id $i "$LIB_PACKAGE_DIR/$i"
else
- install_name_tool -change /opt/local/Library/Frameworks/$lib.framework/Versions/5/$lib @loader_path/$lib "$LIB_PACKAGE_DIR$i"
+ install_name_tool -change /opt/local/Library/Frameworks/$lib.framework/Versions/5/$lib @loader_path/$lib "$LIB_PACKAGE_DIR/$i"
fi
done
done
echo "$1 has not the supported architecture"
exit 1
fi
+ echo "$1 has the supported architecture"
fi
}
-# $1: mf file path (e.g. xxx.mf)
-check_lib_file()
+# $1: directory path that library files are in
+verify_library()
{
- # include build.common source
- . $SRCDIR/package/build.common
-
- FILE=$(exists_file "$1")
- check_os "$1"
- check_archi_macos_64 "$FILE"
- set_permission "$FILE"
+ LIBRARY_EXTENSION=dylib
- # copy file if validation passed.
- echo "copy $FILE to $TMP_LIB_DIR"
- cp -pPR "$FILE" "$TMP_LIB_DIR"
+ for file in $(find "$1" -iname '*.'$LIBRARY_EXTENSION)
+ do
+ echo "$file"
+ check_archi_macos_64 "$file"
+ done
}
-# $1: meta.mf file path
-check_dev_file()
+verify()
{
. $SRCDIR/package/build.common
- check_os "$1"
-
- # copy directory if validation passed.
- organize_dev_file "$1"
- # TODO: need checking architecture of libraries under DIR
+ verify_library "$LIB_PACKAGE_DIR"
+ verify_library "$DEV_PACKAGE_DIR"
+ find_file_to_set_permission "$LIB_PACKAGE_DIR"
+ find_file_to_set_permission "$DEV_PACKAGE_DIR"
+ verify_swt "$LIB_PACKAGE_DIR/swt-4.3.jar"
+ verify_swt "$DEV_PACKAGE_DIR/swt-4.3.jar"
}
-# $1: root directory for traversing
-traverse_manifest()
+clean()
{
. $SRCDIR/package/build.common
-
- for i in $(find "$1" -iname '*.mf')
- do
- TEMP_PACKAGE=$(cat "$i" | grep "Package:" | cut -d ':' -f2)
- PACKAGES=$(trim_string "$(echo "$TEMP_PACKAGE" | tr "," "\n")")
- BUILD_OK=0
-
- # if filename is meta.mf, it's used for packaging dev, lib
- for PACKAGE in $PACKAGES
- do
- if [ ! -e "$PACKAGE" ] && [ "$PACKAGE" == $BUILD_DEV_PACKAGE ];then
- # BUILD_OK=1 means this manifest file support current build project
- BUILD_OK=1
- check_dev_file "$i"
- fi
- if [ $BUILD_OK -eq 0 ];then
- echo "cannot find $BUILD_DEV_PACKAGE in $i skipped."
- fi
- if [ ! -e "$PACKAGE" ] && [ "$PACKAGE" == $BUILD_LIB_PACKAGE ];then
- BUILD_OK=1
-
- if [ "${BASENAME%%.mf}" == "swt.jar" ];then
- check_swt "$i"
- else
- check_lib_file "$i"
- fi
- fi
- if [ $BUILD_OK -eq 0 ];then
- echo "cannot find $BUILD_LIB_PACKAGE in $i skipped."
- fi
- done
- done
+ clean_common
}
prepare()
prepare_common
}
-clean()
-{
- . $SRCDIR/package/build.common
- clean_common
-}
-
build()
{
- prepare
- . $SRCDIR/package/build.common
-
- echo "traverse_manifest $OS_COMMON_DIR"
- traverse_manifest "$OS_COMMON_DIR"
-
- echo "traverse_manifest $ROOTDIR/$TARGET_OS"
- traverse_manifest "$ROOTDIR/$TARGET_OS"
-
- build_common
+ echo "nothing to do."
}
install()
{
+ prepare
. $SRCDIR/package/build.common
+ traverse_directory "$BUILD_LIB_PACKAGE" "$ROOTDIR/os-common"
+ traverse_directory "$BUILD_LIB_PACKAGE"
+ verify
install_common
-
- cp -pPR "$ROOTDIR/$TARGET_OS/Qt_5.3.1/plugins/imageformats" "$LIB_PACKAGE_DIR"
- cp -pPR "$ROOTDIR/$TARGET_OS/Qt_5.3.1/plugins/platforms" "$LIB_PACKAGE_DIR"
-
patch_loader_path
}