deltacv / EOCV-Sim

Develop, test, and tune your EasyOpenCV pipelines directly on your computer with a simple GUI !
https://deltacv.gitbook.io/eocv-sim/
MIT License
51 stars 18 forks source link

Mac m1 not running as it tries to download x86_64 dependencies #94

Closed SKempiak closed 9 months ago

SKempiak commented 1 year ago

Describe the bug When running the 3.4.3 jar from both the terminal and the jar doesn't do anything. The first time it ran but subsequent runs wouldn't show the eocv logo. To Reproduce Steps to reproduce the behavior:

  1. run the java command to open the jar in terminal. Expected behavior It should download all dependencies and run the jar however it instead gives an error:

Desktop (please complete the following information):

[22:37:55] [main/INFO]: [WorkspaceManager] Loaded workspace config successfully [22:37:55] [main/INFO]: [InputSourceManager] Initializing... [22:37:55] [main/INFO]: [InputSourceManager] Adding InputSource ImageSource("/var/folders/31/gtz14h3d5nj6lwfmr4scyfkr0000gn/T/ug_eocvsim_4.jpg", 320x240) (ImageSource) [22:37:55] [main/INFO]: [InputSourceManager] Adding InputSource ImageSource("/var/folders/31/gtz14h3d5nj6lwfmr4scyfkr0000gn/T/ug_eocvsim_1.jpg", 320x240) (ImageSource) [22:37:55] [main/INFO]: [InputSourceManager] Adding InputSource ImageSource("/var/folders/31/gtz14h3d5nj6lwfmr4scyfkr0000gn/T/ug_eocvsim_0.jpg", 320x240) (ImageSource) [22:37:55] [main/INFO]: [InputSourceManager] Set InputSource to ImageSource("/var/folders/31/gtz14h3d5nj6lwfmr4scyfkr0000gn/T/ug_eocvsim_4.jpg", 320x240) (ImageSource) [22:37:55] [main/INFO]: [PipelineManager] Initializing... [22:37:55] [main/INFO]: [CompiledPipelineManager] Initializing... [22:37:55] [DefaultDispatcher-worker-3/INFO]: [WorkspaceManager] Loaded workspace config successfully [22:37:55] [DefaultDispatcher-worker-3/INFO]: [CompiledPipelineManager] Building java files in workspace, at /Users/samsonkempiak/.eocvsim/default_workspace [22:37:55] [DefaultDispatcher-worker-1/INFO]: [ClasspathScan] ClassGraph finished scanning (took 0.6653535s) [22:37:55] [DefaultDispatcher-worker-1/INFO]: [ClasspathScan] Found 0 pipelines [22:37:55] [DefaultDispatcher-worker-1/INFO]: [ClasspathScan] Finished scanning (took 0.66871s) [22:37:55] [main/INFO]: [PipelineManager] Found 1 pipeline(s) [22:37:56] [main/INFO]: [EOCVSim] -- Begin EOCVSim loop (cd1d761) -- [22:37:56] [main/INFO]: [PipelineManager] Changing to pipeline com.github.serivesmejia.eocvsim.pipeline.DefaultPipeline [22:37:56] [main/INFO]: [PipelineManager] Instantiated pipeline class com.github.serivesmejia.eocvsim.pipeline.DefaultPipeline [22:37:56] [main/INFO]: [PipelineSnapshot] Taken snapshot of pipeline com.github.serivesmejia.eocvsim.pipeline.DefaultPipeline [22:37:56] [DefaultDispatcher-worker-3/INFO]: [ClasspathScan] Starting to scan for classes in /Users/samsonkempiak/.eocvsim/compiler/out_jars/pipelines.jar... [22:37:56] [DefaultDispatcher-worker-3/INFO]: [ClasspathScan] ClassGraph finished scanning (took 0.009029s) [22:37:56] [DefaultDispatcher-worker-3/INFO]: [ClasspathScan] Found pipeline AprilTagDetectionPipeline [22:37:56] [DefaultDispatcher-worker-3/INFO]: [ClasspathScan] Found pipeline SimpleThresholdPipeline [22:37:56] [DefaultDispatcher-worker-3/INFO]: [ClasspathScan] Found pipeline SkystoneDeterminationPipeline [22:37:56] [DefaultDispatcher-worker-3/INFO]: [ClasspathScan] Found pipeline StageSwitchingPipeline [22:37:56] [DefaultDispatcher-worker-3/INFO]: [ClasspathScan] Found pipeline StoneOrientationAnalysisPipeline [22:37:56] [DefaultDispatcher-worker-3/INFO]: [ClasspathScan] Found 5 pipelines [22:37:56] [DefaultDispatcher-worker-3/INFO]: [ClasspathScan] Finished scanning (took 0.014875709s) [22:37:56] [DefaultDispatcher-worker-3/INFO]: [CompiledPipelineManager] Build successful (took 0.85 seconds)

Using the JDK compiler

Other (-1:-1): WARNING: source value 8 is obsolete and will be removed in a future release (-1:-1): WARNING: target value 8 is obsolete and will be removed in a future release (-1:-1): WARNING: To suppress warnings about obsolete options, use -Xlint:-options.

AprilTagDetectionPipeline.java (95:17): MANDATORY_WARNING: finalize() in java.lang.Object has been deprecated and marked for removal

[22:37:56] [Pipeline-DefaultPipeline/INFO]: [PipelineManager] Initialized pipeline DefaultPipeline [22:37:56] [main/INFO]: [PipelineSnapshot] Taken snapshot of pipeline com.github.serivesmejia.eocvsim.pipeline.DefaultPipeline [22:37:56] [main/INFO]: [PipelineManager] Changing to pipeline AprilTagDetectionPipeline [22:37:56] [main/INFO]: [PipelineManager] Instantiated pipeline class AprilTagDetectionPipeline [22:37:56] [main/INFO]: [PipelineSnapshot] Taken snapshot of pipeline AprilTagDetectionPipeline [22:37:56] [Pipeline-AprilTagDetectionPipeline/ERROR]: [EOCVSimUncaughtExceptionHandler] Uncaught exception thrown in "Pipeline-AprilTagDetectionPipeline" thread java.lang.ExceptionInInitializerError: null at java.lang.Class.forName0(Native Method) ~[?:?] at java.lang.Class.forName(Class.java:391) ~[?:?] at java.lang.Class.forName(Class.java:382) ~[?:?] at com.github.serivesmejia.eocvsim.pipeline.compiler.PipelineClassLoader.loadClass(PipelineClassLoader.kt:75) ~[EOCV-Sim-3.4.3-all.jar:?] at java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[?:?] at AprilTagDetectionPipeline.init(AprilTagDetectionPipeline.java:91) ~[?:?] at com.github.serivesmejia.eocvsim.pipeline.PipelineManager$update$pipelineJob$1.invokeSuspend(PipelineManager.kt:258) ~[EOCV-Sim-3.4.3-all.jar:?] at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) ~[EOCV-Sim-3.4.3-all.jar:?] at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) ~[EOCV-Sim-3.4.3-all.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:577) ~[?:?] at java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[?:?] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?] at java.lang.Thread.run(Thread.java:1623) [?:?] Caused by: java.lang.UnsupportedOperationException: The native library failed to link, which probably means that the AprilTag plugin is not supported in the mac os x platform at io.github.deltacv.apriltag.NativeLibLoader.load(NativeLibLoader.java:97) ~[EOCV-Sim-3.4.3-all.jar:?] at org.openftc.apriltag.AprilTagDetectorJNI.(AprilTagDetectorJNI.java:105) ~[EOCV-Sim-3.4.3-all.jar:?] ... 15 more Caused by: java.lang.UnsatisfiedLinkError: /private/var/folders/31/gtz14h3d5nj6lwfmr4scyfkr0000gn/T/libapriltag.dylib: dlopen(/private/var/folders/31/gtz14h3d5nj6lwfmr4scyfkr0000gn/T/libapriltag.dylib, 0x0001): tried: '/private/var/folders/31/gtz14h3d5nj6lwfmr4scyfkr0000gn/T/libapriltag.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')), '/System/Volumes/Preboot/Cryptexes/OS/private/var/folders/31/gtz14h3d5nj6lwfmr4scyfkr0000gn/T/libapriltag.dylib' (no such file), '/private/var/folders/31/gtz14h3d5nj6lwfmr4scyfkr0000gn/T/libapriltag.dylib' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64')) at jdk.internal.loader.NativeLibraries.load(Native Method) ~[?:?] at jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:331) ~[?:?] at jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:197) ~[?:?] at jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:139) ~[?:?] at java.lang.ClassLoader.loadLibrary(ClassLoader.java:2404) ~[?:?] at java.lang.Runtime.load0(Runtime.java:817) ~[?:?] at java.lang.System.load(System.java:2015) ~[?:?] at io.github.deltacv.apriltag.NativeLibLoader.load(NativeLibLoader.java:95) ~[EOCV-Sim-3.4.3-all.jar:?] at org.openftc.apriltag.AprilTagDetectorJNI.(AprilTagDetectorJNI.java:105) ~[EOCV-Sim-3.4.3-all.jar:?] ... 15 more [22:37:56] [Pipeline-AprilTagDetectionPipeline/INFO]: [CrashReport] Saved crash report to /Users/samsonkempiak/Downloadscrashreport-eocvsim-2023_07_19-22.37.56.log [22:37:56] [Pipeline-AprilTagDetectionPipeline/WARN]: [EOCVSimUncaughtExceptionHandler] If this error persists, open an issue on EOCV-Sim's GitHub attaching the crash report file. [22:37:56] [Pipeline-AprilTagDetectionPipeline/WARN]: [EOCVSimUncaughtExceptionHandler] The application will exit now (exit code 1)

AadiPatangi commented 11 months ago

exact same problem. it ran first time then kept giving error cause incompatible cpu architecture

c4glenn commented 11 months ago

ill take a look at it tomorrow we shall see if we can find a solution

SKempiak commented 11 months ago

Any luck @c4glenn ?

c4glenn commented 11 months ago

I've been trying to reproduce it... Its not happening for me there's probably some pesky cache file hiding somewhere from a previous install

SKempiak commented 11 months ago

should I run it through an emulator or something?

serivesmejia commented 11 months ago

Hello there, sorry for the delay (once again GitHub fails to email me)

Unfortunately, April tags are not currently supported in M1/M2 Macs since I've not been able to get around to build the platform-specific code for this architecture.

(AprilTags support is kept on a separate GitHub repository, independent from EOCV-Sim, you can find all the details there)

GitHub cloud machines are used to build native code for windows, Linux, and x86 Mac, but they still haven't gotten around to adding M1 machines. However, there's the possibility of having someone with access to such computer help me build said code for the M1 platform, if any of you are open to that possibility, I'll be more than thankful! I'll leave the instructions on how to do so in the next comment.

serivesmejia commented 11 months ago

1) Install CMake and gcc/g++ in your Mac (ngl I have no idea how to do that, you might be able to get it from XCode or brew)

2) Download a JDK (Java Development Kit, not a JRE!) and set it as your JAVA_HOME

3) Clone/download the AprilTagDesktop repository

4) Open a terminal inside the AprilTagDesktop folder

5) Run the cmake . command to set up stuff

6) Now run cmake --build . --config Release. If everything goes well, you should find the newly compiled .dylib file...somewhere, probably in a "build" folder of sorts.

Make sure to upload the file here on GitHub or to a file sharing service, with the build logs included so that I can make sure it was appropriately built.

c4glenn commented 11 months ago

Build&Logs.zip

Here you go

serivesmejia commented 11 months ago

Oh wow, that was fast. Thank you so much! I'll make a test pre release shortly.

c4glenn commented 11 months ago

ofc np! always happy to run cmake if you need it in the future

serivesmejia commented 11 months ago

It's up! Could you please try the development release and provide feedback? Make sure to run the AprilTag pipeline.

SKempiak commented 11 months ago

Thank you! That did seem to work. Sorry to ask here, but can I show you a pipeline? Via sending it to your email or something?

serivesmejia commented 11 months ago

Sure thing @SKempiak. My email can be found in my GitHub profile (I think). You can also send me a message in discord: anotherbass#2474

serivesmejia commented 9 months ago

Fixed in v3.5.1