github.com/kaixiang/packer@v0.5.2-0.20140114230416-1f5786b0d7f1/scripts/dist.sh (about)

     1  #!/bin/bash
     2  set -e
     3  
     4  # Get the parent directory of where this script is.
     5  SOURCE="${BASH_SOURCE[0]}"
     6  while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done
     7  DIR="$( cd -P "$( dirname "$SOURCE" )/.." && pwd )"
     8  
     9  # Change into that dir because we expect that
    10  cd $DIR
    11  
    12  # Determine the version that we're building based on the contents
    13  # of packer/version.go.
    14  VERSION=$(grep "const Version " packer/version.go | sed -E 's/.*"(.+)"$/\1/')
    15  VERSIONDIR="${VERSION}"
    16  PREVERSION=$(grep "const VersionPrerelease " packer/version.go | sed -E 's/.*"(.*)"$/\1/')
    17  if [ ! -z $PREVERSION ]; then
    18      PREVERSION="${PREVERSION}.$(date -u +%s)"
    19      VERSIONDIR="${VERSIONDIR}-${PREVERSION}"
    20  fi
    21  
    22  # This function waits for all background tasks to complete
    23  waitAll() {
    24      RESULT=0
    25      for job in `jobs -p`; do
    26          wait $job
    27          if [ $? -ne 0 ]; then
    28              RESULT=1
    29          fi
    30      done
    31  
    32      if [ $RESULT -ne 0 ]; then
    33          exit $RESULT
    34      fi
    35  }
    36  
    37  # Compile the main project
    38  ./scripts/compile.sh
    39  
    40  # Make sure that if we're killed, we kill all our subprocseses
    41  trap "kill 0" SIGINT SIGTERM EXIT
    42  
    43  # Zip all the packages
    44  mkdir -p ./pkg/dist
    45  for PLATFORM in $(find ./pkg -mindepth 1 -maxdepth 1 -type d); do
    46      PLATFORM_NAME=$(basename ${PLATFORM})
    47      ARCHIVE_NAME="${VERSIONDIR}_${PLATFORM_NAME}"
    48  
    49      if [ $PLATFORM_NAME = "dist" ]; then
    50          continue
    51      fi
    52  
    53      (
    54      pushd ${PLATFORM}
    55      zip ${DIR}/pkg/dist/${ARCHIVE_NAME}.zip ./*
    56      popd
    57      ) &
    58  done
    59  
    60  waitAll
    61  
    62  # Make the checksums
    63  pushd ./pkg/dist
    64  shasum -a256 * > ./${VERSIONDIR}_SHA256SUMS
    65  popd
    66  
    67  exit 0