diff --git a/.github/workflows/bindings_java.yml b/.github/workflows/bindings_java.yml
index 343e0325e7b7..4285cc0532c3 100644
--- a/.github/workflows/bindings_java.yml
+++ b/.github/workflows/bindings_java.yml
@@ -70,14 +70,9 @@ jobs:
- name: Set up JDK 8
uses: actions/setup-java@v3
with:
- distribution: 'temurin'
+ distribution: 'zulu'
java-version: '8'
cache: 'maven'
- - name: Install Protoc
- uses: arduino/setup-protoc@v2
- with:
- version: "23.4"
- repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Build and test
working-directory: bindings/java
# `mvn install` and `mvn artifact:compare` are required to verify reproducible builds:
diff --git a/bindings/java/.cargo/config b/bindings/java/.cargo/config
new file mode 100644
index 000000000000..fc0bf0e2815f
--- /dev/null
+++ b/bindings/java/.cargo/config
@@ -0,0 +1,11 @@
+# See also https://github.com/rust-lang/rust/issues/44991
+
+[target.x86_64-unknown-linux-musl]
+rustflags = [
+ "-C", "target-feature=-crt-static",
+]
+
+[target.aarch64-unknown-linux-musl]
+rustflags = [
+ "-C", "target-feature=-crt-static",
+]
diff --git a/bindings/java/pom.xml b/bindings/java/pom.xml
index e4cbfbf05d00..921436b7996d 100644
--- a/bindings/java/pom.xml
+++ b/bindings/java/pom.xml
@@ -55,6 +55,7 @@
dev
default
+
${os.detected.classifier}
@@ -177,6 +178,8 @@
${project.basedir}/tools/build.py
--classifier
${jni.classifier}
+ --target
+ ${cargo-build.target}
--profile
${cargo-build.profile}
--features
diff --git a/bindings/java/tools/build.py b/bindings/java/tools/build.py
index 2d6b3d2b0582..8bc5fabcbd79 100755
--- a/bindings/java/tools/build.py
+++ b/bindings/java/tools/build.py
@@ -17,7 +17,7 @@
# under the License.
-from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser, BooleanOptionalAction
+from argparse import ArgumentDefaultsHelpFormatter, ArgumentParser
from pathlib import Path
import shutil
import subprocess
@@ -52,6 +52,7 @@ def get_cargo_artifact_name(classifier: str) -> str:
parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter)
parser.add_argument('--classifier', type=str, required=True)
+ parser.add_argument('--target', type=str, default='')
parser.add_argument('--profile', type=str, default='dev')
parser.add_argument('--features', type=str, default='default')
args = parser.parse_args()
@@ -61,12 +62,15 @@ def get_cargo_artifact_name(classifier: str) -> str:
if args.features:
cmd += ['--features', args.features]
- target = classifier_to_target(args.classifier)
- if target:
- command = ['rustup', 'target', 'add', target]
- print('$ ' + subprocess.list2cmdline(command))
- subprocess.run(command, cwd=basedir, check=True)
- cmd += ['--target', target]
+ if args.target:
+ target = args.target
+ else:
+ target = classifier_to_target(args.classifier)
+
+ command = ['rustup', 'target', 'add', target]
+ print('$ ' + subprocess.list2cmdline(command))
+ subprocess.run(command, cwd=basedir, check=True)
+ cmd += ['--target', target]
output = basedir / 'target' / 'bindings'
Path(output).mkdir(exist_ok=True, parents=True)