Open Kukers86PL opened 2 years ago
Enemy Territory can be downloaded from https://www.etlegacy.com/download. They say that ET:Legacy is bundled with Omni-Bot. You can also compile it from the source code: https://techyian.github.io/2018-10-14-install-enemy-territory-on-raspberry-pi/
Pretty sure only x86 and x86_64 are including OB.
Guess that tutorial for rpi says it can work.
I'm trying to creat ET server with bots on RHEL 9.1 running on ARM. Compiling of ET was OK. I got it already running. But with omni-bot compilation I'm missing DebugDraw.h . Do you got any idea where to get it?
gcc.compile.c++ build/Common/gcc-11/debug/architecture-arm/link-static/RecastInterfaces.o
g++: warning: switch ‘-ffriend-injection’ is no longer supported
In file included from Common/RecastInterfaces.cpp:1:
Common/RecastInterfaces.h:12:10: fatal error: DebugDraw.h: No such file or directory
12 | #include "DebugDraw.h"
| ^~~~~~~~~~~~~
compilation terminated.
"g++" -O0 -fno-inline -Wall -g -DPHYSFS_NO_CDROM_SUPPORT -DPHYSFS_SUPPORTS_7Z=1 -DPHYSFS_SUPPORTS_ZIP=1 -ffriend-injection -fno-strict-aliasing -pthread -w -D_DEBUG -D__linux__ -I"/home/et/git/boost_1_81_0" -I"Common" -I"dependencies/Recast/DebugUtils/Include" -I"dependencies/Recast/Detour/Include" -I"dependencies/Recast/Recast/Include" -I"dependencies/gmsrc_ex/src/3rdParty/gmbinder2" -I"dependencies/gmsrc_ex/src/3rdParty/mathlib" -I"dependencies/gmsrc_ex/src/binds" -I"dependencies/gmsrc_ex/src/gm" -I"dependencies/iprof" -I"dependencies/physfs" -I"dependencies/physfs/lzma/C" -I"dependencies/physfs/lzma/C/Archive/7z" -I"dependencies/physfs/lzma/C/Compress/Branch" -I"dependencies/physfs/lzma/C/Compress/Lzma" -I"dependencies/physfs/zlib123" -I"dependencies/wildmagic" -c -o "build/Common/gcc-11/debug/architecture-arm/link-static/RecastInterfaces.o" "Common/RecastInterfaces.cpp"
...failed gcc.compile.c++ build/Common/gcc-11/debug/architecture-arm/link-static/RecastInterfaces.o...
...skipped <pbuild/Common/gcc-11/debug/architecture-arm/link-static>libCommon.a for lack of <pbuild/Common/gcc-11/debug/architecture-arm/link-static>RecastInterfaces.o...
...failed updating 1 target...
...skipped 1 target...
...updated 51 targets...
Thank you for your help
The master branch is broken. You have to get the source code from the stable branch.
thx a lot for a quick response, I've realized that a few moments before your answer. Stable looks far more better and there was as well a 'trick' - use the exact commit of gmscriptex that is listed in stable branch :)
och and the same thing will be with boost - I should use boost_1_44_0 and not boost_1_81_0 right?
You can use any version of boost. You have to change variables BOOST, BOOST_BUILD_PATH and BOOST_LIB in file Omnibot/linux/buildbot.sh. Variable BOOST_SUFFIX should be empty for recent boost versions.
Thank you @plastovicka for your help and support. OK I think I've reached my dead end.
Build of boost_1_81_0 when fine - no issues, no errors and no warnings.
# as normal user !!!!!!!!!
cd /home/et/git/boost_1_81_0
./bootstrap.sh --with-libraries=date_time,filesystem,regex,system,thread
# as root !!!!!!!!!
cd /home/et/git/boost_1_81_0
./b2 -a address-model=64 architecture=arm cflags=-fPIC link=static install
ls -l /usr/local/lib
drwxr-xr-x. 10 root root 4096 Mar 3 14:56 cmake
-rw-r--r--. 1 root root 9984 Mar 3 14:57 libboost_atomic.a
-rw-r--r--. 1 root root 1522 Mar 3 14:57 libboost_date_time.a
-rw-r--r--. 1 root root 408978 Mar 3 14:57 libboost_filesystem.a
-rw-r--r--. 1 root root 699654 Mar 3 14:57 libboost_regex.a
-rw-r--r--. 1 root root 1500 Mar 3 14:56 libboost_system.a
-rw-r--r--. 1 root root 309936 Mar 3 14:56 libboost_thread.a
But I'm still fighting with Omnibot build
Honestly I'm not sure if BOOST_BUILD_PATH=$BOOST/tools/build is correct. In this path I have:
ls -l $BOOST_BUILD_PATH
total 84
-rw-r--r--. 1 et et 25398 Dec 8 01:02 azure-pipelines.yml
-rw-r--r--. 1 et et 690 Dec 8 01:02 bootstrap.bat
-rwxr-xr-x. 1 et et 622 Dec 8 01:02 bootstrap.sh
-rw-r--r--. 1 et et 1111 Dec 8 01:02 bootstrap_vms.com
-rw-r--r--. 1 et et 5369 Dec 8 01:02 CONTRIBUTING.adoc
drwxr-xr-x. 4 et et 48 Dec 8 01:11 doc
drwxr-xr-x. 23 et et 4096 Dec 8 01:02 example
-rw-r--r--. 1 et et 358 Dec 8 01:11 index.html
-rw-r--r--. 1 et et 6234 Dec 8 01:02 Jamroot.jam
-rw-r--r--. 1 et et 1338 Dec 8 01:02 LICENSE.txt
drwxr-xr-x. 2 et et 133 Dec 8 01:02 notes
-rw-r--r--. 1 et et 1875 Dec 8 01:02 README.adoc
drwxr-xr-x. 9 et et 147 Dec 8 01:02 src
drwxr-xr-x. 12 et et 8192 Dec 8 01:02 test
# as normal user !!!!!!!!!
cd /home/et/git/omni-bot/0.83/Omnibot
export BOOST=/home/et/git/boost_1_81_0
export BOOST_BUILD_PATH=$BOOST/tools/build
export BOOST_LIB=/usr/local/lib
export BOOST_SUFFIX=
cd /home/et/git/omni-bot/0.83/Omnibot
$BOOST/b2 -a address-model=64 architecture=arm release
Log from my buil: omnibot_build.log And this time I had no file is missing header file, but it looks like some problem in code? Or I have some wrong header files ? I appreciate any help or idea. Thank you.
I fixed the error in WaypointSerializer today. Update it and then try it again.
I successfully cross-built omni-bot on aarch64 for ET using these steps.
Run the docker.io/etlegacy/lnx-aarch64-build:20240206123350
image in Docker or Podman and then execute this script:
set -e
export BOOST_ROOT=/code/boost
cd /code
apt-get update
apt-get install -y git curl
# compile boost
cat <<EOF > ~/user-config.jam
using gcc : arm : aarch64-linux-gnu-g++ ;
EOF
curl -L -O https://github.com/boostorg/boost/releases/download/boost-1.84.0/boost-1.84.0.tar.gz
tar -xf boost-1.84.0.tar.gz
cd boost-1.84.0
./bootstrap.sh --with-libraries=system,filesystem,regex,date_time
./b2 toolset=gcc-arm cxxflags="-fPIC" link=static --prefix="${BOOST_ROOT}" install
# compile omni-bot
git clone https://github.com/jswigart/omni-bot.git -b stable --depth 1 --recursive /code/omni-bot
cd /code/omni-bot/0.83/Omnibot
sed -i -E 's@^(build-project RTCW.*)@#\1@' Jamfile
sed -i -E 's@(std=c\+\+11)@\1 <cflags>-fPIC@' Common/Jamfile
/code/boost-1.84.0/b2 -d+2 toolset=gcc-arm cxxflags="-I${BOOST_ROOT}/include -fPIC" linkflags="-L${BOOST_ROOT}/lib" -a -q release
ls -l /code/omni-bot/0.83/Omnibot/build/ET/gcc-arm/release/omnibot_et.so
What is troubling is that I had to edit Common/Jamfile
so it uses -fPIC
, I'm not sure what else could have been done. I had an issue with lzma.o
not being built with this flag.
The result (gzipped): omnibot_et.aarch64.so.gz
I put it on my (etbloat) server and it seems to work normally.
I'll try to edit the CMake configuration and GitHub actions so that next releases can have aarch64 support officially. My goal is for ET Legacy to ship omni-bot for this architecture.
Could ARM architecture be officially supported to be able to install omnibot on RPI?