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