https://github.com/carla-simulator/carla
Raw File
Tip revision: 9c26503693a47773f9c3381420dd9a2509b018a9 authored by nsubiron on 18 January 2019, 09:56:52 UTC
Add warning about running below 10 fps, related to #695
Tip revision: 9c26503
Package.sh
#! /bin/bash

################################################################################
# Packages a CARLA build.
################################################################################

set -e

DOC_STRING="Makes a packaged version of CARLA for distribution.
Please make sure to run Rebuild.sh before!"

USAGE_STRING="Usage: $0 [-h|--help] [--no-packaging] [--no-zip] [--clean-intermediate]"

# ==============================================================================
# -- Parse arguments -----------------------------------------------------------
# ==============================================================================

DO_PACKAGE=true
DO_COPY_FILES=true
DO_TARBALL=true
DO_CLEAN_INTERMEDIATE=false

OPTS=`getopt -o h --long help,no-packaging,no-zip,clean-intermediate -n 'parse-options' -- "$@"`

if [ $? != 0 ] ; then echo "$USAGE_STRING" ; exit 2 ; fi

eval set -- "$OPTS"

while true; do
  case "$1" in
    --no-packaging )
      DO_PACKAGE=false
      shift ;;
    --no-zip )
      DO_TARBALL=false
      shift ;;
    --clean-intermediate )
      DO_CLEAN_INTERMEDIATE=true
      shift ;;
    -h | --help )
      echo "$DOC_STRING"
      echo "$USAGE_STRING"
      exit 1
      ;;
    * )
      break ;;
  esac
done

# ==============================================================================
# -- Set up environment --------------------------------------------------------
# ==============================================================================

SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
pushd "$SCRIPT_DIR" >/dev/null

REPOSITORY_TAG=`git describe --tags --dirty --always`

echo "Packaging version '$REPOSITORY_TAG'."

UNREAL_PROJECT_FOLDER=${PWD}/Unreal/CarlaUE4
DIST_FOLDER=${PWD}/Dist
BUILD_FOLDER=${DIST_FOLDER}/${REPOSITORY_TAG}

function fatal_error {
  echo -e "\033[0;31mERROR: $1\033[0m"
  exit 1
}

function log {
  echo -e "\033[0;33m$1\033[0m"
}

# ==============================================================================
# -- Package project -----------------------------------------------------------
# ==============================================================================

if $DO_PACKAGE ; then

  pushd "$UNREAL_PROJECT_FOLDER" >/dev/null

  log "Packaging the project..."

  if [ ! -d "${UE4_ROOT}" ]; then
    fatal_error "UE4_ROOT is not defined, or points to a non-existant directory, please set this environment variable."
  fi

  rm -Rf ${BUILD_FOLDER}
  mkdir -p ${BUILD_FOLDER}

  ${UE4_ROOT}/Engine/Build/BatchFiles/RunUAT.sh BuildCookRun \
      -project="${PWD}/CarlaUE4.uproject" \
      -nocompileeditor -nop4 -cook -stage -archive -package \
      -clientconfig=Development -ue4exe=UE4Editor \
      -pak -prereqs -nodebuginfo \
      -targetplatform=Linux -build -CrashReporter -utf8output \
      -archivedirectory="${BUILD_FOLDER}"

  popd >/dev/null

fi

if [[ ! -d ${BUILD_FOLDER}/LinuxNoEditor ]] ; then
  fatal_error "Failed to package the project!"
fi

# ==============================================================================
# -- Copy files (Python server, README, etc) -----------------------------------
# ==============================================================================

if $DO_COPY_FILES ; then

  DESTINATION=${BUILD_FOLDER}/LinuxNoEditor

  log "Copying extra files..."

  cp -v ./LICENSE ${DESTINATION}/LICENSE
  cp -v ./CHANGELOG.md ${DESTINATION}/CHANGELOG
  cp -v ./Docs/release_readme.md ${DESTINATION}/README
  cp -v ./Docs/Example.CarlaSettings.ini ${DESTINATION}/Example.CarlaSettings.ini

  rsync -vhr --delete --delete-excluded \
      --exclude "*.egg-info" \
      --exclude "*.log" \
      --exclude "*.pyc" \
      --exclude ".*" \
      --exclude ".tags*" \
      --exclude "__pycache__" \
      --exclude "_benchmarks_results*" \
      --exclude "_images*" \
      --exclude "_out*" \
      PythonClient/ ${DESTINATION}/PythonClient

  echo

fi

# ==============================================================================
# -- Zip the project -----------------------------------------------------------
# ==============================================================================

if $DO_TARBALL ; then

  DESTINATION=${DIST_FOLDER}/CARLA_${REPOSITORY_TAG}.tar.gz
  SOURCE=${BUILD_FOLDER}/LinuxNoEditor

  pushd "$SOURCE" >/dev/null

  log "Packaging build..."

  rm -f ./Manifest_NonUFSFiles_Linux.txt
  rm -Rf ./CarlaUE4/Saved
  rm -Rf ./Engine/Saved

  tar -czvf ${DESTINATION} *

  popd >/dev/null

fi

# ==============================================================================
# -- Remove intermediate files -------------------------------------------------
# ==============================================================================

if $DO_CLEAN_INTERMEDIATE ; then

  log "Removing intermediate build..."

  rm -Rf ${BUILD_FOLDER}

fi

# ==============================================================================
# -- ...and we are done --------------------------------------------------------
# ==============================================================================

if $DO_TARBALL ; then
  FINAL_PACKAGE=Dist/CARLA_${REPOSITORY_TAG}.tar.gz
else
  FINAL_PACKAGE=Dist/${REPOSITORY_TAG}
fi

echo
echo "Packaged version created at ${FINAL_PACKAGE}"
echo
echo "****************"
echo "*** Success! ***"
echo "****************"

popd >/dev/null
back to top