commit 05776ee78b7484be2bf8c4ea1514423c14d869ee Author: Fincer Date: Sat Feb 6 15:48:09 2016 +0200 First Commit diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..326559c --- /dev/null +++ b/Readme.md @@ -0,0 +1,93 @@ +Introduction +============== + +This Github repository provides a bunch of scripts for installing TS/RA2 on OpenRA. + +The following operating systems are currently supported: + +- Windows 7 +- Ubuntu (14.04 LTS, 14.10, 15.04 LTS, 15.10 & 16.04 LTS) +- Linux Mint +- Arch Linux + +A lot of people are willing to play Tiberian Sun and Red Alert 2 mods in OpenRA, no matter if they're at unfinished state or not. Personally, I feel the official OpenRA wiki may be really hard to understand for novice people who just want to play these titles and show little interest in cryptic compilation processes. + +That's why, as not official support is not provided yet, I decided to do something about this TS/RA2 issue/dilemma: I made a bunch of scripts and instructions that should make life for an average user a bit easier and help installation of these two awesome titles (TS/RA2) on OpenRA. + +**Installation instructions** +-------------- + +**Windows** + +1) Make sure you have .NET Framework 4.5 installed on your computer +( Read *BEFORE-INSTALLATION.txt* for further information) + +2) Double click *install.bat* +3) Follow the instructions + +**Ubuntu & Ubuntu Variants (Linux Mint, Lubuntu, Xubuntu, Kubuntu etc.)** + +1) Double click install.sh and select "Run in terminal". A new terminal window opens. Type + +``` +bash install.sh +``` + +2) Follow the instructions + +**Arch Linux** + +1) Open terminal +2) Navigate to the folder where you have openra-bleed-tibsunra2.install, tibsun_ra2.patch & PKGBUILD +3) Run the following commands: + +``` +updpkgsums +makepkg +``` + +You may need to install missing dependencies at this point. + +4) Install OpenRA by typing + +``` +sudo pacman -U openra-bleed-tibsunra2-r*.tar.xz +``` + +5) Once the game is installed, please follow the instructions about how to install Red Alert 2 mix files, given in the end of the installation process. +6) Play the game by typing 'openra' in terminal or using a desktop file. + +**Post-installation instructions** +-------------- + +**To play Tiberian Sun** + +Launch the game and download the required asset files from the web when the game asks you to do so. + +**To play Red Alert 2** + +You must install language.mix, multi.mix, ra2.mix and theme.mix into '$HOME/.openra/Content/ra2/' folder. You find these files from original RA2 installation media (CD's): + +- theme.mix, multi.mix = RA2 CD Root folder +- ra2.mix, language.mix = RA2 CD Root/INSTALL/Game1.CAB (inside that archive file) + +**Multiplayer** + +It's recommended to use exactly same OpenRA binary for multiplayer usage to minimize possible version differences/conflicts between players. If your friends compiles this package with another operating system, please make sure they use exactly same source files for their OpenRA compilation process. + +**Uninstallation** +-------------- + +For uninstallation, please see specific instructions for your Operating System below. + +**Windows** + +Since the game has been compiled from source and no additional setup programs are provided, all you need to do is to delete the contents of 'OpenRA-bleed-tibsunra2' folder and \My Documents\OpenRA\. + +**Ubuntu/Linux Mint** + +If you want to remove OpenRA, just run 'sudo apt-get purge --remove openra-bleed-tibsunra2' (without quotations) in your terminal window. + +**Arch Linux** + +Run 'sudo pacman -Rs openra-bleed-tibsunra2' (without quotations) in your terminal window. diff --git a/arch_linux/PKGBUILD b/arch_linux/PKGBUILD new file mode 100644 index 0000000..6b6a8cc --- /dev/null +++ b/arch_linux/PKGBUILD @@ -0,0 +1,67 @@ +# Maintainer: Fincer + +pkgname=openra-bleed-tibsunra2 +pkgver=r19983.ddea517 +pkgrel=1 +pkgdesc="An open-source implementation of the Red Alert engine using .NET/mono and OpenGL (git version)" +arch=("any") +url="http://openra.net" +license=("GPL3") +depends=("mono" "ttf-dejavu" "openal" "libgl" "freetype2" "sdl2" "lua51" "hicolor-icon-theme" "desktop-file-utils" "xdg-utils") +makedepends=("git" "nuget") +provides=("openra" "openra-dedicated-bleed") +conflicts=("openra-bleed" "openra" "openra-dedicated-bleed" "openra-playtest") +install=openra-bleed-tibsunra2.install +source=("$pkgname-src::git+https://github.com/OpenRA/OpenRA.git#branch=bleed" +"git://github.com/OpenRA/ra2.git" +ra2-csproj.patch +makefile-mcs.patch +tibsun_ra2.patch) +sha1sums=('SKIP' + 'SKIP' + '70a45c14874e4454bacb45b5d0c917d452cf4e84' + 'ae7f0a7e0dd9617e8ea95f22d3fd8188067c6da2' + 'e2ad63fa53f992a55f620c1c67d51e4b2593a921') + +pkgver() { + cd "$srcdir/$pkgname-src" + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" +} + +prepare() { + cd "$srcdir/$pkgname-src" + patch -Np1 -i "$srcdir/makefile-mcs.patch" +} + +build() { + +# Move Red Alert 2 Github files to the right place: + cd "$srcdir/ra2" + mv ./OpenRA.Mods.RA2 "$srcdir/$pkgname-src/" + mkdir -p "$srcdir/$pkgname-src/mods/ra2/" + mv ./* "$srcdir/$pkgname-src/mods/ra2/" + +# Patch OpenRA core files for Tiberian Sun & Red Alert 2 + cd "$srcdir/$pkgname-src" + patch -Np1 -i "$srcdir/tibsun_ra2.patch" + patch -Np1 -i "$srcdir/ra2-csproj.patch" + + mkdir $srcdir/$pkgname-src/mods/ra2/bits/{vehicles,themes} + + cd "$srcdir/$pkgname-src" + make version + make dependencies + make all [DEBUG=true] +} + +package() { + cd "$srcdir/$pkgname-src" + make prefix=/usr DESTDIR="$pkgdir" install-all + make prefix=/usr DESTDIR="$pkgdir" install-linux-shortcuts + + echo -e "\n***OpenRA compilation script completed.\nPlease see further instructions below.***" + sleep 2 + echo -e "Install OpenRA by typing 'sudo pacman -U openra-bleed-tibsunra2-r*.tar.xz' in this terminal window\n" + sleep 4 + echo -e "***TIBERIAN SUN & RED ALERT 2 - HOWTO***\n\nTO PLAY TIBERIAN SUN: Launch the game and download the required asset files from the web when the game asks you to do so.\n\nTO PLAY RED ALERT 2: You must install language.mix, multi.mix, ra2.mix and theme.mix into '$HOME/.openra/Content/ra2/' folder. You find these files from original RA2 installation media (CD's):\n\n-theme.mix, multi.mix = RA2 CD Root folder\n-ra2.mix, language.mix = RA2 CD Root/INSTALL/Game1.CAB (inside that archive file)\n\n***LAUNCHING OPENRA***\n\nTo launch OpenRA, simply type 'openra' (without quotations) in your terminal or use a desktop shortcut file.\n\n***UNINSTALLATION***\n\nIf you want to remove OpenRA, just type 'sudo apt-get purge --remove $PACKAGE_NAME'\n\nYou can find deb package of $PACKAGE_NAME at '$HOME' for further usage.\n\n***MULTIPLAYER***\n\nIt's recommended to use exactly same deb installation package for multiplayer usage to minimize possible version differences/conflicts between players. If your friends compiles this package with another operating system, please make sure they use exactly same source files for their OpenRA compilation process.\n\nHave fun!\n" +} \ No newline at end of file diff --git a/arch_linux/makefile-mcs.patch b/arch_linux/makefile-mcs.patch new file mode 100755 index 0000000..c1fb7d0 --- /dev/null +++ b/arch_linux/makefile-mcs.patch @@ -0,0 +1,12 @@ +--- a/Makefile ++++ b/Makefile +@@ -42,7 +42,7 @@ + + ############################## TOOLCHAIN ############################### + # +-CSC = mcs -sdk:4.0 ++CSC = mcs + CSFLAGS = -nologo -warn:4 -codepage:utf8 -unsafe -warnaserror + DEFINE = TRACE + COMMON_LIBS = System.dll System.Core.dll System.Data.dll System.Data.DataSetExtensions.dll System.Drawing.dll System.Xml.dll thirdparty/download/ICSharpCode.SharpZipLib.dll thirdparty/download/FuzzyLogicLibrary.dll thirdparty/download/Mono.Nat.dll thirdparty/download/MaxMind.Db.dll thirdparty/download/MaxMind.GeoIP2.dll thirdparty/download/Eluant.dll thirdparty/download/SmarIrc4net.dll + diff --git a/arch_linux/openra-bleed-tibsunra2.install b/arch_linux/openra-bleed-tibsunra2.install new file mode 100644 index 0000000..c079723 --- /dev/null +++ b/arch_linux/openra-bleed-tibsunra2.install @@ -0,0 +1,11 @@ +post_install() { + xdg-icon-resource forceupdate --theme hicolor &> /dev/null +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/arch_linux/ra2-csproj.patch b/arch_linux/ra2-csproj.patch new file mode 100644 index 0000000..5fa6a98 --- /dev/null +++ b/arch_linux/ra2-csproj.patch @@ -0,0 +1,110 @@ +--- a/OpenRA.Mods.RA2/OpenRA.Mods.RA2.csproj ++++ b/OpenRA.Mods.RA2/OpenRA.Mods.RA2.csproj +@@ -1,33 +1,74 @@ +  +- ++ + +- {7E1263D2-BA04-48D0-85DB-26C68B782608} + Debug + AnyCPU ++ 10.0.0 ++ 2.0 ++ {7E1263D2-BA04-48D0-85DB-26C68B782608} + Library + OpenRA.Mods.RA2 + OpenRA.Mods.RA2 +- v4.0 +- .. + +- ++ ++ true ++ bin\Debug\ ++ TRACE;DEBUG + x86 ++ prompt ++ ++ ++ ++ ++ ++ ++ AllRules.ruleset ++ full ++ true + +- +- True +- Full +- False +- True +- DEBUG;TRACE +- +- +- False +- None +- True +- False ++ ++ true ++ bin\Release\ + TRACE ++ true ++ pdbonly ++ x86 ++ prompt ++ AllRules.ruleset ++ true ++ ++ ++ ++ ++ ++ + + ++ ++ ++ ++ ++ ..\thirdparty\download\Eluant.dll ++ False ++ ++ ++ ++ ++ ++ {0DFB103F-2962-400F-8C6D-E2C28CCBA633} ++ OpenRA.Game ++ False ++ ++ ++ {fe6c8cc0-2f07-442a-b29f-17617b3b7fc6} ++ OpenRA.Mods.Common ++ False ++ ++ ++ ++ ++ ++ + + 4.0 + +@@ -52,8 +93,9 @@ + 3.5 + + +- +- +- +- +- ++ ++ mkdir "$(SolutionDir)mods/ra2/" ++copy "$(TargetPath)" "$(SolutionDir)mods/ra2/" ++cd "$(SolutionDir)" ++ ++ +\ No newline at end of file diff --git a/arch_linux/tibsun_ra2.patch b/arch_linux/tibsun_ra2.patch new file mode 100755 index 0000000..6b6ff0f --- /dev/null +++ b/arch_linux/tibsun_ra2.patch @@ -0,0 +1,134 @@ +--- a/Makefile ++++ b/Makefile +@@ -187,6 +187,15 @@ + PROGRAMS += mod_ts + mod_ts: $(mod_ts_TARGET) + ++# Red Alert 2 ++mod_ra2_SRCS := $(shell find OpenRA.Mods.RA2/ -iname '*.cs') ++mod_ra2_TARGET = mods/ra2/OpenRA.Mods.RA2.dll ++mod_ra2_KIND = library ++mod_ra2_DEPS = $(STD_MOD_DEPS) $(mod_common_TARGET) ++mod_ra2_LIBS = $(COMMON_LIBS) $(STD_MOD_LIBS) $(mod_common_TARGET) ++PROGRAMS += mod_ra2 ++mod_ra2: $(mod_ra2_TARGET) ++ + check-scripts: + @echo + @echo "Checking for Lua syntax errors..." +@@ -222,6 +231,9 @@ + @echo "Checking for code style violations in OpenRA.Mods.TS..." + @mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Mods.TS + @echo ++ @echo "Checking for code style violations in OpenRA.Mods.RA2..." ++ @mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Mods.RA2 ++ @echo + @echo "Checking for code style violations in OpenRA.Utility..." + @mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Utility + @echo +@@ -255,6 +267,9 @@ + @echo "Testing Tiberian Sun mod MiniYAML..." + @mono --debug OpenRA.Utility.exe ts --check-yaml + @echo ++ @echo "Testing Red Alert 2 mod MiniYAML..." ++ @mono --debug OpenRA.Utility.exe ra2 --check-yaml ++ @echo + @echo "Testing Dune 2000 mod MiniYAML..." + @mono --debug OpenRA.Utility.exe d2k --check-yaml + @echo +@@ -320,7 +335,7 @@ + + package: all-dependencies core tools docs version + +-mods: mod_common mod_ra mod_cnc mod_d2k mod_ts ++mods: mod_common mod_ra mod_cnc mod_d2k mod_ts mod_ra2 + + all: dependencies core tools + +@@ -389,6 +404,10 @@ + @$(CP_R) mods/d2k "$(DATA_INSTALL_DIR)/mods/" + @$(INSTALL_PROGRAM) $(mod_d2k_TARGET) "$(DATA_INSTALL_DIR)/mods/d2k" + @$(CP_R) mods/modchooser "$(DATA_INSTALL_DIR)/mods/" ++ @$(CP_R) mods/ts "$(DATA_INSTALL_DIR)/mods/" ++ @$(INSTALL_PROGRAM) $(mod_ts_TARGET) "$(DATA_INSTALL_DIR)/mods/ts" ++ @$(CP_R) mods/ra2 "$(DATA_INSTALL_DIR)/mods/" ++ @$(INSTALL_PROGRAM) $(mod_ra2_TARGET) "$(DATA_INSTALL_DIR)/mods/ra2" + + @$(INSTALL_DATA) "global mix database.dat" "$(DATA_INSTALL_DIR)/global mix database.dat" + @$(INSTALL_DATA) "GeoLite2-Country.mmdb.gz" "$(DATA_INSTALL_DIR)/GeoLite2-Country.mmdb.gz" + +--- a/make.ps1 ++++ b/make.ps1 +@@ -136,6 +136,8 @@ + echo "Testing mods..." + echo "Testing Tiberian Sun mod MiniYAML..." + ./OpenRA.Utility.exe ts --check-yaml ++ echo "Testing Red Alert 2 mod MiniYAML..." ++ ./OpenRA.Utility.exe ra2 --check-yaml + echo "Testing Dune 2000 mod MiniYAML..." + ./OpenRA.Utility.exe d2k --check-yaml + echo "Testing Tiberian Dawn mod MiniYAML..." +@@ -170,6 +172,8 @@ + ./OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.D2k + echo "Checking for code style violations in OpenRA.Mods.TS..." + ./OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.TS ++ echo "Checking for code style violations in OpenRA.Mods.RA2..." ++ ./OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.RA2 + echo "Checking for code style violations in OpenRA.Utility..." + ./OpenRA.Utility.exe cnc --check-code-style OpenRA.Utility + echo "Checking for code style violations in OpenRA.Test..." + +--- a/mods/all/mod.yaml ++++ b/mods/all/mod.yaml +@@ -20,6 +20,7 @@ + d2k:OpenRA.Mods.D2k.dll + ./mods/cnc/OpenRA.Mods.Cnc.dll + ./mods/ts/OpenRA.Mods.TS.dll ++ ./mods/ts/OpenRA.Mods.RA2.dll + + ChromeLayout: + +--- a/mods/ra2/mod.yaml ++++ b/mods/ra2mod.yaml +@@ -5,7 +5,7 @@ + Author: RA2 team + + RequiresMods: +- modchooser: {DEV_VERSION} ++ + + Folders: + . +--- a/OpenRA.sln ++++ b/OpenRA.sln +@@ -17,6 +17,8 @@ + EndProject + Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Mods.TS", "OpenRA.Mods.TS\OpenRA.Mods.TS.csproj", "{5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}" + EndProject ++Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Mods.RA2", "OpenRA.Mods.RA2\OpenRA.Mods.RA2.csproj", "{7E1263D2-BA04-48D0-85DB-26C68B782608}" ++EndProject + Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Platforms.Default", "OpenRA.Platforms.Default\OpenRA.Platforms.Default.csproj", "{33D03738-C154-4028-8EA8-63A3C488A651}" + EndProject + Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Mods.Common", "OpenRA.Mods.Common\OpenRA.Mods.Common.csproj", "{FE6C8CC0-2F07-442A-B29F-17617B3B7FC6}" +@@ -139,6 +141,10 @@ + {5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}.Debug|x86.Build.0 = Debug|x86 + {5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}.Release|x86.ActiveCfg = Release|x86 + {5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}.Release|x86.Build.0 = Release|x86 ++ {7E1263D2-BA04-48D0-85DB-26C68B782608}.Debug|x86.ActiveCfg = Debug|x86 ++ {7E1263D2-BA04-48D0-85DB-26C68B782608}.Debug|x86.Build.0 = Debug|x86 ++ {7E1263D2-BA04-48D0-85DB-26C68B782608}.Release|x86.ActiveCfg = Release|x86 ++ {7E1263D2-BA04-48D0-85DB-26C68B782608}.Release|x86.Build.0 = Release|x86 + {33D03738-C154-4028-8EA8-63A3C488A651}.Debug|x86.ActiveCfg = Debug|x86 + {33D03738-C154-4028-8EA8-63A3C488A651}.Debug|x86.Build.0 = Debug|x86 + {33D03738-C154-4028-8EA8-63A3C488A651}.Release|x86.ActiveCfg = Release|x86 + +--- a/utility.cmd ++++ b/utility.cmd +@@ -16,6 +16,7 @@ + if /I "%mod%" EQU "ra" (goto help) + if /I "%mod%" EQU "cnc" (goto help) + if /I "%mod%" EQU "ts" (goto help) ++if /I "%mod%" EQU "ra2" (goto help) + if /I "%mod%" EQU "d2k" (goto help) + echo. + echo Unknown mod: %mod% diff --git a/ubuntu/install.sh b/ubuntu/install.sh new file mode 100755 index 0000000..810bdb4 --- /dev/null +++ b/ubuntu/install.sh @@ -0,0 +1,325 @@ +#!/bin/bash + +# Allow interruption of the script at any time (Ctrl + C) +trap "exit" INT + +#********************************************************************************************************* +## VARIABLES USED IN THE SCRIPT +# + +# Package name & version +PACKAGE_NAME=openra-bleed-tibsunra2 +PACKAGE_VERSION=1 + +PACKAGE=$PACKAGE_NAME-$PACKAGE_VERSION + +# Find out used Linux distribution +RELEASE=$(lsb_release -d | sed 's/Description:\t//g') + +# Check if the used OS is Ubuntu 14.04 LTS/14.10 or Linux Mint +RELEASE_VERSION=$(lsb_release -r | sed 's/[^0-9]*//g') +RELEASE_MINT=$(lsb_release -i 2>/dev/null |grep -c "Mint") + +# Check for critical build dependencies (especially for Ubuntu 14.04 LTS/14.10 & Linux Mint) +PKG1_CHECK=$(dpkg-query -W -f='${Status}' libnuget-core-cil 2>/dev/null | grep -c "ok installed") +PKG2_CHECK=$(dpkg-query -W -f='${Status}' mono-devel 2>/dev/null | grep -c "ok installed") +PKG3_CHECK=$(dpkg-query -W -f='${Status}' nuget 2>/dev/null | grep -c "ok installed") + +# Do we have any OpenRA packages on the system? +PKG4_CHECK=$(dpkg-query -W -f='${Status}' openra 2>/dev/null | grep -c "ok installed") +PKG5_CHECK=$(dpkg-query -W -f='${Status}' openra-playtest 2>/dev/null | grep -c "ok installed") +PKG6_CHECK=$(dpkg-query -W -f='${Status}' openra-bleed 2>/dev/null | grep -c "ok installed") + +# Check for missing RA2 directories. +RA2_MISSINGDIR1="$HOME/openra-master/$PACKAGE/mods/ra2/bits/vehicles" +RA2_MISSINGDIR2="$HOME/openra-master/$PACKAGE/mods/ra2/bits/themes" + +# Check if we already have sudo password in memory (timeout/timestamp check) +SUDO_CHECK=$(sudo -n uptime 2>&1|grep "load"|wc -l) + +BASH_CHECK=$(ps | grep `echo $$` | awk '{ print $4 }') + +bold_in='\e[1m' +line_in='\e[4m' +dim_in='\e[2m' + +green_in='\e[32m' +red_in='\e[91m' + +out='\e[0m' + +#********************************************************************************************************* +## PRE-CHECK +# + +# Check if we're using bash or sh to run the script. If bash, OK. If sh, ask user to run the script with bash. + +if [ ! $BASH_CHECK = "bash" ]; then + echo "\nPlease run this script using bash (/usr/bin/bash).\n" + exit 1 +fi + +# Check if we are root or not. If yes, then terminate the script. + +if [[ $UID = 0 ]]; then + echo -e "\nPlease run this script as a regular user. Do not use root or sudo. Some commands used in the script require regular user permissions.\n" + exit 1 +fi + +#If package dir exists already, delete it. + +if [ -d "$HOME/openra-master/" ]; then + rm -rf "$HOME/openra-master" +fi + +#If deb package exists already, delete it. + +if [ -f $HOME/$PACKAGE_NAME*.deb ]; then + rm -f $HOME/$PACKAGE_NAME*.deb +fi + +# Stop execution if we encounter an error +set -e + +#********************************************************************************************************* +## PART 1/7 +# +## Installation of OpenRA compilation dependencies and user notification message + +echo -e "\n$bold_in***Welcome Comrade*** $out\n" +echo -e "This script compiles and installs OpenRA from source with Tiberian Sun & Red Alert 2.\n +- The script is NOT made by official developers of OpenRA and may contain bugs. +- The script works only on Ubuntu, Linux Mint and similar Linux distributions. It creates a deb installation package using OpenRA source code and additional Red Alert 2 mod files from Github.\n\nNOTE: As the development of OpenRA & Red Alert 2 continues, this script will likely become unusable some day. Please, feel free to modify it if necessary." +echo -e "$line_in\nThe script has been tested on:\n\nDistribution\t\tStatus$out\nUbuntu 16.04 LTS$green_in\tOK$out\nUbuntu 15.10$green_in\t\tOK$out\nUbuntu 15.04 LTS$green_in\tOK$out\nUbuntu 14.10$green_in\t\tOK$out\nUbuntu 14.04 LTS$green_in\tOK$out\nLinux Mint 17.3$green_in\t\tOK$out\nLinux Mint 17.2$green_in\t\tOK$out\nLinux Mint 17.1$green_in\t\tOK$out\nLinux Mint 16$red_in\t\tFailure$out$dim_in (can't find required packages)$out\n" + +echo -e "You are using $RELEASE.\n" +read -r -p "Do you want to continue? [y/N] " response + +if [[ $response =~ ^([yY][eE][sS]|[yY])$ ]]; then + sleep 1 + + echo -e "\nAllright, let's continue. Do you want $bold_in\n\n1.$out manually check which OpenRA build dependencies (packages) will be installed on your system? $dim_in(manual apt-get + deb packages installation)$bold_in\n2.$out automatically accept the installation of the OpenRA build dependencies during the script execution? $dim_in(apt-get with -y option + automatic .deb packages installation)$out\n" + read -r -p "Please type 1 or 2: " number + sleep 1 + if [[ $number -eq 1 ]]; then + METHOD='' + echo -e "\nSelected installation method:$bold_in Manual$out" + else + METHOD=-y + echo -e "\nSelected installation method:$bold_in Automatic$out" + fi + + if [ $SUDO_CHECK -eq 0 ]; then + if [ -z $METHOD ]; then + echo -e "\nOpenRA compilation requires that you install some packages first. Your permission for installation is asked (yes/no) everytime it's needed. This script asks for a required root password now, so you don't have to type it multiple times later on while the script is running.\n\nPlease type sudo/root password now.\n" + else + echo -e "\nOpenRA compilation requires that you install some packages first. This script asks for a required root password now, so you don't have to type it multiple times later on while the script is running.\n\nPlease type sudo/root password now.\n" + fi + sudo echo -e "\nRoot password OK." + sleep 1 + else + true + fi + +## Check if the user is running Ubuntu 14.04 LTS/14.10 or Linux Mint and whether required nuget packages are installed if these Linux versions are being used. + + if [ $RELEASE_VERSION == 1404 ] || [ $RELEASE_VERSION == 1410 ] || [ $RELEASE_MINT -eq 1 ] ; then + echo -e "\nYou are running Ubuntu 14.04 LTS/14.10 or Linux Mint. We need to check if you have required NuGet packages installed.\nThese packages are not (longer available) from the official repository but they are provided by this package.\n" + read -r -p "Press ENTER to proceed." enter + if [ ${#enter} -eq 0 ]; then + echo -e "$line_in\nChecking NuGet packages$out" + fi +#----------------------------------------------------------------------------------------------------------------------------------------------------------- +## Check existence of 'nuget', 'libnuget-core-lib' & 'mono-devel' packages on Ubuntu 14.04 LTS/14.10/Linux Mint based system. + + if [ $PKG2_CHECK -eq 1 ]; then + echo -e "$green_in\nOK$out - 'mono-devel' found." + else + echo -e "$red_in\nWARNING$out - 'mono-devel' not found." + fi + + if [ $PKG1_CHECK -eq 1 ]; then + echo -e "$green_in\nOK$out - 'libnuget-core-cil' found." + else + echo -e "$red_in\nWARNING$out - 'libnuget-core-cil' not found." + fi + + if [ $PKG3_CHECK -eq 1 ]; then + echo -e "$green_in\nOK$out - 'nuget' found." + else + echo -e "$red_in\nWARNING$out - 'nuget' not found." + fi + + if [ ! $PKG2_CHECK -eq 1 ]; then + echo -e "$red_in\nWARNING$out - NuGet requires 'mono-devel' package which was not found.\n\nInstalling 'mono-devel' now." + sleep 5 + echo -e "\nUpdating package lists with APT.\n" + sleep 2 + sudo apt-get update && \ + sudo apt-get $METHOD install mono-devel + fi + + if [ ! $PKG1_CHECK -eq 1 ]; then + if [ $number = 1 ]; then + echo + read -r -p "Install 'libnuget-core-cil' now? [y/N] " response2 + if [[ $response2 =~ ^([yY][eE][sS]|[yY])$ ]]; then + sudo dpkg -i ./nuget-14.04-14.10/libnuget-core-cil_2.8.5+md59+dhx1-1~getdeb1_all.deb + else + echo -e "\nOpenRA installation can't continue. Aborting.\n" + exit 1 + fi + else + sudo dpkg -i ./nuget-14.04-14.10/libnuget-core-cil_2.8.5+md59+dhx1-1~getdeb1_all.deb + fi + fi + + PKG1_RECHECK=$(dpkg-query -W -f='${Status}' libnuget-core-cil 2>/dev/null | grep -c "ok installed") + + if [ ! $PKG3_CHECK -eq 1 ]; then + if [ $number = 1 ]; then + echo + read -r -p "Install 'nuget' now? [y/N] " response3 + if [[ $response3 =~ ^([yY][eE][sS]|[yY])$ ]]; then + sudo dpkg -i ./nuget-14.04-14.10/nuget_2.8.5+md59+dhx1-1~getdeb1_all.deb + else + echo -e "\nOpenRA installation can't continue. Aborting.\n" + exit 1 + fi + else + sudo dpkg -i ./nuget-14.04-14.10/nuget_2.8.5+md59+dhx1-1~getdeb1_all.deb + fi + fi + + PKG3_RECHECK=$(dpkg-query -W -f='${Status}' nuget 2>/dev/null | grep -c "ok installed") + + if [ $PKG1_RECHECK -eq 1 ] && [ $PKG3_RECHECK -eq 1 ]; then + echo -e "$green_in\nOK$out - All required NuGet packages are installed." + else + echo -e "$red_in\nWARNING$out - Can't find all required NuGet packages. Aborting.\n" + exit 1 + fi + else + true + fi + sleep 2 +#----------------------------------------------------------------------------------------------------------------------------------------------------------- + + echo -e "$bold_in\n1/7 ***OpenRA build dependencies***\n$out" + sleep 2 + echo -e "Updating package lists with APT.\n" + sleep 2 + sudo apt-get update + echo -e "\nInstalling required OpenRA build dependencies.\n" + sleep 4 + sudo apt-get $METHOD install git dpkg-dev dh-make sed mono-devel libfreetype6-dev libopenal-data libopenal1 libsdl2-2.0-0 nuget curl liblua5.1-0-dev zenity xdg-utils build-essential gcc make libfile-fcntllock-perl + mozroots --import --sync && \ + sudo apt-key update + +#********************************************************************************************************* +## PART 2/7 +# +## Download the latest OpenRA & Red Alert 2 source files from Github, create build directories to the user's home directory. +## Once Red Alert 2 source files have been downloaded, move them to the OpenRA parent source directory. +## Add several missing directories for Red Alert 2. + + echo -e "$bold_in\n2/7 ***Downloading OpenRA source code & Red Alert 2 mod files from Github***\n$out" + sleep 2 + echo -e "Part 1 (OpenRA source code):\n" + + mkdir -p $HOME/openra-master/{$PACKAGE,ra2} && \ + git clone -b bleed https://github.com/OpenRA/OpenRA.git $HOME/openra-master/$PACKAGE + + echo -e "\nPart 2 (Red Alert 2 mod files):\n" + + git clone -b master https://github.com/OpenRA/ra2.git $HOME/openra-master/ra2 && \ + mv $HOME/openra-master/ra2/OpenRA.Mods.RA2 $HOME/openra-master/$PACKAGE && \ + mv $HOME/openra-master/ra2 $HOME/openra-master/$PACKAGE/mods/ + + if [ ! -d "$RA2_MISSINGDIR1" ]; then + mkdir "$RA2_MISSINGDIR1" + fi + + if [ ! -d "$RA2_MISSINGDIR2" ]; then + mkdir "$RA2_MISSINGDIR2" + fi + + cp ./patches/{tibsun_ra2.patch,makefile-mcs.patch,ra2-csproj.patch} $HOME/openra-master/ + +#********************************************************************************************************* +## PART 3/7 +# +## Patch several OpenRA source files (Makefile and such) for Tiberian Sun & Red Alert 2 + + echo -e "$bold_in\n3/7 ***Preparing OpenRA source files for Tiberian Sun & Red Alert 2***\n$out" + sleep 2 + patch -d $HOME/openra-master/$PACKAGE -Np1 -i $HOME/openra-master/makefile-mcs.patch + patch -d $HOME/openra-master/$PACKAGE -Np1 -i $HOME/openra-master/tibsun_ra2.patch + patch -d $HOME/openra-master/$PACKAGE -Np1 -i $HOME/openra-master/ra2-csproj.patch + +#********************************************************************************************************* +## PART 4/7 +# +## Compile the game + + echo -e "$bold_in\n4/7 ***Starting OpenRA compilation with Tiberian Sun & Red Alert 2***\n$out" + sleep 2 + cd $HOME/openra-master/$PACKAGE && \ + make version && \ + make dependencies && \ + make all [DEBUG=false] + + echo -e "$bold_in\n5/7 ***Preparing OpenRA deb package. This takes a while. Please wait.***\n$out" + dh_make --createorig -s -y && \ + echo -e "\noverride_dh_auto_install:\n\tmake install-all install-linux-shortcuts prefix='$HOME/openra-master/$PACKAGE/debian/$PACKAGE_NAME/usr'\n\tsed -i '2s%.*%cd /usr/lib/openra%' '$HOME/openra-master/$PACKAGE/debian/$PACKAGE_NAME/usr/bin/openra'\noverride_dh_usrlocal:\noverride_dh_auto_test:" >> $HOME/openra-master/$PACKAGE/debian/rules && \ + sed -i 's/Depends: ${shlibs:Depends}, ${misc:Depends}/Depends: libopenal1, mono-runtime (>= 2.10), libmono-system-core4.0-cil, libmono-system-drawing4.0-cil, libmono-system-data4.0-cil, libmono-system-numerics4.0-cil, libmono-system-runtime-serialization4.0-cil, libmono-system-xml-linq4.0-cil, libfreetype6, libc6, libasound2, libgl1-mesa-glx, libgl1-mesa-dri, xdg-utils, zenity, libsdl2 | libsdl2-2.0-0, liblua5.1-0/g' $HOME/openra-master/$PACKAGE/debian/control && \ + sed -i 's//A multiplayer re-envisioning of early RTS games by Westwood Studios\nConflicts: openra, openra-playtest, openra-bleed/g' $HOME/openra-master/$PACKAGE/debian/control && \ + sed -i 's/ / ./g' $HOME/openra-master/$PACKAGE/debian/control && \ + dpkg-buildpackage -rfakeroot -b -nc -uc -us + +#********************************************************************************************************* +## PART 6/7 +# +## Remove temporary OpenRA build files & directories + + echo -e "$bold_in\n6/7 ***Compilation process completed. Moving compiled deb package into '$HOME'***\n$out" + sleep 2 + mv $HOME/openra-master/$PACKAGE_NAME*.deb $HOME + echo -e "Removing temporary files." + rm -rf $HOME/openra-master + +#********************************************************************************************************* +## PART 7/7 +# +## Install OpenRA + + echo -e "$bold_in\n7/7 ***Starting OpenRA installation process***\n$out" + sleep 2 + if [ $PKG4_CHECK -eq 1 ] || [ $PKG5_CHECK -eq 1 ] || [ $PKG6_CHECK -eq 1 ] ; then + echo -e "\nCan't install '$PACKAGE_NAME' because of conflicting packages.\nPlease remove previously installed openra package from your system and try again.\nBuilt $PACKAGE_NAME deb package can be found in '$HOME'.\n" + else + if [ $number = 1 ]; then + read -r -p "Install '$PACKAGE_NAME' now? [y/N] " response4 + if [[ $response4 =~ ^([yY][eE][sS]|[yY])$ ]]; then + sudo dpkg -i $HOME/$PACKAGE_NAME*.deb + else + echo -e "\nPlease install '$PACKAGE_NAME' manually. You find the compiled package at '$HOME'." + sleep 2 + fi + else + sudo dpkg -i $HOME/$PACKAGE_NAME*.deb + fi + fi + +#********************************************************************************************************* +## ADDITIONAL INFORMATION +# +## Messages + + echo -e "\n***OpenRA installation script completed.\nPlease see further instructions below.***" + sleep 4 + echo -e "$bold_in\n***TIBERIAN SUN & RED ALERT 2 - HOWTO***$out\n\nTO PLAY TIBERIAN SUN: Launch the game and download the required asset files from the web when the game asks you to do so.\n\nTO PLAY RED ALERT 2: You must install language.mix, multi.mix, ra2.mix and theme.mix into '$HOME/.openra/Content/ra2/' folder. You find these files from original RA2 installation media (CD's):\n\n-theme.mix, multi.mix = RA2 CD Root folder\n-ra2.mix, language.mix = RA2 CD Root/INSTALL/Game1.CAB (inside that archive file)$bold_in\n\n***LAUNCHING OPENRA***$out\n\nTo launch OpenRA, simply type 'openra' (without quotations) in your terminal or use a desktop shortcut file.$bold_in\n\n***UNINSTALLATION***$out\n\nIf you want to remove OpenRA, just type 'sudo apt-get purge --remove $PACKAGE_NAME'\n\nYou can find deb package of $PACKAGE_NAME at '$HOME' for further usage.$bold_in\n\n***MULTIPLAYER***$out\n\nIt's recommended to use exactly same deb installation package for multiplayer usage to minimize possible version differences/conflicts between players. If your friends compiles this package with another operating system, please make sure they use exactly same source files for their OpenRA compilation process.\n\nHave fun!\n" + +else + echo -e "\nAborted.\n" +fi \ No newline at end of file diff --git a/ubuntu/nuget-14.04-14.10/libnuget-core-cil_2.8.5+md59+dhx1-1~getdeb1_all.deb b/ubuntu/nuget-14.04-14.10/libnuget-core-cil_2.8.5+md59+dhx1-1~getdeb1_all.deb new file mode 100755 index 0000000..ecb2a90 Binary files /dev/null and b/ubuntu/nuget-14.04-14.10/libnuget-core-cil_2.8.5+md59+dhx1-1~getdeb1_all.deb differ diff --git a/ubuntu/nuget-14.04-14.10/nuget_2.8.5+md59+dhx1-1~getdeb1_all.deb b/ubuntu/nuget-14.04-14.10/nuget_2.8.5+md59+dhx1-1~getdeb1_all.deb new file mode 100755 index 0000000..a5b1efe Binary files /dev/null and b/ubuntu/nuget-14.04-14.10/nuget_2.8.5+md59+dhx1-1~getdeb1_all.deb differ diff --git a/ubuntu/patches/makefile-mcs.patch b/ubuntu/patches/makefile-mcs.patch new file mode 100755 index 0000000..c1fb7d0 --- /dev/null +++ b/ubuntu/patches/makefile-mcs.patch @@ -0,0 +1,12 @@ +--- a/Makefile ++++ b/Makefile +@@ -42,7 +42,7 @@ + + ############################## TOOLCHAIN ############################### + # +-CSC = mcs -sdk:4.0 ++CSC = mcs + CSFLAGS = -nologo -warn:4 -codepage:utf8 -unsafe -warnaserror + DEFINE = TRACE + COMMON_LIBS = System.dll System.Core.dll System.Data.dll System.Data.DataSetExtensions.dll System.Drawing.dll System.Xml.dll thirdparty/download/ICSharpCode.SharpZipLib.dll thirdparty/download/FuzzyLogicLibrary.dll thirdparty/download/Mono.Nat.dll thirdparty/download/MaxMind.Db.dll thirdparty/download/MaxMind.GeoIP2.dll thirdparty/download/Eluant.dll thirdparty/download/SmarIrc4net.dll + diff --git a/ubuntu/patches/ra2-csproj.patch b/ubuntu/patches/ra2-csproj.patch new file mode 100644 index 0000000..5fa6a98 --- /dev/null +++ b/ubuntu/patches/ra2-csproj.patch @@ -0,0 +1,110 @@ +--- a/OpenRA.Mods.RA2/OpenRA.Mods.RA2.csproj ++++ b/OpenRA.Mods.RA2/OpenRA.Mods.RA2.csproj +@@ -1,33 +1,74 @@ +  +- ++ + +- {7E1263D2-BA04-48D0-85DB-26C68B782608} + Debug + AnyCPU ++ 10.0.0 ++ 2.0 ++ {7E1263D2-BA04-48D0-85DB-26C68B782608} + Library + OpenRA.Mods.RA2 + OpenRA.Mods.RA2 +- v4.0 +- .. + +- ++ ++ true ++ bin\Debug\ ++ TRACE;DEBUG + x86 ++ prompt ++ ++ ++ ++ ++ ++ ++ AllRules.ruleset ++ full ++ true + +- +- True +- Full +- False +- True +- DEBUG;TRACE +- +- +- False +- None +- True +- False ++ ++ true ++ bin\Release\ + TRACE ++ true ++ pdbonly ++ x86 ++ prompt ++ AllRules.ruleset ++ true ++ ++ ++ ++ ++ ++ + + ++ ++ ++ ++ ++ ..\thirdparty\download\Eluant.dll ++ False ++ ++ ++ ++ ++ ++ {0DFB103F-2962-400F-8C6D-E2C28CCBA633} ++ OpenRA.Game ++ False ++ ++ ++ {fe6c8cc0-2f07-442a-b29f-17617b3b7fc6} ++ OpenRA.Mods.Common ++ False ++ ++ ++ ++ ++ ++ + + 4.0 + +@@ -52,8 +93,9 @@ + 3.5 + + +- +- +- +- +- ++ ++ mkdir "$(SolutionDir)mods/ra2/" ++copy "$(TargetPath)" "$(SolutionDir)mods/ra2/" ++cd "$(SolutionDir)" ++ ++ +\ No newline at end of file diff --git a/ubuntu/patches/tibsun_ra2.patch b/ubuntu/patches/tibsun_ra2.patch new file mode 100755 index 0000000..6b6ff0f --- /dev/null +++ b/ubuntu/patches/tibsun_ra2.patch @@ -0,0 +1,134 @@ +--- a/Makefile ++++ b/Makefile +@@ -187,6 +187,15 @@ + PROGRAMS += mod_ts + mod_ts: $(mod_ts_TARGET) + ++# Red Alert 2 ++mod_ra2_SRCS := $(shell find OpenRA.Mods.RA2/ -iname '*.cs') ++mod_ra2_TARGET = mods/ra2/OpenRA.Mods.RA2.dll ++mod_ra2_KIND = library ++mod_ra2_DEPS = $(STD_MOD_DEPS) $(mod_common_TARGET) ++mod_ra2_LIBS = $(COMMON_LIBS) $(STD_MOD_LIBS) $(mod_common_TARGET) ++PROGRAMS += mod_ra2 ++mod_ra2: $(mod_ra2_TARGET) ++ + check-scripts: + @echo + @echo "Checking for Lua syntax errors..." +@@ -222,6 +231,9 @@ + @echo "Checking for code style violations in OpenRA.Mods.TS..." + @mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Mods.TS + @echo ++ @echo "Checking for code style violations in OpenRA.Mods.RA2..." ++ @mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Mods.RA2 ++ @echo + @echo "Checking for code style violations in OpenRA.Utility..." + @mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Utility + @echo +@@ -255,6 +267,9 @@ + @echo "Testing Tiberian Sun mod MiniYAML..." + @mono --debug OpenRA.Utility.exe ts --check-yaml + @echo ++ @echo "Testing Red Alert 2 mod MiniYAML..." ++ @mono --debug OpenRA.Utility.exe ra2 --check-yaml ++ @echo + @echo "Testing Dune 2000 mod MiniYAML..." + @mono --debug OpenRA.Utility.exe d2k --check-yaml + @echo +@@ -320,7 +335,7 @@ + + package: all-dependencies core tools docs version + +-mods: mod_common mod_ra mod_cnc mod_d2k mod_ts ++mods: mod_common mod_ra mod_cnc mod_d2k mod_ts mod_ra2 + + all: dependencies core tools + +@@ -389,6 +404,10 @@ + @$(CP_R) mods/d2k "$(DATA_INSTALL_DIR)/mods/" + @$(INSTALL_PROGRAM) $(mod_d2k_TARGET) "$(DATA_INSTALL_DIR)/mods/d2k" + @$(CP_R) mods/modchooser "$(DATA_INSTALL_DIR)/mods/" ++ @$(CP_R) mods/ts "$(DATA_INSTALL_DIR)/mods/" ++ @$(INSTALL_PROGRAM) $(mod_ts_TARGET) "$(DATA_INSTALL_DIR)/mods/ts" ++ @$(CP_R) mods/ra2 "$(DATA_INSTALL_DIR)/mods/" ++ @$(INSTALL_PROGRAM) $(mod_ra2_TARGET) "$(DATA_INSTALL_DIR)/mods/ra2" + + @$(INSTALL_DATA) "global mix database.dat" "$(DATA_INSTALL_DIR)/global mix database.dat" + @$(INSTALL_DATA) "GeoLite2-Country.mmdb.gz" "$(DATA_INSTALL_DIR)/GeoLite2-Country.mmdb.gz" + +--- a/make.ps1 ++++ b/make.ps1 +@@ -136,6 +136,8 @@ + echo "Testing mods..." + echo "Testing Tiberian Sun mod MiniYAML..." + ./OpenRA.Utility.exe ts --check-yaml ++ echo "Testing Red Alert 2 mod MiniYAML..." ++ ./OpenRA.Utility.exe ra2 --check-yaml + echo "Testing Dune 2000 mod MiniYAML..." + ./OpenRA.Utility.exe d2k --check-yaml + echo "Testing Tiberian Dawn mod MiniYAML..." +@@ -170,6 +172,8 @@ + ./OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.D2k + echo "Checking for code style violations in OpenRA.Mods.TS..." + ./OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.TS ++ echo "Checking for code style violations in OpenRA.Mods.RA2..." ++ ./OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.RA2 + echo "Checking for code style violations in OpenRA.Utility..." + ./OpenRA.Utility.exe cnc --check-code-style OpenRA.Utility + echo "Checking for code style violations in OpenRA.Test..." + +--- a/mods/all/mod.yaml ++++ b/mods/all/mod.yaml +@@ -20,6 +20,7 @@ + d2k:OpenRA.Mods.D2k.dll + ./mods/cnc/OpenRA.Mods.Cnc.dll + ./mods/ts/OpenRA.Mods.TS.dll ++ ./mods/ts/OpenRA.Mods.RA2.dll + + ChromeLayout: + +--- a/mods/ra2/mod.yaml ++++ b/mods/ra2mod.yaml +@@ -5,7 +5,7 @@ + Author: RA2 team + + RequiresMods: +- modchooser: {DEV_VERSION} ++ + + Folders: + . +--- a/OpenRA.sln ++++ b/OpenRA.sln +@@ -17,6 +17,8 @@ + EndProject + Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Mods.TS", "OpenRA.Mods.TS\OpenRA.Mods.TS.csproj", "{5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}" + EndProject ++Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Mods.RA2", "OpenRA.Mods.RA2\OpenRA.Mods.RA2.csproj", "{7E1263D2-BA04-48D0-85DB-26C68B782608}" ++EndProject + Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Platforms.Default", "OpenRA.Platforms.Default\OpenRA.Platforms.Default.csproj", "{33D03738-C154-4028-8EA8-63A3C488A651}" + EndProject + Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Mods.Common", "OpenRA.Mods.Common\OpenRA.Mods.Common.csproj", "{FE6C8CC0-2F07-442A-B29F-17617B3B7FC6}" +@@ -139,6 +141,10 @@ + {5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}.Debug|x86.Build.0 = Debug|x86 + {5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}.Release|x86.ActiveCfg = Release|x86 + {5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}.Release|x86.Build.0 = Release|x86 ++ {7E1263D2-BA04-48D0-85DB-26C68B782608}.Debug|x86.ActiveCfg = Debug|x86 ++ {7E1263D2-BA04-48D0-85DB-26C68B782608}.Debug|x86.Build.0 = Debug|x86 ++ {7E1263D2-BA04-48D0-85DB-26C68B782608}.Release|x86.ActiveCfg = Release|x86 ++ {7E1263D2-BA04-48D0-85DB-26C68B782608}.Release|x86.Build.0 = Release|x86 + {33D03738-C154-4028-8EA8-63A3C488A651}.Debug|x86.ActiveCfg = Debug|x86 + {33D03738-C154-4028-8EA8-63A3C488A651}.Debug|x86.Build.0 = Debug|x86 + {33D03738-C154-4028-8EA8-63A3C488A651}.Release|x86.ActiveCfg = Release|x86 + +--- a/utility.cmd ++++ b/utility.cmd +@@ -16,6 +16,7 @@ + if /I "%mod%" EQU "ra" (goto help) + if /I "%mod%" EQU "cnc" (goto help) + if /I "%mod%" EQU "ts" (goto help) ++if /I "%mod%" EQU "ra2" (goto help) + if /I "%mod%" EQU "d2k" (goto help) + echo. + echo Unknown mod: %mod% diff --git a/windows/BEFORE-INSTALLATION.txt b/windows/BEFORE-INSTALLATION.txt new file mode 100644 index 0000000..6a04ef6 --- /dev/null +++ b/windows/BEFORE-INSTALLATION.txt @@ -0,0 +1,34 @@ +DO THIS BEFORE RUNNING INSTALL.BAT + +1) Download and install Microsoft .NET Framework 4.5.2. If you already have it, skip this step. + +https://www.microsoft.com/en-us/download/confirmation.aspx?id=42643 + +All .NET 4.X Framework versions: + +https://msdn.microsoft.com/en-us/library/5a4x27ek%28v=vs.110%29.aspx + +------------------------------------------------ + +ABOUT INSTALL.BAT + +- Automatically compiles OpenRA with Tiberian Sun & Red Alert 2 from the source for you +- This is the file you need to execute if you're looking for installation of OpenRA with Tiberian Sun & Red Alert 2 +- Double click to execute it + +------------------------------------------------ + +- Once the install.bat script has compiled the game, there should be many warnings but not a single error +message as output. I got 52 errors if I had only .NET Framework 4.5 installed. + +- I got only 13 warnings after I installed Microsoft Windows SDK for Windows 7 and .NET Framework 4 +(https://www.microsoft.com/en-us/download/details.aspx?id=8279) + +- However, the number of those warning messages didn't affect my gameplay in any way. That's why I'm not sure +if you need to worry about them. I can't really recommend to install 1.7GB of unneeded stuff on your PC +without a very good and valid reason. + +- If you feel it important or your game crashes etc., please consider installing that SDK stuff and +re-running the install.bat the game. + +------------------------------------------------ \ No newline at end of file diff --git a/windows/data/install.ps1 b/windows/data/install.ps1 new file mode 100644 index 0000000..5301891 --- /dev/null +++ b/windows/data/install.ps1 @@ -0,0 +1,126 @@ +#------------------------------------------------------ +## Prepare the script for possible Ctrl+C termination + +while ($true) +{ + +#------------------------------------------------------ +## Initial script messages + + "***Welcome Comrade***" + Start-Sleep -s 3 + "`nThis script will generate OpenRA with Tiberian Sun & Red Alert 2 for Windows." + Start-Sleep -s 4 + "`n- Make sure you have Microsoft .NET Framework 4.5 installed on your computer." + Start-Sleep -s 3 + "`n- This script is NOT made by the OpenRA developers and may contain bugs." + Start-Sleep -s 3 + "`n- If you worry about what the script is doing, you can always check its code (\data\install.ps1)" + Start-Sleep -s 4 + "`n- Press Ctrl+C if you want terminate script execution." + Start-Sleep -s 4 + "`n***Starting execution sequence now***" + Start-Sleep -s 3 + +#------------------------------------------------------ +## Remove all old source files if they exist + + "`nRemoving all old source files that may exist in the data directory." + + Remove-Item .\data\OpenRA-bleed -Force -Recurse -ErrorAction SilentlyContinue + Remove-Item .\data\ra2-master -Force -Recurse -ErrorAction SilentlyContinue + + Remove-Item .\data\OpenRA-bleed.zip -Force -ErrorAction SilentlyContinue + Remove-Item .\data\ra2-master.zip -Force -ErrorAction SilentlyContinue + +#------------------------------------------------------ +## Prepare Github environment for downloading the source + + [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true} + + $client = New-Object System.Net.WebClient + $client.Headers.Add("Authorization","token 1234567890notarealtoken987654321") + $client.Headers.Add("Accept","application/vnd.github.v3.raw") + +#------------------------------------------------------ +## Download OpenRA-bleed source code + + "`nDownloading OpenRA source files from Github. Please Stand By." + $client.DownloadFile("https://github.com/OpenRA/OpenRA/archive/bleed.zip?ref=bleed",".\data\OpenRA-bleed.zip”) + +#------------------------------------------------------ +## Download Red Alert 2 mod files + + "`nDownloading Red Alert 2 mod files from Github. Please Stand By." + $client.DownloadFile("https://github.com/OpenRA/ra2/archive/master.zip?ref=master",".\data\ra2-master.zip”) + +#------------------------------------------------------ +## Unzip OpenRA-bleed source files + + "`nUnzipping OpenRA source files into data folder." + $shell_app=new-object -com shell.application + $filename = "OpenRA-bleed.zip" + $zip_file = $shell_app.namespace((Get-Location).Path + "\data" + "\$filename") + $destination = $shell_app.namespace((Get-Location).Path + "\data") + $destination.Copyhere($zip_file.items()) + +#------------------------------------------------------ +## Unzip Red Alert 2 mod files + + "`nUnzipping Red Alert 2 mod files into data folder." + $shell_app=new-object -com shell.application + $filename2 = "ra2-master.zip" + $zip_file2 = $shell_app.namespace((Get-Location).Path + "\data" + "\$filename2") + $destination = $shell_app.namespace((Get-Location).Path + "\data") + $destination.Copyhere($zip_file2.items()) + +#------------------------------------------------------ +## Merge OpenRA source files and Red Alert 2 mod files together + + "`nMerging OpenRA source & Red Alert 2 mod files." + move-item ".\data\ra2-master\OpenRA.Mods.RA2" ".\data\OpenRA-bleed\OpenRA.Mods.RA2" + move-item ".\data\ra2-master" ".\data\OpenRA-bleed\mods\ra2" + +#------------------------------------------------------ +## Prepare OpenRA source code for Tiberian Sun & Red Alert 2 + + Start-Sleep -s 3 + "`nPatching OpenRA source code for Tiberian Sun & Red Alert 2." + cd .\data + .\patch.exe -d OpenRA-bleed -Np1 -i ..\openra-srcpatch.patch + cd .. + +#------------------------------------------------------ +## Compile OpenRA with Tiberian Sun & Red Alert 2 + + "`nCompiling OpenRA with Tiberian Sun & Red Alert 2.`n" + cd .\data\OpenRA-bleed\ + .\make.cmd dependencies + .\make.cmd all + cd .. + cd .. + move-item ".\data\OpenRA-bleed\" ".\OpenRA-bleed-tibsunra2" + +#------------------------------------------------------ +## Post-installation messages + + "`nCompilation process completed. You find the game inside 'OpenRA-bleed-tibsunra2' folder" + Start-Sleep -s 4 + "`nTO PLAY OPENRA: Click OpenRA.exe (maybe you should create a desktop shortcut for it?)" + "`nTO PLAY TIBERIAN SUN: Launch the game and download the required asset files from the web when the game asks you to do so." + "`nTO PLAY RED ALERT 2: you must install language.mix, multi.mix, ra2.mix and theme.mix into \My Documents\OpenRA\Content\ra2\ folder.`nYou find these files from original RA2 installation media (CD's):`n`ntheme.mix, multi.mix = RA2 CD Root folder`nra2.mix, language.mix = RA2 CD Root/INSTALL/Game1.CAB (inside that archive file)" + "`nMULTIPLAYER: It's recommended to use exactly same compiled EXE files (and other stuff) for multiplayer usage to minimize possible version differences/conflicts between players. If your friends compiles this package with another operating system, please make sure they use exactly same source files for their OpenRA compilation process." + "`nUNINSTALLATION: Since the game has been compiled from source and no additional setup programs are provided, all you need to do is to delete the contents of 'OpenRA-bleed-tibsunra2' folder and \My Documents\OpenRA\" + "`nHave fun!" + exit + +#------------------------------------------------------ +## Termination code for the script (Ctrl + C) + + if ($Host.UI.RawUI.KeyAvailable -and (3 -eq [int]$Host.UI.RawUI.ReadKey("AllowCtrlC,IncludeKeyUp,NoEcho").Character)) + { + write-host "Installation script terminated by user." + $key = $Host.UI.RawUI.ReadKey("NoEcho, IncludeKeyDown") + if ($key.Character -eq "N") { break; } + } +} \ No newline at end of file diff --git a/windows/data/openra-srcpatch.patch b/windows/data/openra-srcpatch.patch new file mode 100644 index 0000000..dfdc25f --- /dev/null +++ b/windows/data/openra-srcpatch.patch @@ -0,0 +1,257 @@ +--- a/Makefile ++++ b/Makefile +@@ -42,7 +42,7 @@ + + ############################## TOOLCHAIN ############################### + # +-CSC = mcs -sdk:4.0 ++CSC = mcs + CSFLAGS = -nologo -warn:4 -codepage:utf8 -unsafe -warnaserror + DEFINE = TRACE + COMMON_LIBS = System.dll System.Core.dll System.Data.dll System.Data.DataSetExtensions.dll System.Drawing.dll System.Xml.dll thirdparty/download/ICSharpCode.SharpZipLib.dll thirdparty/download/FuzzyLogicLibrary.dll thirdparty/download/Mono.Nat.dll thirdparty/download/MaxMind.Db.dll thirdparty/download/MaxMind.GeoIP2.dll thirdparty/download/Eluant.dll thirdparty/download/SmarIrc4net.dll + +--- a/OpenRA.Mods.RA2/OpenRA.Mods.RA2.csproj ++++ b/OpenRA.Mods.RA2/OpenRA.Mods.RA2.csproj +@@ -1,33 +1,74 @@ +  +- ++ + +- {7E1263D2-BA04-48D0-85DB-26C68B782608} + Debug + AnyCPU ++ 10.0.0 ++ 2.0 ++ {7E1263D2-BA04-48D0-85DB-26C68B782608} + Library + OpenRA.Mods.RA2 + OpenRA.Mods.RA2 +- v4.0 +- .. + +- ++ ++ true ++ bin\Debug\ ++ TRACE;DEBUG + x86 ++ prompt ++ ++ ++ ++ ++ ++ ++ AllRules.ruleset ++ full ++ true + +- +- True +- Full +- False +- True +- DEBUG;TRACE +- +- +- False +- None +- True +- False ++ ++ true ++ bin\Release\ + TRACE ++ true ++ pdbonly ++ x86 ++ prompt ++ AllRules.ruleset ++ true ++ ++ ++ ++ ++ ++ + + ++ ++ ++ ++ ++ ..\thirdparty\download\Eluant.dll ++ False ++ ++ ++ ++ ++ ++ {0DFB103F-2962-400F-8C6D-E2C28CCBA633} ++ OpenRA.Game ++ False ++ ++ ++ {fe6c8cc0-2f07-442a-b29f-17617b3b7fc6} ++ OpenRA.Mods.Common ++ False ++ ++ ++ ++ ++ ++ + + 4.0 + +@@ -52,8 +93,9 @@ + 3.5 + + +- +- +- +- +- ++ ++ mkdir "$(SolutionDir)mods/ra2/" ++copy "$(TargetPath)" "$(SolutionDir)mods/ra2/" ++cd "$(SolutionDir)" ++ ++ +\ No newline at end of file + +--- a/Makefile ++++ b/Makefile +@@ -187,6 +187,15 @@ + PROGRAMS += mod_ts + mod_ts: $(mod_ts_TARGET) + ++# Red Alert 2 ++mod_ra2_SRCS := $(shell find OpenRA.Mods.RA2/ -iname '*.cs') ++mod_ra2_TARGET = mods/ra2/OpenRA.Mods.RA2.dll ++mod_ra2_KIND = library ++mod_ra2_DEPS = $(STD_MOD_DEPS) $(mod_common_TARGET) ++mod_ra2_LIBS = $(COMMON_LIBS) $(STD_MOD_LIBS) $(mod_common_TARGET) ++PROGRAMS += mod_ra2 ++mod_ra2: $(mod_ra2_TARGET) ++ + check-scripts: + @echo + @echo "Checking for Lua syntax errors..." +@@ -222,6 +231,9 @@ + @echo "Checking for code style violations in OpenRA.Mods.TS..." + @mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Mods.TS + @echo ++ @echo "Checking for code style violations in OpenRA.Mods.RA2..." ++ @mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Mods.RA2 ++ @echo + @echo "Checking for code style violations in OpenRA.Utility..." + @mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Utility + @echo +@@ -255,6 +267,9 @@ + @echo "Testing Tiberian Sun mod MiniYAML..." + @mono --debug OpenRA.Utility.exe ts --check-yaml + @echo ++ @echo "Testing Red Alert 2 mod MiniYAML..." ++ @mono --debug OpenRA.Utility.exe ra2 --check-yaml ++ @echo + @echo "Testing Dune 2000 mod MiniYAML..." + @mono --debug OpenRA.Utility.exe d2k --check-yaml + @echo +@@ -320,7 +335,7 @@ + + package: all-dependencies core tools docs version + +-mods: mod_common mod_ra mod_cnc mod_d2k mod_ts ++mods: mod_common mod_ra mod_cnc mod_d2k mod_ts mod_ra2 + + all: dependencies core tools + +@@ -389,6 +404,10 @@ + @$(CP_R) mods/d2k "$(DATA_INSTALL_DIR)/mods/" + @$(INSTALL_PROGRAM) $(mod_d2k_TARGET) "$(DATA_INSTALL_DIR)/mods/d2k" + @$(CP_R) mods/modchooser "$(DATA_INSTALL_DIR)/mods/" ++ @$(CP_R) mods/ts "$(DATA_INSTALL_DIR)/mods/" ++ @$(INSTALL_PROGRAM) $(mod_ts_TARGET) "$(DATA_INSTALL_DIR)/mods/ts" ++ @$(CP_R) mods/ra2 "$(DATA_INSTALL_DIR)/mods/" ++ @$(INSTALL_PROGRAM) $(mod_ra2_TARGET) "$(DATA_INSTALL_DIR)/mods/ra2" + + @$(INSTALL_DATA) "global mix database.dat" "$(DATA_INSTALL_DIR)/global mix database.dat" + @$(INSTALL_DATA) "GeoLite2-Country.mmdb.gz" "$(DATA_INSTALL_DIR)/GeoLite2-Country.mmdb.gz" + +--- a/make.ps1 ++++ b/make.ps1 +@@ -136,6 +136,8 @@ + echo "Testing mods..." + echo "Testing Tiberian Sun mod MiniYAML..." + ./OpenRA.Utility.exe ts --check-yaml ++ echo "Testing Red Alert 2 mod MiniYAML..." ++ ./OpenRA.Utility.exe ra2 --check-yaml + echo "Testing Dune 2000 mod MiniYAML..." + ./OpenRA.Utility.exe d2k --check-yaml + echo "Testing Tiberian Dawn mod MiniYAML..." +@@ -170,6 +172,8 @@ + ./OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.D2k + echo "Checking for code style violations in OpenRA.Mods.TS..." + ./OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.TS ++ echo "Checking for code style violations in OpenRA.Mods.RA2..." ++ ./OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.RA2 + echo "Checking for code style violations in OpenRA.Utility..." + ./OpenRA.Utility.exe cnc --check-code-style OpenRA.Utility + echo "Checking for code style violations in OpenRA.Test..." + +--- a/mods/all/mod.yaml ++++ b/mods/all/mod.yaml +@@ -20,6 +20,7 @@ + d2k:OpenRA.Mods.D2k.dll + ./mods/cnc/OpenRA.Mods.Cnc.dll + ./mods/ts/OpenRA.Mods.TS.dll ++ ./mods/ts/OpenRA.Mods.RA2.dll + + ChromeLayout: + +--- a/mods/ra2/mod.yaml ++++ b/mods/ra2mod.yaml +@@ -5,7 +5,7 @@ + Author: RA2 team + + RequiresMods: +- modchooser: {DEV_VERSION} ++ + + Folders: + . +--- a/OpenRA.sln ++++ b/OpenRA.sln +@@ -17,6 +17,8 @@ + EndProject + Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Mods.TS", "OpenRA.Mods.TS\OpenRA.Mods.TS.csproj", "{5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}" + EndProject ++Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Mods.RA2", "OpenRA.Mods.RA2\OpenRA.Mods.RA2.csproj", "{7E1263D2-BA04-48D0-85DB-26C68B782608}" ++EndProject + Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Platforms.Default", "OpenRA.Platforms.Default\OpenRA.Platforms.Default.csproj", "{33D03738-C154-4028-8EA8-63A3C488A651}" + EndProject + Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Mods.Common", "OpenRA.Mods.Common\OpenRA.Mods.Common.csproj", "{FE6C8CC0-2F07-442A-B29F-17617B3B7FC6}" +@@ -139,6 +141,10 @@ + {5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}.Debug|x86.Build.0 = Debug|x86 + {5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}.Release|x86.ActiveCfg = Release|x86 + {5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}.Release|x86.Build.0 = Release|x86 ++ {7E1263D2-BA04-48D0-85DB-26C68B782608}.Debug|x86.ActiveCfg = Debug|x86 ++ {7E1263D2-BA04-48D0-85DB-26C68B782608}.Debug|x86.Build.0 = Debug|x86 ++ {7E1263D2-BA04-48D0-85DB-26C68B782608}.Release|x86.ActiveCfg = Release|x86 ++ {7E1263D2-BA04-48D0-85DB-26C68B782608}.Release|x86.Build.0 = Release|x86 + {33D03738-C154-4028-8EA8-63A3C488A651}.Debug|x86.ActiveCfg = Debug|x86 + {33D03738-C154-4028-8EA8-63A3C488A651}.Debug|x86.Build.0 = Debug|x86 + {33D03738-C154-4028-8EA8-63A3C488A651}.Release|x86.ActiveCfg = Release|x86 + +--- a/utility.cmd ++++ b/utility.cmd +@@ -16,6 +16,7 @@ + if /I "%mod%" EQU "ra" (goto help) + if /I "%mod%" EQU "cnc" (goto help) + if /I "%mod%" EQU "ts" (goto help) ++if /I "%mod%" EQU "ra2" (goto help) + if /I "%mod%" EQU "d2k" (goto help) + echo. + echo Unknown mod: %mod% diff --git a/windows/data/patch.exe b/windows/data/patch.exe new file mode 100644 index 0000000..1b22a07 Binary files /dev/null and b/windows/data/patch.exe differ diff --git a/windows/install.bat b/windows/install.bat new file mode 100644 index 0000000..cd3c3f8 --- /dev/null +++ b/windows/install.bat @@ -0,0 +1 @@ +start cmd.exe /k @powershell -NoProfile -ExecutionPolicy Unrestricted -File .\data\install.ps1 %* \ No newline at end of file diff --git a/windows/windows-manual-installation.txt b/windows/windows-manual-installation.txt new file mode 100644 index 0000000..513af0e --- /dev/null +++ b/windows/windows-manual-installation.txt @@ -0,0 +1,96 @@ +************************************************************************** +OpenRA + Tiberian Sun & Red Alert 2 installation instructions for Windows +************************************************************************** +------------------------------------------------ +1) Extract contents of OpenRA-windows.zip + +------------------------------------------------ +2) Download OpenRA source code & Red Alert 2 mod files from Github: + +https://github.com/OpenRA/OpenRA/archive/bleed.zip +https://github.com/OpenRA/ra2/archive/master.zip + +------------------------------------------------ +3) Extract both Github zip archives to a separate location. (E.G. create 'OpenRA-bleed' and 'ra2-master' parent folders) + +------------------------------------------------ +4) Go to 'ra2-master' folder. Cut OpenRA.Mods.RA2 directory and put it into OpenRA-bleed parent folder. + +------------------------------------------------ +5) Cut ra2-master folder into OpenRA-bleed\mods\ and rename it simply "ra2" (ra2-master ->> ra2) + +------------------------------------------------ +7) Download and install Microsoft .NET Framework 4.5.2. If you already have it, skip this step. + +https://www.microsoft.com/en-us/download/confirmation.aspx?id=42643 + +All .NET 4.X Framework versions: + +https://msdn.microsoft.com/en-us/library/5a4x27ek%28v=vs.110%29.aspx + +------------------------------------------------ +8) You must patch OpenRA source files in order to run Tiberian Sun and Red Alert 2. Open patch.exe in Command Prompt. + +In Command Prompt, navigate to the folder where you have patch.exe + +(For example C:\Users\Fincer\Desktop\OpenRA-windows\) + +Patch is a linux-based program we need to patch critical OpenRA source files. + +------------------------------------------------ +9) In Command Prompt, navigate to the folder where you have patch.exe. + +(For example C:\Users\Fincer\Desktop\OpenRA-windows\) + +------------------------------------------------ +10) Run + +patch.exe -d OpenRA-bleed -Np1 -i ..\patches\openra-srcpatch.patch + +where + +OpenRA-bleed = OpenRA-bleed parent folder +..\patches\openra-srcpatch.patch = openra-srcpatch.patch file location + +------------------------------------------------ +11) Once the files have been patched, navigate to OpenRA-bleed folder in Command Prompt + +cd OpenRA-bleed + +------------------------------------------------ +12) In Command Prompt, run + +make.cmd + +------------------------------------------------ +13) Type 'dependencies' at the prompt (without quotations). Select "Run once (R)" + +------------------------------------------------ +14) run make.cmd again. Now, instead of typing 'dependencies', type 'all' (without quotations, once again). + +------------------------------------------------ +15) Once the script has run, there should be many warnings but not a single error message. + +I got 52 errors if I had only .NET Framework 4.5 installed. + +After I installed Microsoft Windows SDK for Windows 7 and .NET Framework 4 (https://www.microsoft.com/en-us/download/details.aspx?id=8279) +I got only 13 warnings. + +However, the number of those warning messages didn't affect my gameplay in any way. +That's why I'm not sure if you need to worry about those messages. +And I can't really recommend to install 1.7GB of unneeded stuff on your PC +without a very good and valid reason. + +If you feel it important or your game crashes etc., please consider installing that SDK stuff and re-building the game. + +------------------------------------------------ +16) OpenRA exe files have been compiled now. You can run the game by double-clicking OpenRA.exe in your Openra-Bleed parent folder. + +------------------------------------------------ +17) To play Red Alert 2, insert theme.mix, language.mix, ra2.mix and multi.mix into \My Documents\OpenRA\Contents\ra2\ folder. + +You can find these mix files inside of a Red Alert 2 original installation media (CD). + +theme.mix, multi.mix = RA2 CD root folder + +ra2.mix, language.mix = RA2 CD Root/INSTALL/Game1.CAB (inside that archive file) \ No newline at end of file