diff --git a/Readme.md b/Readme.md old mode 100644 new mode 100755 index 0b241cd..05ba05b --- a/Readme.md +++ b/Readme.md @@ -6,61 +6,41 @@ This Github repository provides a bunch of scripts for installing TS/RA2 on Open The following operating systems are currently supported: - Windows 7 -- Ubuntu (14.04 LTS, 14.10, 15.04 LTS, 15.10 & 16.04 LTS) +- Ubuntu (16.04 LTS, 15.10, 15.04 LTS, 14.10, 14.04 LTS) - Linux Mint (17.3, 17.2 & 17.1) +- Debian (8.3.0) +- OpenSUSE (Tumbleweed, 42.1, 13.2) +- Fedora (23, 22) - 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. +**NOTE:** As the development of OpenRA & Red Alert 2 continues, this script will likely become unusable some day. + **Installation instructions** -------------- **Windows** 1) Make sure you have .NET Framework 4.5 installed on your computer -( Read *BEFORE-INSTALLATION.txt* for further information) +(Read *WINDOWS-BEFORE-INSTALLATION.txt* for further information) -2) Double click *install.bat* +2) Double click *windows-install.bat* 3) Follow the instructions -**Ubuntu & Ubuntu Variants (Linux Mint, Lubuntu, Xubuntu, Kubuntu etc.)** +**Linux (All distributions)** -1) Double click install.sh and select "Run in terminal". A new terminal window opens. Type +1) Open terminal window. In terminal, run: ``` -bash install.sh +bash linux-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** -------------- @@ -70,14 +50,19 @@ Launch the game and download the required asset files from the web when the game **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): +You must install language.mix, multi.mix, ra2.mix and theme.mix into + +\My Documents\OpenRA\Content\ra2\ (Windows) +.openra/Content/ra2/ (linux) + +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. +It's recommended to build OpenRA using exactly same GIT source files for multiplayer usage to minimize possible version differences/conflicts between players. Please make sure all players have exactly same git versions of their in-game mods (RA, CNC, D2K, TS, RA2). Version numbers are formatted like 'git-e0d7445' etc. and can be found in each mod description in the mod selection menu. **Uninstallation** -------------- @@ -98,11 +83,22 @@ sudo apt-get purge --remove openra-bleed-tibsunra2 in your terminal window. +**OpenSUSE/Fedora** + +Run + +``` +sudo zypper remove openra-bleed-tibsunra2 +``` + +in your terminal window. + **Arch Linux** Run + ``` sudo pacman -Rs openra-bleed-tibsunra2 ``` -in your terminal window. +in your terminal window. \ No newline at end of file diff --git a/WINDOWS-BEFORE-INSTALLATION.txt b/WINDOWS-BEFORE-INSTALLATION.txt new file mode 100755 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/data/linux/arch_linux/PKGBUILD b/data/linux/arch_linux/PKGBUILD new file mode 100755 index 0000000..deb419a --- /dev/null +++ b/data/linux/arch_linux/PKGBUILD @@ -0,0 +1,61 @@ +# Maintainer: Fincer + +pkgname=openra-bleed-tibsunra2 +pkgver=r20041.e0d7445 +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 +openra-solution.patch +tibsun_ra2.patch) +sha1sums=('SKIP' + 'SKIP' + '70a45c14874e4454bacb45b5d0c917d452cf4e84' + 'c1d7581ce21851648489adf9ba28aa46ef9615d0' + 'd0d8f602851a5712dec0fb8c489990f4c54b1782') + +pkgver() { + cd "$srcdir/$pkgname-src" + printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" +} + +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/ra2-csproj.patch" + patch -Np1 --binary -i "$srcdir/openra-solution.patch" + patch -Np1 -i "$srcdir/tibsun_ra2.patch" + + mkdir $srcdir/$pkgname-src/mods/ra2/bits/{vehicles,themes} + +# Get Red Alert 2 GIT version number + ra2_version=git-$(git ls-remote https://github.com/OpenRA/ra2.git | head -1 | sed "s/HEAD//" | sed 's/^\(.\{7\}\).*/\1/') + sed -i "s/Version: {DEV_VERSION}/Version: $ra2_version/g" $srcdir/$pkgname-src/mods/ra2/mod.yaml + + 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 +} diff --git a/data/linux/arch_linux/openra-bleed-tibsunra2.install b/data/linux/arch_linux/openra-bleed-tibsunra2.install new file mode 100755 index 0000000..c079723 --- /dev/null +++ b/data/linux/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/data/linux/fedora/nuget-2.8.7-0.fc22.i686.rpm b/data/linux/fedora/nuget-2.8.7-0.fc22.i686.rpm new file mode 100644 index 0000000..c073f16 Binary files /dev/null and b/data/linux/fedora/nuget-2.8.7-0.fc22.i686.rpm differ diff --git a/data/linux/fedora/nuget-2.8.7-0.fc22.x86_64.rpm b/data/linux/fedora/nuget-2.8.7-0.fc22.x86_64.rpm new file mode 100644 index 0000000..2d82609 Binary files /dev/null and b/data/linux/fedora/nuget-2.8.7-0.fc22.x86_64.rpm differ diff --git a/data/linux/openra-installscript.sh b/data/linux/openra-installscript.sh new file mode 100755 index 0000000..0dbabe4 --- /dev/null +++ b/data/linux/openra-installscript.sh @@ -0,0 +1,452 @@ +#!/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 + +# Get our Linux distribution +DISTRO=$(cat /etc/os-release | sed -n '/PRETTY_NAME/p' | grep -o '".*"' | sed -e 's/"//g' -e s/'([^)]*)'/''/g -e 's/ .*//' -e 's/[ \t]*$//') + +UBUNTU="Ubuntu" +DEBIAN="Debian" +OPENSUSE="openSUSE" +FEDORA="Fedora" + +# Get the current directory +WORKING_DIR=$(pwd) + +if [[ $DISTRO =~ $UBUNTU ]] || [[ $DISTRO =~ $DEBIAN ]]; then +# 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") + +elif [[ $DISTRO =~ $OPENSUSE ]]; then + +# Find out used OpenSUSE version + RELEASE=$(cat /etc/os-release | sed -n 4p | grep -o '".*"' | sed -e 's/"//g' -e s/'([^)]*)'/''/g -e 's/[ \t]*$//') + +# Do we have any OpenRA packages on the system? + PKG1_CHECK=$(rpm -qa openra | wc -l) + PKG2_CHECK=$(rpm -qa openra-playtest | wc -l) + PKG3_CHECK=$(rpm -qa openra-bleed | wc -l) + +elif [[ $DISTRO =~ $FEDORA ]]; then + +# Find out used Fedora version + RELEASE=$(cat /etc/os-release | sed -n '/PRETTY_NAME/p' | grep -o '".*"' | sed -e 's/"//g' -e s/'([^)]*)'/''/g -e 's/[ \t]*$//') + +# Do we have any OpenRA packages on the system? + PKG1_CHECK=$(rpm -qa openra | wc -l) + PKG2_CHECK=$(rpm -qa openra-playtest | wc -l) + PKG3_CHECK=$(rpm -qa openra-bleed | wc -l) +fi + +# 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 " +Please run this script using bash (/usr/bin/bash). + " + 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 [[ $DISTRO =~ $UBUNTU ]] || [[ $DISTRO =~ $DEBIAN ]]; then +#If deb package exists already, delete it. + + if [ -f $HOME/$PACKAGE_NAME*.deb ]; then + rm -f $HOME/$PACKAGE_NAME*.deb + fi +elif [[ $DISTRO =~ $OPENSUSE ]] || [[ $DISTRO =~ $FEDORA ]]; then + if [ -f $HOME/$PACKAGE_NAME*.rpm ]; then + rm -f $HOME/$PACKAGE_NAME*.rpm + fi +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 the developers of OpenRA and may contain bugs. +- The script creates an 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." + +if [[ $DISTRO =~ $UBUNTU ]]; then + 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" +elif [[ $DISTRO =~ $DEBIAN ]]; then + echo -e "$line_in\nThe script has been tested on:\n\nDistribution\t\tStatus$out\nDebian 8.3 $green_in\t\tOK$out\n" +elif [[ $DISTRO =~ $OPENSUSE ]]; then + echo -e "$line_in\nThe script has been tested on:\n\nDistribution\t\tStatus$out\nOpenSUSE Tumbleweed $green_in\tOK$out\nOpenSUSE Leap 42.1 $green_in\tOK$out\nOpenSUSE 13.2 $green_in\t\tOK$out\nOpenSUSE 13.1 $red_in\t\tFailure$out$dim_in (can't find required packages)$out\n" +elif [[ $DISTRO =~ $FEDORA ]]; then + echo -e "$line_in\nThe script has been tested on:\n\nDistribution\t\tStatus$out\nFedora 23 $green_in\t\tOK$out\nFedora 22 $green_in\t\tOK$out\nOpenSUSE 13.1 $red_in\t\tFailure$out$dim_in (can't find required packages)$out\n" +fi + +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 + + if [[ $DISTRO =~ $UBUNTU ]] || [[ $DISTRO =~ $DEBIAN ]]; then + 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 and manually install OpenRA after compilation? $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 and automatically install OpenRA after compilation? $dim_in(apt-get with -y option + automatic .deb packages installation)$out\n" + elif [[ $DISTRO =~ $OPENSUSE ]] || [[ $DISTRO =~ $FEDORA ]]; then + 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 and manually install OpenRA after compilation? $dim_in(manual rpm packages installation)$bold_in\n2.$out automatically accept the installation of the OpenRA build dependencies during the script execution and automatically install OpenRA after compilation? $dim_in(automatic installation of rpm packages)$out\n" + fi + read -r -p "Please type 1 or 2 (Default: 2): " number + sleep 1 + if [[ $number -eq 1 ]]; then + METHOD='' + echo -e "\nSelected installation method:$bold_in Manual$out" + else + if [[ $DISTRO =~ $UBUNTU ]] || [[ $DISTRO =~ $DEBIAN ]] || [[ $DISTRO =~ $FEDORA ]]; then + METHOD=-y + echo -e "\nSelected installation method:$bold_in Automatic$out" + elif [[ $DISTRO =~ $OPENSUSE ]]; then + METHOD='--non-interactive --no-gpg-checks' + echo -e "\nSelected installation method:$bold_in Automatic$out" + fi + 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 [[ $DISTRO =~ $UBUNTU ]]; then + 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 ./data/linux/ubuntu/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 ./data/linux/ubuntu/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 ./data/linux/ubuntu/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 ./data/linux/ubuntu/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 + fi + sleep 2 +#----------------------------------------------------------------------------------------------------------------------------------------------------------- + + echo -e "$bold_in\n1/7 ***OpenRA build dependencies***\n$out" + sleep 2 + if [[ $DISTRO =~ $UBUNTU ]] || [[ $DISTRO =~ $DEBIAN ]]; then + echo -e "Updating package lists with APT.\n" + sleep 2 + sudo apt-get update + fi + echo -e "Installing required OpenRA build dependencies.\n" + sleep 4 + if [[ $DISTRO =~ $UBUNTU ]] || [[ $DISTRO =~ $DEBIAN ]]; then + sudo apt-get $METHOD install git dpkg-dev dh-make 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 + elif [[ $DISTRO =~ $OPENSUSE ]]; then + if [[ ! $RELEASE = "openSUSE Leap 42.1" ]] || [[ ! $RELEASE = "openSUSE Tumbleweed" ]]; then + sudo zypper $METHOD install rpm-build git mono-devel libfreetype6 libopenal1 libSDL2-2_0-0 curl lua51 liblua5_1 zenity xdg-utils gcc make + sudo zypper $METHOD install ./data/linux/opensuse/mono-nuget-2.8.5-4.2.noarch.rpm + else + sudo zypper $METHOD install rpm-build git mono-devel libfreetype6 libopenal1 libSDL2-2_0-0 mono-nuget curl lua51 liblua5_1 zenity xdg-utils gcc make + fi + mozroots --import --sync + elif [[ $DISTRO =~ $FEDORA ]]; then + sudo dnf $METHOD install rpm-build git mono-devel freetype-devel openal-soft SDL2 libgdiplus-devel libcurl compat-lua zenity xdg-utils gcc make + cd /etc/yum.repos.d/ + if [[ $RELEASE = "Fedora 23" ]]; then + sudo wget http://download.opensuse.org/repositories/games:openra/Fedora_23/games:openra.repo + sudo dnf $METHOD --best --allowerasing install mono-core nuget + elif [[ $RELEASE = "Fedora 22" ]]; then + sudo wget http://download.opensuse.org/repositories/games:openra/Fedora_22/games:openra.repo + sudo dnf $METHOD --best --allowerasing install mono-core + if [[ $(uname -m) = "i686" ]];then + sudo dnf $METHOD install $WORKING_DIR/data/linux/fedora/nuget-2.8.7-0.fc22.i686.rpm + elif [[ $(uname -m) = "x86_64" ]];then + sudo dnf $METHOD install $WORKING_DIR/data/linux/fedora/nuget-2.8.7-0.fc22.x86_64.rpm + fi + fi + cd $WORKING_DIR + mozroots --import --sync + fi + +#********************************************************************************************************* +## 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 ./data/patches/*.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 + for i in $HOME/openra-master/*.patch; do patch -d $HOME/openra-master/$PACKAGE -Np1 --binary < $i; done + +# Get version number for Red Alert 2 mod (Github) +RA2_VERSION=git-$(git ls-remote https://github.com/OpenRA/ra2.git | head -1 | sed "s/HEAD//" | sed 's/^\(.\{7\}\).*/\1/') + + sed -i "s/Version: {DEV_VERSION}/Version: $RA2_VERSION/g" $HOME/openra-master/$PACKAGE/mods/ra2/mod.yaml + +#********************************************************************************************************* +## PART 4/7 +# +## Compile the game + + echo -e "$bold_in\n4/7 ***Starting OpenRA compilation with Tiberian Sun & Red Alert 2***$out" + sleep 2 + if [[ $DISTRO =~ $UBUNTU ]] || [[ $DISTRO =~ $DEBIAN ]]; then + 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 + elif [[ $DISTRO =~ $OPENSUSE ]] || [[ $DISTRO =~ $FEDORA ]]; then + echo -e "$bold_in\n5/7 ***Compiling OpenRA rpm package.***\n$out" + mkdir -p $HOME/openra-master/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} + cp ./data/linux/opensuse/openra.spec $HOME/openra-master/rpmbuild/SPECS/ + cp ./data/linux/opensuse/{GeoLite2-Country.mmdb.gz,thirdparty.tar.gz} $HOME/openra-master/rpmbuild/SOURCES/ + cd $HOME/openra-master + tar -czf $HOME/openra-master/rpmbuild/SOURCES/$PACKAGE.tar.gz ./$PACKAGE + cd $WORKING_DIR + + rpmbuild --define "_topdir $HOME/openra-master/rpmbuild" -bb --clean $HOME/openra-master/rpmbuild/SPECS/openra.spec + + echo -e "$bold_in\n6/7 ***Compilation process completed. Moving compiled rpm package into '$HOME'***\n$out" + sleep 2 + mv $HOME/openra-master/rpmbuild/RPMS/noarch/$PACKAGE_NAME*.rpm $HOME + fi + 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 [[ $DISTRO =~ $UBUNTU ]] || [[ $DISTRO =~ $DEBIAN ]]; then + 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 -eq 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 in '$HOME'." + sleep 2 + fi + else + sudo dpkg -i $HOME/$PACKAGE_NAME*.deb + fi + fi + elif [[ $DISTRO =~ $OPENSUSE ]] || [[ $DISTRO =~ $FEDORA ]]; then + if [ $PKG1_CHECK -eq 1 ] || [ $PKG2_CHECK -eq 1 ] || [ $PKG3_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 rpm package can be found in '$HOME'.\n" + else + if [[ $number -eq 1 ]]; then + read -r -p "Install '$PACKAGE_NAME' now? [y/N] " response4 + if [[ $response4 =~ ^([yY][eE][sS]|[yY])$ ]]; then + if [[ $DISTRO =~ $FEDORA ]]; then + sudo dnf $METHOD --best --allowerasing install $HOME/$PACKAGE_NAME*.rpm + elif [[ $DISTRO =~ $OPENSUSE ]]; then + sudo zypper $METHOD install $HOME/$PACKAGE_NAME*.rpm + fi + else + echo -e "\nPlease install '$PACKAGE_NAME' manually. You find the compiled package in '$HOME'." + sleep 2 + fi + else + if [[ $DISTRO =~ $FEDORA ]]; then + sudo dnf $METHOD --best --allowerasing install $HOME/$PACKAGE_NAME*.rpm + elif [[ $DISTRO =~ $OPENSUSE ]]; then + sudo zypper $METHOD install $HOME/$PACKAGE_NAME*.rpm + fi + fi + fi + fi + +#********************************************************************************************************* + +else + echo -e "\nAborted.\n" +fi diff --git a/data/linux/opensuse/GeoLite2-Country.mmdb.gz b/data/linux/opensuse/GeoLite2-Country.mmdb.gz new file mode 100755 index 0000000..ac088a4 Binary files /dev/null and b/data/linux/opensuse/GeoLite2-Country.mmdb.gz differ diff --git a/data/linux/opensuse/mono-nuget-2.8.5-4.2.noarch.rpm b/data/linux/opensuse/mono-nuget-2.8.5-4.2.noarch.rpm new file mode 100644 index 0000000..4a359a8 Binary files /dev/null and b/data/linux/opensuse/mono-nuget-2.8.5-4.2.noarch.rpm differ diff --git a/data/linux/opensuse/openra.spec b/data/linux/opensuse/openra.spec new file mode 100755 index 0000000..6ba60c6 --- /dev/null +++ b/data/linux/opensuse/openra.spec @@ -0,0 +1,123 @@ +# +# spec file for package openra +# +# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany. +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# + +Name: openra-bleed-tibsunra2 +Version: 1 +Release: 1 +Url: http://www.openra.net +Summary: Recreation of the early Command & Conquer games +License: GPL-3.0 +Group: Amusements/Games/Strategy/Real Time +Source: %{name}-%{version}.tar.gz +Source2: thirdparty.tar.gz +Source3: http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-build +BuildArch: noarch +BuildRequires: desktop-file-utils +BuildRequires: git +BuildRequires: hicolor-icon-theme +BuildRequires: shared-mime-info +BuildRequires: pkgconfig(mono) +Requires: SDL2 +%if 0%{?suse_version} +BuildRequires: fdupes +BuildRequires: lua51 +Requires: lua51 +Requires: freetype2 +%endif +%if 0%{?fedora_version} +BuildRequires: lua = 5.1 +Requires: lua = 5.1 +Requires: freetype +%endif +Requires: mono-core +# workaround System.DllNotFoundException: libgdiplus.so - https://bugzilla.xamarin.com/show_bug.cgi?id=34314 +Requires: libgdiplus-devel +Requires: openal-soft +Requires: xdg-utils +Requires: zenity + +# don't provide the bundled dependencies to other packages +AutoReqProv: off + +%description +OpenRA is an Open Source, Real Time Strategy game engine. +Its primary focus is on creating an extendable platform +to recreate games in the style of the early Westwood games. +It ships mods that reimagine Command & Conquer: Tiberian Dawn, +Red Alert as well as Dune 2000 if the original game files are +provided. + +%prep +%setup -q -n %{name}-%{version} -a2 +make version + +%build +mkdir -p ./thirdparty/download + +cp %{SOURCE3} ./thirdparty/download + +make dependencies +make core +make tools +make docs + +%install +make DESTDIR="%{buildroot}" prefix=%{_prefix} install-all +make DESTDIR="%{buildroot}" prefix=%{_prefix} install-linux-shortcuts +make DESTDIR="%{buildroot}" prefix=%{_prefix} install-linux-mime +make DESTDIR="%{buildroot}" prefix=%{_prefix} install-linux-appdata +make DESTDIR="%{buildroot}" prefix=%{_prefix} install-man-page + +%if 0%{?suse_version} +%fdupes %{buildroot}%{_prefix}/lib +%endif + +%clean +make DESTDIR="%{buildroot}" prefix=%{_prefix} uninstall + +%post +%desktop_database_post +%icon_theme_cache_post +%mime_database_post + +%postun +%desktop_database_postun +%icon_theme_cache_postun +%mime_database_postun + +%files +%defattr(-,root,root) +%doc DOCUMENTATION.md Lua-API.md README.md +%{_bindir}/openra +%{_prefix}/lib/openra/ +%{_datadir}/applications/*.desktop +%{_datadir}/icons/hicolor/*/apps/* +%{_datadir}/mime/packages/openra.xml +%dir %{_datadir}/appdata/ +%{_datadir}/appdata/openra.appdata.xml +%{_mandir}/man6/openra.* + +%changelog +* Fri Jan 8 2016 mailaender@opensuse.org +- fix openal depdendency (package was renamed to openal-soft) +* Fri Dec 25 2015 mailaender@opensuse.org +- bundled all binaries again for Fedora 23 and openSUSE 42.1 +* Thu Dec 24 2015 mailaender@opensuse.org +- release 20151224 +* Sat Sep 19 2015 mailaender@opensuse.org +- release 20150919 diff --git a/data/linux/opensuse/thirdparty.tar.gz b/data/linux/opensuse/thirdparty.tar.gz new file mode 100755 index 0000000..b61c2f7 Binary files /dev/null and b/data/linux/opensuse/thirdparty.tar.gz differ diff --git a/data/linux/ubuntu/libnuget-core-cil_2.8.5+md59+dhx1-1~getdeb1_all.deb b/data/linux/ubuntu/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/data/linux/ubuntu/libnuget-core-cil_2.8.5+md59+dhx1-1~getdeb1_all.deb differ diff --git a/data/linux/ubuntu/nuget_2.8.5+md59+dhx1-1~getdeb1_all.deb b/data/linux/ubuntu/nuget_2.8.5+md59+dhx1-1~getdeb1_all.deb new file mode 100755 index 0000000..a5b1efe Binary files /dev/null and b/data/linux/ubuntu/nuget_2.8.5+md59+dhx1-1~getdeb1_all.deb differ diff --git a/data/patches/openra-solution.patch b/data/patches/openra-solution.patch new file mode 100755 index 0000000..7f65b78 --- /dev/null +++ b/data/patches/openra-solution.patch @@ -0,0 +1,22 @@ +--- 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 diff --git a/data/patches/ra2-csproj.patch b/data/patches/ra2-csproj.patch new file mode 100755 index 0000000..5fa6a98 --- /dev/null +++ b/data/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/data/patches/tibsun_ra2.patch b/data/patches/tibsun_ra2.patch new file mode 100755 index 0000000..1bbf78a --- /dev/null +++ b/data/patches/tibsun_ra2.patch @@ -0,0 +1,122 @@ +--- 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 +@@ -256,6 +268,9 @@ + @mono --debug OpenRA.Utility.exe ts --check-yaml + @mono --debug OpenRA.Utility.exe ts --check-sequence-sprites + @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 + @mono --debug OpenRA.Utility.exe d2k --check-sequence-sprites +@@ -324,7 +339,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 + +@@ -393,6 +408,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 @@ + ./mods/d2k/OpenRA.Mods.D2k.dll + ./mods/cnc/OpenRA.Mods.Cnc.dll + ./mods/ts/OpenRA.Mods.TS.dll ++ ./mods/ra2/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} ++ + + Packages: + ~^Content/ra2 +@@ -172,7 +172,7 @@ + ra2:languages/english.yaml + + LoadScreen: LogoStripeLoadScreen +- Image: ra2:uibits/loadscreen.png ++ Image: ./mods/ra2/uibits/loadscreen.png + Text: Carving wooden nickels..., Preparing paratroopers..., Welcoming you to Texas..., Optimizing helium mix..., Receiving thoughts..., Igniting boosters... + + ContentInstaller: + +--- 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/data/windows/install.ps1 b/data/windows/install.ps1 new file mode 100755 index 0000000..26218e1 --- /dev/null +++ b/data/windows/install.ps1 @@ -0,0 +1,220 @@ +#------------------------------------------------------ +## 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\windows\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\windows\OpenRA-bleed -Force -Recurse -ErrorAction SilentlyContinue + Remove-Item .\data\windows\ra2-master -Force -Recurse -ErrorAction SilentlyContinue + + Remove-Item .\data\windows\OpenRA-bleed.zip -Force -ErrorAction SilentlyContinue + Remove-Item .\data\windows\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\windows\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\windows\ra2-master.zip") + +#------------------------------------------------------ +## Unzip OpenRA-bleed source files + + "`nUnzipping OpenRA source files into \data\windows folder." + $shell_app=new-object -com shell.application + $filename = "OpenRA-bleed.zip" + $zip_file = $shell_app.namespace((Get-Location).Path + "\data\windows" + "\$filename") + $destination = $shell_app.namespace((Get-Location).Path + "\data\windows") + $destination.Copyhere($zip_file.items()) + +#------------------------------------------------------ +## Unzip Red Alert 2 mod files + + "`nUnzipping Red Alert 2 mod files into \data\windows folder." + $shell_app=new-object -com shell.application + $filename2 = "ra2-master.zip" + $zip_file2 = $shell_app.namespace((Get-Location).Path + "\data\windows" + "\$filename2") + $destination = $shell_app.namespace((Get-Location).Path + "\data\windows") + $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\windows\ra2-master\OpenRA.Mods.RA2" ".\data\windows\OpenRA-bleed\OpenRA.Mods.RA2" + move-item ".\data\windows\ra2-master" ".\data\windows\OpenRA-bleed\mods\ra2" + +#------------------------------------------------------ +## Get OpenRA Git version number + + "`nRetrieving OpenRA & Red Alert 2 Git version numbers." + + $web = New-Object System.Net.WebClient + $web.DownloadFile("https://github.com/OpenRA/OpenRA",".\data\windows\openra-github.html") + + $flag=0 + Get-Content .\data\windows\openra-github.html | + foreach { + Switch -Wildcard ($_){ + "*Latest commit*" {$flag=1} + "*time datetime*" {$flag=0} + } + if ($flag -eq 1){ + Out-File .\data\windows\openra-html-stripped.txt -InputObject $_ -Append + } + } + + (Get-Content .\data\windows\openra-html-stripped.txt)[2] -replace '\s','' | Foreach-Object{ 'git-' + $_ } > .\data\windows\openra-latestcommit.txt + + $openra_gitversion = [IO.File]::ReadAllText(".\data\windows\openra-latestcommit.txt").trim("`r`n") + Write-Output "`nOpenRA version: $openra_gitversion" +#------------------------------------------------------ +## Get Red Alert 2 Git version number + + $web = New-Object System.Net.WebClient + $web.DownloadFile("https://github.com/OpenRA/ra2",".\data\windows\ra2-github.html") + + $flag=0 + Get-Content .\data\windows\ra2-github.html | + foreach { + Switch -Wildcard ($_){ + "*Latest commit*" {$flag=1} + "*time datetime*" {$flag=0} + } + if ($flag -eq 1){ + Out-File .\data\windows\ra2-html-stripped.txt -InputObject $_ -Append + } + } + + (Get-Content .\data\windows\ra2-html-stripped.txt)[2] -replace '\s','' | Foreach-Object{ 'git-' + $_ } > .\data\windows\ra2-latestcommit.txt + + $ra2_gitversion = [IO.File]::ReadAllText(".\data\windows\ra2-latestcommit.txt").trim("`r`n") + Write-Output "RA2 version: $ra2_gitversion" +#------------------------------------------------------ +## Prepare OpenRA source code for Tiberian Sun & Red Alert 2 + + Copy-Item ".\data\patches\*.patch" ".\data\windows" + + Start-Sleep -s 3 + "`nPatching OpenRA source code for Tiberian Sun & Red Alert 2." + + cd .\data\windows + + "`nFor each time a patch is being applied, UAC may ask permission for patch.exe." + + $patchcount = (Get-Childitem .\ | where {$_.extension -eq ".patch"} | Measure-Object ).Count; + + Write-Output "`nExecuting patch.exe $patchcount times now." + + Get-ChildItem .\ -include *.patch -recurse | Foreach ($_) {.\patch.exe -d OpenRA-bleed -Np1 --binary -i $_.fullname } + + cd .. + cd .. + +#------------------------------------------------------ +## Push version numbers to mod files + +# Red Alert + (Get-Content .\data\windows\Openra-bleed\mods\ra\mod.yaml) -replace '{DEV_VERSION}',$openra_gitversion | Set-Content .\data\windows\Openra-bleed\mods\ra\mod.yaml + +# Tiberian Dawn + (Get-Content .\data\windows\Openra-bleed\mods\cnc\mod.yaml) -replace '{DEV_VERSION}',$openra_gitversion | Set-Content .\data\windows\Openra-bleed\mods\cnc\mod.yaml + +# Dune 2K + (Get-Content .\data\windows\Openra-bleed\mods\d2k\mod.yaml) -replace '{DEV_VERSION}',$openra_gitversion | Set-Content .\data\windows\Openra-bleed\mods\d2k\mod.yaml + +# Tiberian Sun + (Get-Content .\data\windows\Openra-bleed\mods\ts\mod.yaml) -replace '{DEV_VERSION}',$openra_gitversion | Set-Content .\data\windows\Openra-bleed\mods\ts\mod.yaml + +# Red Alert 2 + (Get-Content .\data\windows\Openra-bleed\mods\ra2\mod.yaml) -replace '{DEV_VERSION}',$ra2_gitversion | Set-Content .\data\windows\Openra-bleed\mods\ra2\mod.yaml + +# Mod Chooser + (Get-Content .\data\windows\Openra-bleed\mods\modchooser\mod.yaml) -replace '{DEV_VERSION}',$openra_gitversion | Set-Content .\data\windows\Openra-bleed\mods\modchooser\mod.yaml + +# All + (Get-Content .\data\windows\Openra-bleed\mods\all\mod.yaml) -replace '{DEV_VERSION}',$openra_gitversion | Set-Content .\data\windows\Openra-bleed\mods\all\mod.yaml + +#------------------------------------------------------ +## Remove temporary files + + Remove-Item .\data\windows\*.html + Remove-Item .\data\windows\*.txt + Remove-Item .\data\windows\*.zip + Remove-Item .\data\windows\*.patch + +#------------------------------------------------------ +## Compile OpenRA with Tiberian Sun & Red Alert 2 + + "`nCompiling OpenRA with Tiberian Sun & Red Alert 2.`n" + cd .\data\windows\OpenRA-bleed\ + .\make.cmd dependencies + .\make.cmd all + cd .. + cd .. + cd .. + move-item ".\data\windows\OpenRA-bleed\" ".\OpenRA-tibsunra2-Windows" + +#------------------------------------------------------ +## Post-installation messages + + "`nCompilation process completed. You find the game inside 'OpenRA-tibsunra2-Windows' 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 build OpenRA using exactly same GIT source files for multiplayer usage to minimize possible version differences/conflicts between players. Please make sure all players have exactly same git versions of their in-game mods (RA, CNC, D2K, TS, RA2). Version numbers are formatted like 'git-e0d7445' etc. and can be found in each mod description in the mod selection menu." + "`nFor this compilation, the version numbers are as follows:" + Write-Output "OpenRA version: $openra_gitversion" + Write-Output "RA2 version: $ra2_gitversion" + "`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/data/windows/patch.exe b/data/windows/patch.exe new file mode 100755 index 0000000..1b22a07 Binary files /dev/null and b/data/windows/patch.exe differ diff --git a/linux-install.sh b/linux-install.sh new file mode 100755 index 0000000..7705d80 --- /dev/null +++ b/linux-install.sh @@ -0,0 +1,160 @@ +#!/bin/bash + +##------------------------------------------------------------- +# Allow interruption of the script at any time (Ctrl + C) +trap "exit" INT + +##------------------------------------------------------------- +# 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. + +BASH_CHECK=$(ps | grep `echo $$` | awk '{ print $4 }') + +if [ ! $BASH_CHECK = "bash" ]; then + echo " +Please run this script using bash (/usr/bin/bash). + " + 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 + +##------------------------------------------------------------- +# Get our current directory +WORKING_DIR=$(pwd) + +# Get our Linux distribution +DISTRO=$(cat /etc/os-release | sed -n '/PRETTY_NAME/p' | grep -o '".*"' | sed -e 's/"//g' -e s/'([^)]*)'/''/g -e 's/ .*//' -e 's/[ \t]*$//') + +ARCH="Arch" +UBUNTU="Ubuntu" +DEBIAN="Debian" +OPENSUSE="openSUSE" +FEDORA="Fedora" + +##------------------------------------------------------------- +#Post-installation instructions + +bold_in='\e[1m' +out='\e[0m' +PACKAGEMANAGER_INSTALL=1 +PACKAGEMANAGER_REMOVE=1 +PACKAGE_NAME=1 +INSTALL_NAME=1 + +function endtext() { +OPENRA_GITVERSION=git-$(git ls-remote https://github.com/OpenRA/OpenRA.git | head -1 | sed "s/HEAD//" | sed 's/^\(.\{7\}\).*/\1/') +RA2_GITVERSION=git-$(git ls-remote https://github.com/OpenRA/ra2.git | head -1 | sed "s/HEAD//" | sed 's/^\(.\{7\}\).*/\1/') + +echo -e "\n***OpenRA compilation script completed.\nPlease see further instructions below.***" +sleep 2 +echo -e "$bold_in\n***MANUAL INSTALLATION***$out\n\nInstall OpenRA by typing '$PACKAGEMANAGER_INSTALL $HOME/$PACKAGE_NAME' (without quotations) in a terminal window." +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 '$PACKAGEMANAGER_REMOVE $INSTALL_NAME' (without quotations)\n\nYou can find package of $INSTALL_NAME in '$HOME' for further usage.$bold_in\n\n***MULTIPLAYER***$out\n\nIt's recommended to build OpenRA using exactly same GIT source files for multiplayer usage to minimize possible version differences/conflicts between players. Please make sure all players have exactly same git versions of their in-game mods (RA, CNC, D2K, TS, RA2). Version numbers are formatted like 'git-e0d7445' etc. and can be found in each mod description in the mod selection menu.\n\nFor this compilation, the version numbers are as follows:\nOpenRA version: $OPENRA_GITVERSION\nRA2 version: $RA2_GITVERSION\n\nHave fun!\n" +} + +##------------------------------------------------------------- +# If we're running Arch Linux, then execute this +if [[ $DISTRO =~ "$ARCH" ]]; then + + echo -e "\nYou are about to install OpenRA with Tiberian Sun & Red Alert 2.\n" + read -r -p "Do you want to continue? [y/N] " response + if [[ $response =~ ^([yY][eE][sS]|[yY])$ ]]; then + echo -e "\nStarting OpenRA compilation process.\n" + sleep 2 + cp ./data/patches/*.patch ./data/linux/arch_linux/ + cd ./data/linux/arch_linux + updpkgsums + makepkg -c + mv *.tar.xz $HOME + + PACKAGEMANAGER_INSTALL='sudo pacman -U' + PACKAGEMANAGER_REMOVE='sudo pacman -Rs' + INSTALL_NAME=$(sed -n '/pkgname/{p;q;}' ./data/linux/arch_linux/PKGBUILD | sed -n 's/^pkgname=//p') + PACKAGE_NAME=$(find $HOME -maxdepth 1 -type f -iname "$INSTALL_NAME*.tar.xz" | sed -e 's/.*\///') + + rm -r */ + rm ./*.patch + cd $WORKING_DIR + + if [[ $PACKAGE_NAME =~ '^[0-9]+$' ]]; then + exit 1 + else + endtext + exit 1 + fi + + else + echo -e "\nCancelling OpenRA installation.\n" + exit 1 + fi +fi + +##------------------------------------------------------------- +# If we're running Ubuntu or Linux Mint or Debian, then execute this +if [[ $DISTRO =~ "$UBUNTU" ]] || [[ $DISTRO =~ "$DEBIAN" ]]; then + + if [[ $DISTRO =~ "$DEBIAN" ]]; then + if [[ $(dpkg-query -W sudo 2>/dev/null | wc -l) -eq 0 ]]; then + echo -e "\Please install sudo and add your username to sudo group.\nRun the following commands:\nsu root\nadduser sudo\n\nRe-run this script again then.\nExiting now." + exit 1 + fi + fi + + bash ./data/linux/openra-installscript.sh + + PACKAGEMANAGER_INSTALL='sudo dpkg -i' + PACKAGEMANAGER_REMOVE='sudo apt-get purge --remove' + INSTALL_NAME=$(sed -n '/PACKAGE_NAME/{p;q;}' ./data/linux/openra-installscript.sh | sed -n 's/^PACKAGE_NAME=//p') + PACKAGE_NAME=$(find $HOME -maxdepth 1 -type f -iname "$INSTALL_NAME*.deb" | sed -e 's/.*\///') + + if [[ $PACKAGE_NAME =~ '^[0-9]+$' ]]; then + exit 1 + else + endtext + exit 1 + fi + + exit 1 +fi + +##------------------------------------------------------------- +# If we're running OpenSUSE or Fedora, then execute this +if [[ $DISTRO =~ "$FEDORA" ]] || [[ $DISTRO =~ "$OPENSUSE" ]]; then + + bash ./data/linux/openra-installscript.sh + + if [[ $DISTRO =~ "$OPENSUSE" ]]; then + PACKAGEMANAGER_INSTALL='sudo zypper install' + PACKAGEMANAGER_REMOVE='sudo zypper remove' + elif [[ $DISTRO =~ "$FEDORA" ]]; then + PACKAGEMANAGER_INSTALL='sudo dnf install' + PACKAGEMANAGER_REMOVE='sudo dnf remove' + fi + INSTALL_NAME=$(sed -n '/PACKAGE_NAME/{p;q;}' ./data/linux/openra-installscript.sh | sed -n 's/^PACKAGE_NAME=//p') + PACKAGE_NAME=$(find $HOME -maxdepth 1 -type f -iname "$INSTALL_NAME*.rpm" | sed -e 's/.*\///') + + if [[ $PACKAGE_NAME =~ '^[0-9]+$' ]]; then + exit 1 + else + endtext + exit 1 + fi + + exit 1 +fi + +##------------------------------------------------------------- +# If we don't have any of the supported distributions +if [[ ! $DISTRO =~ "$ARCH" ]] || [[ ! $DISTRO =~ "$UBUNTU" ]] || [[ ! $DISTRO =~ "$DEBIAN" ]] || [[ ! $DISTRO =~ "$OPENSUSE" ]] || [[ ! $DISTRO =~ "$FEDORA" ]]; then + echo " +Your Linux Distribution is not supported. Please consider making a new OpenRA installation script for it. +Supported distributions are: Ubuntu, Linux Mint, Debian, OpenSUSE, Fedora and Arch Linux. +" + exit 1 +fi diff --git a/windows-install.bat b/windows-install.bat new file mode 100755 index 0000000..038d392 --- /dev/null +++ b/windows-install.bat @@ -0,0 +1 @@ +start cmd.exe /k @powershell -NoProfile -ExecutionPolicy Unrestricted -File .\windows\install.ps1 %* \ No newline at end of file