Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add compatibility for upstream toolchain changes #156

Open
pchote opened this issue May 2, 2020 · 1 comment
Open

Add compatibility for upstream toolchain changes #156

pchote opened this issue May 2, 2020 · 1 comment

Comments

@pchote
Copy link
Member

pchote commented May 2, 2020

We will need to update the SDK to account for the following upstream PRs when the time comes to branch a new playtest series.

List to be edited as work is completed upstream.

@pchote
Copy link
Member Author

pchote commented Jan 30, 2021

Draft release notes:

  • Updated engine to playtest-20210131
  • Updated toolchain to work with the new OpenRA engine
  • Removed legacy python2 requirement
  • Fixed 64-bit Windows installer installing to the wrong Program Files directory
  • Fixed HiDPI rendering in Windows installers
  • Replaced Travis CI continuous integration support with GitHub Actions

This is a major update to the mod SDK. The following files have changed:

  • .github/workflows/ci.yaml (new file)
  • .github/workflows/packaging.yml (new file)
  • .gitignore
  • .travis.yml (deleted)
  • Makefile
  • make.ps1
  • mod.config
  • fetch-engine.sh
  • launch-dedicated.cmd
  • launch-dedicated.sh
  • launch-game.cmd
  • launch-dedicated.sh
  • utility.cmd
  • utility.sh
  • OpenRA.Mods.Example/OpenRA.Mods.Example.csproj
  • mods/example/audio/notifications.yaml
  • mods/example/cursor.yaml
  • mods/example/mod.yaml
  • packaging/linux/buildpackage.sh
  • packaging/linux/include/AppRun.in (deleted)
  • packaging/linux/include/gtk-dialog.py (deleted)
  • packaging/linux/include/mod-mimeinfo.xml.in (deleted)
  • packaging/linux/include/mod-server.in (deleted)
  • packaging/linux/include/mod-utility.in (deleted)
  • packaging/linux/include/mod.desktop.in (deleted)
  • packaging/linux/include/mod.in (deleted)
  • packaging/macos/buildpackage.sh
  • packaging/macos/entitlements.sh (deleted)
  • packaging/package-all.sh
  • packaging/windows/buildpackage.nsi
  • packaging/windows/buildpackage.sh

We recommend updating by making a backup of your packaging/artwork directory, deleting the packaging directory, and then replacing it with the updated directory structure in this release before restoring your custom artwork. Note that many files have been deleted, so extracting the new files over the top of the existing structure is not sufficient.

.travis.yml should be deleted and replaced with the new .github directory structure.

.gitignore, Makefile, make.ps1, fetch-engine.sh, launch-dedicated.cmd, launch-dedicated.sh, launch-game.cmd, launch-dedicated.sh, utility.cmd, utility.sh should then be replaced with the updated versions in this release.

The following changes are required in your mod.config:

  • In the Core Configuration section:
    • Change ENGINE_VERSION to playtest-20210131
  • Delete the entire Continuous Integration section
  • In the Packaging section:
    • Add new definitions:
      # Space delimited list of dll files compiled by the mod, which
      # should be copied from the bin directory into your installers
      PACKAGING_COPY_MOD_BINARIES="OpenRA.Mods.Example.dll"
      
      # If your mod depends on OpenRA.Mods.Cnc.dll from the engine set
      # this to "True" to package the dll in your installers.
      # Accepts values "True" or "False".
      PACKAGING_COPY_CNC_DLL="False"
      
      # If your mod depends on OpenRA.Mods.D2k.dll from the engine set
      # this to "True" to package the dll in your installers.
      # Accepts values "True" or "False".
      PACKAGING_COPY_D2K_DLL="False"
      
      # If you wish to enable Discord integration, register an
      # application at https://discord.com/developers/applications
      # and define the client id here and in your mod.yaml
      PACKAGING_DISCORD_APPID=""
      and update the values if relevant for your mod.
    • Change PACKAGING_OSX_LAUNCHER_TAG="osx-launcher-20200316" to PACKAGING_OSX_MONO_TAG="osx-launcher-20200830" (note that both the name and value have changed)
    • Change PACKAGING_APPIMAGE_DEPENDENCIES_TAG to 20200328
  • In the Advanced Configuration section:
    • Delete all of the variable definitions and replace with
      # Automatic engine managment will treat the OpenRA engine files like a read-only dependency.
      # Disable this if you would like to modify or manager your own engine files.
      AUTOMATIC_ENGINE_MANAGEMENT="True"
      
      # The URL to download the engine files from when AUTOMATIC_ENGINE_MANAGEMENT is enabled.
      AUTOMATIC_ENGINE_SOURCE="https://github.com/OpenRA/OpenRA/archive/${ENGINE_VERSION}.zip"
      
      # Temporary file/directory names used by automatic engine management.
      # Paths outside the SDK directory are not officially supported.
      AUTOMATIC_ENGINE_EXTRACT_DIRECTORY="./engine_temp"
      AUTOMATIC_ENGINE_TEMP_ARCHIVE_NAME="engine.zip"
      ENGINE_DIRECTORY="./engine"
      
      # The url to download the OpenRA macOS mono runtime.
      PACKAGING_OSX_MONO_SOURCE="https://github.com/OpenRA/OpenRALauncherOSX/releases/download/${PACKAGING_OSX_MONO_TAG}/mono.zip"
      
      # Temporary file name used when downloading the OpenRA macOS launcher files.
      PACKAGING_OSX_MONO_TEMP_ARCHIVE_NAME="mono.zip"
      
      # The url to download the OpenRA AppImage dependencies.
      PACKAGING_APPIMAGE_DEPENDENCIES_SOURCE="https://github.com/OpenRA/AppImageSupport/releases/download/${PACKAGING_APPIMAGE_DEPENDENCIES_TAG}/mono.tar.bz2"
      
      # Temporary file name used when downloading the OpenRA AppImage dependencies.
      PACKAGING_APPIMAGE_DEPENDENCIES_TEMP_ARCHIVE_NAME="mono.tar.bz2"
      
      # List of .NET assemblies that we can guarantee exist
      WHITELISTED_OPENRA_ASSEMBLIES="OpenRA.exe OpenRA.Utility.exe OpenRA.Server.exe OpenRA.Platforms.Default.dll OpenRA.Game.dll OpenRA.Mods.Common.dll OpenRA.Mods.Cnc.dll OpenRA.Mods.D2k.dll"
      
      # These are explicitly shipped alongside our core files by the packaging script
      WHITELISTED_THIRDPARTY_ASSEMBLIES="ICSharpCode.SharpZipLib.dll FuzzyLogicLibrary.dll Eluant.dll BeaconLib.dll Open.Nat.dll SDL2-CS.dll OpenAL-CS.Core.dll DiscordRPC.dll Newtonsoft.Json.dll"
      
      # These are shipped in our custom minimal mono runtime and also available in the full system-installed .NET/mono stack
      # This list *must* be kept in sync with the files packaged by the AppImageSupport and OpenRALauncherOSX repositories
      WHITELISTED_CORE_ASSEMBLIES="mscorlib.dll System.dll System.Configuration.dll System.Core.dll System.Numerics.dll System.Security.dll System.Xml.dll Mono.Security.dll netstandard.dll"

If your mod includes any custom c# projects you must update their csproj files to use the new OpenRA standard template. Open each csproj file with a standard text editor and replace the file contents with the text in OpenRA.Mods.Example/OpenRA.Mods.Example.csproj.

This SDK version is not backwards compatible with previous OpenRA's engine versions, and you must proceed with the Engine update guide before your mod will run on the new release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant