apache / apache/arrow-java

[Java] Gandiva fails to build on M1 Mac

Open
#178 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
94
Forks
152
Avg merge
3d 16h
Merged PRs (30d)
11

Description

### Describe the bug, including details regarding any error messages, version, and platform.

When building the Java JNI modules on M1
```
mvn \
-Darrow.cpp.build.dir=/java-dist/lib/ \
-Darrow.c.jni.dist.dir=/java-dist/lib/ \
-Parrow-jni clean install
```

.. we'll fail on the Gandiva module ..
```
...
[INFO] Arrow Gandiva ...................................... FAILURE [ 3.053 s]
[INFO] Arrow Java C Data Interface ........................ SKIPPED
[INFO] Arrow Java Dataset ................................. SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 04:34 min
[INFO] Finished at: 2023-07-27T17:17:21-04:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.xolstice.maven.plugins:protobuf-maven-plugin:0.6.1:compile (default) on project arrow-gandiva: Unable to resolve artifact: Missing:
[ERROR] ----------
[ERROR] 1) com.google.protobuf:protoc:exe:osx-aarch_64:3.20.3
[ERROR]
[ERROR] Try downloading the file manually from the project website.
[ERROR]
[ERROR] Then, install it using the command:
[ERROR] mvn install:install-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=3.20.3 -Dclassifier=osx-aarch_64 -Dpackaging=exe -Dfile=/path/to/file
[ERROR]
[ERROR] Alternatively, if you host your own repository you can deploy the file there:
[ERROR] mvn deploy:deploy-file -DgroupId=com.google.protobuf -DartifactId=protoc -Dversion=3.20.3 -Dclassifier=osx-aarch_64 -Dpackaging=exe -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]
[ERROR]
[ERROR] Path to dependency:
[ERROR] 1) org.apache.arrow.gandiva:arrow-gandiva:jar:13.0.0-SNAPSHOT
[ERROR] 2) com.google.protobuf:protoc:exe:osx-aarch_64:3.20.3
[ERROR]
[ERROR] ----------
[ERROR] 1 required artifact is missing.
[ERROR]
[ERROR] for artifact:
[ERROR] org.apache.arrow.gandiva:arrow-gandiva:jar:13.0.0-SNAPSHOT
[ERROR]
[ERROR] from the specified remote repositories:
[ERROR] apache.snapshots (https://repository.apache.org/snapshots, releases=false, snapshots=true),
[ERROR] central (https://repo.maven.apache.org/maven2, releases=true, snapshots=false)
```

Why? Gandiva uses protoc version `v3.20.3`, which doesn't have an osx-aarch64 build on maven[1]. If you check +/-1 from this version, there _is_ an osx-aarch64 build.

We can either:
1) Request the osx-aarch64 build be uploaded (assuming it wasn't broken or removed deliberately).
2) Upgrade protobuf. There are 263 new commits if we upgrade to the next incremental release[2].

I built Gandiva with protobuf `v3.21.0` and tests passed, but I haven't verified any farther than that.

[1] https://repo.maven.apache.org/maven2/com/google/protobuf/protoc/3.20.3/
[2] https://github.com/protocolbuffers/protobuf/compare/v3.20.3...v3.21.0

### Component(s)

Java

Contributor guide

Open the contributing guide

Research direction

Start with the Maven command and the Arrow Gandiva Java module described in the issue, then inspect how protoc 3.20.3 is configured for the Java JNI build. Compare the available protobuf versions and verify the selected change by building Gandiva on an M1 Mac and running its tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.