-
Notifications
You must be signed in to change notification settings - Fork 4
/
bridj.sh
62 lines (54 loc) · 1.79 KB
/
bridj.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/bin/bash
####################
## Preamble ##
####################
# Exit when any command fails.
set -e
# Only execute on the arm64 architecture.
if [[ $(dpkg --print-architecture) != "arm64" ]]; then
echo "Not applying arm64 workaround: $(dpkg --print-architecture)"
exit;
fi
echo "Applying arm64 workaround."
# Make `wget` more robust by passing retry flags.
alias wget="wget --retry-connrefused --waitretry=30 --read-timeout=30 --timeout=30 --tries=20"
# Set java environment.
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-arm64"
# Install dependencies.
apt-get install --yes build-essential \
mercurial \
wget \
zip
apt-get clean
####################
## BridJ setup ##
####################
while ! git clone --depth 1 https://github.com/nativelibs4java/BridJ /BridJ; do sleep 5; done
cd /BridJ
git apply ../bridj.patch
wget https://dyncall.org/r1.1/dyncall-1.1.tar.gz
tar xf dyncall-1.1.tar.gz
rm dyncall-1.1.tar.gz
mv dyncall-1.1 dyncall
cd /BridJ/dyncall
hg init
####################
## BridJ build ##
####################
cd /BridJ
./BuildNative
mvn clean install -DskipTests -Dmaven.install.skip=true -Dmaven.javadoc.skip=true -e
####################
## Postprocessing ##
####################
cd /BridJ/target
mv bridj-0.7.1-SNAPSHOT.jar bridj.jar
# Extract desired `libbridj.so`. Will create the directory tree, too.
unzip bridj.jar org/bridj/lib/linux_aarch64/libbridj.so
# We do not need the `linux_aarch64` folder
zip -d bridj.jar org/bridj/lib/linux_aarch64
# Rename the extracted folder to `linux_x64`.
mv org/bridj/lib/linux_aarch64 org/bridj/lib/linux_x64
# Replace the `libbridj.so` inside the jar with the arm64 one.
zip bridj.jar org/bridj/lib/linux_x64/libbridj.so
mv bridj.jar /dist/LanguageTool/libs/bridj.jar