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