Jump to content

svn update, Building SpiderMonkey – failed, rust too old


zyli
 Share

Recommended Posts

Debian 12.8 Bookworm
Today (2024-12-16) I tried to compile 0ad with nightly-build (commands: 'svn update' etc.)

I got the message:

Quote

Updated to version 108.

In the '0ad/trunk/libraries/' directory I had to give executable permissions to *.sh files, because the update downloaded newer files without these permissions:

chmod +x build-source-libs.sh source/cxxtest-4.4/build.sh source/fcollada/build.sh source/nvtt/build.sh source/premake-core/build.sh source/spidermonkey/build.sh source/spirv-reflect/build.sh

But that's a minor thing.

Being in the 'libraries/' directory I issued the command './build-source-libs.sh'

During "Building SpiderMonkey..." I received the information:

Quote

ERROR: Rust compiler 1.63.0 is too old.

And then:

Quote

To compile Rust language sources please install at least version 1.66.0 of the 'rustc' toolchain (or, if using nightly, at least one version newer than 1.66.0) and make sure it is first in your path.

Finally:

Quote

ERROR: SpiderMonkey build failed

In stable Debian 12.8 there is:

rustc --version
rustc 1.63.0

Can't the requirements be lowered to version 1.63, which would allow building a 0ad nightly build in Debian Bookworm?

I know that Debian has been waiting for quite a long time to update rustc.
Debian Testing already has the current version 1.83, but the new Debian Stable is still a long way off (half a year?).
The previous 0ad build, i.e. 99, made by me, worked fine.

Regards.

Link to comment
Share on other sites

Hello zyli, thanks for the report and the useful feedback on the build system.

59 minutes ago, zyli said:

In the '0ad/trunk/libraries/' directory I had to give executable permissions to *.sh files, because the update downloaded newer files without these permissions:

This is currently being fixed, in PR-7323 (y)

1 hour ago, zyli said:

Can't the requirements be lowered to version 1.63, which would allow building a 0ad nightly build in Debian Bookworm?

Unfortunately, Rust 1.66 is a requirement from Mozilla to build SpiderMonkey, we cannot decrease that. However, you can install Rust 1.66 or later using Rustup instead of your package manager. This is the recommended Rust install method. On our CI this allows us to build and test 0 A.D. even on Debian Bullseye.

Link to comment
Share on other sites

Thank you for your answer.

Here's what I did:

1.
I installed Debian Trixie on a USB flash drive (USB 3.0) just like on a hard drive (with its own UEFI partition and additionally with grub-pc so that it can be run on older computers without UEFI). 
Now I have: rustc ver. 1.83.0, python 3.12.6, libopenal* ver. 1.24.1.

2.
I copied my previous directory from 0ad nightly 'svn_2024/0ad/trunk/' to the above-mentioned Debian Trixie drive.
I made sure that the directories I placed in had exactly the same names.
Once I unnecessarily changed the name 'svn_2024' to something else and 0ad wouldn't build - the absolute path was remembered somewhere.

3.
I issued the commands:

cd trunk/
svn update
cd libraries/
nproc 							# I got: 20
./build-source-libs.sh -j20
cd ../build/workspaces/
./update-workspaces.sh -j20
cd gcc
make clean
make -j20

4.
Now check:

cd ../../../binaries/system/
./test # I got: Running cxxtest tests (416 tests)...OK!
./pyrogenesis 										# It works fine!
cat ~/svn_2024_october/0ad/trunk/build/build_version/build_version.txt
L"main, 5f1f8" (yesterday, today 17 Dec: L"main, dba968")

5.
Of course, there were some surprises.
I struggled with, among others: with the problem:

Quote

ERROR: Cannot find llvm-objdump
ERROR: SpiderMonkey build failed

 

It helped to install the package: llvm.

6.

I think that on the page: https://gitea.wildfiregames.com/0ad/0ad/wiki/BuildInstructions
in the "Dependencies - Debian, Ubuntu" section for Debian 13 Trixie in the sentence starting with:
"sudo apt install"

it would be good to add the following packages:

python-is-python3
rustfmt
llvm

Adding the 'ccache' package wouldn't hurt either.


7.
When I executed './clean-source-libs.sh' it gave me a warning: './clean-source-libs.sh: 13: git: not found'.

But I think that for 'svn update' the 'git' package is not needed.

8.
After starting './pyrogenesis' it displays:

[W][01203.830396] pw.conf | [ conf.c: 1214 try_load_conf()] can't load config client.conf: No such file or directory
[E][01203.830423] pw.conf | [ conf.c: 1243 pw_conf_load_conf_for_context()] can't load config client.conf: No such file or directory

But it probably has no visible effect.

9.
You can't download the 0ad-spirv mod using Settings – Mod selection, which was once needed for Vulkan to work.

So I copied the '0ad-spirv-0.27.22-b8sl.zip' file I had, enabled it in the settings and everything works.
0ad + Vulkan on the 'nouveau' driver (sic!).
The game is playable, but Debian files and game files on a pendrive instead of a hard drive do their thing.
I noticed that when there is no '0ad-spirv' mod, after exiting the game a warning window appears - I'm attaching the 'crash' file.


That would be it - maybe someone will find it useful.

Best regards.

crashlog_2024-12-17_no_spirv-mod.txt

Edited by zyli
Link to comment
Share on other sites

Hi, thanks :)

2. would be fixed by 7. but you're right, that doesn't work in the nightly SVN. Instead, if you version of subversion is recent enough, "svn cleanup --remove-unversioned" would do the trick.

5. 6. ah, you're correct. those are fixes that are in place in our CI configuration, but on on the build instructions.

9. The SPIR-V mod is not needed anymore, you can delete it from everywhere. All the SPIR-V shaders are already included in the nightly build.

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...