github.com/ezbuy/gauge@v0.9.4-0.20171013092048-7ac5bd3931cd/build/mkrpm.sh (about) 1 #!/bin/bash 2 # Original source: https://github.com/gauge/gauge/blob/master/script/mkrpm 3 4 # Usage: 5 # ./build/mkrpm.sh [--rebuild] 6 7 set -e 8 if [[ -z $GOPATH ]]; then 9 export GOPATH=`pwd` 10 fi 11 if [[ -z $GOBIN ]]; then 12 export GOBIN="$GOPATH/bin" 13 fi 14 15 cd $GOPATH/src/github.com/getgauge/gauge 16 17 go get github.com/tools/godep && $GOBIN/godep restore 18 19 function err () { 20 echo "ERROR: $1" 21 exit 1 22 } 23 24 ROOT=`pwd -P` 25 DEPLOY_DIR="$ROOT/deploy" 26 BUILD_DIR="$ROOT/build" 27 OS=`uname -s | tr '[:upper:]' '[:lower:]'` 28 ARCH="i386" 29 NAME="gauge" 30 FILE_EXT="zip" 31 FILE_MODE=755 32 RELEASE=all 33 SPEC_FILE="$BUILD_DIR/packaging/rpm/gauge.spec" 34 35 if [ "$OS" != "linux" ]; then 36 err "This script can only be run on Linux systems" 37 fi 38 39 if [ "$1" == "--rebuild" ]; then 40 REBUILD_NEEDED=1 41 fi 42 43 if [ "$2" == "--nightly" ]; then 44 NIGHTLY="--nightly" 45 fi 46 47 function rebuild () { 48 rm -rf "$DEPLOY_DIR" 49 go run build/make.go --all-platforms --target-linux $NIGHTLY 50 go run build/make.go --distro --all-platforms --target-linux $NIGHTLY 51 } 52 53 function check_and_rebuild() { 54 if [ ! -d "$DEPLOY_DIR" ]; then 55 echo -e "Building distro packages...\n" 56 rebuild 57 elif [ ! -z "$REBUILD_NEEDED" ]; then 58 echo -e "Rebuild flag set. Rebuilding distro packages...\n" 59 rebuild 60 else 61 echo -e "Reusing existing distro package. Use '--rebuild' to trigger a package rebuild...\n" 62 fi 63 } 64 65 function set_arch() { 66 if [ -z "$1" ]; then 67 ARCHTYPE=$(ls $NAME*.$FILE_EXT | head -1 | rev | cut -d '-' -f 1 | rev | cut -d '.' -f 2) 68 else 69 ARCHTYPE=$(echo $1 | sed "s/^[a-z]*\///" | rev | cut -d '-' -f 1 | rev | cut -d '.' -f 2) 70 fi 71 72 if [ "$ARCHTYPE" == "x86_64" ]; then 73 ARCH="x86_64" 74 else 75 ARCH="i386" 76 fi 77 } 78 79 function set_version() { 80 if [ -z "$1" ]; then 81 VERSION=$(ls $NAME*$ARCHTYPE.$FILE_EXT | head -1 | sed "s/\.[^\.]*$//" | sed "s/$NAME-//" | sed "s/-[a-z]*\.[a-z0-9_]*$//") 82 else 83 VERSION=$(echo `basename $1` | sed "s/^[a-z]*\///" | sed "s/\.[^\.]*$//" | sed "s/$NAME-//" | sed "s/-[a-z]*\.[a-z0-9_]*$//") 84 fi 85 RPM_VERSION=$(echo $VERSION | sed "s/-//g") 86 } 87 88 function set_pkg_info() { 89 PKG="$DEPLOY_DIR/$NAME-$VERSION-$OS.$ARCHTYPE.$FILE_EXT" 90 PKG_SRC="$DEPLOY_DIR/$NAME-$VERSION-pkg" 91 } 92 93 function set_info() { 94 set_arch "$1" 95 set_version "$1" 96 set_pkg_info 97 } 98 99 function clean_stage() { 100 TARGET="$HOME/rpmbuild" 101 rm -rf "$TARGET" 102 RPM_PATH="$DEPLOY_DIR/" 103 } 104 105 function prep_rpm() { 106 echo "Preparing .rpm data..." 107 rpmdev-setuptree 108 109 cp -r "$PKG_SRC/bin" "$TARGET/BUILD/" 110 111 SPEC_DATA=`cat "$SPEC_FILE"` 112 echo "$SPEC_DATA" | sed "s/<version>/$RPM_VERSION/g" | sed "s/<release>/$RELEASE/g" > "$TARGET/SPECS/gauge.spec" 113 cat $TARGET/SPECS/gauge.spec 114 # Copy generated LICENSE.md to /usr/share/doc/gauge/copyright 115 mkdir -m $FILE_MODE -p "$TARGET/BUILD/usr/local/share/doc/$NAME" 116 cp "$ROOT/LICENSE" "$TARGET/BUILD/usr/local/share/doc/$NAME/copyright" 117 } 118 119 function create_rpm() { 120 echo "Generating .rpm..." 121 rpmbuild --target $ARCH-redhat-linux -ba "$TARGET/SPECS/gauge.spec" 122 mv $TARGET/RPMS/$ARCH/$NAME-$RPM_VERSION-$RELEASE.$ARCH.rpm "$RPM_PATH/" 123 } 124 125 function cleanup_temp() { 126 rm -rf "$TARGET" 127 rm -rf "$PKG_SRC" 128 } 129 130 function print_status() { 131 echo -e "\nCreated .rpm package in: $RPM_PATH$NAME-$RPM_VERSION-$RELEASE.$ARCH.rpm" 132 echo -e " Version : $VERSION" 133 echo -e " Arch : $ARCH\n" 134 } 135 136 function init() { 137 check_and_rebuild 138 139 for f in `ls $DEPLOY_DIR/$NAME-*$OS*.$FILE_EXT`; do 140 clean_stage 141 142 pushd $DEPLOY_DIR > /dev/null 143 set_info "$f" 144 unzip -q "$PKG" -d "$PKG_SRC" 145 popd > /dev/null 146 147 clean_stage 148 prep_rpm 149 create_rpm 150 cleanup_temp 151 print_status 152 done 153 } 154 155 # Let the game begin 156 init