github.com/getgauge/gauge@v1.6.9/build/mkdeb.sh (about) 1 #!/bin/bash 2 3 # ---------------------------------------------------------------- 4 # Copyright (c) ThoughtWorks, Inc. 5 # Licensed under the Apache License, Version 2.0 6 # See LICENSE.txt in the project root for license information. 7 # ---------------------------------------------------------------- 8 9 # Original source: https://github.com/gauge/gauge/blob/master/script/mkdeb 10 11 # Usage: 12 # ./build/mkdeb.sh [--rebuild] 13 14 set -e 15 16 function err () { 17 echo "ERROR: $1" 18 exit 1 19 } 20 21 ROOT=`pwd -P` 22 DEPLOY_DIR="$ROOT/deploy" 23 BUILD_DIR="$ROOT/build" 24 OS=`uname -s | tr '[:upper:]' '[:lower:]'` 25 ARCH="i386" 26 NAME="gauge" 27 FILE_EXT="zip" 28 FILE_MODE=755 29 CONTROL_FILE="$BUILD_DIR/packaging/deb/control" 30 31 if [ "$OS" != "linux" ]; then 32 err "This script can only be run on Linux systems" 33 fi 34 35 if [ "$1" == "--rebuild" ]; then 36 REBUILD_NEEDED=1 37 fi 38 39 function rebuild () { 40 rm -rf "$DEPLOY_DIR" 41 go run build/make.go --all-platforms --target-linux 42 go run build/make.go --distro --all-platforms --target-linux 43 } 44 45 function check_and_rebuild() { 46 if [ ! -d "$DEPLOY_DIR" ]; then 47 echo -e "Building distro packages...\n" 48 rebuild 49 elif [ ! -z "$REBUILD_NEEDED" ]; then 50 echo -e "Rebuild flag set. Rebuilding distro packages...\n" 51 rebuild 52 else 53 echo -e "Reusing existing distro package. Use '--rebuild' to trigger a package rebuild...\n" 54 fi 55 } 56 57 function set_arch() { 58 if [ -z "$1" ]; then 59 ARCHTYPE=$(ls $NAME*.$FILE_EXT | head -1 | rev | cut -d '-' -f 1 | rev | cut -d '.' -f 2) 60 else 61 ARCHTYPE=$(echo $1 | sed "s/^[a-z]*\///" | rev | cut -d '-' -f 1 | rev | cut -d '.' -f 2) 62 fi 63 64 if [ "$ARCHTYPE" == "x86_64" ]; then 65 ARCH="amd64" 66 else 67 ARCH="i386" 68 fi 69 } 70 71 function set_version() { 72 if [ -z "$1" ]; then 73 VERSION=$(ls $NAME*$ARCHTYPE.$FILE_EXT | head -1 | sed "s/\.[^\.]*$//" | sed "s/$NAME-//" | sed "s/-[a-z]*\.[a-z0-9_]*$//") 74 else 75 VERSION=$(echo `basename $1` | sed "s/^[a-z]*\///" | sed "s/\.[^\.]*$//" | sed "s/$NAME-//" | sed "s/-[a-z]*\.[a-z0-9_]*$//") 76 fi 77 } 78 79 function set_pkg_info() { 80 PKG="$DEPLOY_DIR/$NAME-$VERSION-$OS.$ARCHTYPE.$FILE_EXT" 81 PKG_SRC="$DEPLOY_DIR/$NAME-$VERSION-pkg" 82 } 83 84 function set_info() { 85 set_arch "$1" 86 set_version "$1" 87 set_pkg_info 88 } 89 90 function clean_stage() { 91 TARGET_ROOT="$DEPLOY_DIR/deb" 92 rm -rf "$TARGET_ROOT" 93 mkdir -p "$TARGET_ROOT" 94 chmod $FILE_MODE "$TARGET_ROOT" 95 TARGET="$TARGET_ROOT/$NAME-$VERSION-$ARCH" 96 DEB_PATH="$DEPLOY_DIR/" 97 } 98 99 function prep_deb() { 100 echo "Preparing .deb data..." 101 mkdir -m $FILE_MODE -p "$TARGET/usr/local/bin/" 102 103 cp -r "$PKG_SRC/gauge" "$TARGET/usr/local/bin/" 104 105 mkdir -m $FILE_MODE -p "$TARGET/DEBIAN" 106 cp "$CONTROL_FILE" "$TARGET/DEBIAN/control" 107 108 chmod +x $TARGET/usr/local/bin/gauge 109 110 sync 111 112 CONTROL_DATA=$(cat "$TARGET/DEBIAN/control") 113 INSTALLED_SIZE=$(du -s $PKG_SRC/ | sed "s/^\([0-9]*\).*$/\1/") 114 while [ $INSTALLED_SIZE -lt 1 ]; do 115 INSTALLED_SIZE=$(du -s $PKG_SRC/ | sed "s/^\([0-9]*\).*$/\1/") 116 done 117 echo "$CONTROL_DATA" | sed "s/<version>/$VERSION/" | sed "s/<arch>/$ARCH/" | sed "s/<size>/$INSTALLED_SIZE/" > "$TARGET/DEBIAN/control" 118 119 # Copy generated LICENSE.md to /usr/share/doc/gauge/copyright 120 mkdir -m $FILE_MODE -p "$TARGET/usr/share/doc/$NAME" 121 cp "$ROOT/LICENSE" "$TARGET/usr/share/doc/$NAME/copyright" 122 } 123 124 function create_deb() { 125 echo "Generating .deb..." 126 fakeroot dpkg-deb -b "$TARGET" 127 mv "$TARGET_ROOT/$NAME-$VERSION-$ARCH.deb" "$DEB_PATH" 128 } 129 130 function cleanup_temp() { 131 rm -rf "$TARGET_ROOT" 132 rm -rf "$PKG_SRC" 133 } 134 135 function print_status() { 136 echo -e "\nCreated .deb package at: $DEB_PATH$NAME-$VERSION-$ARCH.deb" 137 echo -e " Version : $VERSION" 138 echo -e " Arch : $ARCH\n" 139 } 140 141 function init() { 142 check_and_rebuild 143 144 for f in `ls $DEPLOY_DIR/$NAME-*$OS*.$FILE_EXT`; do 145 clean_stage 146 147 pushd $DEPLOY_DIR > /dev/null 148 set_info "$f" 149 unzip -q "$PKG" -d "$PKG_SRC" 150 popd > /dev/null 151 152 clean_stage 153 prep_deb 154 create_deb 155 cleanup_temp 156 print_status 157 done 158 } 159 160 # Let the game begin 161 init