Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to Generate Logs and Hanging Execution with unityci/editor Docker Image on Mac with Apple Silicon #238

Open
alronz opened this issue Jan 24, 2024 · 1 comment

Comments

@alronz
Copy link

alronz commented Jan 24, 2024

I am trying to use the Docker image unityci/editor:ubuntu-2022.3.18f1-webgl-3.0.1 on a Mac with Apple Silicon (M1/M2) to run the following command after setting the license:

unity-editor -enablePackageManagerTraces -logfile /dev/stdout -quit -batchmode -nographics -buildTarget WebGL -projectPath "/src/Frontend"

Problem Description:

  • When I build the Docker image on Linux or Windows that contains the above command, I observe that the command produces many logs and executes successfully.
  • However, when I build the image using the same command on a Mac with an Apple chip (M1/M2), I encounter the following issues:
    • The command produces no logs.
    • The execution appears to hang without completing.

Note that I execute the docker build command with the flag --platform=linux/amd64 since there is no image for arm64

I would appreciate any insights or guidance on how to resolve this issue and make the Docker image work smoothly on Macs with Apple Silicon. Thank you!

@GabLeRoux
Copy link
Member

GabLeRoux commented Jan 25, 2024

That's a good question, I reproduced this as well. I haven't tried building my own docker image locally on Apple chip (M3 here), but I did reproduce the problem where trying to run unity-editor inside a container and the process did hang without printing anything to console. I even tried with base image (without modules installed).

export DOCKER_DEFAULT_PLATFORM=linux/amd64
docker run -v "$(pwd):/app" --rm docker.io/unityci/editor:2022.3.4f1-base-3 unity-editor \
  -logFile /dev/stdout \
  -quit \
  -serial "$UNITY_SERIAL" \
  -username "$UNITY_EMAIL" \
  -password "$UNITY_PASSWORD" \
  -projectPath "/app/BlankProject"

I'm interested in a solution too. That is an architecture compatibility challenge. I quickly eplored some options.

Rosetta 2

I know there is Rosetta 2, a binary translation layer for running x86_64 applications on ARM architecture. Rosetta can be installed like this:

/usr/sbin/softwareupdate --install-rosetta --agree-to-license

But from there, I'm not sure what would be the next steps, I haven't tried anything past this, but I think running with DOCKER_DEFAULT_PLATFORM=linux/amd64 or --platform=linux/amd64 is already using Rosetta.

Writing a Dockerfile that is ARM compatible

I think for this to work, we'd have to try and use a base image that is already arm compatible and then compile and install dependencies. This is something to explore.

References

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants