Skip to content

Commit cc64d73

Browse files
committed
Merge branch 'falkena-develop' into develop
* falkena-develop: - This is all working now, so finish cleaning up. - Add placeholder file for ARMv7 so the directory exists for the runners. - Revert a few unnecessary changes. - Add -e for Maven to see why it failed on last build. Add arm 32 bit build, since no official 64Bit system for Raspberry Pi is available.
2 parents 57250cb + 28057f7 commit cc64d73

File tree

6 files changed

+115
-1188
lines changed

6 files changed

+115
-1188
lines changed

.github/workflows/build.yml

Lines changed: 106 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,109 @@ on:
1818
pull_request:
1919

2020
jobs:
21+
build_linux_arm:
22+
strategy:
23+
matrix:
24+
os: [ubuntu-18.04]
25+
java: [8]
26+
27+
runs-on: ${{ matrix.os }}
28+
29+
steps:
30+
- name: Checkout Repo
31+
uses: actions/checkout@v2
32+
33+
- name: Setup JDK ${{ matrix.java }}
34+
uses: actions/setup-java@v1
35+
with:
36+
java-version: ${{ matrix.java }}
37+
38+
- name: Get Version Info
39+
run: |
40+
echo "POM_VERSION=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV
41+
echo "OPENCV_VERSION=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=opencv.version.long -q -DforceStdout)" >> $GITHUB_ENV
42+
echo "OPENCV_VERSION_SHORT=$(mvn build-helper:parse-version org.apache.maven.plugins:maven-help-plugin:3.2.0:evaluate -Dexpression=opencv.version.short -q -DforceStdout)" >> $GITHUB_ENV
43+
44+
- name: Build OpenCV on Arm
45+
uses: uraimo/[email protected]
46+
with:
47+
arch: armv7
48+
distro: ubuntu18.04
49+
50+
# Not required, but speeds up builds
51+
githubToken: ${{ github.token }}
52+
53+
# Create an artifacts directory
54+
setup: |
55+
mkdir -p "${PWD}/artifacts"
56+
57+
# Mount the artifacts directory as /artifacts in the container
58+
# Also mount the checked out repo as /host_repo so we can do a test build.
59+
dockerRunArgs: |
60+
--volume "${PWD}/artifacts:/artifacts"
61+
--volume "${PWD}:/host_repo"
62+
63+
run: |
64+
apt-get update -q -y
65+
apt-get install -q -y git wget cmake unzip build-essential default-jre default-jdk ant maven python3
66+
67+
# TODO: I'd like to get this path automatically somehow. I think it might be
68+
# in /etc/environment but sourcing it didn't seem to work. Need to figure out
69+
# where it would be after starting a new shell.
70+
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-armhf
71+
72+
wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null
73+
unzip ${{ env.OPENCV_VERSION }} > /dev/null
74+
75+
cd opencv-${{ env.OPENCV_VERSION }}
76+
mkdir build
77+
cd build
78+
cmake \
79+
-D OPENCV_FORCE_3RDPARTY_BUILD=ON \
80+
-D BUILD_JAVA=ON \
81+
-D BUILD_FAT_JAVA_LIB=ON \
82+
-D OPENCV_ENABLE_NONFREE=ON \
83+
-D BUILD_SHARED_LIBS=OFF \
84+
-D BUILD_PERF_TESTS=OFF \
85+
-D BUILD_TESTS=OFF \
86+
-D BUILD_EXAMPLES=OFF \
87+
-D BUILD_DOCS=OFF \
88+
-D BUILD_PACKAGE=OFF \
89+
-D BUILD_opencv_python2=OFF \
90+
-D BUILD_opencv_python3=OFF \
91+
-D BUILD_opencv_apps=OFF \
92+
-D BUILD_opencv_gapi=OFF \
93+
-D CMAKE_BUILD_TYPE=RELEASE \
94+
..
95+
make -j8
96+
97+
# Copy the build artifacts to the /artifacts directory, which will be
98+
# used by the host to upload them.
99+
mkdir -p /artifacts/bin
100+
mkdir -p /artifacts/lib
101+
cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /artifacts/bin
102+
cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /artifacts/lib
103+
104+
# And also copy the build artifacts to the repo, so we can do a test build.
105+
# Note that we use the repo checked out on the host so that we can use
106+
# actions/checkout for the Git stuff, rather than having to mess with
107+
# the authentication in this container.
108+
cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /host_repo/upstream
109+
cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /host_repo/src/main/resources/nu/pattern/opencv/linux/ARMv7
110+
111+
# Peform a test build in the host repo, which now contains all of the
112+
# build artifacts.
113+
cd /host_repo
114+
mvn -B test
115+
116+
- name: Upload Artifacts
117+
uses: actions/upload-artifact@v2
118+
with:
119+
name: ubuntu-18.04-arm
120+
path: |
121+
artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar
122+
artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so
123+
21124
build_linux_arm64:
22125
strategy:
23126
matrix:
@@ -231,7 +334,7 @@ jobs:
231334
# Download and combine the artifacts from the above jobs and build the
232335
# distribution jar. Uploads it as an artifact for subsequent steps.
233336
build_dist:
234-
needs: [build_linux_arm64, build_mac_linux_x64, build_windows]
337+
needs: [build_linux_arm, build_linux_arm64, build_mac_linux_x64, build_windows]
235338

236339
strategy:
237340
matrix:
@@ -263,6 +366,7 @@ jobs:
263366
cp macos-10.15/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream
264367
cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64
265368
cp ubuntu-18.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64
369+
cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7
266370
cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8
267371
cp windows-2016/x86/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32
268372
cp windows-2016/x64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64
@@ -354,6 +458,7 @@ jobs:
354458
cp macos-10.15/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream
355459
cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64
356460
cp ubuntu-18.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64
461+
cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7
357462
cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8
358463
cp windows-2016/x86/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32
359464
cp windows-2016/x64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<packaging>bundle</packaging>
88
<groupId>org.openpnp</groupId>
99
<artifactId>opencv</artifactId>
10-
<version>4.5.1-0</version>
10+
<version>4.5.1-1</version>
1111
<name>OpenPnP OpenCV</name>
1212
<description>OpenCV packaged with native libraries and loader for multiple platforms.</description>
1313
<url>http://github.com/openpnp/opencv</url>

src/main/java/nu/pattern/OpenCV.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,8 @@ public static OS getCurrent() {
6767
static enum Arch {
6868
X86_32("i386", "i686", "x86"),
6969
X86_64("amd64", "x86_64"),
70-
ARMv8("aarch64", "arm64");;
70+
ARMv7("arm"),
71+
ARMv8("aarch64", "arm64");
7172

7273
private final Set<String> patterns;
7374

@@ -361,9 +362,12 @@ private static Path extractNativeBinary(final OS os, final Arch arch) {
361362
case X86_64:
362363
location = "/nu/pattern/opencv/linux/x86_64/libopencv_java451.so";
363364
break;
365+
case ARMv7:
366+
location = "/nu/pattern/opencv/linux/ARMv7/libopencv_java451.so";
367+
break;
364368
case ARMv8:
365-
location = "/nu/pattern/opencv/linux/ARMv8/libopencv_java451.so";
366-
break;
369+
location = "/nu/pattern/opencv/linux/ARMv8/libopencv_java451.so";
370+
break;
367371
default:
368372
throw new UnsupportedPlatformException(os, arch);
369373
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Placeholder

0 commit comments

Comments
 (0)