'Mediapipe in Mac M1 pro machine with ARM, facing issue with AUTORELEASEPOOL while bazel build for hello_world
I am using the latest Mac M1 pro (ARM) machine and was trying to install mediapipe as per this tutorial - https://google.github.io/mediapipe/getting_started/install.html#installing-on-macos.
I was consistently getting the following error during this command:
$ bazel run --define MEDIAPIPE_DISABLE_GPU=1 \
mediapipe/examples/desktop/hello_world:hello_world
Error:
mediapipe/framework/scheduler_queue.cc:212:3: error: expected expression
AUTORELEASEPOOL {
^
mediapipe/framework/scheduler_queue.cc:29:25: note: expanded from macro 'AUTORELEASEPOOL'
Solution 1:[1]
It looks like M1 Mac is not detected properly by Bazel as an apple build and a change in mediapipe/framework/BUILD
needs to be done
cc_library(
name = "scheduler_queue",
srcs = ["scheduler_queue.cc"],
hdrs = [
"scheduler_queue.h",
"scheduler_shared.h",
],
copts = select({
--- "//conditions:default": [],
+++ "//conditions:default": ["-ObjC++"],
"//mediapipe:apple": [
"-ObjC++",
],
}),
This will allow Objective C++ directive @autoreleasepool
to be available which is used here for memory management. It is not a good idea to get rid of it in code (as in the answer from hemant kshirsagar).
Solution 2:[2]
While looking into the error carefully and tracing back to the mediapipe framework file scheduler_queue.cc I found there is some issue in AUTORELEASEPOOL define.
I've updated this line ''' #define AUTORELEASEPOOL @autoreleasepool ''' to ''' #define AUTORELEASEPOOL '''
and it works for me, as I'm able to build mediapipe hello_world as expected.
Seems like, scheduler_queue.cc has not been written carefully considering this type of issues or maybe needs to be tested more.
Hopefully, this will help you all.
Thanks
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | hemant kshirsagar |