build: improve build script and verification
authorJihye Won <jihye.won1@samsung.com>
Sun, 15 Nov 2015 08:04:15 +0000 (17:04 +0900)
committerJihye Won <jihye.won1@samsung.com>
Mon, 30 Nov 2015 07:03:51 +0000 (16:03 +0900)
Change-Id: I2cdf59ff5ed16ec9ba7a0fe7b01566dcd5df4799
Signed-off-by: Jihye Won <jihye.won1@samsung.com>
package/build.common
package/build.linux
package/build.macos [moved from package/build.macos-64 with 57% similarity]

index 90c2678..b89fd65 100644 (file)
@@ -1,15 +1,8 @@
 #!/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
@@ -38,19 +31,8 @@ contains_string()
     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"
@@ -59,7 +41,6 @@ set_permission()
     # if not, set 644 permission
     if test "${string#*$substring}" != "$string"
     then
-        echo "$1 is excutable"
         chmod 755 "$1"
     else
         chmod 644 "$1"
@@ -67,36 +48,26 @@ set_permission()
 }
 
 # $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
@@ -112,81 +83,50 @@ check_swt()
     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"
 }
index 6e3fd70..12fccf1 100755 (executable)
@@ -76,77 +76,39 @@ check_archi_ubuntu_64()
     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()
@@ -178,32 +140,17 @@ prepare()
 
 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"
similarity index 57%
rename from package/build.macos-64
rename to package/build.macos
index 477d19e..3c77de9 100644 (file)
@@ -16,7 +16,7 @@ patch_loader_path()
     # 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
@@ -26,7 +26,7 @@ patch_loader_path()
     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
@@ -43,28 +43,28 @@ patch_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
@@ -117,72 +117,37 @@ check_archi_macos_64()
             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()
@@ -192,34 +157,19 @@ 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
 }