Switch macOS packages to .NET 5.
This commit is contained in:
5
.github/workflows/packaging.yml
vendored
5
.github/workflows/packaging.yml
vendored
@@ -39,6 +39,11 @@ jobs:
|
|||||||
- name: Clone Repository
|
- name: Clone Repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Install .NET 5
|
||||||
|
uses: actions/setup-dotnet@v1
|
||||||
|
with:
|
||||||
|
dotnet-version: '5.0.x'
|
||||||
|
|
||||||
- name: Prepare Environment
|
- name: Prepare Environment
|
||||||
run: echo "GIT_TAG=${GITHUB_REF#refs/tags/}" >> ${GITHUB_ENV}
|
run: echo "GIT_TAG=${GITHUB_REF#refs/tags/}" >> ${GITHUB_ENV}
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
# Used by:
|
# Used by:
|
||||||
# Makefile (install target for local installs and downstream packaging)
|
# Makefile (install target for local installs and downstream packaging)
|
||||||
# Linux AppImage packaging
|
# Linux AppImage packaging
|
||||||
# macOS packaging
|
|
||||||
# Mod SDK Linux AppImage packaging
|
# Mod SDK Linux AppImage packaging
|
||||||
# Mod SDK macOS packaging
|
# Mod SDK macOS packaging
|
||||||
# Mod SDK Windows packaging
|
# Mod SDK Windows packaging
|
||||||
@@ -107,6 +106,7 @@ install_assemblies_mono() {
|
|||||||
# COPY_D2K_DLL: If set to True the OpenRA.Mods.D2k.dll will also be copied (True, False)
|
# COPY_D2K_DLL: If set to True the OpenRA.Mods.D2k.dll will also be copied (True, False)
|
||||||
# Used by:
|
# Used by:
|
||||||
# Windows packaging
|
# Windows packaging
|
||||||
|
# macOS packaging
|
||||||
install_assemblies() {
|
install_assemblies() {
|
||||||
SRC_PATH="${1}"
|
SRC_PATH="${1}"
|
||||||
DEST_PATH="${2}"
|
DEST_PATH="${2}"
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<key>CFBundleDisplayName</key>
|
<key>CFBundleDisplayName</key>
|
||||||
<string>{MOD_NAME}</string>
|
<string>{MOD_NAME}</string>
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>OpenRA</string>
|
<string>Launcher</string>
|
||||||
<key>CFBundleIconFile</key>
|
<key>CFBundleIconFile</key>
|
||||||
<string>{MOD_ID}.icns</string>
|
<string>{MOD_ID}.icns</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
|
|||||||
@@ -55,13 +55,15 @@ modify_plist() {
|
|||||||
|
|
||||||
# Copies the game files and sets metadata
|
# Copies the game files and sets metadata
|
||||||
build_app() {
|
build_app() {
|
||||||
TEMPLATE_DIR="${1}"
|
PLATFORM="${1}"
|
||||||
LAUNCHER_DIR="${2}"
|
TEMPLATE_DIR="${2}"
|
||||||
MOD_ID="${3}"
|
LAUNCHER_DIR="${3}"
|
||||||
MOD_NAME="${4}"
|
MOD_ID="${4}"
|
||||||
DISCORD_APPID="${5}"
|
MOD_NAME="${5}"
|
||||||
|
DISCORD_APPID="${6}"
|
||||||
|
|
||||||
LAUNCHER_CONTENTS_DIR="${LAUNCHER_DIR}/Contents"
|
LAUNCHER_CONTENTS_DIR="${LAUNCHER_DIR}/Contents"
|
||||||
|
LAUNCHER_ASSEMBLY_DIR="${LAUNCHER_CONTENTS_DIR}/MacOS"
|
||||||
LAUNCHER_RESOURCES_DIR="${LAUNCHER_CONTENTS_DIR}/Resources"
|
LAUNCHER_RESOURCES_DIR="${LAUNCHER_CONTENTS_DIR}/Resources"
|
||||||
|
|
||||||
cp -r "${TEMPLATE_DIR}" "${LAUNCHER_DIR}"
|
cp -r "${TEMPLATE_DIR}" "${LAUNCHER_DIR}"
|
||||||
@@ -72,7 +74,12 @@ build_app() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Install engine and mod files
|
# Install engine and mod files
|
||||||
install_assemblies_mono "${SRCDIR}" "${LAUNCHER_RESOURCES_DIR}" "osx-x64" "True" "True" "${IS_D2K}"
|
if [ "${PLATFORM}" = "compat" ]; then
|
||||||
|
install_assemblies_mono "${SRCDIR}" "${LAUNCHER_ASSEMBLY_DIR}" "osx-x64" "True" "True" "${IS_D2K}"
|
||||||
|
else
|
||||||
|
install_assemblies "${SRCDIR}" "${LAUNCHER_ASSEMBLY_DIR}" "osx-x64" "True" "True" "${IS_D2K}"
|
||||||
|
fi
|
||||||
|
|
||||||
install_data "${SRCDIR}" "${LAUNCHER_RESOURCES_DIR}" "${MOD_ID}"
|
install_data "${SRCDIR}" "${LAUNCHER_RESOURCES_DIR}" "${MOD_ID}"
|
||||||
set_engine_version "${TAG}" "${LAUNCHER_RESOURCES_DIR}"
|
set_engine_version "${TAG}" "${LAUNCHER_RESOURCES_DIR}"
|
||||||
set_mod_version "${TAG}" "${LAUNCHER_RESOURCES_DIR}/mods/${MOD_ID}/mod.yaml" "${LAUNCHER_RESOURCES_DIR}/mods/modcontent/mod.yaml"
|
set_mod_version "${TAG}" "${LAUNCHER_RESOURCES_DIR}/mods/${MOD_ID}/mod.yaml" "${LAUNCHER_RESOURCES_DIR}/mods/modcontent/mod.yaml"
|
||||||
@@ -99,7 +106,6 @@ build_app() {
|
|||||||
|
|
||||||
# Sign binaries with developer certificate
|
# Sign binaries with developer certificate
|
||||||
if [ -n "${MACOS_DEVELOPER_IDENTITY}" ]; then
|
if [ -n "${MACOS_DEVELOPER_IDENTITY}" ]; then
|
||||||
codesign -s "${MACOS_DEVELOPER_IDENTITY}" --timestamp --options runtime -f --entitlements entitlements.plist "${LAUNCHER_RESOURCES_DIR}/"*.dylib
|
|
||||||
codesign -s "${MACOS_DEVELOPER_IDENTITY}" --timestamp --options runtime -f --entitlements entitlements.plist --deep "${LAUNCHER_DIR}"
|
codesign -s "${MACOS_DEVELOPER_IDENTITY}" --timestamp --options runtime -f --entitlements entitlements.plist --deep "${LAUNCHER_DIR}"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -120,23 +126,15 @@ build_platform() {
|
|||||||
|
|
||||||
if [ "${PLATFORM}" = "compat" ]; then
|
if [ "${PLATFORM}" = "compat" ]; then
|
||||||
modify_plist "{MINIMUM_SYSTEM_VERSION}" "10.9" "${TEMPLATE_DIR}/Contents/Info.plist"
|
modify_plist "{MINIMUM_SYSTEM_VERSION}" "10.9" "${TEMPLATE_DIR}/Contents/Info.plist"
|
||||||
clang -m64 launcher-mono.m -o "${TEMPLATE_DIR}/Contents/MacOS/OpenRA" -framework AppKit -mmacosx-version-min=10.9
|
clang -m64 launcher-mono.m -o "${TEMPLATE_DIR}/Contents/MacOS/Launcher" -framework AppKit -mmacosx-version-min=10.9
|
||||||
else
|
else
|
||||||
modify_plist "{MINIMUM_SYSTEM_VERSION}" "10.13" "${TEMPLATE_DIR}/Contents/Info.plist"
|
modify_plist "{MINIMUM_SYSTEM_VERSION}" "10.13" "${TEMPLATE_DIR}/Contents/Info.plist"
|
||||||
clang -m64 launcher.m -o "${TEMPLATE_DIR}/Contents/MacOS/OpenRA" -framework AppKit -mmacosx-version-min=10.13
|
clang -m64 launcher.m -o "${TEMPLATE_DIR}/Contents/MacOS/Launcher" -framework AppKit -mmacosx-version-min=10.13
|
||||||
|
|
||||||
curl -s -L -O https://github.com/OpenRA/OpenRALauncherOSX/releases/download/${MONO_TAG}/mono.zip || exit 3
|
|
||||||
unzip -qq -d "${BUILTDIR}/mono" mono.zip
|
|
||||||
mv "${BUILTDIR}/mono/mono" "${TEMPLATE_DIR}/Contents/MacOS/"
|
|
||||||
mv "${BUILTDIR}/mono/etc" "${TEMPLATE_DIR}/Contents/Resources"
|
|
||||||
mv "${BUILTDIR}/mono/lib" "${TEMPLATE_DIR}/Contents/Resources"
|
|
||||||
rm mono.zip
|
|
||||||
rmdir "${BUILTDIR}/mono"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
build_app "${TEMPLATE_DIR}" "${BUILTDIR}/OpenRA - Red Alert.app" "ra" "Red Alert" "699222659766026240"
|
build_app "${PLATFORM}" "${TEMPLATE_DIR}" "${BUILTDIR}/OpenRA - Red Alert.app" "ra" "Red Alert" "699222659766026240"
|
||||||
build_app "${TEMPLATE_DIR}" "${BUILTDIR}/OpenRA - Tiberian Dawn.app" "cnc" "Tiberian Dawn" "699223250181292033"
|
build_app "${PLATFORM}" "${TEMPLATE_DIR}" "${BUILTDIR}/OpenRA - Tiberian Dawn.app" "cnc" "Tiberian Dawn" "699223250181292033"
|
||||||
build_app "${TEMPLATE_DIR}" "${BUILTDIR}/OpenRA - Dune 2000.app" "d2k" "Dune 2000" "712711732770111550"
|
build_app "${PLATFORM}" "${TEMPLATE_DIR}" "${BUILTDIR}/OpenRA - Dune 2000.app" "d2k" "Dune 2000" "712711732770111550"
|
||||||
|
|
||||||
rm -rf "${TEMPLATE_DIR}"
|
rm -rf "${TEMPLATE_DIR}"
|
||||||
|
|
||||||
|
|||||||
@@ -262,8 +262,9 @@ static int check_mono_version(const char *version, const char *req_version)
|
|||||||
|
|
||||||
NSMutableArray *launchArgs = [NSMutableArray arrayWithCapacity: [gameArgs count] + 2];
|
NSMutableArray *launchArgs = [NSMutableArray arrayWithCapacity: [gameArgs count] + 2];
|
||||||
[launchArgs addObject: @"--debug"];
|
[launchArgs addObject: @"--debug"];
|
||||||
[launchArgs addObject: [gamePath stringByAppendingPathComponent: gameName]];
|
[launchArgs addObject: [exePath stringByAppendingPathComponent: gameName]];
|
||||||
[launchArgs addObject: [NSString stringWithFormat:@"Engine.LaunchPath=\"%@\"", engineLaunchPath]];
|
[launchArgs addObject: [NSString stringWithFormat:@"Engine.LaunchPath=\"%@\"", engineLaunchPath]];
|
||||||
|
[launchArgs addObject: [NSString stringWithFormat:@"Engine.EngineDir=../Resources"]];
|
||||||
|
|
||||||
if (modId)
|
if (modId)
|
||||||
[launchArgs addObject: [NSString stringWithFormat:@"Game.Mod=%@", modId]];
|
[launchArgs addObject: [NSString stringWithFormat:@"Game.Mod=%@", modId]];
|
||||||
|
|||||||
@@ -131,16 +131,11 @@ NSTask *gameTask;
|
|||||||
launched = YES;
|
launched = YES;
|
||||||
|
|
||||||
// Default values - can be overriden by setting certain keys Info.plist
|
// Default values - can be overriden by setting certain keys Info.plist
|
||||||
NSString *gameName = @"OpenRA.dll";
|
|
||||||
NSString *modId = nil;
|
NSString *modId = nil;
|
||||||
|
|
||||||
NSDictionary *plist = [[NSBundle mainBundle] infoDictionary];
|
NSDictionary *plist = [[NSBundle mainBundle] infoDictionary];
|
||||||
if (plist)
|
if (plist)
|
||||||
{
|
{
|
||||||
NSString *exeValue = [plist objectForKey:@"MonoGameExe"];
|
|
||||||
if (exeValue && [exeValue length] > 0)
|
|
||||||
gameName = exeValue;
|
|
||||||
|
|
||||||
NSString *modIdValue = [plist objectForKey:@"ModId"];
|
NSString *modIdValue = [plist objectForKey:@"ModId"];
|
||||||
if (modIdValue && [modIdValue length] > 0)
|
if (modIdValue && [modIdValue length] > 0)
|
||||||
modId = modIdValue;
|
modId = modIdValue;
|
||||||
@@ -149,21 +144,20 @@ NSTask *gameTask;
|
|||||||
NSString *exePath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent: @"Contents/MacOS/"];
|
NSString *exePath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent: @"Contents/MacOS/"];
|
||||||
NSString *gamePath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent: @"Contents/Resources/"];
|
NSString *gamePath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent: @"Contents/Resources/"];
|
||||||
|
|
||||||
NSString *launchPath = [exePath stringByAppendingPathComponent: @"mono"];
|
NSString *launchPath = [exePath stringByAppendingPathComponent: @"OpenRA"];
|
||||||
NSString *appPath = [exePath stringByAppendingPathComponent: @"OpenRA"];
|
NSString *appPath = [exePath stringByAppendingPathComponent: @"Launcher"];
|
||||||
NSString *engineLaunchPath = [self resolveTranslocatedPath: appPath];
|
NSString *engineLaunchPath = [self resolveTranslocatedPath: appPath];
|
||||||
|
|
||||||
NSMutableArray *launchArgs = [NSMutableArray arrayWithCapacity: [gameArgs count] + 2];
|
NSMutableArray *launchArgs = [NSMutableArray arrayWithCapacity: [gameArgs count] + 2];
|
||||||
[launchArgs addObject: @"--debug"];
|
|
||||||
[launchArgs addObject: [gamePath stringByAppendingPathComponent: gameName]];
|
|
||||||
[launchArgs addObject: [NSString stringWithFormat:@"Engine.LaunchPath=\"%@\"", engineLaunchPath]];
|
[launchArgs addObject: [NSString stringWithFormat:@"Engine.LaunchPath=\"%@\"", engineLaunchPath]];
|
||||||
|
[launchArgs addObject: [NSString stringWithFormat:@"Engine.EngineDir=../Resources"]];
|
||||||
|
|
||||||
if (modId)
|
if (modId)
|
||||||
[launchArgs addObject: [NSString stringWithFormat:@"Game.Mod=%@", modId]];
|
[launchArgs addObject: [NSString stringWithFormat:@"Game.Mod=%@", modId]];
|
||||||
|
|
||||||
[launchArgs addObjectsFromArray: gameArgs];
|
[launchArgs addObjectsFromArray: gameArgs];
|
||||||
|
|
||||||
NSLog(@"Running mono with arguments:");
|
NSLog(@"Running OpenRA with arguments:");
|
||||||
for (size_t i = 0; i < [launchArgs count]; i++)
|
for (size_t i = 0; i < [launchArgs count]; i++)
|
||||||
NSLog(@"%@", [launchArgs objectAtIndex: i]);
|
NSLog(@"%@", [launchArgs objectAtIndex: i]);
|
||||||
|
|
||||||
@@ -172,12 +166,6 @@ NSTask *gameTask;
|
|||||||
[gameTask setLaunchPath: launchPath];
|
[gameTask setLaunchPath: launchPath];
|
||||||
[gameTask setArguments: launchArgs];
|
[gameTask setArguments: launchArgs];
|
||||||
|
|
||||||
NSMutableDictionary *environment = [NSMutableDictionary dictionaryWithDictionary: [[NSProcessInfo processInfo] environment]];
|
|
||||||
[environment setObject: [gamePath stringByAppendingPathComponent: @"lib/mono/4.5"] forKey: @"MONO_PATH"];
|
|
||||||
[environment setObject: [gamePath stringByAppendingPathComponent: @"etc"] forKey: @"MONO_CFG_DIR"];
|
|
||||||
[environment setObject: [gamePath stringByAppendingPathComponent: @"etc/mono/config"] forKey: @"MONO_CONFIG"];
|
|
||||||
[gameTask setEnvironment: environment];
|
|
||||||
|
|
||||||
[[NSNotificationCenter defaultCenter]
|
[[NSNotificationCenter defaultCenter]
|
||||||
addObserver: self
|
addObserver: self
|
||||||
selector: @selector(taskExited:)
|
selector: @selector(taskExited:)
|
||||||
|
|||||||
Reference in New Issue
Block a user