Scripts: Set errexit to catch errors
This commit is contained in:
committed by
Matthias Mailänder
parent
7cd0d8c079
commit
946cd8f322
@@ -23,7 +23,9 @@
|
||||
# Mod SDK Windows packaging
|
||||
# Mod SDK macOS packaging
|
||||
# Mod SDK Linux AppImage packaging
|
||||
install_assemblies() {
|
||||
install_assemblies() (
|
||||
set -o errexit || exit $?
|
||||
|
||||
SRC_PATH="${1}"
|
||||
DEST_PATH="${2}"
|
||||
TARGETPLATFORM="${3}"
|
||||
@@ -37,8 +39,8 @@ install_assemblies() {
|
||||
|
||||
if [ "${RUNTIME}" = "mono" ]; then
|
||||
echo "Building assemblies"
|
||||
rm -rf "${SRC_PATH}/OpenRA."*/obj
|
||||
rm -rf "${SRC_PATH:?}/bin"
|
||||
rm -rf "${SRC_PATH}/OpenRA."*/obj || :
|
||||
rm -rf "${SRC_PATH:?}/bin" || :
|
||||
|
||||
msbuild -verbosity:m -nologo -t:Build -restore -p:Configuration=Release -p:TargetPlatform="${TARGETPLATFORM}"
|
||||
if [ "${TARGETPLATFORM}" = "unix-generic" ]; then
|
||||
@@ -81,7 +83,7 @@ install_assemblies() {
|
||||
dotnet publish -c Release -p:TargetPlatform="${TARGETPLATFORM}" -p:CopyGenericLauncher="${COPY_GENERIC_LAUNCHER}" -p:CopyCncDll="${COPY_CNC_DLL}" -p:CopyD2kDll="${COPY_D2K_DLL}" -r "${TARGETPLATFORM}" -o "${DEST_PATH}" --self-contained true
|
||||
fi
|
||||
cd "${ORIG_PWD}" || exit 1
|
||||
}
|
||||
)
|
||||
|
||||
# Copy the core engine and specified mod data to the target directory
|
||||
# Arguments:
|
||||
@@ -96,7 +98,9 @@ install_assemblies() {
|
||||
# Mod SDK Linux AppImage packaging
|
||||
# Mod SDK macOS packaging
|
||||
# Mod SDK Windows packaging
|
||||
install_data() {
|
||||
install_data() (
|
||||
set -o errexit || exit $?
|
||||
|
||||
SRC_PATH="${1}"
|
||||
DEST_PATH="${2}"
|
||||
shift 2
|
||||
@@ -125,7 +129,7 @@ install_data() {
|
||||
|
||||
shift
|
||||
done
|
||||
}
|
||||
)
|
||||
|
||||
# Compile and publish (using Mono) a windows launcher with the specified mod details to the target directory
|
||||
# Arguments:
|
||||
@@ -140,8 +144,9 @@ install_data() {
|
||||
# Used by:
|
||||
# Windows packaging
|
||||
# Mod SDK Windows packaging
|
||||
install_windows_launcher()
|
||||
{
|
||||
install_windows_launcher() (
|
||||
set -o errexit || exit $?
|
||||
|
||||
SRC_PATH="${1}"
|
||||
DEST_PATH="${2}"
|
||||
TARGETPLATFORM="${3}"
|
||||
@@ -150,14 +155,14 @@ install_windows_launcher()
|
||||
MOD_NAME="${6}"
|
||||
FAQ_URL="${7}"
|
||||
|
||||
rm -rf "${SRC_PATH}/OpenRA.WindowsLauncher/obj"
|
||||
rm -rf "${SRC_PATH}/OpenRA.WindowsLauncher/obj" || :
|
||||
dotnet publish "${SRC_PATH}/OpenRA.WindowsLauncher/OpenRA.WindowsLauncher.csproj" -c Release -r "${TARGETPLATFORM}" -p:LauncherName="${LAUNCHER_NAME}" -p:TargetPlatform="${TARGETPLATFORM}" -p:ModID="${MOD_ID}" -p:DisplayName="${MOD_NAME}" -p:FaqUrl="${FAQ_URL}" -o "${DEST_PATH}" --self-contained true
|
||||
|
||||
# NET 6 is unable to customize the application host for windows when compiling from Linux,
|
||||
# so we must patch the properties we need in the PE header.
|
||||
# Setting the application icon requires an external tool, so is left to the calling code
|
||||
python3 "${SRC_PATH}/packaging/windows/fixlauncher.py" "${DEST_PATH}/${LAUNCHER_NAME}.exe"
|
||||
}
|
||||
)
|
||||
|
||||
# Write a version string to the engine VERSION file
|
||||
# Arguments:
|
||||
@@ -171,11 +176,13 @@ install_windows_launcher()
|
||||
# Mod SDK Linux AppImage packaging
|
||||
# Mod SDK macOS packaging
|
||||
# Mod SDK Windows packaging
|
||||
set_engine_version() {
|
||||
set_engine_version() (
|
||||
set -o errexit || exit $?
|
||||
|
||||
VERSION="${1}"
|
||||
DEST_PATH="${2}"
|
||||
echo "${VERSION}" > "${DEST_PATH}/VERSION"
|
||||
}
|
||||
)
|
||||
|
||||
# Write a version string to a list of specified mod.yamls
|
||||
# Arguments:
|
||||
@@ -189,7 +196,9 @@ set_engine_version() {
|
||||
# Mod SDK Linux AppImage packaging
|
||||
# Mod SDK macOS packaging
|
||||
# Mod SDK Windows packaging
|
||||
set_mod_version() {
|
||||
set_mod_version() (
|
||||
set -o errexit || exit $?
|
||||
|
||||
VERSION="${1}"
|
||||
shift
|
||||
while [ -n "${1}" ]; do
|
||||
@@ -199,7 +208,7 @@ set_mod_version() {
|
||||
rm "${MOD_YAML_PATH}.tmp"
|
||||
shift
|
||||
done
|
||||
}
|
||||
)
|
||||
|
||||
# Copy launch wrappers, application icons, desktop, and MIME files to the target directory
|
||||
# Arguments:
|
||||
@@ -212,7 +221,9 @@ set_mod_version() {
|
||||
# MOD [MOD...]: One or more mod ids to copy (cnc, d2k, ra)
|
||||
# Used by:
|
||||
# Makefile (install-linux-shortcuts target for local installs and downstream packaging)
|
||||
install_linux_shortcuts() {
|
||||
install_linux_shortcuts() (
|
||||
set -o errexit || exit $?
|
||||
|
||||
SRC_PATH="${1}"
|
||||
BUILD_PATH="${2}"
|
||||
OPENRA_PATH="${3}"
|
||||
@@ -270,7 +281,7 @@ install_linux_shortcuts() {
|
||||
|
||||
shift
|
||||
done
|
||||
}
|
||||
)
|
||||
|
||||
# Copy AppStream metadata to the target directory
|
||||
# Arguments:
|
||||
@@ -280,7 +291,9 @@ install_linux_shortcuts() {
|
||||
# MOD [MOD...]: One or more mod ids to copy (cnc, d2k, ra)
|
||||
# Used by:
|
||||
# Makefile (install-linux-appdata target for local installs and downstream packaging)
|
||||
install_linux_appdata() {
|
||||
install_linux_appdata() (
|
||||
set -o errexit || exit $?
|
||||
|
||||
SRC_PATH="${1}"
|
||||
BUILD_PATH="${2}"
|
||||
SHARE_PATH="${3}"
|
||||
@@ -315,4 +328,4 @@ install_linux_appdata() {
|
||||
|
||||
shift
|
||||
done
|
||||
}
|
||||
)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#!/bin/sh
|
||||
set -o errexit || exit $?
|
||||
|
||||
HERE="$(dirname "$(readlink -f "${0}")")"
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#!/bin/bash
|
||||
# OpenRA packaging script for Linux (AppImage)
|
||||
set -e
|
||||
|
||||
set -o errexit || exit $?
|
||||
|
||||
command -v tar >/dev/null 2>&1 || { echo >&2 "Linux packaging requires tar."; exit 1; }
|
||||
command -v curl >/dev/null 2>&1 || command -v wget > /dev/null 2>&1 || { echo >&2 "Linux packaging requires curl or wget."; exit 1; }
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/bin/sh
|
||||
set -o errexit || exit $?
|
||||
|
||||
HERE="$(dirname "$(readlink -f "${0}")")"
|
||||
cd "${HERE}/../lib/openra" || exit 1
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/bin/sh
|
||||
set -o errexit || exit $?
|
||||
|
||||
cd "{GAME_INSTALL_DIR}"
|
||||
|
||||
mono {DEBUG} OpenRA.Server.dll Game.Mod={MODID} "$@"
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#!/bin/sh
|
||||
set -o errexit || exit $?
|
||||
|
||||
# OpenRA.Utility relies on keeping the original working directory, so don't change directory
|
||||
HERE="$(dirname "$(readlink -f "${0}")")"
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/bin/sh
|
||||
set -o errexit || exit $?
|
||||
|
||||
LAUNCHER=$(readlink -f "${0}")
|
||||
HERE="$(dirname "${LAUNCHER}")"
|
||||
cd "${HERE}/../lib/openra" || exit 1
|
||||
@@ -43,21 +45,23 @@ fi
|
||||
|
||||
# Run the game
|
||||
export SDL_VIDEO_X11_WMCLASS="openra-{MODID}-{TAG}"
|
||||
./OpenRA Game.Mod={MODID} Engine.LaunchPath="${LAUNCHER}" "${JOIN_SERVER}" "$@"
|
||||
./OpenRA Game.Mod={MODID} Engine.LaunchPath="${LAUNCHER}" "${JOIN_SERVER}" "$@" && rc=0 || rc=$?
|
||||
|
||||
# Show a crash dialog if something went wrong
|
||||
if [ $? != 0 ] && [ $? != 1 ]; then
|
||||
if [ "${rc}" != 0 ] && [ "${rc}" != 1 ]; then
|
||||
LOGS="${XDG_CONFIG_HOME:-${HOME}/.config}/openra/Logs"
|
||||
if [ ! -d "${LOGS}" ] && [ -d "${HOME}/.openra/Logs" ]; then
|
||||
LOGS="${HOME}/.openra/Logs"
|
||||
fi
|
||||
|
||||
test -d Support/Logs && LOGS="${PWD}/Support/Logs"
|
||||
if [ -d Support/Logs ]; then
|
||||
LOGS="${PWD}/Support/Logs"
|
||||
fi
|
||||
ERROR_MESSAGE=$(printf "%s has encountered a fatal error.\nPlease refer to the crash logs and FAQ for more information.\n\nLog files are located in %s\nThe FAQ is available at http://wiki.openra.net/FAQ" "{MODNAME}" "${LOGS}")
|
||||
if command -v zenity > /dev/null; then
|
||||
zenity --no-wrap --error --title "{MODNAME}" --no-markup --text "${ERROR_MESSAGE}" 2> /dev/null
|
||||
zenity --no-wrap --error --title "{MODNAME}" --no-markup --text "${ERROR_MESSAGE}" 2> /dev/null || :
|
||||
elif command -v kdialog > /dev/null; then
|
||||
kdialog --title "{MODNAME}" --error "${ERROR_MESSAGE}"
|
||||
kdialog --title "{MODNAME}" --error "${ERROR_MESSAGE}" || :
|
||||
elif "${HERE}/gtk-dialog.py" test > /dev/null; then
|
||||
"${HERE}/gtk-dialog.py" error --title "{MODNAME}" --text "${ERROR_MESSAGE}" 2> /dev/null
|
||||
else
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
#!/bin/sh
|
||||
set -o errexit || exit $?
|
||||
|
||||
cd "{GAME_INSTALL_DIR}"
|
||||
|
||||
# Search for server connection
|
||||
@@ -9,21 +11,23 @@ if [ "${1#${PROTOCOL_PREFIX}}" != "${1}" ]; then
|
||||
fi
|
||||
|
||||
# Run the game
|
||||
mono {DEBUG} OpenRA.dll Game.Mod={MODID} Engine.LaunchPath="{BIN_DIR}/openra-{MODID}" "${JOIN_SERVER}" "$@"
|
||||
mono {DEBUG} OpenRA.dll Game.Mod={MODID} Engine.LaunchPath="{BIN_DIR}/openra-{MODID}" "${JOIN_SERVER}" "$@" && rc=0 || rc=$?
|
||||
|
||||
# Show a crash dialog if something went wrong
|
||||
if [ $? != 0 ] && [ $? != 1 ]; then
|
||||
if [ "${rc}" != 0 ] && [ "${rc}" != 1 ]; then
|
||||
LOGS="${XDG_CONFIG_HOME:-${HOME}/.config}/openra/Logs"
|
||||
if [ ! -d "${LOGS}" ] && [ -d "${HOME}/.openra/Logs" ]; then
|
||||
LOGS="${HOME}/.openra/Logs"
|
||||
fi
|
||||
|
||||
test -d Support/Logs && LOGS="${PWD}/Support/Logs"
|
||||
if [ -d Support/Logs ]; then
|
||||
LOGS="${PWD}/Support/Logs"
|
||||
fi
|
||||
ERROR_MESSAGE=$(printf "%s has encountered a fatal error.\nPlease refer to the crash logs and FAQ for more information.\n\nLog files are located in %s\nThe FAQ is available at http://wiki.openra.net/FAQ" "{MODNAME}" "${LOGS}")
|
||||
if command -v zenity > /dev/null; then
|
||||
zenity --no-wrap --error --title "{MODNAME}" --no-markup --text "${ERROR_MESSAGE}" 2> /dev/null
|
||||
zenity --no-wrap --error --title "{MODNAME}" --no-markup --text "${ERROR_MESSAGE}" 2> /dev/null || :
|
||||
elif command -v kdialog > /dev/null; then
|
||||
kdialog --title "{MODNAME}" --error "${ERROR_MESSAGE}"
|
||||
kdialog --title "{MODNAME}" --error "${ERROR_MESSAGE}" || :
|
||||
else
|
||||
echo "${ERROR_MESSAGE}"
|
||||
fi
|
||||
|
||||
@@ -13,7 +13,8 @@
|
||||
# MACOS_DEVELOPER_USERNAME: Email address for the developer account
|
||||
# MACOS_DEVELOPER_PASSWORD: App-specific password for the developer account
|
||||
#
|
||||
set -e
|
||||
|
||||
set -o errexit || exit $?
|
||||
|
||||
MONO_TAG="osx-launcher-20201222"
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#!/bin/bash
|
||||
# OpenRA master packaging script
|
||||
|
||||
set -o errexit || exit $?
|
||||
|
||||
if [ $# -ne "2" ]; then
|
||||
echo "Usage: ${0##*/} version outputdir."
|
||||
exit 1
|
||||
@@ -19,14 +21,12 @@ function build_package() (
|
||||
}
|
||||
#trap function executes on any error in the following commands
|
||||
trap "on_build $1" ERR
|
||||
set -e
|
||||
echo "Building $1 package(s)."
|
||||
cd "$1"
|
||||
./buildpackage.sh "${GIT_TAG}" "${BUILD_OUTPUT_DIR}"
|
||||
)
|
||||
|
||||
#exit on any non-zero exited (failed) command
|
||||
set -e
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
build_package macos
|
||||
else
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#!/bin/bash
|
||||
# OpenRA packaging script for versioned source tarball
|
||||
|
||||
set -o errexit || exit $?
|
||||
|
||||
if [ $# -ne "2" ]; then
|
||||
echo "Usage: $(basename "$0") tag outputdir"
|
||||
exit 1
|
||||
@@ -19,7 +21,7 @@ make version VERSION="${TAG}"
|
||||
# The output from `git ls-tree` is too long to fit in a single command (overflows MAX_ARG_STRLEN)
|
||||
# so `xargs` will automatically split the input across multiple `tar` commands.
|
||||
# Use the amend flag (r) to prevent each call erasing the output from earlier calls.
|
||||
rm "${OUTPUTDIR}/OpenRA-${TAG}-source.tar"
|
||||
rm "${OUTPUTDIR}/OpenRA-${TAG}-source.tar" || :
|
||||
git ls-tree HEAD --name-only -r -z | xargs -0 tar vrf "${OUTPUTDIR}/OpenRA-${TAG}-source.tar"
|
||||
bzip2 "${OUTPUTDIR}/OpenRA-${TAG}-source.tar"
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/bin/bash
|
||||
# OpenRA packaging script for Windows
|
||||
|
||||
set -e
|
||||
set -o errexit || exit $?
|
||||
|
||||
command -v curl >/dev/null 2>&1 || command -v wget > /dev/null 2>&1 || { echo >&2 "Windows packaging requires curl or wget."; exit 1; }
|
||||
command -v makensis >/dev/null 2>&1 || { echo >&2 "Windows packaging requires makensis."; exit 1; }
|
||||
|
||||
Reference in New Issue
Block a user