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