Upgrade Package.sh to be able to create content packages too
This commit is contained in:
parent
b3537a5df1
commit
07a2083078
|
@ -6,16 +6,15 @@ source $(dirname "$0")/Environment.sh
|
|||
# -- Parse arguments -----------------------------------------------------------
|
||||
# ==============================================================================
|
||||
|
||||
DOC_STRING="Makes a packaged version of CARLA for distribution."
|
||||
DOC_STRING="Makes a packaged version of CARLA and other content packages ready for distribution."
|
||||
|
||||
USAGE_STRING="Usage: $0 [-h|--help] [--no-packaging] [--no-zip] [--clean-intermediate]"
|
||||
USAGE_STRING="Usage: $0 [-h|--help] [--no-zip] [--clean-intermediate] [--packages=Name1,Name2,...]"
|
||||
|
||||
DO_PACKAGE=true
|
||||
DO_COPY_FILES=true
|
||||
PACKAGES="Carla"
|
||||
DO_TARBALL=true
|
||||
DO_CLEAN_INTERMEDIATE=false
|
||||
|
||||
OPTS=`getopt -o h --long help,no-packaging,no-zip,clean-intermediate -n 'parse-options' -- "$@"`
|
||||
OPTS=`getopt -o h --long help,no-zip,clean-intermediate,packages: -n 'parse-options' -- "$@"`
|
||||
|
||||
if [ $? != 0 ] ; then echo "$USAGE_STRING" ; exit 2 ; fi
|
||||
|
||||
|
@ -23,15 +22,15 @@ 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 ;;
|
||||
--packages )
|
||||
PACKAGES="$2"
|
||||
shift 2 ;;
|
||||
-h | --help )
|
||||
echo "$DOC_STRING"
|
||||
echo "$USAGE_STRING"
|
||||
|
@ -43,56 +42,75 @@ while true; do
|
|||
done
|
||||
|
||||
# ==============================================================================
|
||||
# -- Package project -----------------------------------------------------------
|
||||
# -- Prepare environment -------------------------------------------------------
|
||||
# ==============================================================================
|
||||
|
||||
if [ ! -d "${UE4_ROOT}" ]; then
|
||||
fatal_error "UE4_ROOT is not defined, or points to a non-existent directory, please set this environment variable."
|
||||
fi
|
||||
|
||||
if [ ! -n "${PACKAGES}" ] ; then
|
||||
fatal_error "Nothing to be done."
|
||||
fi
|
||||
|
||||
# Convert comma-separated string to array of unique elements.
|
||||
PACKAGES="$(echo "${PACKAGES}" | tr ',' '\n' | sort -u | tr '\n' ',')"
|
||||
IFS=',' read -r -a PACKAGES <<< "${PACKAGES}"
|
||||
|
||||
# If contains an element called "Carla".
|
||||
if [[ "${PACKAGES[@]}" =~ "Carla" ]] ; then
|
||||
DO_CARLA_RELEASE=true
|
||||
else
|
||||
DO_CARLA_RELEASE=false
|
||||
fi
|
||||
|
||||
REPOSITORY_TAG=$(get_git_repository_version)
|
||||
|
||||
BUILD_FOLDER=${CARLA_DIST_FOLDER}/${REPOSITORY_TAG}
|
||||
RELEASE_BUILD_FOLDER=${CARLA_DIST_FOLDER}/CARLA_${REPOSITORY_TAG}
|
||||
|
||||
log "Packaging version '$REPOSITORY_TAG'."
|
||||
log "Packaging version '${REPOSITORY_TAG}'."
|
||||
|
||||
if $DO_PACKAGE ; then
|
||||
# ==============================================================================
|
||||
# -- Cook CARLA project --------------------------------------------------------
|
||||
# ==============================================================================
|
||||
|
||||
if ${DO_CARLA_RELEASE} ; then
|
||||
|
||||
pushd "${CARLAUE4_ROOT_FOLDER}" >/dev/null
|
||||
|
||||
log "Packaging the project."
|
||||
log "Cooking CARLA 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}
|
||||
rm -Rf ${RELEASE_BUILD_FOLDER}
|
||||
mkdir -p ${RELEASE_BUILD_FOLDER}
|
||||
|
||||
${UE4_ROOT}/Engine/Build/BatchFiles/RunUAT.sh BuildCookRun \
|
||||
-project="${PWD}/CarlaUE4.uproject" \
|
||||
-nocompileeditor -nop4 -cook -stage -archive -package \
|
||||
-clientconfig=Shipping -ue4exe=UE4Editor \
|
||||
-prereqs -targetplatform=Linux -build -utf8output \
|
||||
-archivedirectory="${BUILD_FOLDER}"
|
||||
-archivedirectory="${RELEASE_BUILD_FOLDER}"
|
||||
|
||||
popd >/dev/null
|
||||
|
||||
fi
|
||||
if [[ ! -d ${RELEASE_BUILD_FOLDER}/LinuxNoEditor ]] ; then
|
||||
fatal_error "Failed to cook the project!"
|
||||
fi
|
||||
|
||||
if [[ ! -d ${BUILD_FOLDER}/LinuxNoEditor ]] ; then
|
||||
fatal_error "Failed to package the project!"
|
||||
fi
|
||||
|
||||
# ==============================================================================
|
||||
# -- Copy files (Python API, README, etc) --------------------------------------
|
||||
# ==============================================================================
|
||||
|
||||
if $DO_COPY_FILES ; then
|
||||
if ${DO_CARLA_RELEASE} ; then
|
||||
|
||||
DESTINATION=${BUILD_FOLDER}/LinuxNoEditor
|
||||
DESTINATION=${RELEASE_BUILD_FOLDER}/LinuxNoEditor
|
||||
|
||||
log "Adding extra files to package."
|
||||
log "Adding extra files to CARLA package."
|
||||
|
||||
pushd ${CARLA_ROOT_FOLDER} >/dev/null
|
||||
|
||||
mkdir -p "${DESTINATION}/ExportedAssets"
|
||||
mkdir -p "${DESTINATION}/Import"
|
||||
|
||||
echo "${REPOSITORY_TAG}" > ${DESTINATION}/VERSION
|
||||
|
||||
|
@ -125,14 +143,14 @@ fi
|
|||
# -- Zip the project -----------------------------------------------------------
|
||||
# ==============================================================================
|
||||
|
||||
if $DO_TARBALL ; then
|
||||
if ${DO_CARLA_RELEASE} && ${DO_TARBALL} ; then
|
||||
|
||||
DESTINATION=${CARLA_DIST_FOLDER}/CARLA_${REPOSITORY_TAG}.tar.gz
|
||||
SOURCE=${BUILD_FOLDER}/LinuxNoEditor
|
||||
SOURCE=${RELEASE_BUILD_FOLDER}/LinuxNoEditor
|
||||
|
||||
pushd "${SOURCE}" >/dev/null
|
||||
|
||||
log "Packaging build."
|
||||
log "Packaging CARLA release."
|
||||
|
||||
rm -f ./Manifest_NonUFSFiles_Linux.txt
|
||||
rm -f ./Manifest_UFSFiles_Linux.txt
|
||||
|
@ -149,23 +167,86 @@ fi
|
|||
# -- Remove intermediate files -------------------------------------------------
|
||||
# ==============================================================================
|
||||
|
||||
if $DO_CLEAN_INTERMEDIATE ; then
|
||||
if ${DO_CARLA_RELEASE} && ${DO_CLEAN_INTERMEDIATE} ; then
|
||||
|
||||
log "Removing intermediate build."
|
||||
|
||||
rm -Rf ${BUILD_FOLDER}
|
||||
rm -Rf ${RELEASE_BUILD_FOLDER}
|
||||
|
||||
fi
|
||||
|
||||
# ==============================================================================
|
||||
# -- Cook other packages -------------------------------------------------------
|
||||
# ==============================================================================
|
||||
|
||||
for PACKAGE_NAME in "${PACKAGES[@]}" ; do if [[ ${PACKAGE_NAME} != "Carla" ]] ; then
|
||||
|
||||
BUILD_FOLDER=${CARLA_DIST_FOLDER}/${PACKAGE_NAME}_${REPOSITORY_TAG}
|
||||
|
||||
DESTINATION=${BUILD_FOLDER}.tar.gz
|
||||
|
||||
mkdir -p ${BUILD_FOLDER}
|
||||
|
||||
log "Preparing environment for cooking '${PACKAGE_NAME}'."
|
||||
|
||||
fatal_error "TODO: Call command-let here."
|
||||
|
||||
pushd "${CARLAUE4_ROOT_FOLDER}" > /dev/null
|
||||
|
||||
log "Cooking '${PACKAGE_NAME}'."
|
||||
|
||||
${UE4_ROOT}/Engine/Binaries/Linux/UE4Editor "${PWD}/CarlaUE4.uproject" \
|
||||
-run=cook -cooksinglepackage -targetplatform="LinuxNoEditor" \
|
||||
-OutputDir="${BUILD_FOLDER}" \
|
||||
-Map=${MAP_TO_COOK}
|
||||
|
||||
popd >/dev/null
|
||||
|
||||
if ${DO_TARBALL} ; then
|
||||
|
||||
pushd "${BUILD_FOLDER}" > /dev/null
|
||||
|
||||
log "Packaging '${PACKAGE_NAME}'."
|
||||
|
||||
rm -Rf ./CarlaUE4/Metadata
|
||||
rm -Rf ./CarlaUE4/Plugins
|
||||
rm ./CarlaUE4/AssetRegistry.bin
|
||||
|
||||
fatal_error "TODO: Remove intermediate maps here."
|
||||
|
||||
tar -czvf ${DESTINATION} *
|
||||
|
||||
popd >/dev/null
|
||||
|
||||
fi
|
||||
|
||||
if ${DO_CLEAN_INTERMEDIATE} ; then
|
||||
log "Removing intermediate build."
|
||||
rm -Rf ${BUILD_FOLDER}
|
||||
fi
|
||||
|
||||
fi ; done
|
||||
|
||||
# ==============================================================================
|
||||
# -- Log paths of generated packages -------------------------------------------
|
||||
# ==============================================================================
|
||||
|
||||
for PACKAGE_NAME in "${PACKAGES[@]}" ; do if [[ ${PACKAGE_NAME} != "Carla" ]] ; then
|
||||
FINAL_PACKAGE=${CARLA_DIST_FOLDER}/${PACKAGE_NAME}_${REPOSITORY_TAG}.tar.gz
|
||||
log "Package '${PACKAGE_NAME}' created at ${FINAL_PACKAGE}"
|
||||
fi ; done
|
||||
|
||||
if ${DO_CARLA_RELEASE} ; then
|
||||
if ${DO_TARBALL} ; then
|
||||
FINAL_PACKAGE=${CARLA_DIST_FOLDER}/CARLA_${REPOSITORY_TAG}.tar.gz
|
||||
else
|
||||
FINAL_PACKAGE=${RELEASE_BUILD_FOLDER}
|
||||
fi
|
||||
log "CARLA release created at ${FINAL_PACKAGE}"
|
||||
fi
|
||||
|
||||
# ==============================================================================
|
||||
# -- ...and we are done --------------------------------------------------------
|
||||
# ==============================================================================
|
||||
|
||||
if $DO_TARBALL ; then
|
||||
FINAL_PACKAGE=${CARLA_DIST_FOLDER}/CARLA_${REPOSITORY_TAG}.tar.gz
|
||||
else
|
||||
FINAL_PACKAGE=${BUILD_FOLDER}
|
||||
fi
|
||||
|
||||
log "Packaged version created at ${FINAL_PACKAGE}"
|
||||
log "Success!"
|
||||
|
|
Loading…
Reference in New Issue