浏览代码

cross platform: add deb package creation support

Oguz Bastemur 9 年之前
父节点
当前提交
a7bff6d47d
共有 1 个文件被更改,包括 49 次插入14 次删除
  1. 49 14
      build.sh

+ 49 - 14
build.sh

@@ -20,20 +20,21 @@ PRINT_USAGE() {
     echo "build.sh [options]"
     echo ""
     echo "options:"
-    echo "      --cxx=PATH      Path to Clang++ (see example below)"
-    echo "      --cc=PATH       Path to Clang   (see example below)"
-    echo "  -d, --debug         Debug build (by default Release build)"
-    echo "  -h, --help          Show help"
-    echo "      --icu=PATH      Path to ICU include folder (see example below)"
-    echo "  -j [N], --jobs[=N]  Multicore build, allow N jobs at once"
-    echo "  -n, --ninja         Build with ninja instead of make"
-    echo "      --xcode         Generate XCode project"
-    echo "  -t, --test-build    Test build (by default Release build)"
-    echo "      --static        Build as static library (by default shared library)"
-    echo "  -v, --verbose       Display verbose output including all options"
+    echo "      --cxx=PATH       Path to Clang++ (see example below)"
+    echo "      --cc=PATH        Path to Clang   (see example below)"
+    echo "  -d, --debug          Debug build (by default Release build)"
+    echo "  -h, --help           Show help"
+    echo "      --icu=PATH       Path to ICU include folder (see example below)"
+    echo "  -j [N], --jobs[=N]   Multicore build, allow N jobs at once"
+    echo "  -n, --ninja          Build with ninja instead of make"
+    echo "      --xcode          Generate XCode project"
+    echo "  -t, --test-build     Test build (by default Release build)"
+    echo "      --static         Build as static library (by default shared library)"
+    echo "  -v, --verbose        Display verbose output including all options"
+    echo "      --create-deb=V   Create .deb package with given V version"
     echo "      --without=FEATURE,FEATURE,..."
-    echo "                      Disable FEATUREs from JSRT experimental"
-    echo "                      features."
+    echo "                       Disable FEATUREs from JSRT experimental"
+    echo "                       features."
     echo ""
     echo "example:"
     echo "  ./build.sh --cxx=/path/to/clang++ --cc=/path/to/clang -j"
@@ -53,6 +54,7 @@ MULTICORE_BUILD=""
 ICU_PATH=""
 STATIC_LIBRARY=""
 WITHOUT_FEATURES=""
+CREATE_DEB=0
 
 while [[ $# -gt 0 ]]; do
     case "$1" in
@@ -111,11 +113,16 @@ while [[ $# -gt 0 ]]; do
         MAKE=ninja
         ;;
 
-	--xcode)
+    --xcode)
         CMAKE_GEN="-G Xcode -DCC_XCODE_PROJECT=1"
         MAKE=0
         ;;
 
+    --create-deb=*)
+        CREATE_DEB=$1
+        CREATE_DEB="${CREATE_DEB:13}"
+        ;;
+
     --static)
         STATIC_LIBRARY="-DSTATIC_LIBRARY=1"
         ;;
@@ -228,6 +235,34 @@ fi
 
 if [[ $_RET != 0 ]]; then
     echo "See error details above. Exit code was $_RET"
+else
+    if [[ $CREATE_DEB != 0 ]]; then
+        DEB_FOLDER=`realpath .`
+        DEB_FOLDER="${DEB_FOLDER}/chakracore_${CREATE_DEB}"
+
+        mkdir -p $DEB_FOLDER/usr/local/bin
+        mkdir -p $DEB_FOLDER/DEBIAN
+        cp $DEB_FOLDER/../ch $DEB_FOLDER/usr/local/bin/
+        if [[ $STATIC_LIBRARY == "" ]]; then
+            cp $DEB_FOLDER/../*.so $DEB_FOLDER/usr/local/bin/
+        fi
+        echo -e "Package: ChakraCore"\
+            "\nVersion: ${CREATE_DEB}"\
+            "\nSection: base"\
+            "\nPriority: optional"\
+            "\nArchitecture: amd64"\
+            "\nDepends: libc6 (>= 2.19), uuid-dev (>> 0), libunwind-dev (>> 0), libicu-dev (>> 0)"\
+            "\nMaintainer: ChakraCore <[email protected]>"\
+            "\nDescription: Chakra Core"\
+            "\n Open source Core of Chakra Javascript Engine"\
+            > $DEB_FOLDER/DEBIAN/control
+
+        dpkg-deb --build $DEB_FOLDER
+        _RET=$?
+        if [[ $_RET == 0 ]]; then
+            echo ".deb package is available under $build_directory"
+        fi
+    fi
 fi
 
 popd > /dev/null