Engine and Build Template Compatibility with Linux Distributions

omenosdevomenosdev Posts: 3Member

Hi all!

I'm looking at creating a 2D game for several platforms, including Linux. As I don't need certain functionality of the engine, I'm going to be building Godot from source, including the build templates. My personal workstation is RHEL 8, but I know for a fact that I will need to support RHEL 7. Because of this, I plan on building Godot in a RHEL 7 container to ensure binary compatibility, then use the resulting artifacts on my workstation. However, the part I'm unsure of is whether or not the exported game has any ties to the host system, or just the original tooling the engine/templates were built with.


From the docs:

Linux binaries usually won’t run on distributions that are older than the distribution they were built on. If you wish to distribute binaries that work on most distributions, you should build them on an old distribution such as Ubuntu 16.04. You can use a virtual machine or a container to set up a suitable build environment.


The part I'm hung up on is whether the term 'binaries' is referring to the exported game or to the built export templates. If I take the engine/templates built with RHEL 7 and use them to create a game on RHEL 8, will the resulting game have RHEL 8 as the minimum compatibility or will it maintain RHEL 7 compatibility?

Cheers,
Mike


Tags :

Answers

  • cyberealitycybereality Posts: 1,049Moderator
    edited December 2019

    I'd be interested to know this as well.

    Also, welcome to the forum!

  • omenosdevomenosdev Posts: 3Member

    I asked this on Discord before posting here, but after rereading the response and the Godot documentation, I think I understand it better.

    I think it makes no difference - the export only really consists of the binary/"export template" (which was compiled elsewhere, like the editor binaries from the website), and your resources packed into data.pck

    SheepAndDotto

    So an exported game is just a bundle of the created game assets and the built binary export template. If this is indeed the case, then building the templates with RHEL 7 will in fact maintain that compatibility and not pull in newer distribution links.

    The terminology of "export template" just confuses me as I see the term "template" as a general guide that will be used to build something. The templates themselves are compiled binaries of the engine (without tooling/editor), not instructions (as far as I can tell) to create the final game binary.

    I'm going to assume this is what is going on and see what happens, but won't mark as answered until there's actual confirmation on this.

  • cyberealitycybereality Posts: 1,049Moderator

    Yeah, that would make sense. However, if that was the case, why would an Ubuntu 18.04 dev system not be able to export for Ubuntu 16.04, assuming the executables were pre-built and part of the template. I'd like some insight here as well.

  • cyberealitycybereality Posts: 1,049Moderator
    edited December 2019

    Oh, I think I see. This is only a problem if you build the engine from source and use custom export templates. If you use the binary release then this wouldn't be a issue, right?

  • omenosdevomenosdev Posts: 3Member

    Assuming the official binaries are built on Ubuntu 16.04 (or older distribution), then yes it wouldn't be an issue. However, I should give fair warning that building on Ubuntu 16.04 may not support running on RHEL 7. Went through this for a good amount of time with Blender as the glibc version they used (2.23 on 16.04) added the mvec.so library which wasn't in RHEL 7 (glibc 2.17). They switched to building on RHEL 7 though in compliance with that and the VFX platform.

    I'm not seeing that specific issue when running ldd on a Godot binary, but it's food for though.

Leave a Comment

BoldItalicStrikethroughOrdered listUnordered list
Emoji
Image
Align leftAlign centerAlign rightToggle HTML viewToggle full pageToggle lights
Drop image/file