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 build Terasology on M1 Mac. #5055

Closed
jrddunbr opened this issue Jun 25, 2022 · 7 comments · Fixed by priya4991/Terasology#1, #5211 or #5260
Closed

Unable to build Terasology on M1 Mac. #5055

jrddunbr opened this issue Jun 25, 2022 · 7 comments · Fixed by priya4991/Terasology#1, #5211 or #5260
Labels
Status: Needs Investigation Requires to be debugged or checked for feasibility, etc. Type: Improvement Request for or addition/enhancement of a feature

Comments

@jrddunbr
Copy link

General Info

Terasology Launcher Version: N/A
Terasology Version: Git fbc40c3fe2cf0c605f950c19e6c021f43aa43c05
Operating System: macOS Monterey 12.4
Onboard / Dedicated Graphics: It's a M1
Java Version: openjdk 11.0.15 2022-04-19 LTS

What you were trying to do

Run the game per the instructions provided on the main readme page.

What actually happened

During the run of ./gradlew game:

> Task :engine:generateProto FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':engine:generateProto'.
> Could not resolve all files for configuration ':engine:protobufToolsLocator_protoc'.
   > Could not find protoc-3.17.0-osx-aarch_64.exe (com.google.protobuf:protoc:3.17.0).
     Searched in the following locations:
         https://repo.maven.apache.org/maven2/com/google/protobuf/protoc/3.17.0/protoc-3.17.0-osx-aarch_64.exe

How to reproduce

  1. Clone Github repository. Check out git commit fbc40c3fe2cf0c605f950c19e6c021f43aa43c05
  2. ./groovyw module init iota
  3. ./gradlew game

Watch as it fails to build for M1 Mac with error above.

Log details

https://pastebin.com/12tVEmbd

Screenshots

N/A

Workaround

Have not had the time to test any workarounds. Checked the Google protobuffs website and did not find a version of the package that failed to download for an ARM based Mac.

Additional Infos / Context

I'm using the Amazon Corretto Java 11 JDK for the macOS system that uses the native aarch64 binaries. I have not tried compatibility mode.

@jrddunbr jrddunbr added Status: Needs Investigation Requires to be debugged or checked for feasibility, etc. Topic: Stabilization Requests, Issues and Changes related to improving stablity and reducing flakyness Type: Bug Issues reporting and PRs fixing problems labels Jun 25, 2022
@jrddunbr
Copy link
Author

For what it's worth, I tried to use the Terasology Launcher for Mac (4.5.0 from the website) as well, but it showed me a rectangular window with a progress bar, and then disappeared entirely. Unsure why that occurs, but the launcher doesn't really work either as a result.

@keturn
Copy link
Member

keturn commented Jun 26, 2022

Yeah, we could use some help on that front. I don't think any of the recent devs have an M1 (though Cerv can sometimes test things out).

I didn't even realize there were JDKs that had backported M1 support to Java 11! I was afraid we'd need to get the migration to Java 17 done before we could even start on M1. See #3976

@keturn keturn added Type: Improvement Request for or addition/enhancement of a feature and removed Type: Bug Issues reporting and PRs fixing problems Topic: Stabilization Requests, Issues and Changes related to improving stablity and reducing flakyness labels Jun 26, 2022
@jrddunbr
Copy link
Author

Hmm. For what it's worth, if you can upgrade the Google Protobufs dependency, it's provided in later versions, see the maven release here: https://repo1.maven.org/maven2/com/google/protobuf/protoc/3.19.2/

That might fix it; I'll probe it later when I have some time and report back.

@jrddunbr
Copy link
Author

Gets a bit further, but encounters another shared library that can't be loaded.

[LWJGL] Failed to load a library. Possible solutions:
	a) Add the directory that contains the shared library to -Djava.library.path or -Dorg.lwjgl.librarypath.
	b) Add the JAR that contains the shared library to the classpath.
[LWJGL] Enable debug mode with -Dorg.lwjgl.util.Debug=true for better diagnostics.
[LWJGL] Enable the SharedLibraryLoader debug mode with -Dorg.lwjgl.util.DebugLoader=true for better diagnostics.
Exception in thread "splashscreen-loop" java.lang.UnsatisfiedLinkError: Failed to locate library: liblwjgl.dylib
	at org.lwjgl.system.Library.loadSystem(Library.java:164)
	at org.lwjgl.system.Library.loadSystem(Library.java:63)
	at org.lwjgl.system.Library.<clinit>(Library.java:51)
	at org.lwjgl.glfw.GLFW.<clinit>(GLFW.java:30)
	at org.terasology.engine.GLFWSplashScreen.run(GLFWSplashScreen.java:58)
	at java.base/java.lang.Thread.run(Thread.java:829)
java.lang.UnsatisfiedLinkError: Can't load library: /Users/jared/Documents/Terasology/natives/macosx/libbullet-darwin-amd64.dylib

@asotona
Copy link

asotona commented Dec 8, 2022

I made some progress with building on M1 (see draft #5085 )
It depends on updated JNBullet (see MovingBlocks/JNBullet#16 )
and updated JNLua (see MovingBlocks/JNLua#9 )

However to completely finish the build there are still remaining issues.

I got stuck on:

> Task :facades:PC:game
-XX:G1ConcRefinementThreads=8 -XX:GCDrainStackTargetSize=64 -XX:InitialHeapSize=268435456 -XX:MaxDirectMemorySize=536870912 -XX:MaxHeapSize=805306368 -XX:+PrintCommandLineFlags -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseG1GC 
13:39:10.011 [main] INFO  org.terasology.engine.Terasology - homeDir is .
PathManager: Initial code location is /Users/###/dev/github/MovingBlocks/Terasology/engine/build/libs/engine-5.4.0-SNAPSHOT.jar
PathManager: Working directory is /Users/###/dev/github/MovingBlocks/Terasology
Exception in thread "splashscreen-loop" java.lang.ExceptionInInitializerError
	at org.lwjgl.glfw.GLFW.glfwInit(GLFW.java:1046)
	at org.terasology.engine.GLFWSplashScreen.run(GLFWSplashScreen.java:58)
	at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.IllegalStateException: GLFW may only be used on the main thread. This check may be disabled with Configuration.GLFW_CHECK_THREAD0.
	at org.lwjgl.glfw.EventLoop.<clinit>(EventLoop.java:30)
	... 3 more

And later in the build also:

[main] INFO  o.t.e.c.s.c.ConfigurationSubsystem - Video Settings: {"pixelFormat":24,"windowPosX":379,"windowPosY":235,"windowWidth":1280,"windowHeight":800,"displayModeSetting":"${engine:menu#video-windowed}","animatedMenu":false,"chunkLods":0.0,"billboardLimit":0.0,"flickeringLight":true,"animateGrass":true,"animateWater":false,"fieldOfView":90.0,"cameraBobbing":true,"renderPlacingBox":true,"blurIntensity":2,"reflectiveWater":false,"vignette":true,"motionBlur":true,"ssao":false,"filmGrain":false,"outline":true,"lightShafts":true,"eyeAdaptation":true,"bloom":true,"dynamicShadows":true,"vrSupport":false,"maxTextureAtlasResolution":4096,"maxChunksUsedForShadowMapping":1024,"shadowMapResolution":4096,"normalMapping":false,"parallaxMapping":false,"dynamicShadowsPcfFiltering":false,"cloudShadows":true,"renderNearest":true,"particleEffectLimit":10,"frameLimit":60,"meshLimit":400,"inscattering":true,"localReflections":false,"vSync":false,"clampLighting":false,"fboScale":100,"uiScale":100,"dumpShaders":false,"volumetricFog":false,"screenshotSize":"${engine:menu#screenshot-size-normal}","screenshotFormat":"png","cameraSettings":{"cameraSetting":"${engine:menu#camera-setting-normal}"},"debug":{"enabled":false,"firstPersonElementsHidden":false,"hudHidden":false,"wireframe":false,"renderChunkBoundingBoxes":false,"renderSkeletons":false,"renderEntityColliders":false}}
java.lang.UnsatisfiedLinkError: Can't load library: /Users/###/Library/Caches/JNA/temp/jna9749991504484582810.tmp
	at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2622)
	at java.base/java.lang.Runtime.load0(Runtime.java:765)
	at java.base/java.lang.System.load(System.java:1835)
	at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:1018)
	at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:988)
	at com.sun.jna.Native.<clinit>(Native.java:195)
	at com.sun.jna.Structure.setAlignType(Structure.java:280)
	at com.sun.jna.Structure.<init>(Structure.java:197)
	at com.sun.jna.Structure.<init>(Structure.java:193)
	at com.sun.jna.Structure.<init>(Structure.java:180)
	at com.sun.jna.Structure.<init>(Structure.java:172)
	at jopenvr.VRControllerState_t.<init>(VRControllerState_t.java:21)
	at org.terasology.engine.rendering.openvrprovider.OpenVRState.<init>(OpenVRState.java:35)
	at org.terasology.engine.rendering.openvrprovider.OpenVRProvider.<clinit>(OpenVRProvider.java:54)
	at org.terasology.engine.core.subsystem.openvr.OpenVRInput.preInitialise(OpenVRInput.java:43)
	at org.terasology.engine.core.TerasologyEngine.preInitSubsystems(TerasologyEngine.java:291)
	at org.terasology.engine.core.TerasologyEngine.initialize(TerasologyEngine.java:224)
	at org.terasology.engine.Terasology.call(Terasology.java:183)
	at org.terasology.engine.Terasology.call(Terasology.java:70)
	at picocli.CommandLine.executeUserObject(CommandLine.java:1933)
	at picocli.CommandLine.access$1200(CommandLine.java:145)
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2332)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2326)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2291)
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2159)
	at picocli.CommandLine.execute(CommandLine.java:2058)
	at org.terasology.engine.Terasology.main(Terasology.java:139)

I'll continue trying, however any help or hint is welcome.

@jdrueckert
Copy link
Member

@skaldarnar see above fyi

@soloturn
Copy link
Contributor

lets close this one and open dedicated issues in case they arrive?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Status: Needs Investigation Requires to be debugged or checked for feasibility, etc. Type: Improvement Request for or addition/enhancement of a feature
Projects
None yet
5 participants