dillongoostudios/goo-engine

Feature Request: Linux build is a MUST

jurassicjordan opened this issue · 12 comments

I'm very excited to see there is finally a mac build of Goo engine available. But I find it very disappointing that its not available for linux. Even though there are not a lot of folks who run linux natively as their daily driver OS (despite the Steam Deck's popularity ramping up user count significantly) there are folks who built home blender-render farms that typically run a lightweight command line linux OS. Being that this is a fork of blender, this should most definitely have release for Linux, and will be happy to join the 10/month patreon tier if this is planned for near the future. In summary, with the rising number of Linux users on Steam Deck, the utility being able to run goo engine in a render farm, and quite easy porting of the fork to linux, I am of the opinion it would be silly not to make a linux port. I appreciate all the fantastic work going into this project and hope to see this fabulous fork run on linux in the near future, thank you.

I've been using Goo Engine for the past months on Linux just fine, however, since there are no official Linux builds, you have to build it yourself.

I've been trying to build goo engine on and off on linux for a while and it won't build due to 'make update' always failing

How have you managed this? I follow the build guide on the blender website exactly, except for where I git clone goo-engine instead of blender

The build process was broken because the upstream blender repository layout changed (for the precompiled libraries, make update etc.) during the move to Gitea.
Please try checking out the goo-engine-v3.6-release branch and running make update again. If it still fails then delete your local repository (including the lib folder) and start over.

We likely won't ever provide precompiled linux builds, mainly because the build process is a lot easier for linux users, and because making portable builds requires quite a lot of extra setup (different glibc versions etc.)

how long until the main branch uodates do you think?

Development of features that we're currently using (or bug fixes) happens in the current goo-engine-vX.Y-release branch, which eventually get merged into goo-engine-main periodically. If you need a version of main that's more up to date with the upstream then you can just merge it locally.

because making portable builds requires quite a lot of extra setup (different glibc versions etc.)

Would a flatpak package make this any different from a standard binary package (I.E: .rpm, .deb, etc)?

Would a flatpak package make this any different from a standard binary package (I.E: .rpm, .deb, etc)?

It's more that realistically we would need to setup a docker image, VM, or some other sandboxed environment with minimal versions of all the libraries, lowest supported gcc and glibc etc. for the release to actually be compatible and stable across different distros.
For example the official releases are built against a minimal Rocky 8 environment, but given how straightforward it should be to compile it yourself (especially compared to other projects of a similar size), I don't think it's that unreasonable to build from source.

it would be simpler to build yourself if the readme was updated to say which branch you need. Would probably get you less complaints too

it was simple to build, just not simple to know that i had to build a different branch

zeitue commented

I agree that a Linux build is needed and ideally, if it was a Flatpak you'd have a single package for all Linux without any distribution differences.

Axis4s commented

image

'the building process is a lot easier for linux users'

@Axis4s because the building process is easier for linux users. if you can't enter your username, that's just a kill issue

u3shit commented

@Axis4s: just press enter, you don't need an account to clone, the server is just weird.

You can also use docker if you don't want to mess with the software on your computer:

FROM rockylinux:8 AS build

RUN curl https://raw.githubusercontent.com/dillongoostudios/goo-engine/goo-engine-main/build_files/build_environment/linux/linux_rocky8_setup.sh | \
    sed 's/dnf install/dnf install -y/' | bash -x

ARG BRANCH=goo-engine-v3.6-release
RUN set -x && mkdir blender && cd blender && \
  git clone --progress --depth 1 --single-branch --no-tags --branch "$BRANCH" \
  https://github.com/dillongoostudios/goo-engine

RUN mkdir blender/lib && cd blender/lib && \
    svn checkout https://svn.blender.org/svnroot/bf-blender/trunk/lib/linux_x86_64_glibc_228 && \
    make -C ../goo-engine update

RUN scl enable gcc-toolset-11 'nice make -C blender/goo-engine ninja'

FROM scratch
COPY --from=build blender/build_linux/bin /

Save it as Dockerfile into an empty directory and run it as sudo docker build --output - . | tar x --one-top-level=OUTPUT_DIR (replace OUTPUT_DIR with a directory where you want the built goo engine. You can probably use simply docker build --output OUTPUT_DIR . if your user is in the docker group) and wait (a lot. Subversion cloning is ridiculously slow).
This uses rockylinux 8 like the official blender releases, so if the upstream blender binaries work for you, this should work also.