From: Munkyu Im Date: Mon, 20 Jul 2015 09:17:42 +0000 (+0900) Subject: package: integrity emulator-lib and emulator-lib-dev X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7e927cc9b8e905d1968537e264e6388b113de1ff;p=sdk%2Femulator%2Femulator-lib.git package: integrity emulator-lib and emulator-lib-dev packaging both packages in one git. add setting permission modify checking swt.jar Change-Id: Iedbf7af8247c9cd3b5b13a3a0769e5179a6f3483 Signed-off-by: Munkyu Im --- diff --git a/package/2.4-emulator-lib-dev.install.macos-64 b/package/2.4-emulator-lib-dev.install.macos-64 new file mode 100755 index 0000000..4d0af2d --- /dev/null +++ b/package/2.4-emulator-lib-dev.install.macos-64 @@ -0,0 +1,28 @@ +#!/bin/sh -xe + +PKG_INSTALL_PATH=${INSTALLED_PATH} +if [ -z $PKG_INSTALL_PATH ] +then + exit 2; +fi +echo $PKG_INSTALL_PATH + +## adjust pkgconfig (.pc) file + +FIND_PC=`find ${PKG_INSTALL_PATH} -name '*.pc'` + +for pc in ${FIND_PC}; do + echo "$pc" + + LIB_DIR=$pc + for i in 1 2 3; do + LIB_DIR=`dirname $LIB_DIR` + done + echo $LIB_DIR + + for line in `grep -n '^prefix=' ${pc} | cut -f 1 -d :`; do + echo "$line" + done + sed -i ".bak" -e '/^prefix/c\' -e "${line}s|^|prefix=${LIB_DIR}|" $pc + rm ${pc}.bak +done diff --git a/package/2.4-emulator-lib-dev.install.ubuntu-32 b/package/2.4-emulator-lib-dev.install.ubuntu-32 new file mode 100755 index 0000000..2c0d53d --- /dev/null +++ b/package/2.4-emulator-lib-dev.install.ubuntu-32 @@ -0,0 +1,33 @@ +#!/bin/sh -xe + +PKG_INSTALL_PATH=${INSTALLED_PATH} +if [ -z $PKG_INSTALL_PATH ] +then + exit 2; +fi +echo $PKG_INSTALL_PATH + +## adjust pkgconfig (.pc) file + +FIND_PC=`find ${PKG_INSTALL_PATH} -name '*.pc'` + +for pc in ${FIND_PC}; do + echo "$pc" + + LIB_DIR=$pc + + for i in 1 2 3; do + LIB_DIR=`dirname $LIB_DIR` + done + echo $LIB_DIR + + for line in `grep -n '^prefix=' ${pc} | cut -f 1 -d :`; do + echo "$line" + done + + sed -i '/^prefix=/!b;c\prefix=${LIBDIR}' $pc + sed -i "1s|^|LIBDIR=${LIB_DIR}\n|" $pc + + #sed -i ".bak" -e '/^prefix/c\' -e "${line}s|^|prefix=${LIB_DIR}|" $pc + #rm ${pc}.bak +done diff --git a/package/2.4-emulator-lib-dev.install.ubuntu-64 b/package/2.4-emulator-lib-dev.install.ubuntu-64 new file mode 100755 index 0000000..2c0d53d --- /dev/null +++ b/package/2.4-emulator-lib-dev.install.ubuntu-64 @@ -0,0 +1,33 @@ +#!/bin/sh -xe + +PKG_INSTALL_PATH=${INSTALLED_PATH} +if [ -z $PKG_INSTALL_PATH ] +then + exit 2; +fi +echo $PKG_INSTALL_PATH + +## adjust pkgconfig (.pc) file + +FIND_PC=`find ${PKG_INSTALL_PATH} -name '*.pc'` + +for pc in ${FIND_PC}; do + echo "$pc" + + LIB_DIR=$pc + + for i in 1 2 3; do + LIB_DIR=`dirname $LIB_DIR` + done + echo $LIB_DIR + + for line in `grep -n '^prefix=' ${pc} | cut -f 1 -d :`; do + echo "$line" + done + + sed -i '/^prefix=/!b;c\prefix=${LIBDIR}' $pc + sed -i "1s|^|LIBDIR=${LIB_DIR}\n|" $pc + + #sed -i ".bak" -e '/^prefix/c\' -e "${line}s|^|prefix=${LIB_DIR}|" $pc + #rm ${pc}.bak +done diff --git a/package/2.4-emulator-lib-dev.install.windows-32 b/package/2.4-emulator-lib-dev.install.windows-32 new file mode 100755 index 0000000..9bf2ce2 --- /dev/null +++ b/package/2.4-emulator-lib-dev.install.windows-32 @@ -0,0 +1,13 @@ +@echo off + +setlocal enabledelayedexpansion +set PC_PATH=%INSTALLED_PATH:"=%\*.pc + +@echo %PC_PATH% + +FOR /F %%i in ('dir /s /b %PC_PATH%') DO ( +@echo %%i +@echo prefix= >> %%i.bak +findstr /V "^prefix" %%i >> %%i.bak +move /Y %%i.bak %%i +) diff --git a/package/2.4-emulator-lib-dev.install.windows-64 b/package/2.4-emulator-lib-dev.install.windows-64 new file mode 100755 index 0000000..9bf2ce2 --- /dev/null +++ b/package/2.4-emulator-lib-dev.install.windows-64 @@ -0,0 +1,13 @@ +@echo off + +setlocal enabledelayedexpansion +set PC_PATH=%INSTALLED_PATH:"=%\*.pc + +@echo %PC_PATH% + +FOR /F %%i in ('dir /s /b %PC_PATH%') DO ( +@echo %%i +@echo prefix= >> %%i.bak +findstr /V "^prefix" %%i >> %%i.bak +move /Y %%i.bak %%i +) diff --git a/package/build.macos-64 b/package/build.macos-64 index 47dba1c..f474e5f 100644 --- a/package/build.macos-64 +++ b/package/build.macos-64 @@ -1,39 +1,38 @@ #!/bin/sh -e BUILD_ARCH=x86_64 -BUILD_PACKAGE=2.4-emulator-lib -BUILD_SW=cocoa -TMP_DIR="$SRCDIR/data" +BUILD_LIB_PACKAGE=2.4-emulator-lib +BUILD_DEV_PACKAGE=2.4-emulator-lib-dev +BUILD_WS=cocoa +TMP_LIB_DIR="$SRCDIR/lib" +TMP_DEV_DIR="$SRCDIR/dev" +TMP_SWT_DIR="$SRCDIR/swt" META_MF=meta.mf OS_COMMON_DIR="$ROOTDIR/os-common" -BIN_DIR="$SRCDIR/package/${BUILD_PACKAGE}.package.${TARGET_OS}/data/platforms/tizen-2.4/common/emulator/bin/" -# general .mf example -#Extension: dylib -#Usage: check-net -#Version: 8.0 //get from "file" command -#OS: ubuntu-32 -#Arch: x86_64 -#Package: emulator-lib -#License: +LIB_PACKAGE_DIR="$SRCDIR/package/${BUILD_LIB_PACKAGE}.package.${TARGET_OS}/data/platforms/tizen-2.4/common/emulator/bin/" +DEV_PACKAGE_DIR="$SRCDIR/package/${BUILD_DEV_PACKAGE}.package.${TARGET_OS}/data/" +RESULT_CONTAINS=contains +RESULT_NOT_CONTAINS=not_contains patch_loader_path() { - cd $BIN_DIR - # Libs[] is an array. declare -a Libs - cnt=0 + declare -i cnt=0 # add library to patch loader_path - for i in $(ls *.dylib) QtCore QtGui QtOpenGL QtPrintSupport QtWidgets + for i in $(ls $LIB_PACKAGE_DIR) do - Libs[cnt]=$i - cnt+=1 + 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 + fi done for i in "${Libs[@]}" do # read line by line of otool result - otool -L $i | sed 1d | \ + otool -L "$LIB_PACKAGE_DIR$i" | sed 1d | \ while read j do # parse only loader path @@ -50,28 +49,28 @@ patch_loader_path() exit 1 fi - arr=( $(otool -L $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 $i + install_name_tool -id $i "$LIB_PACKAGE_DIR$i" else - install_name_tool -change /opt/local/lib/$lib @loader_path/$lib $i + install_name_tool -change /opt/local/lib/$lib @loader_path/$lib "$LIB_PACKAGE_DIR$i" fi done - arr2=( $(otool -L $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 $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 $i + install_name_tool -change /opt/local/Library/Frameworks/$lib.framework/Versions/5/$lib @loader_path/$lib "$LIB_PACKAGE_DIR$i" fi done done @@ -81,8 +80,8 @@ patch_loader_path() patch_for_other_dir() { - IMAGEFORMATS_DIR=$BIN_DIR/imageformats - PLATFORMS_DIR=$BIN_DIR/platforms + IMAGEFORMATS_DIR=$LIB_PACKAGE_DIR/imageformats + PLATFORMS_DIR=$LIB_PACKAGE_DIR/platforms for i in $PLATFORMS_DIR/libqcocoa.dylib $(ls $IMAGEFORMATS_DIR/*.dylib) do @@ -122,72 +121,138 @@ trim_string() echo "$trimmed" } -contains() +# $1: source string +# $2: string to search for +contains_string() { string="$1" substring="$2" if test "${string#*$substring}" != "$string" then - echo $substring is in $string + echo "$RESULT_CONTAINS" else - echo $substring is not in $string - exit 1 + echo "$RESULT_NOT_CONTAINS" fi } +# $1: file to set permission +set_permission() +{ + string="$(/usr/bin/file "$1")" + substring="executable" + if test "${string#*$substring}" != "$string" + then + echo $1 is excutable + chmod 755 "$1" + else + chmod 644 "$1" + fi +} + +# $1: swt file path +# TODO: checking version check_swt() { + FILE=${1%%.mf} + if [ ! -f "$FILE" ];then + echo $FILE does not exist. + exit 1 + fi + # especially check for swt.jar - unzip $2 - TEMP_SWT_WS=$(cat $2/META-INF/MANIFEST.MF | grep "SWT-WS:" | cut -d ':' -f2) - SWT_WS=$(trim_string $TEMP_SWT_WS) - if [ $SWT_WS != $BUILD_WS ];then - echo $SWT_WS is not supported. + unzip -jo "$FILE" 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 + echo "$SWT_SW not supported" exit 1 - fi - TEMP_SWT_ARCH=$(cat $2/META-INF/MANIFEST.MF | grep "SWT-Arch:" | cut -d ':' -f2) - SWT_ARCH=$(trim_string $TEMP_SWT_ARCH) - if [ $SWT_ARCH != $BUILD_ARCH ];then - echo $SWT_ARCH is not supported. + fi + + TEMP_SWT_ARCH=$(cat $TMP_SWT_DIR/MANIFEST.MF | grep "SWT-Arch:" | cut -d ':' -f2) + SWT_ARCH=$(trim_string $TEMP_SWT_ARCH) + if [ "$(contains_string $SWT_ARCH $BUILD_ARCH)" == "$RESULT_NOT_CONTAINS" ];then + echo "$SWT_ARCH not supported" exit 1 - fi + 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 } # $1: mf file path (e.g. xxx.mf) -# $2: original binary/library file path (e.g. xxx.dylib) -check_file() +check_lib_file() { - # check arch from mf file - ARCHS=$(cat $1 | grep "Arch:" | cut -d ':' -f2) - contains "$ARCHS" $BUILD_ARCH - # do not use file command if file extension is not dylib. - if [ "$EXTENSION" == "dylib" ];then - ARCH_RESULT=$(file $2) - contains "$ARCH_RESULT" $BUILD_ARCH + FILE=${1%%.mf} + if [ ! -f "$FILE" ];then + echo $FILE does not exist. + exit 1 + fi + + FILE_RESULT="$(/usr/bin/file $FILE)" + # check architure if file is dynamic library + if [ "$(contains_string $FILE_RESULT "dynamically linked shared library")" == "$RESULT_CONTAINS" ];then + if [ "$(contains_string $FILE_RESULT $BUILD_ARCH)" == "$RESULT_NOT_CONTAINS" ];then + echo "$ARCHS not supported" + exit 1 + fi fi - # TODO: some libraries do not have extension. need handling # check OS OSES=$(cat $i | grep "OS:" | cut -d ':' -f2) - contains "$OSES" $TARGET_OS + if [ "$(contains_string "$OSES" $TARGET_OS)" == "$RESULT_NOT_CONTAINS" ];then + echo "$OSES not supported" + exit 1 + fi + + # if file type has excutable, set 755 permission. if not, set 644 permission + set_permission "$FILE" # copy file if validation passed. - echo "move $2 to $TMP_DIR" - mv -f "$2" $TMP_DIR + echo "copy $FILE to $TMP_LIB_DIR" + cp -pPR "$FILE" $TMP_LIB_DIR +} + +# $1: meta.mf file path +check_dev_file() { + # check OS + TEMP_OS=$(cat $1 | grep "OS:" | cut -d ':' -f2) + OS=$(trim_string $TEMP_OS) + if [ "$OS" != "$TARGET_OS" ];then + echo "OS is not matched. build OS is ${TARGET_OS}, but yours is $OS" + exit 1 + fi + + # copy directory if validation passed. + DIR=$(dirname $1) + # TODO: need checking architecture of libraries under DIR + echo "copy $DIR to $TMP_DEV_DIR" + cp -pPR $DIR $TMP_DEV_DIR } clean() { rm -rf $SRCDIR/*.zip - rm -rf $SRCDIR/*.tar.gz + + rm -rf $TMP_LIB_DIR + rm -rf $TMP_DEV_DIR + rm -rf $TMP_SWT_DIR } prepare() { - if [ ! -d $TMP_DIR ] + if [ ! -d $TMP_DEV_DIR ] + then + echo "make temp directory for emulator install : ( $TMP_DEV_DIR )" + mkdir $TMP_DEV_DIR + fi + if [ ! -d $TMP_LIB_DIR ] then - echo "make temp directory for emulator install : ( $TMP_DIR )" - mkdir $TMP_DIR + echo "make temp directory for emulator install : ( $TMP_LIB_DIR )" + mkdir $TMP_LIB_DIR fi + } # $1: root directory for traversing @@ -197,59 +262,47 @@ traverse_manifest() for i in $(find $1 -iname '*.mf') do # skip if filename is meta.mf it's used for packaging dev - if [ "$META_MF" == $(basename "$i") ];then - echo "skip $i" - continue - fi - - TEMP_PACKAGE=$(cat "$i" | grep "Package:" | cut -d ':' -f2) - PACKAGES=$(trim_string "$(echo $TEMP_PACKAGE | tr "," "\n")") - TEMP_EXTENSION=$(cat "$i" | grep "Extension:" | cut -d ':' -f2) - EXTENSIONS=$(trim_string "$(echo $TEMP_EXTENSION | tr "," "\n")") - BUILD_OK=0 - for PACKAGE in $PACKAGES - do - if [ ! -e "$PACKAGE" ] && [ "$PACKAGE" == $BUILD_PACKAGE ] - then - # BUILD_OK=1 means this manifest file support current build project - BUILD_OK=1 - - # find origin file(s) from manifest file - TRIM_EXTENSIONS=$(trim_string "$EXTENSIONS") - if [ "x" == "$TRIM_EXTENSIONS"x ];then - # used for Qt library. they do not have extension. - FILE=${i%%.mf} - check_file "$i" "$FILE" - else - for EXTENSION in $EXTENSIONS - do - echo found \"$PACKAGE\" in $i - - if [ ! -e $EXTENSION ] - then - FILE=${i%%.mf}.$EXTENSION - else - FILE=${i%%.mf} - fi - if [ ! -f "$FILE" ] ;then - echo $FILE does not exist. - exit 1 - fi - if [ $(basename $i) == swt ];then - check_swt "$i" "$FILE" - else - check_file "$i" "$FILE" - fi - done + BASENAME="$(basename "$i")" + if [ "$META_MF" == "$BASENAME" ];then + TEMP_PACKAGE=$(cat "$i" | grep "Package:" | cut -d ':' -f2) + PACKAGES=$(trim_string "$(echo $TEMP_PACKAGE | tr "," "\n")") + BUILD_OK=0 + 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 + done + if [ $BUILD_OK -eq 0 ];then + echo "cannot find $BUILD_LIB_PACKAGE in $i skipped." + fi + else + TEMP_PACKAGE=$(cat "$i" | grep "Package:" | cut -d ':' -f2) + PACKAGES=$(trim_string "$(echo $TEMP_PACKAGE | tr "," "\n")") + BUILD_OK=0 + for PACKAGE in $PACKAGES + do + if [ ! -e "$PACKAGE" ] && [ "$PACKAGE" == $BUILD_LIB_PACKAGE ];then + # BUILD_OK=1 means this manifest file support current build project + BUILD_OK=1 + + # find origin file(s) from manifest file + echo found \"$PACKAGE\" in $i + + if [ "${BASENAME%%.mf}" == "swt.jar" ];then + check_swt "$i" + else + check_lib_file "$i" + fi + fi + done + if [ $BUILD_OK -eq 0 ];then + echo "cannot find $BUILD_LIB_PACKAGE in $i skipped." fi - done - if [ $BUILD_OK -eq 0 ] - then - echo "cannot find $BUILD_PACKAGE in $i skipped." fi done - } build() @@ -264,28 +317,28 @@ build() install() { - PLATFORMS_DIR=$TMP_DIR/platforms/ - IMAGEFORMATS_DIR=$TMP_DIR/imageformats/ + PLATFORMS_DIR=$TMP_LIB_DIR/platforms/ + IMAGEFORMATS_DIR=$TMP_LIB_DIR/imageformats/ # make directory structure - mkdir -p $BIN_DIR + mkdir -p $LIB_PACKAGE_DIR mkdir -p $PLATFORMS_DIR mkdir -p $IMAGEFORMATS_DIR + mkdir -p $DEV_PACKAGE_DIR # move for specific cases - mv $TMP_DIR/libqcocoa.dylib $PLATFORMS_DIR - mv $TMP_DIR/libqgif.dylib $IMAGEFORMATS_DIR - mv $TMP_DIR/libqicns.dylib $IMAGEFORMATS_DIR - mv $TMP_DIR/libqjpeg.dylib $IMAGEFORMATS_DIR - mv $TMP_DIR/libqico.dylib $IMAGEFORMATS_DIR + cp -f $TMP_LIB_DIR/libqcocoa.dylib $PLATFORMS_DIR + cp -f $TMP_LIB_DIR/libqgif.dylib $IMAGEFORMATS_DIR + cp -f $TMP_LIB_DIR/libqicns.dylib $IMAGEFORMATS_DIR + cp -f $TMP_LIB_DIR/libqjpeg.dylib $IMAGEFORMATS_DIR + cp -f $TMP_LIB_DIR/libqico.dylib $IMAGEFORMATS_DIR # move for general case - mv -f $TMP_DIR/* $BIN_DIR + mv -f $TMP_LIB_DIR/* $LIB_PACKAGE_DIR patch_loader_path - # after done, remove temp - rm -rf $TMP_DIR + mv -f $TMP_DEV_DIR/* $DEV_PACKAGE_DIR } [ "$1" = "clean" ] && clean diff --git a/package/build.ubuntu-32 b/package/build.ubuntu-32 index e665a43..20882da 100755 --- a/package/build.ubuntu-32 +++ b/package/build.ubuntu-32 @@ -1,27 +1,18 @@ -#!/bin/sh -xe +#!/bin/sh -e -BUILD_ARCH=i386 -BUILD_PACKAGE=2.4-emulator-lib +BUILD_ARCH=x86 +BUILD_LIB_PACKAGE=2.4-emulator-lib +BUILD_DEV_PACKAGE=2.4-emulator-lib-dev BUILD_WS=gtk +TMP_LIB_DIR="$SRCDIR/lib" +TMP_DEV_DIR="$SRCDIR/dev" +TMP_SWT_DIR="$SRCDIR/swt" META_MF=meta.mf -TMP_DIR="$SRCDIR/data" OS_COMMON_DIR="$ROOTDIR/os-common" -BIN_DIR="$SRCDIR/package/${BUILD_PACKAGE}.package.${TARGET_OS}/data/platforms/tizen-2.4/common/emulator/bin/" - -clean() -{ - rm -rf $SRCDIR/*.zip - rm -rf $SRCDIR/*.tar.gz -} - -prepare() -{ - if [ ! -d $TMP_DIR ] - then - echo "make temp directory for emulator install : ( $TMP_DIR )" - mkdir $TMP_DIR - fi -} +LIB_PACKAGE_DIR="$SRCDIR/package/${BUILD_LIB_PACKAGE}.package.${TARGET_OS}/data/platforms/tizen-2.4/common/emulator/bin/" +DEV_PACKAGE_DIR="$SRCDIR/package/${BUILD_DEV_PACKAGE}.package.${TARGET_OS}/data/" +RESULT_CONTAINS=contains +RESULT_NOT_CONTAINS=not_contains trim_string() { @@ -32,60 +23,140 @@ trim_string() echo "$trimmed" } -contains() { +# $1: source string +# $2: string to search for +contains_string() +{ string="$1" substring="$2" if test "${string#*$substring}" != "$string" then - echo $substring is in $string + echo "$RESULT_CONTAINS" else - echo $substring is not in $string - exit 1 + echo "$RESULT_NOT_CONTAINS" fi } -# $1: mf file path (swt.mf) -# $2: original swt.jar file path (e.g. data/ubuntu-64/swt.jar) +# $1: file to set permission +set_permission() +{ + string="$(/usr/bin/file "$1")" + substring="executable" + if test "${string#*$substring}" != "$string" + then + echo $1 is excutable + chmod 755 "$1" + else + chmod 644 "$1" + fi +} + +# $1: swt file path +# TODO: checking version check_swt() { + FILE=${1%%.mf} + if [ ! -f "$FILE" ];then + echo $FILE does not exist. + exit 1 + fi + # especially check for swt.jar - unzip $2 - TEMP_SWT_WS=$(cat $2/META-INF/MANIFEST.MF | grep "SWT-WS:" | cut -d ':' -f2) + unzip -jo "$FILE" 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 [ $SWT_WS != $BUILD_WS ];then - echo $SWT_WS is not supported. + if [ "$(contains_string $SWT_WS $BUILD_WS)" = "$RESULT_NOT_CONTAINS" ];then + echo "$SWT_SW not supported" exit 1 fi - TEMP_SWT_ARCH=$(cat $2/META-INF/MANIFEST.MF | grep "SWT-Arch:" | cut -d ':' -f2) + + TEMP_SWT_ARCH=$(cat $TMP_SWT_DIR/MANIFEST.MF | grep "SWT-Arch:" | cut -d ':' -f2) SWT_ARCH=$(trim_string $TEMP_SWT_ARCH) - if [ $SWT_ARCH != "x86" ];then - echo $SWT_ARCH is not supported. + if [ "$(contains_string $SWT_ARCH $BUILD_ARCH)" = "$RESULT_NOT_CONTAINS" ];then + echo "$SWT_ARCH not supported" exit 1 fi - mv -f "$2" $TMP_DIR + # 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 } # $1: mf file path (e.g. xxx.mf) -# $2: original binary/library file path (e.g. xxx.dylib) -check_file() +check_lib_file() { - # check arch from mf file - ARCHS=$(cat $1 | grep "Arch:" | cut -d ':' -f2) - contains "$ARCHS" $BUILD_ARCH - - # check the library to support build_architecture - if [ "$EXTENSION" = "so"* ];then - ARCH_RESULT=$(file $2) - contains "$ARCH_RESULT" "32-bit" + FILE=${1%%.mf} + if [ ! -f "$FILE" ];then + echo $FILE does not exist. + exit 1 fi # check OS OSES=$(cat $i | grep "OS:" | cut -d ':' -f2) - contains "$OSES" $TARGET_OS + if [ "$(contains_string "$OSES" $TARGET_OS)" = "$RESULT_NOT_CONTAINS" ];then + echo "$OSES not supported" + exit 1 + fi + # check Architecture + if [ "$(contains_string "$FILE" ".so")" = "$RESULT_CONTAINS" ];then + FILE_RESULT="$(/usr/bin/file $FILE)" + if [ "$(contains_string "$FILE_RESULT" "32-bit")" = "$RESULT_NOT_CONTAINS" ];then + echo "$FILE has not the supported architecture" + exit 1 + else + echo "$FILE has the supported architecture" + fi + fi + + # if file type has excutable, set 755 permission. if not, set 644 permission + set_permission "$FILE" # copy file if validation passed. - echo "move $2 to $TMP_DIR" - mv -f "$2" $TMP_DIR + echo "copy $FILE to $TMP_LIB_DIR" + cp -pPR "$FILE" $TMP_LIB_DIR +} + +# $1: meta.mf file path +check_dev_file() { + # check OS + TEMP_OS=$(cat $1 | grep "OS:" | cut -d ':' -f2) + OS=$(trim_string $TEMP_OS) + if [ "$OS" != "$TARGET_OS" ];then + echo "OS is not matched. build OS is ${TARGET_OS}, but yours is $OS" + exit 1 + fi + + # copy directory if validation passed. + DIR=$(dirname $1) + # TODO: need checking architecture of libraries under DIR + echo "copy $DIR to $TMP_DEV_DIR" + cp -pPR "$DIR" $TMP_DEV_DIR +} + +clean() +{ + rm -rf $SRCDIR/*.zip + + rm -rf $TMP_LIB_DIR + rm -rf $TMP_DEV_DIR + rm -rf $TMP_SWT_DIR +} + +prepare() +{ + if [ ! -d $TMP_DEV_DIR ] + then + echo "make temp directory for emulator install : ( $TMP_DEV_DIR )" + mkdir $TMP_DEV_DIR + fi + if [ ! -d $TMP_LIB_DIR ] + then + echo "make temp directory for emulator install : ( $TMP_LIB_DIR )" + mkdir $TMP_LIB_DIR + fi + } # $1: root directory for traversing @@ -94,47 +165,45 @@ traverse_manifest() for i in $(find $1 -iname '*.mf') do # skip if filename is meta.mf it's used for packaging dev - if [ "$META_MF" = $(basename $i) ];then - echo "skip $i" - continue - fi - - TEMP_PACKAGE=$(cat "$i" | grep "Package:" | cut -d ':' -f2) - PACKAGES=$(trim_string "$(echo $TEMP_PACKAGE | tr "," "\n")") - TEMP_EXTENSION=$(cat "$i" | grep "Extension:" | cut -d ':' -f2) - EXTENSIONS=$(trim_string "$(echo $TEMP_EXTENSION | tr "," "\n")") - BUILD_OK=0 - - for PACKAGE in $PACKAGES - do - if [ ! -e $PACKAGE ] && [ "$PACKAGE" = "$BUILD_PACKAGE" ];then - # BUILD_OK=1 means this manifest file support current build project - BUILD_OK=1 - - # find origin file(s) from manifest file - for EXTENSION in $EXTENSIONS - do + BASENAME="$(basename "$i")" + if [ "$META_MF" = "$BASENAME" ];then + TEMP_PACKAGE=$(cat "$i" | grep "Package:" | cut -d ':' -f2) + PACKAGES=$(trim_string "$(echo $TEMP_PACKAGE | tr "," "\n")") + BUILD_OK=0 + 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 + done + if [ $BUILD_OK -eq 0 ];then + echo "cannot find $BUILD_LIB_PACKAGE in $i skipped." + fi + else + TEMP_PACKAGE=$(cat "$i" | grep "Package:" | cut -d ':' -f2) + PACKAGES=$(trim_string "$(echo $TEMP_PACKAGE | tr "," "\n")") + BUILD_OK=0 + for PACKAGE in $PACKAGES + do + if [ ! -e "$PACKAGE" ] && [ "$PACKAGE" = $BUILD_LIB_PACKAGE ];then + # BUILD_OK=1 means this manifest file support current build project + BUILD_OK=1 + + # find origin file(s) from manifest file echo found \"$PACKAGE\" in $i - if [ ! -e $EXTENSION ];then - FILE=${i%%.mf}.$EXTENSION - else - FILE=${i%%.mf} - fi - if [ ! -f "$FILE" ] ;then - echo $FILE does not exist. - exit 1 - fi - if [ $(basename $i) = swt ];then - check_swt "$i" "$FILE" + + if [ "${BASENAME%%.mf}" = "swt.jar" ];then + check_swt "$i" else - check_file "$i" "$FILE" + check_lib_file "$i" fi - done + fi + done + if [ $BUILD_OK -eq 0 ];then + echo "cannot find $BUILD_LIB_PACKAGE in $i skipped." fi - done - if [ $BUILD_OK -eq 0 ] - then - echo "cannot find $BUILD_PACKAGE in $i skipped." fi done } @@ -151,30 +220,28 @@ build() install() { - cd $TMP_DIR - - IMAGEFORMATS_DIR=$TMP_DIR/imageformats/ - PLATFORMS_DIR=$TMP_DIR/platforms/ - PLATFORMTHEMES_DIR=$TMP_DIR/platformthemes/ + PLATFORMS_DIR=$TMP_LIB_DIR/platforms/ + IMAGEFORMATS_DIR=$TMP_LIB_DIR/imageformats/ + PLATFORMTHEMES_DIR=$TMP_LIB_DIR/platformthemes/ # make directory structure - mkdir -p $BIN_DIR - mkdir -p $IMAGEFORMATS_DIR + mkdir -p $LIB_PACKAGE_DIR + mkdir -p $DEV_PACKAGE_DIR mkdir -p $PLATFORMS_DIR + mkdir -p $IMAGEFORMATS_DIR mkdir -p $PLATFORMTHEMES_DIR - mv $TMP_DIR/libqgif.so $IMAGEFORMATS_DIR - mv $TMP_DIR/libqico.so $IMAGEFORMATS_DIR - mv $TMP_DIR/libqjpeg.so $IMAGEFORMATS_DIR - mv $TMP_DIR/libqwbmp.so $IMAGEFORMATS_DIR - mv $TMP_DIR/libqxcb.so $PLATFORMS_DIR - mv $TMP_DIR/libqgtk2.so $PLATFORMTHEMES_DIR - - # move all files in temp directory into pacakage directory - mv * $BIN_DIR/ - - # after done, remove temp directory - rm -rf $TMP_DIR + # move for specific cases + mv -f $TMP_LIB_DIR/libqgif.so $IMAGEFORMATS_DIR + mv -f $TMP_LIB_DIR/libqico.so $IMAGEFORMATS_DIR + mv -f $TMP_LIB_DIR/libqjpeg.so $IMAGEFORMATS_DIR + mv -f $TMP_LIB_DIR/libqwbmp.so $IMAGEFORMATS_DIR + mv -f $TMP_LIB_DIR/libqxcb.so $PLATFORMS_DIR + mv -f $TMP_LIB_DIR/libqgtk2.so $PLATFORMTHEMES_DIR + + # move for general case + mv -f $TMP_LIB_DIR/* $LIB_PACKAGE_DIR + mv -f $TMP_DEV_DIR/* $DEV_PACKAGE_DIR } [ "$1" = "clean" ] && clean diff --git a/package/build.ubuntu-64 b/package/build.ubuntu-64 index cadf25a..f648d6d 100755 --- a/package/build.ubuntu-64 +++ b/package/build.ubuntu-64 @@ -1,27 +1,18 @@ -#!/bin/sh -xe +#!/bin/sh -e BUILD_ARCH=x86_64 -BUILD_PACKAGE=2.4-emulator-lib +BUILD_LIB_PACKAGE=2.4-emulator-lib +BUILD_DEV_PACKAGE=2.4-emulator-lib-dev BUILD_WS=gtk +TMP_LIB_DIR="$SRCDIR/lib" +TMP_DEV_DIR="$SRCDIR/dev" +TMP_SWT_DIR="$SRCDIR/swt" META_MF=meta.mf -TMP_DIR="$SRCDIR/data" OS_COMMON_DIR="$ROOTDIR/os-common" -BIN_DIR="$SRCDIR/package/${BUILD_PACKAGE}.package.${TARGET_OS}/data/platforms/tizen-2.4/common/emulator/bin/" - -clean() -{ - rm -rf $SRCDIR/*.zip - rm -rf $SRCDIR/*.tar.gz -} - -prepare() -{ - if [ ! -d $TMP_DIR ] - then - echo "make temp directory for emulator install : ( $TMP_DIR )" - mkdir $TMP_DIR - fi -} +LIB_PACKAGE_DIR="$SRCDIR/package/${BUILD_LIB_PACKAGE}.package.${TARGET_OS}/data/platforms/tizen-2.4/common/emulator/bin/" +DEV_PACKAGE_DIR="$SRCDIR/package/${BUILD_DEV_PACKAGE}.package.${TARGET_OS}/data/" +RESULT_CONTAINS=contains +RESULT_NOT_CONTAINS=not_contains trim_string() { @@ -32,60 +23,141 @@ trim_string() echo "$trimmed" } -contains() { +# $1: source string +# $2: string to search for +contains_string() +{ string="$1" substring="$2" if test "${string#*$substring}" != "$string" then - echo $substring is in $string + echo "$RESULT_CONTAINS" else - echo $substring is not in $string - exit 1 + echo "$RESULT_NOT_CONTAINS" fi } -# $1: mf file path (swt.mf) -# $2: original swt.jar file path (e.g. data/ubuntu-64/swt.jar) +# $1: file to set permission +set_permission() +{ + string="$(/usr/bin/file "$1")" + substring="executable" + if test "${string#*$substring}" != "$string" + then + echo $1 is excutable + chmod 755 "$1" + else + chmod 644 "$1" + fi +} + +# $1: swt file path +# TODO: checking version check_swt() { + FILE=${1%%.mf} + if [ ! -f "$FILE" ];then + echo $FILE does not exist. + exit 1 + fi + # especially check for swt.jar - unzip $2 - TEMP_SWT_WS=$(cat $2/META-INF/MANIFEST.MF | grep "SWT-WS:" | cut -d ':' -f2) + unzip -jo "$FILE" 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 [ $SWT_WS != $BUILD_WS ];then - echo $SWT_WS is not supported. + if [ "$(contains_string $SWT_WS $BUILD_WS)" = "$RESULT_NOT_CONTAINS" ];then + echo "$SWT_SW not supported" exit 1 fi - TEMP_SWT_ARCH=$(cat $2/META-INF/MANIFEST.MF | grep "SWT-Arch:" | cut -d ':' -f2) + + TEMP_SWT_ARCH=$(cat $TMP_SWT_DIR/MANIFEST.MF | grep "SWT-Arch:" | cut -d ':' -f2) SWT_ARCH=$(trim_string $TEMP_SWT_ARCH) - if [ $SWT_ARCH != $BUILD_ARCH ];then - echo $SWT_ARCH is not supported. + if [ "$(contains_string $SWT_ARCH $BUILD_ARCH)" = "$RESULT_NOT_CONTAINS" ];then + echo "$SWT_ARCH not supported" exit 1 fi - mv -f "$2" $TMP_DIR + # 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 } # $1: mf file path (e.g. xxx.mf) -# $2: original binary/library file path (e.g. xxx.dylib) -check_file() +check_lib_file() { - # check arch from mf file - ARCHS=$(cat $1 | grep "Arch:" | cut -d ':' -f2) - contains "$ARCHS" $BUILD_ARCH - - # check the library to support build_architecture - if [ "$EXTENSION" = "so"* ];then - ARCH_RESULT=$(file $2) - contains "$ARCH_RESULT" "64-bit" + FILE=${1%%.mf} + if [ ! -f "$FILE" ];then + echo $FILE does not exist. + exit 1 fi # check OS OSES=$(cat $i | grep "OS:" | cut -d ':' -f2) - contains "$OSES" $TARGET_OS + if [ "$(contains_string "$OSES" $TARGET_OS)" = "$RESULT_NOT_CONTAINS" ];then + echo "$OSES not supported" + exit 1 + fi + + # check Architecture + if [ "$(contains_string "$FILE" ".so")" = "$RESULT_CONTAINS" ];then + FILE_RESULT="$(/usr/bin/file $FILE)" + if [ "$(contains_string "$FILE_RESULT" "64-bit")" = "$RESULT_NOT_CONTAINS" ];then + echo "$FILE has not the supported architecture" + exit 1 + else + echo "$FILE has the supported architecture" + fi + fi + + # if file type has excutable, set 755 permission. if not, set 644 permission + set_permission "$FILE" # copy file if validation passed. - echo "move $2 to $TMP_DIR" - mv -f "$2" $TMP_DIR + echo "copy $FILE to $TMP_LIB_DIR" + cp -pPR "$FILE" $TMP_LIB_DIR +} + +# $1: meta.mf file path +check_dev_file() { + # check OS + TEMP_OS=$(cat $1 | grep "OS:" | cut -d ':' -f2) + OS=$(trim_string $TEMP_OS) + if [ "$OS" != "$TARGET_OS" ];then + echo "OS is not matched. build OS is ${TARGET_OS}, but yours is $OS" + exit 1 + fi + + # copy directory if validation passed. + DIR=$(dirname $1) + # TODO: need checking architecture of libraries under DIR + echo "copy $DIR to $TMP_DEV_DIR" + cp -pPR "$DIR" $TMP_DEV_DIR +} + +clean() +{ + rm -rf $SRCDIR/*.zip + + rm -rf $TMP_LIB_DIR + rm -rf $TMP_DEV_DIR + rm -rf $TMP_SWT_DIR +} + +prepare() +{ + if [ ! -d $TMP_DEV_DIR ] + then + echo "make temp directory for emulator install : ( $TMP_DEV_DIR )" + mkdir $TMP_DEV_DIR + fi + if [ ! -d $TMP_LIB_DIR ] + then + echo "make temp directory for emulator install : ( $TMP_LIB_DIR )" + mkdir $TMP_LIB_DIR + fi + } # $1: root directory for traversing @@ -94,47 +166,45 @@ traverse_manifest() for i in $(find $1 -iname '*.mf') do # skip if filename is meta.mf it's used for packaging dev - if [ "$META_MF" = $(basename $i) ];then - echo "skip $i" - continue - fi - - TEMP_PACKAGE=$(cat "$i" | grep "Package:" | cut -d ':' -f2) - PACKAGES=$(trim_string "$(echo $TEMP_PACKAGE | tr "," "\n")") - TEMP_EXTENSION=$(cat "$i" | grep "Extension:" | cut -d ':' -f2) - EXTENSIONS=$(trim_string "$(echo $TEMP_EXTENSION | tr "," "\n")") - BUILD_OK=0 - - for PACKAGE in $PACKAGES - do - if [ ! -e $PACKAGE ] && [ "$PACKAGE" = "$BUILD_PACKAGE" ];then - # BUILD_OK=1 means this manifest file support current build project - BUILD_OK=1 - - # find origin file(s) from manifest file - for EXTENSION in $EXTENSIONS - do + BASENAME="$(basename "$i")" + if [ "$META_MF" = "$BASENAME" ];then + TEMP_PACKAGE=$(cat "$i" | grep "Package:" | cut -d ':' -f2) + PACKAGES=$(trim_string "$(echo $TEMP_PACKAGE | tr "," "\n")") + BUILD_OK=0 + 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 + done + if [ $BUILD_OK -eq 0 ];then + echo "cannot find $BUILD_LIB_PACKAGE in $i skipped." + fi + else + TEMP_PACKAGE=$(cat "$i" | grep "Package:" | cut -d ':' -f2) + PACKAGES=$(trim_string "$(echo $TEMP_PACKAGE | tr "," "\n")") + BUILD_OK=0 + for PACKAGE in $PACKAGES + do + if [ ! -e "$PACKAGE" ] && [ "$PACKAGE" = $BUILD_LIB_PACKAGE ];then + # BUILD_OK=1 means this manifest file support current build project + BUILD_OK=1 + + # find origin file(s) from manifest file echo found \"$PACKAGE\" in $i - if [ ! -e $EXTENSION ];then - FILE=${i%%.mf}.$EXTENSION - else - FILE=${i%%.mf} - fi - if [ ! -f "$FILE" ] ;then - echo $FILE does not exist. - exit 1 - fi - if [ $(basename $i) = swt ];then - check_swt "$i" "$FILE" + + if [ "${BASENAME%%.mf}" = "swt.jar" ];then + check_swt "$i" else - check_file "$i" "$FILE" + check_lib_file "$i" fi - done + fi + done + if [ $BUILD_OK -eq 0 ];then + echo "cannot find $BUILD_LIB_PACKAGE in $i skipped." fi - done - if [ $BUILD_OK -eq 0 ] - then - echo "cannot find $BUILD_PACKAGE in $i skipped." fi done } @@ -151,30 +221,28 @@ build() install() { - cd $TMP_DIR - - IMAGEFORMATS_DIR=$TMP_DIR/imageformats/ - PLATFORMS_DIR=$TMP_DIR/platforms/ - PLATFORMTHEMES_DIR=$TMP_DIR/platformthemes/ + PLATFORMS_DIR=$TMP_LIB_DIR/platforms/ + IMAGEFORMATS_DIR=$TMP_LIB_DIR/imageformats/ + PLATFORMTHEMES_DIR=$TMP_LIB_DIR/platformthemes/ # make directory structure - mkdir -p $BIN_DIR - mkdir -p $IMAGEFORMATS_DIR + mkdir -p $LIB_PACKAGE_DIR + mkdir -p $DEV_PACKAGE_DIR mkdir -p $PLATFORMS_DIR + mkdir -p $IMAGEFORMATS_DIR mkdir -p $PLATFORMTHEMES_DIR - mv $TMP_DIR/libqgif.so $IMAGEFORMATS_DIR - mv $TMP_DIR/libqico.so $IMAGEFORMATS_DIR - mv $TMP_DIR/libqjpeg.so $IMAGEFORMATS_DIR - mv $TMP_DIR/libqwbmp.so $IMAGEFORMATS_DIR - mv $TMP_DIR/libqxcb.so $PLATFORMS_DIR - mv $TMP_DIR/libqgtk2.so $PLATFORMTHEMES_DIR - - # move all files in temp directory into pacakage directory - mv * $BIN_DIR/ - - # after done, remove temp directory - rm -rf $TMP_DIR + # move for specific cases + mv -f $TMP_LIB_DIR/libqgif.so $IMAGEFORMATS_DIR + mv -f $TMP_LIB_DIR/libqico.so $IMAGEFORMATS_DIR + mv -f $TMP_LIB_DIR/libqjpeg.so $IMAGEFORMATS_DIR + mv -f $TMP_LIB_DIR/libqwbmp.so $IMAGEFORMATS_DIR + mv -f $TMP_LIB_DIR/libqxcb.so $PLATFORMS_DIR + mv -f $TMP_LIB_DIR/libqgtk2.so $PLATFORMTHEMES_DIR + + # move for general case + mv -f $TMP_LIB_DIR/* $LIB_PACKAGE_DIR + mv -f $TMP_DEV_DIR/* $DEV_PACKAGE_DIR } [ "$1" = "clean" ] && clean diff --git a/package/build.windows-32 b/package/build.windows-32 index 3f67157..aeef18e 100755 --- a/package/build.windows-32 +++ b/package/build.windows-32 @@ -1,27 +1,18 @@ -#!/bin/sh -xe +#!/bin/sh -e -BUILD_ARCH=i386 -BUILD_PACKAGE=2.4-emulator-lib +BUILD_ARCH=x86 +BUILD_LIB_PACKAGE=2.4-emulator-lib +BUILD_DEV_PACKAGE=2.4-emulator-lib-dev BUILD_WS=win32 +TMP_LIB_DIR="$SRCDIR/lib" +TMP_DEV_DIR="$SRCDIR/dev" +TMP_SWT_DIR="$SRCDIR/swt" META_MF=meta.mf -TMP_DIR="$SRCDIR/data" OS_COMMON_DIR="$ROOTDIR/os-common" -BIN_DIR="$SRCDIR/package/${BUILD_PACKAGE}.package.${TARGET_OS}/data/platforms/tizen-2.4/common/emulator/bin/" - -clean() -{ - rm -rf $SRCDIR/*.zip - rm -rf $SRCDIR/*.tar.gz -} - -prepare() -{ - if [ ! -d $TMP_DIR ] - then - echo "make temp directory for emulator install : ( $TMP_DIR )" - mkdir $TMP_DIR - fi -} +LIB_PACKAGE_DIR="$SRCDIR/package/${BUILD_LIB_PACKAGE}.package.${TARGET_OS}/data/platforms/tizen-2.4/common/emulator/bin/" +DEV_PACKAGE_DIR="$SRCDIR/package/${BUILD_DEV_PACKAGE}.package.${TARGET_OS}/data/" +RESULT_CONTAINS=contains +RESULT_NOT_CONTAINS=not_contains trim_string() { @@ -32,74 +23,146 @@ trim_string() echo "$trimmed" } -contains() +# $1: source string +# $2: string to search for +contains_string() { string="$1" substring="$2" if test "${string#*$substring}" != "$string" then - echo $substring is in $string + echo "$RESULT_CONTAINS" else - echo $substring is not in $string - exit 1 + echo "$RESULT_NOT_CONTAINS" + fi +} + +# $1: file to set permission +set_permission() +{ + string="$(/usr/bin/file "$1")" + substring="executable" + if test "${string#*$substring}" != "$string" + then + echo $1 is excutable + chmod 755 "$1" + else + chmod 644 "$1" fi } -# $1: mf file path (swt.mf) -# $2: original swt.jar file path (e.g. data/ubuntu-64/swt.jar) +# $1: swt file path +# TODO: checking version check_swt() { + FILE=${1%%.mf} + if [ ! -f "$FILE" ];then + echo $FILE does not exist. + exit 1 + fi + # especially check for swt.jar - unzip $2 - TEMP_SWT_WS=$(cat $2/META-INF/MANIFEST.MF | grep "SWT-WS:" | cut -d ':' -f2) + unzip -jo "$FILE" 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 [ $SWT_WS != $BUILD_WS ];then - echo $SWT_WS is not supported. + if [ "$(contains_string $SWT_WS $BUILD_WS)" = "$RESULT_NOT_CONTAINS" ];then + echo "$SWT_SW not supported" exit 1 fi - TEMP_SWT_ARCH=$(cat $2/META-INF/MANIFEST.MF | grep "SWT-Arch:" | cut -d ':' -f2) + + TEMP_SWT_ARCH=$(cat $TMP_SWT_DIR/MANIFEST.MF | grep "SWT-Arch:" | cut -d ':' -f2) SWT_ARCH=$(trim_string $TEMP_SWT_ARCH) - if [ $SWT_ARCH != "x86" ];then - echo $SWT_ARCH is not supported. + if [ "$(contains_string $SWT_ARCH $BUILD_ARCH)" = "$RESULT_NOT_CONTAINS" ];then + echo "$SWT_ARCH not supported" exit 1 fi - mv -f "$2" $TMP_DIR + # 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 } # $1: mf file path (e.g. xxx.mf) -# $2: original binary/library file path (e.g. xxx.dylib) -check_file() +check_lib_file() { - # check arch from mf file - ARCHS=$(cat $1 | grep "Arch:" | cut -d ':' -f2) - contains "$ARCHS" $BUILD_ARCH + FILE=${1%%.mf} + if [ ! -f "$FILE" ];then + echo $FILE does not exist. + exit 1 + fi - # check the library or the binary to support build_architecture - if [ "$EXTENSION" = "dll" ] && [ "$EXTENSION" = "exe" ] ;then - ARCH_RESULT=$(file $2) + # check OS + OSES=$(cat $i | grep "OS:" | cut -d ':' -f2) + if [ "$(contains_string "$OSES" $TARGET_OS)" = "$RESULT_NOT_CONTAINS" ];then + echo "$OSES not supported" + exit 1 + fi + # check Architecture + if [ "$(contains_string "$FILE" ".dll")" = "$RESULT_CONTAINS" ];then + FILE_RESULT="$(/usr/bin/file $FILE)" ARCH_OK=0 - if test "${ARCH_RESULT#*"32-bit"}" != "$ARCH_RESULT" - then - echo $ARCH_RESULT is in 32-bit + if [ "$(contains_string "$FILE_RESULT" "32-bit")" = "$RESULT_CONTAINS" ];then + echo "$FILE has the supported architecture" ARCH_OK=1 - elif test "${ARCH_RESULT#*"PE32"}" != "$ARCH_RESULT" - then - echo $ARCH_RESULT is in PE32 + elif [ "$(contains_string "$FILE_RESULT" "PE32")" = "$RESULT_CONTAINS" ];then + echo "$FILE has the supported architecture" ARCH_OK=1 - elif test "${ARCH_OK}" == "0" - then - echo $2 is no architecture. - exit 1 fi fi + if [ $ARCH_OK -eq 0 ];then + echo "$FILE has not the supported architecture" + exit 1 + fi - # check OS - OSES=$(cat $i | grep "OS:" | cut -d ':' -f2) - contains "$OSES" $TARGET_OS + # if file type has excutable, set 755 permission. if not, set 644 permission + set_permission "$FILE" # copy file if validation passed. - echo "move $2 to $TMP_DIR" - mv -f "$2" $TMP_DIR + echo "copy $FILE to $TMP_LIB_DIR" + cp -pPR "$FILE" $TMP_LIB_DIR +} + +# $1: meta.mf file path +check_dev_file() +{ + # check OS + TEMP_OS=$(cat $1 | grep "OS:" | cut -d ':' -f2) + OS=$(trim_string $TEMP_OS) + if [ "$OS" != "$TARGET_OS" ];then + echo "OS is not matched. build OS is ${TARGET_OS}, but yours is $OS" + exit 1 + fi + + # copy directory if validation passed. + DIR=$(dirname $1) + # TODO: need checking architecture of libraries under DIR + echo "copy $DIR to $TMP_DEV_DIR" + cp -pPR "$DIR" $TMP_DEV_DIR +} + +clean() +{ + rm -rf $SRCDIR/*.zip + + rm -rf $TMP_LIB_DIR + rm -rf $TMP_DEV_DIR + rm -rf $TMP_SWT_DIR +} + +prepare() +{ + if [ ! -d $TMP_DEV_DIR ] + then + echo "make temp directory for emulator install : ( $TMP_DEV_DIR )" + mkdir $TMP_DEV_DIR + fi + if [ ! -d $TMP_LIB_DIR ] + then + echo "make temp directory for emulator install : ( $TMP_LIB_DIR )" + mkdir $TMP_LIB_DIR + fi } # $1: root directory for traversing @@ -108,47 +171,45 @@ traverse_manifest() for i in $(find $1 -iname '*.mf') do # skip if filename is meta.mf it's used for packaging dev - if [ "$META_MF" = $(basename $i) ];then - echo "skip $i" - continue - fi - - TEMP_PACKAGE=$(cat "$i" | grep "Package:" | cut -d ':' -f2) - PACKAGES=$(trim_string "$(echo $TEMP_PACKAGE | tr "," "\n")") - TEMP_EXTENSION=$(cat "$i" | grep "Extension:" | cut -d ':' -f2) - EXTENSIONS=$(trim_string "$(echo $TEMP_EXTENSION | tr "," "\n")") - BUILD_OK=0 - - for PACKAGE in $PACKAGES - do - if [ ! -e $PACKAGE ] && [ "$PACKAGE" = "$BUILD_PACKAGE" ];then - # BUILD_OK=1 means this manifest file support current build project - BUILD_OK=1 - - # find origin file(s) from manifest file - for EXTENSION in $EXTENSIONS - do + BASENAME="$(basename "$i")" + if [ "$META_MF" = "$BASENAME" ];then + TEMP_PACKAGE=$(cat "$i" | grep "Package:" | cut -d ':' -f2) + PACKAGES=$(trim_string "$(echo $TEMP_PACKAGE | tr "," "\n")") + BUILD_OK=0 + 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 + done + if [ $BUILD_OK -eq 0 ];then + echo "cannot find $BUILD_LIB_PACKAGE in $i skipped." + fi + else + TEMP_PACKAGE=$(cat "$i" | grep "Package:" | cut -d ':' -f2) + PACKAGES=$(trim_string "$(echo $TEMP_PACKAGE | tr "," "\n")") + BUILD_OK=0 + for PACKAGE in $PACKAGES + do + if [ ! -e "$PACKAGE" ] && [ "$PACKAGE" = $BUILD_LIB_PACKAGE ];then + # BUILD_OK=1 means this manifest file support current build project + BUILD_OK=1 + + # find origin file(s) from manifest file echo found \"$PACKAGE\" in $i - if [ ! -e $EXTENSION ];then - FILE=${i%%.mf}.$EXTENSION - else - FILE=${i%%.mf} - fi - if [ ! -f "$FILE" ] ;then - echo $FILE does not exist. - exit 1 - fi - if [ $(basename $i) = swt ];then - check_swt "$i" "$FILE" + + if [ "${BASENAME%%.mf}" = "swt.jar" ];then + check_swt "$i" else - check_file "$i" "$FILE" + check_lib_file "$i" fi - done + fi + done + if [ $BUILD_OK -eq 0 ];then + echo "cannot find $BUILD_LIB_PACKAGE in $i skipped." fi - done - if [ $BUILD_OK -eq 0 ] - then - echo "cannot find $BUILD_PACKAGE in $i skipped." fi done } @@ -165,23 +226,26 @@ build() install() { - cd $TMP_DIR - - IMAGEFORMATS_DIR=$TMP_DIR/imageformats/ - PLATFORMS_DIR=$TMP_DIR/platforms/ + PLATFORMS_DIR=$TMP_LIB_DIR/platforms/ + IMAGEFORMATS_DIR=$TMP_LIB_DIR/imageformats/ # make directory structure - mkdir -p $BIN_DIR - mkdir -p $IMAGEFORMATS_DIR + mkdir -p $LIB_PACKAGE_DIR + mkdir -p $DEV_PACKAGE_DIR mkdir -p $PLATFORMS_DIR + mkdir -p $IMAGEFORMATS_DIR - mv $TMP_DIR/qgif.dll $IMAGEFORMATS_DIR - mv $TMP_DIR/qico.dll $IMAGEFORMATS_DIR - mv $TMP_DIR/qjpeg.dll $IMAGEFORMATS_DIR - mv $TMP_DIR/qwindows.dll $PLATFORMS_DIR - - # move all files in temp directory into pacakage directory - mv * $BIN_DIR/ + # move for specific cases + mv -f $TMP_LIB_DIR/qgif.dll $IMAGEFORMATS_DIR + mv -f $TMP_LIB_DIR/qico.dll $IMAGEFORMATS_DIR + mv -f $TMP_LIB_DIR/qjpeg.dll $IMAGEFORMATS_DIR + mv -f $TMP_LIB_DIR/qwindows.dll $PLATFORMS_DIR + + # move for general case + cd $TMP_LIB_DIR + mv -f * $LIB_PACKAGE_DIR + cd $TMP_DEV_DIR + mv -f * $DEV_PACKAGE_DIR } [ "$1" = "clean" ] && clean diff --git a/package/build.windows-64 b/package/build.windows-64 index d1d90a1..df33242 100755 --- a/package/build.windows-64 +++ b/package/build.windows-64 @@ -1,27 +1,18 @@ -#!/bin/sh -xe +#!/bin/sh -e BUILD_ARCH=x86_64 -BUILD_PACKAGE=2.4-emulator-lib +BUILD_LIB_PACKAGE=2.4-emulator-lib +BUILD_DEV_PACKAGE=2.4-emulator-lib-dev BUILD_WS=win32 +TMP_LIB_DIR="$SRCDIR/lib" +TMP_DEV_DIR="$SRCDIR/dev" +TMP_SWT_DIR="$SRCDIR/swt" META_MF=meta.mf -TMP_DIR="$SRCDIR/data" OS_COMMON_DIR="$ROOTDIR/os-common" -BIN_DIR="$SRCDIR/package/${BUILD_PACKAGE}.package.${TARGET_OS}/data/platforms/tizen-2.4/common/emulator/bin/" - -clean() -{ - rm -rf $SRCDIR/*.zip - rm -rf $SRCDIR/*.tar.gz -} - -prepare() -{ - if [ ! -d $TMP_DIR ] - then - echo "make temp directory for emulator install : ( $TMP_DIR )" - mkdir $TMP_DIR - fi -} +LIB_PACKAGE_DIR="$SRCDIR/package/${BUILD_LIB_PACKAGE}.package.${TARGET_OS}/data/platforms/tizen-2.4/common/emulator/bin/" +DEV_PACKAGE_DIR="$SRCDIR/package/${BUILD_DEV_PACKAGE}.package.${TARGET_OS}/data/" +RESULT_CONTAINS=contains +RESULT_NOT_CONTAINS=not_contains trim_string() { @@ -32,78 +23,149 @@ trim_string() echo "$trimmed" } -contains() +# $1: source string +# $2: string to search for +contains_string() { string="$1" substring="$2" if test "${string#*$substring}" != "$string" then - echo $substring is in $string + echo "$RESULT_CONTAINS" else - echo $substring is not in $string - exit 1 + echo "$RESULT_NOT_CONTAINS" fi } -# $1: mf file path (swt.mf) -# $2: original swt.jar file path (e.g. data/ubuntu-64/swt.jar) +# $1: file to set permission +set_permission() +{ + string="$(/usr/bin/file "$1")" + substring="executable" + if test "${string#*$substring}" != "$string" + then + echo $1 is excutable + chmod 755 "$1" + else + chmod 644 "$1" + fi +} + +# $1: swt file path +# TODO: checking version check_swt() { + FILE=${1%%.mf} + if [ ! -f "$FILE" ];then + echo $FILE does not exist. + exit 1 + fi + # especially check for swt.jar - unzip $2 - TEMP_SWT_WS=$(cat $2/META-INF/MANIFEST.MF | grep "SWT-WS:" | cut -d ':' -f2) + unzip -jo "$FILE" 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 [ $SWT_WS != $BUILD_WS ];then - echo $SWT_WS is not supported. + if [ "$(contains_string $SWT_WS $BUILD_WS)" = "$RESULT_NOT_CONTAINS" ];then + echo "$SWT_SW not supported" exit 1 fi - TEMP_SWT_ARCH=$(cat $2/META-INF/MANIFEST.MF | grep "SWT-Arch:" | cut -d ':' -f2) + + TEMP_SWT_ARCH=$(cat $TMP_SWT_DIR/MANIFEST.MF | grep "SWT-Arch:" | cut -d ':' -f2) SWT_ARCH=$(trim_string $TEMP_SWT_ARCH) - if [ $SWT_ARCH != $BUILD_ARCH ];then - echo $SWT_ARCH is not supported. + if [ "$(contains_string $SWT_ARCH $BUILD_ARCH)" = "$RESULT_NOT_CONTAINS" ];then + echo "$SWT_ARCH not supported" exit 1 fi - mv -f "$2" $TMP_DIR + # 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 } # $1: mf file path (e.g. xxx.mf) -# $2: original binary/library file path (e.g. xxx.dylib) -check_file() +check_lib_file() { - # check arch from mf file - ARCHS=$(cat $1 | grep "Arch:" | cut -d ':' -f2) - contains "$ARCHS" $BUILD_ARCH + FILE=${1%%.mf} + if [ ! -f "$FILE" ];then + echo $FILE does not exist. + exit 1 + fi - # check the library or the binary to support build_architecture - if [ "$EXTENSION" = "dll" ] && [ "$EXTENSION" = "exe" ] ;then - ARCH_RESULT=$(file $2) + # check OS + OSES=$(cat $i | grep "OS:" | cut -d ':' -f2) + if [ "$(contains_string "$OSES" $TARGET_OS)" = "$RESULT_NOT_CONTAINS" ];then + echo "$OSES not supported" + exit 1 + fi + # check Architecture + if [ "$(contains_string "$FILE" ".dll")" = "$RESULT_CONTAINS" ];then + FILE_RESULT="$(/usr/bin/file $FILE)" ARCH_OK=0 - if test "${ARCH_RESULT#*"64-bit"}" != "$ARCH_RESULT" - then - echo $ARCH_RESULT is in 64-bit + if [ "$(contains_string "$FILE_RESULT" "32-bit")" = "$RESULT_CONTAINS" ];then + echo "$FILE has the supported architecture" ARCH_OK=1 - elif test "${ARCH_RESULT#*"32-bit"}" != "$ARCH_RESULT" - then - echo $ARCH_RESULT is in 32-bit + elif [ "$(contains_string "$FILE_RESULT" "64-bit")" = "$RESULT_CONTAINS" ];then + echo "$FILE has the supported architecture" ARCH_OK=1 - elif test "${ARCH_RESULT#*"PE32"}" != "$ARCH_RESULT" - then - echo $ARCH_RESULT is in PE32 + elif [ "$(contains_string "$FILE_RESULT" "PE32")" = "$RESULT_CONTAINS" ];then + echo "$FILE has the supported architecture" ARCH_OK=1 - elif test "${ARCH_OK}" == "0" - then - echo $2 is no architecture. - exit 1 fi fi + if [ $ARCH_OK -eq 0 ];then + echo "$FILE has not the supported architecture" + exit 1 + fi - # check OS - OSES=$(cat $i | grep "OS:" | cut -d ':' -f2) - contains "$OSES" $TARGET_OS + # if file type has excutable, set 755 permission. if not, set 644 permission + set_permission "$FILE" # copy file if validation passed. - echo "move $2 to $TMP_DIR" - mv -f "$2" $TMP_DIR + echo "copy $FILE to $TMP_LIB_DIR" + cp -pPR "$FILE" $TMP_LIB_DIR +} + +# $1: meta.mf file path +check_dev_file() { + # check OS + TEMP_OS=$(cat $1 | grep "OS:" | cut -d ':' -f2) + OS=$(trim_string $TEMP_OS) + if [ "$OS" != "$TARGET_OS" ];then + echo "OS is not matched. build OS is ${TARGET_OS}, but yours is $OS" + exit 1 + fi + + # copy directory if validation passed. + DIR=$(dirname $1) + # TODO: need checking architecture of libraries under DIR + echo "copy $DIR to $TMP_DEV_DIR" + cp -pPR "$DIR" $TMP_DEV_DIR +} + +clean() +{ + rm -rf $SRCDIR/*.zip + + rm -rf $TMP_LIB_DIR + rm -rf $TMP_DEV_DIR + rm -rf $TMP_SWT_DIR +} + +prepare() +{ + if [ ! -d $TMP_DEV_DIR ] + then + echo "make temp directory for emulator install : ( $TMP_DEV_DIR )" + mkdir $TMP_DEV_DIR + fi + if [ ! -d $TMP_LIB_DIR ] + then + echo "make temp directory for emulator install : ( $TMP_LIB_DIR )" + mkdir $TMP_LIB_DIR + fi + } # $1: root directory for traversing @@ -112,47 +174,45 @@ traverse_manifest() for i in $(find $1 -iname '*.mf') do # skip if filename is meta.mf it's used for packaging dev - if [ "$META_MF" = $(basename $i) ];then - echo "skip $i" - continue - fi + BASENAME="$(basename "$i")" + if [ "$META_MF" = "$BASENAME" ];then + TEMP_PACKAGE=$(cat "$i" | grep "Package:" | cut -d ':' -f2) + PACKAGES=$(trim_string "$(echo $TEMP_PACKAGE | tr "," "\n")") + BUILD_OK=0 + 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 + done + if [ $BUILD_OK -eq 0 ];then + echo "cannot find $BUILD_LIB_PACKAGE in $i skipped." + fi + else + TEMP_PACKAGE=$(cat "$i" | grep "Package:" | cut -d ':' -f2) + PACKAGES=$(trim_string "$(echo $TEMP_PACKAGE | tr "," "\n")") + BUILD_OK=0 + for PACKAGE in $PACKAGES + do + if [ ! -e "$PACKAGE" ] && [ "$PACKAGE" = $BUILD_LIB_PACKAGE ];then + # BUILD_OK=1 means this manifest file support current build project + BUILD_OK=1 - TEMP_PACKAGE=$(cat "$i" | grep "Package:" | cut -d ':' -f2) - PACKAGES=$(trim_string "$(echo $TEMP_PACKAGE | tr "," "\n")") - TEMP_EXTENSION=$(cat "$i" | grep "Extension:" | cut -d ':' -f2) - EXTENSIONS=$(trim_string "$(echo $TEMP_EXTENSION | tr "," "\n")") - BUILD_OK=0 - - for PACKAGE in $PACKAGES - do - if [ ! -e $PACKAGE ] && [ "$PACKAGE" = "$BUILD_PACKAGE" ];then - # BUILD_OK=1 means this manifest file support current build project - BUILD_OK=1 - - # find origin file(s) from manifest file - for EXTENSION in $EXTENSIONS - do + # find origin file(s) from manifest file echo found \"$PACKAGE\" in $i - if [ ! -e $EXTENSION ];then - FILE=${i%%.mf}.$EXTENSION - else - FILE=${i%%.mf} - fi - if [ ! -f "$FILE" ] ;then - echo $FILE does not exist. - exit 1 - fi - if [ $(basename $i) = swt ];then - check_swt "$i" "$FILE" + + if [ "${BASENAME%%.mf}" = "swt.jar" ];then + check_swt "$i" else - check_file "$i" "$FILE" + check_lib_file "$i" fi - done + fi + done + if [ $BUILD_OK -eq 0 ];then + echo "cannot find $BUILD_LIB_PACKAGE in $i skipped." fi - done - if [ $BUILD_OK -eq 0 ] - then - echo "cannot find $BUILD_PACKAGE in $i skipped." fi done } @@ -169,23 +229,26 @@ build() install() { - cd $TMP_DIR - - IMAGEFORMATS_DIR=$TMP_DIR/imageformats/ - PLATFORMS_DIR=$TMP_DIR/platforms/ + PLATFORMS_DIR=$TMP_LIB_DIR/platforms/ + IMAGEFORMATS_DIR=$TMP_LIB_DIR/imageformats/ # make directory structure - mkdir -p $BIN_DIR - mkdir -p $IMAGEFORMATS_DIR + mkdir -p $LIB_PACKAGE_DIR + mkdir -p $DEV_PACKAGE_DIR mkdir -p $PLATFORMS_DIR + mkdir -p $IMAGEFORMATS_DIR - mv $TMP_DIR/qgif.dll $IMAGEFORMATS_DIR - mv $TMP_DIR/qico.dll $IMAGEFORMATS_DIR - mv $TMP_DIR/qjpeg.dll $IMAGEFORMATS_DIR - mv $TMP_DIR/qwindows.dll $PLATFORMS_DIR + # move for specific cases + mv -f $TMP_LIB_DIR/qgif.dll $IMAGEFORMATS_DIR + mv -f $TMP_LIB_DIR/qico.dll $IMAGEFORMATS_DIR + mv -f $TMP_LIB_DIR/qjpeg.dll $IMAGEFORMATS_DIR + mv -f $TMP_LIB_DIR/qwindows.dll $PLATFORMS_DIR - # move all files in temp directory into pacakage directory - mv * $BIN_DIR/ + # move for general case + cd $TMP_LIB_DIR + mv -f * $LIB_PACKAGE_DIR + cd $TMP_DEV_DIR + mv -f * $DEV_PACKAGE_DIR } [ "$1" = "clean" ] && clean diff --git a/package/pkginfo.manifest b/package/pkginfo.manifest index 1d19529..5cc6d9b 100644 --- a/package/pkginfo.manifest +++ b/package/pkginfo.manifest @@ -31,3 +31,33 @@ OS : windows-64 Build-host-os : windows-64 Build-dependency: 2.4-emulator-library-pool [ ubuntu-32 ] Description : SWT and ECP libraries, and other runtime libraries for Tizen Emulator. + +Package: 2.4-emulator-lib-dev +OS: ubuntu-32 +Build-host-os: ubuntu-32 +Build-dependency: 2.4-emulator-library-pool [ ubuntu-32 ] +Description: Libraries and headers to build Tizen Emulator + +Package: 2.4-emulator-lib-dev +OS: ubuntu-64 +Build-host-os: ubuntu-64 +Build-dependency: 2.4-emulator-library-pool [ ubuntu-32 ] +Description: Libraries and headers to build Tizen Emulator + +Package: 2.4-emulator-lib-dev +OS: windows-32 +Build-host-os: windows-32 +Build-dependency: 2.4-emulator-library-pool [ ubuntu-32 ] +Description: Libraries and headers to build Tizen Emulator + +Package: 2.4-emulator-lib-dev +OS: windows-64 +Build-host-os: windows-64 +Build-dependency: 2.4-emulator-library-pool [ ubuntu-32 ] +Description: Libraries and headers to build Tizen Emulator + +Package: 2.4-emulator-lib-dev +OS: macos-64 +Build-host-os: macos-64 +Build-dependency: 2.4-emulator-library-pool [ ubuntu-32 ] +Description: Libraries and headers to build Tizen Emulator