1
0
EQ2Emu/linux_compile.sh
Paul Black 730bb7ab0d
Remove YUM detection from the linux compile script.
YUM is no longer used on RHEL-based distributions as of RHEL 8. RHEL 7 was the last version to support YUM and is EOL as of June 30, 2024, probably doesn't make sense to check for YUM, instead I'd just change the DNF detection log messages to say Fedora/RHEL.
2025-04-08 16:04:37 -06:00

100 lines
5.0 KiB
Bash

#!/bin/bash
LOG_FILE="$(pwd)/eq2emu_install.log"
EQ2EMU_HOME_DIR="/home/eq2emu"
PREMAKE5_PKG="https://github.com/premake/premake-core/releases/download/v5.0.0-beta2/premake-5.0.0-beta2-linux.tar.gz"
PREMAKE5_FILE="premake-5.0.0-beta2-linux.tar.gz"
RECAST_GIT="https://github.com/recastnavigation/recastnavigation.git"
FMT_GIT="https://github.com/fmtlib/fmt.git"
EQ2SOURCE_GIT="https://github.com/emagi/eq2emu.git"
EQ2CONTENT_GIT="https://github.com/emagi/eq2emu-content.git"
EQ2MAPS_GIT="https://github.com/emagi/eq2emu-maps.git"
log() {
echo "$(date +"%Y-%m-%d %H:%M:%S") - $1" | tee -a "$LOG_FILE"
}
handle_error() {
log "ERROR: $1"
exit 1
}
install_packages() {
if command -v apt-get >/dev/null; then
log "Detected Debian-based system. Using apt-get to install packages."
sudo apt-get update
sudo apt-get install -y git make mariadb-client automake g++ libsdl2-dev libmariadb-dev libboost-all-dev libreadline-dev cmake liblua5.4-dev lua5.4 libcrypto++-dev wget libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev libglm-dev || handle_error "Failed to install packages using apt-get."
elif command -v dnf >/dev/null; then
log "Detected RHEL/Fedora-based system. Using dnf to install packages."
sudo dnf install -y git make mariadb automake gcc-c++ SDL2-devel mariadb-devel boost-devel readline-devel cmake lua-devel lua crypto++-devel wget glfw-devel mesa-libGL-devel mesa-libGLU-devel glm-devel || handle_error "Failed to install packages using dnf."
elif command -v zypper >/dev/null; then
log "Detected SUSE-based system. Using zypper to install packages."
sudo zypper install -y git make mariadb automake gcc-c++ libSDL2-devel libmariadb-devel boost-devel readline-devel cmake liblua5_4-devel lua5_4 libcrypto++-devel wget libglfw3-devel Mesa-libGL-devel Mesa-libGLU-devel glm-devel || handle_error "Failed to install packages using zypper."
else
handle_error "Unsupported Linux distribution."
fi
}
log "Starting EQ2EMU installation..."
# Install necessary packages
install_packages
# Create the home directory
log "Creating home directory..."
mkdir -p "${EQ2EMU_HOME_DIR}" || handle_error "Failed to create home directory."
cd "${EQ2EMU_HOME_DIR}" || handle_error "Failed to navigate to home directory."
# Download and install premake5
log "Downloading premake5..."
wget ${PREMAKE5_PKG} || handle_error "Failed to download premake5."
log "Extracting premake5..."
tar -xzvf ${PREMAKE5_FILE} || handle_error "Failed to extract premake5."
# Clone Recast repository
log "Cloning Recast repository..."
git clone ${RECAST_GIT} || handle_error "Failed to clone Recast repository."
cp premake5 recastnavigation/RecastDemo || handle_error "Failed to copy premake5 to RecastDemo."
# Compile Recast
log "Compiling Recast..."
cd recastnavigation/RecastDemo || handle_error "Failed to navigate to RecastDemo."
./premake5 gmake2 || handle_error "Failed to generate makefiles with premake5."
cd Build/gmake2 || handle_error "Failed to navigate to Build/gmake2."
make || handle_error "Failed to compile Recast."
# Clone and compile EQ2EMU source
log "Cloning and compiling EQ2EMU source..."
cd ${EQ2EMU_HOME_DIR} || handle_error "Failed to navigate to home directory."
git clone ${FMT_GIT} || handle_error "Failed to clone fmt repository."
git clone ${EQ2SOURCE_GIT} || handle_error "Failed to clone EQ2 source repository."
cd ${EQ2EMU_HOME_DIR}/eq2emu/source/LoginServer || handle_error "Failed to navigate to LoginServer directory."
git pull || handle_error "Failed to pull latest changes for LoginServer."
make clean || handle_error "Failed to clean LoginServer build."
make -j$(nproc) || handle_error "Failed to compile LoginServer."
cp login ${EQ2EMU_HOME_DIR}/eq2emu/server/ || handle_error "Failed to copy LoginServer executable."
cd ${EQ2EMU_HOME_DIR}/eq2emu/source/WorldServer || handle_error "Failed to navigate to WorldServer directory."
git pull || handle_error "Failed to pull latest changes for WorldServer."
make clean || handle_error "Failed to clean WorldServer build."
make -j$(nproc) || handle_error "Failed to compile WorldServer."
cp eq2world ${EQ2EMU_HOME_DIR}/eq2emu/server/ || handle_error "Failed to copy WorldServer executable."
# Clone EQ2 content and maps
log "Cloning EQ2 content and maps..."
cd ${EQ2EMU_HOME_DIR} || handle_error "Failed to navigate to home directory."
git clone ${EQ2CONTENT_GIT} || handle_error "Failed to clone EQ2 content repository."
git clone ${EQ2MAPS_GIT} || handle_error "Failed to clone EQ2 maps repository."
# Copy content and maps to server
log "Copying content and maps to server..."
cd ${EQ2EMU_HOME_DIR}/eq2emu-content || handle_error "Failed to navigate to eq2emu-content directory."
cp -r ItemScripts Quests RegionScripts SpawnScripts Spells ZoneScripts ${EQ2EMU_HOME_DIR}/eq2emu/server/ || handle_error "Failed to copy content scripts."
cd ${EQ2EMU_HOME_DIR}/eq2emu-maps || handle_error "Failed to navigate to eq2emu-maps directory."
cp -r Maps Regions ${EQ2EMU_HOME_DIR}/eq2emu/server/ || handle_error "Failed to copy maps."
log "EQ2EMU installation completed successfully."