Jump to content

Issues self compling 0ad 28


Frederick_1
 Share

Recommended Posts

I want to try a local build version of the 0ad 28 on my debian system. So I got the source code tar file from:
https://play0ad.com/download/source/  (direct download tar).

The I followed the built instructions on: https://gitea.wildfiregames.com/0ad/0ad/wiki/ .
(Where the Linux  getting the libarys section could be better separated from the rest of instructions)

So far, I sucessfully built the libarys. But when I invoke the make comand it brakes not finding libary / header files, altough, they are available on my system.

 

gamer@Nanox:~/bin/0ad-0.28.0/build/workspaces/gcc$ make -j5 
[...]
==== Building simulation2 (release) ====
Globals.cpp
precompiled.h
In file included from ../../../source/lobby/Globals.cpp:20:
../../../source/lobby/IXmppClient.h:23:10: fatal error: js/Value.h: Datei oder Verzeichnis nicht gefunden
   23 | #include <js/Value.h>
      |          ^~~~~~~~~~~~
compilation terminated.
make[1]: *** [lobby.make:162: obj/lobby_Release/Globals.o] Fehler 1
make: *** [Makefile:104: lobby] Fehler 2
make: *** Es wird auf noch nicht beendete Prozesse gewartet …
In file included from ../../../source/dapinterface/DapInterface.cpp:20:
../../../source/dapinterface/DapInterface.h:24:10: fatal error: js/RootingAPI.h: Datei oder Verzeichnis nicht gefunden
   24 | #include <js/RootingAPI.h>
      |          ^~~~~~~~~~~~~~~~~
compilation terminated.  

../../../source/scriptinterface/ScriptForward.h:21:10: fatal error: js/TypeDecls.h: Datei oder Verzeichnis nicht gefunden
   21 | #include "js/TypeDecls.h"
      |          ^~~~~~~~~~~~~~~~
compilation terminated.

I have checktd the files are on my system, something with the path seems wrong. I also installed them via apt from debian:

 

~/bin/0ad-0.28.0/build/workspaces/gcc$ locate RootingAPI.h
/home/gamer/bin/0ad-0.28.0/libraries/source/spidermonkey/mozjs-128.13.0/js/public/RootingAPI.h
/usr/include/x86_64-linux-gnu/mozjs-128/js/RootingAPI.h

~/bin/0ad-0.28.0/build/workspaces/gcc$ locate Value.h
/home/gamer/bin/0ad-0.28.0/libraries/source/spidermonkey/mozjs-128.13.0/js/public/Value.h
/home/gamer/bin/0ad-0.28.0/libraries/source/spidermonkey/mozjs-128.13.0/js/src/wasm/WasmValue.h
/home/gamer/bin/0ad-0.28.0/libraries/source/spidermonkey/mozjs-128.13.0/mozglue/baseprofiler/public/ProportionValue.h
/home/gamer/bin/0ad-0.28.0/source/graphics/SmoothedValue.h
/usr/include/llvm-19/llvm/CodeGen/PseudoSourceValue.h
/usr/include/llvm-19/llvm/DebugInfo/DWARF/DWARFFormValue.h
/usr/include/llvm-19/llvm/ExecutionEngine/GenericValue.h
/usr/include/llvm-19/llvm/IR/GlobalValue.h
/usr/include/llvm-19/llvm/IR/Value.h
/usr/include/llvm-19/llvm/MC/MCValue.h
/usr/include/x86_64-linux-gnu/mozjs-128/js/Value.h
/usr/include/x86_64-linux-gnu/mozjs-128/mozilla/ProportionValue.h

gamer@Nanox:~/bin/0ad-0.28.0/build/workspaces/gcc$ locate TypeDecls.h
/home/gamer/bin/0ad-0.28.0/libraries/source/spidermonkey/mozjs-128.13.0/js/public/TypeDecls.h
/home/gamer/bin/0ad-0.28.0/libraries/source/spidermonkey/mozjs-128.13.0/js/src/wasm/WasmTypeDecls.h
/usr/include/x86_64-linux-gnu/mozjs-128/js/TypeDecls.h

So, what to do....

Link to comment
Share on other sites

The packet installed from  Debian Repository libmozjs-128-0:

libmozjs: 128.14.0-1~deb13u1

libmozjs-128-dev (128.14.0-1~deb13u1)

I think there is another Version, which is bundled part in the tree derived vom tar-ball.
It is in the directory   ..../mozjs-128.13.0 ...   so I d guess this is the version number

 

Edited by Frederick_1
translated to english
Link to comment
Share on other sites

In the Debian section I found a remark to spider monkey, so I tried:
./update-workspaces.sh -j3  --with-system-mozjs

And then it compiled. Guess using spidermonkey Version 128.14 from Debian instead of 128.13 which is bundled.

The test runs.... were 99% sucessfull, starting pyrogenensis finishes with a Seg-fault. Although I can not find the dump file.

This is the test output: 

 

gamer@Nanox:~/bin/0ad-0.28.0$ binaries/system/test
Running cxxtest tests (471 tests)....................................................................................................
In TestDapInterface::test_dap_interface:
/home/gamer/bin/0ad-0.28.0/source/dapinterface/tests/test_DapInterface.h:55: Error: Expected ((g_VFS->Mount(L"", DataDir() / "mods" / "mod" / "", VFS_MOUNT_MUST_EXIST)) == INFO::OK), found (-110100 != 0)
/home/gamer/bin/0ad-0.28.0/source/dapinterface/tests/test_DapInterface.h:57: Error: Test failed: DAP entry script not found at tools/dap/entry.js
/home/gamer/bin/0ad-0.28.0/source/dapinterface/tests/test_DapInterface.h:57: Error: Expected ((DAP::Interface{address, port, *g_ScriptContext })) not to throw, but it did
../../../source/dapinterface/tests/test_DapInterface.h:44: Error: Test failed: DAP entry script not found at tools/dap/entry.js
................................................................................Skipping map generator tests (can't find binaries/data/mods/public/maps/random/tests/)
.................................................................
In TestNetComms::test_dummy:
/home/gamer/bin/0ad-0.28.0/source/network/tests/test_Net.h:57: Error: Expected ((g_VFS->Mount(L"", DataDir() / "mods" / "public" / "", VFS_MOUNT_MUST_EXIST)) == INFO::OK), found (-110100 != 0)
.................................................................................................................................................................................................Skipping globalscripts tests (can't find binaries/data/mods/public/globalscripts/tests/)
.Skipping component scripts tests (can't find binaries/data/mods/public/simulation/components/tests/setup.js)
..............................
Failed 2 and Skipped 0 of 471 tests
Success rate: 99%

I attached the log file from ~.local/state/log:

mainlog.html

Edited by Frederick_1
Link to comment
Share on other sites

@Frederick_1

What Debian?
Saying you followed the instructions is imprecise, as they are very extensive.

But let's get to the point.

Compiling from the 0AD sources is simple and straightforward.

A preliminary note:
The compilation files take up a lot of disk space – mine is about 10 GiB.
If you don't have that much space, compile on an external drive.

Even a USB flash drive will work, as long as it's formatted with a Linux file system, e.g., ext4.
If you use Windows file systems (e.g., fat32, exfat), compilation will fail.

Checking required dependencies.

dpkg -l build-essential cargo cmake curl libboost-dev libboost-system-dev libboost-filesystem-dev libcurl4-gnutls-dev libenet-dev libfmt-dev libfreetype-dev m4 libgloox-dev libicu-dev libminiupnpc-dev libnvtt-dev libogg-dev libopenal-dev libpng-dev libsdl2-dev libsodium-dev libvorbis-dev libwxgtk3.2-dev libxml2-dev llvm minisign python3 rustc zlib1g-dev

If something is missing, we install it.

Next – with user rights:

cargo install --locked cbindgen@0.29.0
echo 'export PATH="/home/user_name/.cargo/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

Command list without unnecessary comments.
Debian 13.3 Trixie. All commands as a user.
After compilation, we are only interested in the 'binaries' directory.

mkdir -p 0.28.0_Final
cont 0.28.0_Final

wget https://releases.wildfiregames.com/0ad-0.28.0-unix-build.tar.xz
wget https://releases.wildfiregames.com/0ad-0.28.0-unix-build.tar.xz.sha256sum
wget https://releases.wildfiregames.com/0ad-0.28.0-unix-build.tar.xz.minisig
wget https://releases.wildfiregames.com/0ad-0.28.0-unix-data.tar.xz
wget https://releases.wildfiregames.com/0ad-0.28.0-unix-data.tar.xz.sha256sum
wget https://releases.wildfiregames.com/0ad-0.28.0-unix-data.tar.xz.minisig

ls-al
minisign -Vm 0ad-0.28.0-unix-build.tar.xz -P RWTWLbO12+ig3lUExIor3xd6DdZaYFEozn8Bu8nIzY3ImuRYQszIQyyy
minisign -Vm 0ad-0.28.0-unix-data.tar.xz -P RWTWLbO12+ig3lUExIor3xd6DdZaYFEozn8Bu8nIzY3ImuRYQszIQyyy
sha256sum -c 0ad-0.28.0-unix-build.tar.xz.sha256sum
sha256sum -c 0ad-0.28.0-unix-data.tar.xz.sha256sum

tar xpf 0ad-0.28.0-unix-build.tar.xz
tar xpf 0ad-0.28.0-unix-data.tar.xz
cd 0ad-0.28.0

cd libraries/

nproc # We'll see the number: N, e.g.: N=8

./build-source-libs.sh -jN # So -j8
cd ../build/workspaces/
./update-workspaces.sh -jN
cd gcc/
make -jN

cd ../../../binaries/system/
./test
./pyrogenesis
cp ../../build/build_version/build_version.txt . # Don't forget the dot at the end

DONE

If the compilation completes without errors with the final message: "Linking test," this is good.
If for some reason you need to repeat the compilation, before issuing 'make', run the command:  'make clean'.

Archive the 'binaries' directory and its contents and transfer it to another PC with Debian 13.x Trixie installed.

But first, delete all '*.a' files from the 'system/' subdirectory.

Leave only the '*.so' files and the 'ActorEditor', 'pyrogenesis', and 'test' files.

Alternatively, leave the 'readme.txt' and the previously copied 'built_version.txt'.

Do not touch the 'data/' subdirectory.

The 'binaries' directory and its contents take up 5.0 GB of disk space.

If '0ad' has never been run on this other computer in an earlier version,
first check for the following packages:

dpkg -l libenet7 libfmt10 libgloox18 libminiupnpc18

END

Best regards
 

Edited by zyli
Link to comment
Share on other sites

I now have added the data files, and the tests are now fine.
So I have to reason which way to go with spieder monkey. 

@ zyli:

Debian is the current stable Version (with some backports), so it is Debian 13 Trixie.
The dependency check is fine.

What is "cont" have not found this comand. Guess typo "cd" is meant.

I have made 30 GB Space bevore I tried to compile.
 

 

Edited by Frederick_1
Link to comment
Share on other sites

@Frederick_1

Debian Sid already has 0AD version 0.28.0, but the dependencies require Debian 14 Forky.
https://tracker.debian.org/pkg/0ad

Under Debian 13.x Trixie, it can be compiled using the Debian method from Debian sources.

The files (‘*dsc’, ‘*debian.tar.xz’, ‘*orig.tar.xz’) are at the bottom of the page:
https://packages.debian.org/source/sid/0ad
https://packages.debian.org/source/sid/0ad-data

An interesting fact about ‘cbindgen’ – version 0.26 is sufficient for compilation (entry in the 0ad_0.28.0-3.dsc file):

Quote

cbindgen (>= 0.26.0)

If you are interested in this method, let me know – I will describe how to do it.

Best regards

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...