From a2179b83568901b00f68fd7e6e7549ee4c7f04ba Mon Sep 17 00:00:00 2001 From: qwelyt Date: Thu, 10 Nov 2022 16:15:06 +0100 Subject: [PATCH 01/62] Build with contrib Add opencv_contrib to all platforms. The windows variant just republished the opencv binaries. Now it actually has to build for windows. I hope this actually builds it correctly. --- .github/workflows/build.yml | 82 +++++++++++++++++++++++++++++-------- 1 file changed, 66 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7ab9e4c..b5d741c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -71,7 +71,11 @@ jobs: wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null unzip ${{ env.OPENCV_VERSION }} > /dev/null - + + wget -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null + + base=${PWD} cd opencv-${{ env.OPENCV_VERSION }} mkdir build cd build @@ -91,6 +95,7 @@ jobs: -D BUILD_opencv_apps=OFF \ -D BUILD_opencv_gapi=OFF \ -D CMAKE_BUILD_TYPE=RELEASE \ + -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ .. make -j4 @@ -177,7 +182,11 @@ jobs: wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null unzip ${{ env.OPENCV_VERSION }} > /dev/null + + wget -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null + base=${PWD} cd opencv-${{ env.OPENCV_VERSION }} mkdir build cd build @@ -197,6 +206,7 @@ jobs: -D BUILD_opencv_apps=OFF \ -D BUILD_opencv_gapi=OFF \ -D CMAKE_BUILD_TYPE=RELEASE \ + -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ .. make -j4 @@ -259,6 +269,11 @@ jobs: run: | wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null unzip ${{ env.OPENCV_VERSION }} > /dev/null + + wget -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null + + base=${PWD} cd opencv-${{ env.OPENCV_VERSION }} mkdir build cd build @@ -278,6 +293,7 @@ jobs: -D BUILD_opencv_apps=OFF \ -D BUILD_opencv_gapi=OFF \ -D CMAKE_BUILD_TYPE=RELEASE \ + -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ .. make -j8 @@ -331,6 +347,11 @@ jobs: run: | wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null unzip ${{ env.OPENCV_VERSION }} > /dev/null + + wget -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null + + base=${PWD} cd opencv-${{ env.OPENCV_VERSION }} mkdir build cd build @@ -351,6 +372,7 @@ jobs: -D BUILD_opencv_gapi=OFF \ -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_APPLE_SILICON_PROCESSOR=arm64 \ + -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ .. make -j8 @@ -364,7 +386,7 @@ jobs: - name: Upload Libraries uses: actions/upload-artifact@v2 - with: + with: name: macos-aarch64 path: | opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar @@ -373,14 +395,13 @@ jobs: - # Downloads the Windows distribution from OpenCV, extracts it and uploads - # the native libraries as artifacts for use by subsequent jobs. This is - # in leiu of building the native libraries on Windows. + # Build native libraries for Windows. Uploads the libraries + # as artifacts which are used in subsequent jobs. build_windows: strategy: matrix: - os: [ubuntu-18.04] - java: [15] + os: [ windows-2022 ] + java: [ 15 ] runs-on: ${{ matrix.os }} @@ -399,16 +420,45 @@ jobs: 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 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 - - name: Download Windows Distribution - run: wget -O opencv-${{ env.OPENCV_VERSION }}-vc14_vc15.exe https://sourceforge.net/projects/opencvlibrary/files/${{ env.OPENCV_VERSION }}/opencv-${{ env.OPENCV_VERSION }}-vc14_vc15.exe/download - - - name: Extract Windows Distribution - run: 7z x opencv-${{ env.OPENCV_VERSION }}-vc14_vc15.exe + - name: Build OpenCV + shell: bash + run: | + curl -o opencv.zip + curl -o opencv.zip https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + 7z x opencv.zip > /dev/null + curl -o opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + 7z x opencv_contrib.zip > /dev/null + + base=${PWD} + cd opencv-${{ env.OPENCV_VERSION }} + mkdir build + cd build + cmake \ + -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ + -D BUILD_JAVA=ON \ + -D BUILD_FAT_JAVA_LIB=ON \ + -D OPENCV_ENABLE_NONFREE=ON \ + -D BUILD_SHARED_LIBS=OFF \ + -D BUILD_PERF_TESTS=OFF \ + -D BUILD_TESTS=OFF \ + -D BUILD_EXAMPLES=OFF \ + -D BUILD_DOCS=OFF \ + -D BUILD_PACKAGE=OFF \ + -D BUILD_opencv_python2=OFF \ + -D BUILD_opencv_python3=OFF \ + -D BUILD_opencv_apps=OFF \ + -D BUILD_opencv_gapi=OFF \ + -D CMAKE_BUILD_TYPE=RELEASE \ + -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ + .. + make -j8 + + - name: Upload Libraries uses: actions/upload-artifact@v2 - with: - name: windows-2016 + with: + name: windows-2022 path: opencv/build/java @@ -452,8 +502,8 @@ jobs: cp ubuntu-18.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 - cp windows-2016/x86/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 - cp windows-2016/x64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 + cp windows-2022/x86/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 + cp windows-2022/x64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 - name: Build with Maven run: mvn -B install From 3c2d025627a1e0d643722323dff2b39fc213a386 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Thu, 10 Nov 2022 16:42:33 +0100 Subject: [PATCH 02/62] Use non-depricated versions --- .github/workflows/build.yml | 50 ++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b5d741c..87abf02 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,7 +21,7 @@ jobs: build_linux_arm: strategy: matrix: - os: [ubuntu-18.04] + os: [ ubuntu-20.04 ] java: [8] runs-on: ${{ matrix.os }} @@ -45,9 +45,9 @@ jobs: uses: uraimo/run-on-arch-action@v2.0.9 with: arch: armv7 - distro: ubuntu18.04 + distro: ubuntu20.04 - # Not required, but speeds up builds + # Not required, but speeds up builds githubToken: ${{ github.token }} # Create an artifacts directory @@ -120,8 +120,8 @@ jobs: - name: Upload Artifacts uses: actions/upload-artifact@v2 - with: - name: ubuntu-18.04-arm + with: + name: ubuntu-20.04-arm path: | artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so @@ -132,8 +132,8 @@ jobs: build_linux_arm64: strategy: matrix: - os: [ubuntu-18.04] - java: [15] + os: [ ubuntu-20.04 ] + java: [ 8 ] runs-on: ${{ matrix.os }} @@ -156,9 +156,9 @@ jobs: uses: uraimo/run-on-arch-action@v2.0.9 with: arch: aarch64 - distro: ubuntu18.04 + distro: ubuntu20.04 - # Not required, but speeds up builds + # Not required, but speeds up builds githubToken: ${{ github.token }} # Create an artifacts directory @@ -231,8 +231,8 @@ jobs: - name: Upload Artifacts uses: actions/upload-artifact@v2 - with: - name: ubuntu-18.04-arm64 + with: + name: ubuntu-20.04-arm64 path: | artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so @@ -245,7 +245,7 @@ jobs: build_mac_linux_x64: strategy: matrix: - os: [ubuntu-18.04, macos-10.15] + os: [ ubuntu-20.04, macos-10.15 ] java: [8] runs-on: ${{ matrix.os }} @@ -323,7 +323,7 @@ jobs: build_mac_aarch64: strategy: matrix: - java: [18] + java: [ 8 ] runs-on: [self-hosted, macOS, ARM64] steps: @@ -401,7 +401,7 @@ jobs: strategy: matrix: os: [ windows-2022 ] - java: [ 15 ] + java: [ 8 ] runs-on: ${{ matrix.os }} @@ -471,7 +471,7 @@ jobs: strategy: matrix: - os: [ubuntu-18.04] + os: [ ubuntu-20.04 ] java: [8] runs-on: ${{ matrix.os }} @@ -499,9 +499,9 @@ jobs: cp macos-10.15/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 - cp ubuntu-18.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 - cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 - cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 + cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 + cp ubuntu-20.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 + cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 cp windows-2022/x86/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 cp windows-2022/x64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 @@ -525,7 +525,7 @@ jobs: needs: build_dist strategy: matrix: - os: [macos-10.15, windows-2019, ubuntu-20.04, ubuntu-18.04] + os: [ macos-10.15, windows-2019, ubuntu-20.04, ubuntu-22.04 ] java: [8, 9, 10, 11, 12, 13, 14, 15] runs-on: ${{ matrix.os }} @@ -565,7 +565,7 @@ jobs: strategy: matrix: - os: [ubuntu-18.04] + os: [ ubuntu-20.04 ] java: [8] runs-on: ${{ matrix.os }} @@ -598,11 +598,11 @@ jobs: cp macos-10.15/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 - cp ubuntu-18.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 - cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 - cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 - cp windows-2016/x86/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 - cp windows-2016/x64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 + cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 + cp ubuntu-20.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 + cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 + cp windows-2022/x86/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 + cp windows-2022/x64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 - name: Publish to Apache Maven Central run: mvn -B -e clean deploy -P release-sign-artifacts From cf325294c6bfe3a490a96e263b39c55e9c0106d4 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Fri, 11 Nov 2022 10:03:07 +0100 Subject: [PATCH 03/62] Update to run on ubuntu22.04 and use bash in windows --- .github/workflows/build.yml | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 87abf02..9b95843 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,7 +21,7 @@ jobs: build_linux_arm: strategy: matrix: - os: [ ubuntu-20.04 ] + os: [ ubuntu-22.04 ] java: [8] runs-on: ${{ matrix.os }} @@ -45,7 +45,7 @@ jobs: uses: uraimo/run-on-arch-action@v2.0.9 with: arch: armv7 - distro: ubuntu20.04 + distro: ubuntu22.04 # Not required, but speeds up builds githubToken: ${{ github.token }} @@ -121,7 +121,7 @@ jobs: - name: Upload Artifacts uses: actions/upload-artifact@v2 with: - name: ubuntu-20.04-arm + name: ubuntu-22.04-arm path: | artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so @@ -132,7 +132,7 @@ jobs: build_linux_arm64: strategy: matrix: - os: [ ubuntu-20.04 ] + os: [ ubuntu-22.04 ] java: [ 8 ] runs-on: ${{ matrix.os }} @@ -156,7 +156,7 @@ jobs: uses: uraimo/run-on-arch-action@v2.0.9 with: arch: aarch64 - distro: ubuntu20.04 + distro: ubuntu22.04 # Not required, but speeds up builds githubToken: ${{ github.token }} @@ -232,7 +232,7 @@ jobs: - name: Upload Artifacts uses: actions/upload-artifact@v2 with: - name: ubuntu-20.04-arm64 + name: ubuntu-22.04-arm64 path: | artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so @@ -245,7 +245,7 @@ jobs: build_mac_linux_x64: strategy: matrix: - os: [ ubuntu-20.04, macos-10.15 ] + os: [ ubuntu-22.04, macos-10.15 ] java: [8] runs-on: ${{ matrix.os }} @@ -415,6 +415,7 @@ jobs: java-version: ${{ matrix.java }} - name: Get Version Info + shell: bash run: | 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 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 @@ -471,7 +472,7 @@ jobs: strategy: matrix: - os: [ ubuntu-20.04 ] + os: [ ubuntu-22.04 ] java: [8] runs-on: ${{ matrix.os }} @@ -499,9 +500,9 @@ jobs: cp macos-10.15/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 - cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 - cp ubuntu-20.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 - cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 + cp ubuntu-22.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 + cp ubuntu-22.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 + cp ubuntu-22.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 cp windows-2022/x86/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 cp windows-2022/x64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 @@ -525,7 +526,7 @@ jobs: needs: build_dist strategy: matrix: - os: [ macos-10.15, windows-2019, ubuntu-20.04, ubuntu-22.04 ] + os: [ macos-10.15, windows-2019, ubuntu-22.04, ubuntu-22.04 ] java: [8, 9, 10, 11, 12, 13, 14, 15] runs-on: ${{ matrix.os }} @@ -565,7 +566,7 @@ jobs: strategy: matrix: - os: [ ubuntu-20.04 ] + os: [ ubuntu-22.04 ] java: [8] runs-on: ${{ matrix.os }} @@ -598,9 +599,9 @@ jobs: cp macos-10.15/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 - cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 - cp ubuntu-20.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 - cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 + cp ubuntu-22.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 + cp ubuntu-22.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 + cp ubuntu-22.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 cp windows-2022/x86/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 cp windows-2022/x64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 From 74418283208cb8f6aa64c71ac5f66c53520fe880 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Fri, 11 Nov 2022 10:34:58 +0100 Subject: [PATCH 04/62] Use 20.04 and remove bad line Apparently there is no 22.04 arm image. Go back to 20.04 Remove bad line in the windows runner. --- .github/workflows/build.yml | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9b95843..3eddf5e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,7 +21,7 @@ jobs: build_linux_arm: strategy: matrix: - os: [ ubuntu-22.04 ] + os: [ ubuntu-20.04 ] java: [8] runs-on: ${{ matrix.os }} @@ -45,7 +45,7 @@ jobs: uses: uraimo/run-on-arch-action@v2.0.9 with: arch: armv7 - distro: ubuntu22.04 + distro: ubuntu20.04 # Not required, but speeds up builds githubToken: ${{ github.token }} @@ -121,7 +121,7 @@ jobs: - name: Upload Artifacts uses: actions/upload-artifact@v2 with: - name: ubuntu-22.04-arm + name: ubuntu-20.04-arm path: | artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so @@ -132,7 +132,7 @@ jobs: build_linux_arm64: strategy: matrix: - os: [ ubuntu-22.04 ] + os: [ ubuntu-20.04 ] java: [ 8 ] runs-on: ${{ matrix.os }} @@ -156,7 +156,7 @@ jobs: uses: uraimo/run-on-arch-action@v2.0.9 with: arch: aarch64 - distro: ubuntu22.04 + distro: ubuntu20.04 # Not required, but speeds up builds githubToken: ${{ github.token }} @@ -232,7 +232,7 @@ jobs: - name: Upload Artifacts uses: actions/upload-artifact@v2 with: - name: ubuntu-22.04-arm64 + name: ubuntu-20.04-arm64 path: | artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so @@ -245,7 +245,7 @@ jobs: build_mac_linux_x64: strategy: matrix: - os: [ ubuntu-22.04, macos-10.15 ] + os: [ ubuntu-20.04, macos-10.15 ] java: [8] runs-on: ${{ matrix.os }} @@ -424,7 +424,6 @@ jobs: - name: Build OpenCV shell: bash run: | - curl -o opencv.zip curl -o opencv.zip https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null 7z x opencv.zip > /dev/null @@ -472,7 +471,7 @@ jobs: strategy: matrix: - os: [ ubuntu-22.04 ] + os: [ ubuntu-20.04 ] java: [8] runs-on: ${{ matrix.os }} @@ -500,9 +499,9 @@ jobs: cp macos-10.15/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 - cp ubuntu-22.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 - cp ubuntu-22.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 - cp ubuntu-22.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 + cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 + cp ubuntu-20.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 + cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 cp windows-2022/x86/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 cp windows-2022/x64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 @@ -526,7 +525,7 @@ jobs: needs: build_dist strategy: matrix: - os: [ macos-10.15, windows-2019, ubuntu-22.04, ubuntu-22.04 ] + os: [ macos-10.15, windows-2019, ubuntu-20.04, ubuntu-20.04 ] java: [8, 9, 10, 11, 12, 13, 14, 15] runs-on: ${{ matrix.os }} @@ -566,7 +565,7 @@ jobs: strategy: matrix: - os: [ ubuntu-22.04 ] + os: [ ubuntu-20.04 ] java: [8] runs-on: ${{ matrix.os }} @@ -599,9 +598,9 @@ jobs: cp macos-10.15/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 - cp ubuntu-22.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 - cp ubuntu-22.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 - cp ubuntu-22.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 + cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 + cp ubuntu-20.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 + cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 cp windows-2022/x86/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 cp windows-2022/x64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 From 4b82bb97c8e4b4b08beb4d4942633923402342ac Mon Sep 17 00:00:00 2001 From: qwelyt Date: Fri, 11 Nov 2022 10:44:14 +0100 Subject: [PATCH 05/62] Follow redirect --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3eddf5e..8410da6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -424,10 +424,10 @@ jobs: - name: Build OpenCV shell: bash run: | - curl -o opencv.zip https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + curl -L -o opencv.zip https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null 7z x opencv.zip > /dev/null - curl -o opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + curl -L -o opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null 7z x opencv_contrib.zip > /dev/null base=${PWD} From 222f43439c2addbde9a3248155bb20b68d7f9a47 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Fri, 11 Nov 2022 11:19:17 +0100 Subject: [PATCH 06/62] Install certs and make windows with cmake Arm build fails due to certificate errors. Either we don't care about the certs (bad) or we try to install the correct certs (good) so it doesn't fail on that. Visual Studio is not like the others. You apparently don't get a makefile when using VS to build things. So instead of using `make` you should use `cmake --build .` to actually build it. Let's give that a go. --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8410da6..2746187 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -62,7 +62,7 @@ jobs: run: | apt-get update -q -y - apt-get install -q -y git wget cmake unzip build-essential default-jre default-jdk ant maven python3 + apt-get install -q -y git wget cmake unzip build-essential default-jre default-jdk ant maven python3 ca-certificates # TODO: I'd like to get this path automatically somehow. I think it might be # in /etc/environment but sourcing it didn't seem to work. Need to figure out @@ -173,7 +173,7 @@ jobs: run: | apt-get update -q -y - apt-get install -q -y git wget cmake unzip build-essential default-jre default-jdk ant maven python3 + apt-get install -q -y git wget cmake unzip build-essential default-jre default-jdk ant maven python3 ca-certificates # TODO: I'd like to get this path automatically somehow. I think it might be # in /etc/environment but sourcing it didn't seem to work. Need to figure out @@ -452,7 +452,7 @@ jobs: -D CMAKE_BUILD_TYPE=RELEASE \ -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ .. - make -j8 + cmake --build . --target all - name: Upload Libraries From 66e7584d794c7ee98619bf579fbb5ec4607dffd2 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Fri, 11 Nov 2022 11:47:01 +0100 Subject: [PATCH 07/62] Don't check certs, no windows target --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2746187..e88aba2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -69,10 +69,10 @@ jobs: # where it would be after starting a new shell. export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-armhf - wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + wget --no-check-certificate https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null unzip ${{ env.OPENCV_VERSION }} > /dev/null - wget -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + wget --no-check-certificate -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null base=${PWD} @@ -452,7 +452,7 @@ jobs: -D CMAKE_BUILD_TYPE=RELEASE \ -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ .. - cmake --build . --target all + cmake --build . - name: Upload Libraries From 9257f797309932c3bbf0d448de6f26b8ad1178c4 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Wed, 16 Nov 2022 09:54:56 +0100 Subject: [PATCH 08/62] Go back to 18.04 for arm builds Let's see if the deprecated version of ubuntu works on arm. --- .github/workflows/build.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e88aba2..1c47440 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,7 +21,7 @@ jobs: build_linux_arm: strategy: matrix: - os: [ ubuntu-20.04 ] + os: [ ubuntu-18.04 ] java: [8] runs-on: ${{ matrix.os }} @@ -45,7 +45,7 @@ jobs: uses: uraimo/run-on-arch-action@v2.0.9 with: arch: armv7 - distro: ubuntu20.04 + distro: ubuntu18.04 # Not required, but speeds up builds githubToken: ${{ github.token }} @@ -121,7 +121,7 @@ jobs: - name: Upload Artifacts uses: actions/upload-artifact@v2 with: - name: ubuntu-20.04-arm + name: ubuntu-18.04-arm path: | artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so @@ -132,7 +132,7 @@ jobs: build_linux_arm64: strategy: matrix: - os: [ ubuntu-20.04 ] + os: [ ubuntu-18.04 ] java: [ 8 ] runs-on: ${{ matrix.os }} @@ -156,7 +156,7 @@ jobs: uses: uraimo/run-on-arch-action@v2.0.9 with: arch: aarch64 - distro: ubuntu20.04 + distro: ubuntu18.04 # Not required, but speeds up builds githubToken: ${{ github.token }} @@ -232,7 +232,7 @@ jobs: - name: Upload Artifacts uses: actions/upload-artifact@v2 with: - name: ubuntu-20.04-arm64 + name: ubuntu-18.04-arm64 path: | artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so From 62eb21aaeff932a48f332f8bcca1ad31b3bc56d2 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Thu, 17 Nov 2022 14:38:07 +0100 Subject: [PATCH 09/62] Copy libs --- .github/workflows/build.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1c47440..598f97e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -454,6 +454,15 @@ jobs: .. cmake --build . + - name: Copy Libraries + shell: bash + run: | + cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : + cp opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 || : + + - name: Build with Maven + shell: bash + run: mvn -B test - name: Upload Libraries uses: actions/upload-artifact@v2 From 43d050e5daa21157721defed8b52499071eab858 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Thu, 17 Nov 2022 15:24:39 +0100 Subject: [PATCH 10/62] Debug windows build --- .github/workflows/build.yml | 776 ++++++++++++++++++------------------ 1 file changed, 390 insertions(+), 386 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 598f97e..7d97940 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,381 +18,381 @@ on: pull_request: jobs: - build_linux_arm: - strategy: - matrix: - os: [ ubuntu-18.04 ] - java: [8] - - runs-on: ${{ matrix.os }} - - steps: - - name: Checkout Repo - uses: actions/checkout@v2 - - - name: Setup JDK ${{ matrix.java }} - uses: actions/setup-java@v1 - with: - java-version: ${{ matrix.java }} - - - name: Get Version Info - run: | - 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 - 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 - 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 - - - name: Build OpenCV on Arm - uses: uraimo/run-on-arch-action@v2.0.9 - with: - arch: armv7 - distro: ubuntu18.04 - - # Not required, but speeds up builds - githubToken: ${{ github.token }} - - # Create an artifacts directory - setup: | - mkdir -p "${PWD}/artifacts" - - # Mount the artifacts directory as /artifacts in the container - # Also mount the checked out repo as /host_repo so we can do a test build. - dockerRunArgs: | - --volume "${PWD}/artifacts:/artifacts" - --volume "${PWD}:/host_repo" - - run: | - apt-get update -q -y - apt-get install -q -y git wget cmake unzip build-essential default-jre default-jdk ant maven python3 ca-certificates - - # TODO: I'd like to get this path automatically somehow. I think it might be - # in /etc/environment but sourcing it didn't seem to work. Need to figure out - # where it would be after starting a new shell. - export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-armhf - - wget --no-check-certificate https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - unzip ${{ env.OPENCV_VERSION }} > /dev/null - - wget --no-check-certificate -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null - - base=${PWD} - cd opencv-${{ env.OPENCV_VERSION }} - mkdir build - cd build - cmake \ - -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ - -D BUILD_JAVA=ON \ - -D BUILD_FAT_JAVA_LIB=ON \ - -D OPENCV_ENABLE_NONFREE=ON \ - -D BUILD_SHARED_LIBS=OFF \ - -D BUILD_PERF_TESTS=OFF \ - -D BUILD_TESTS=OFF \ - -D BUILD_EXAMPLES=OFF \ - -D BUILD_DOCS=OFF \ - -D BUILD_PACKAGE=OFF \ - -D BUILD_opencv_python2=OFF \ - -D BUILD_opencv_python3=OFF \ - -D BUILD_opencv_apps=OFF \ - -D BUILD_opencv_gapi=OFF \ - -D CMAKE_BUILD_TYPE=RELEASE \ - -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ - .. - make -j4 - - # Copy the build artifacts to the /artifacts directory, which will be - # used by the host to upload them. - mkdir -p /artifacts/bin - mkdir -p /artifacts/lib - cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /artifacts/bin - cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /artifacts/lib - - # And also copy the build artifacts to the repo, so we can do a test build. - # Note that we use the repo checked out on the host so that we can use - # actions/checkout for the Git stuff, rather than having to mess with - # the authentication in this container. - cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /host_repo/upstream - cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /host_repo/src/main/resources/nu/pattern/opencv/linux/ARMv7 - - # Peform a test build in the host repo, which now contains all of the - # build artifacts. - cd /host_repo - mvn -B test - - - name: Upload Artifacts - uses: actions/upload-artifact@v2 - with: - name: ubuntu-18.04-arm - path: | - artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar - artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so - - - - - build_linux_arm64: - strategy: - matrix: - os: [ ubuntu-18.04 ] - java: [ 8 ] - - runs-on: ${{ matrix.os }} - - steps: - - name: Checkout Repo - uses: actions/checkout@v2 - - - name: Setup JDK ${{ matrix.java }} - uses: actions/setup-java@v1 - with: - java-version: ${{ matrix.java }} - - - name: Get Version Info - run: | - 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 - 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 - 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 - - - name: Build OpenCV on Arm64 - uses: uraimo/run-on-arch-action@v2.0.9 - with: - arch: aarch64 - distro: ubuntu18.04 - - # Not required, but speeds up builds - githubToken: ${{ github.token }} - - # Create an artifacts directory - setup: | - mkdir -p "${PWD}/artifacts" - - # Mount the artifacts directory as /artifacts in the container - # Also mount the checked out repo as /host_repo so we can do a test build. - dockerRunArgs: | - --volume "${PWD}/artifacts:/artifacts" - --volume "${PWD}:/host_repo" - - run: | - apt-get update -q -y - apt-get install -q -y git wget cmake unzip build-essential default-jre default-jdk ant maven python3 ca-certificates - - # TODO: I'd like to get this path automatically somehow. I think it might be - # in /etc/environment but sourcing it didn't seem to work. Need to figure out - # where it would be after starting a new shell. - export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-arm64 - - wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - unzip ${{ env.OPENCV_VERSION }} > /dev/null - - wget -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null - - base=${PWD} - cd opencv-${{ env.OPENCV_VERSION }} - mkdir build - cd build - cmake \ - -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ - -D BUILD_JAVA=ON \ - -D BUILD_FAT_JAVA_LIB=ON \ - -D OPENCV_ENABLE_NONFREE=ON \ - -D BUILD_SHARED_LIBS=OFF \ - -D BUILD_PERF_TESTS=OFF \ - -D BUILD_TESTS=OFF \ - -D BUILD_EXAMPLES=OFF \ - -D BUILD_DOCS=OFF \ - -D BUILD_PACKAGE=OFF \ - -D BUILD_opencv_python2=OFF \ - -D BUILD_opencv_python3=OFF \ - -D BUILD_opencv_apps=OFF \ - -D BUILD_opencv_gapi=OFF \ - -D CMAKE_BUILD_TYPE=RELEASE \ - -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ - .. - make -j4 - - # Copy the build artifacts to the /artifacts directory, which will be - # used by the host to upload them. - mkdir -p /artifacts/bin - mkdir -p /artifacts/lib - cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /artifacts/bin - cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /artifacts/lib - - # And also copy the build artifacts to the repo, so we can do a test build. - # Note that we use the repo checked out on the host so that we can use - # actions/checkout for the Git stuff, rather than having to mess with - # the authentication in this container. - cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /host_repo/upstream - cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /host_repo/src/main/resources/nu/pattern/opencv/linux/ARMv8 - - # Peform a test build in the host repo, which now contains all of the - # build artifacts. - cd /host_repo - mvn -B test - - - name: Upload Artifacts - uses: actions/upload-artifact@v2 - with: - name: ubuntu-18.04-arm64 - path: | - artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar - artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so - - - - - # Build native libraries for Linux and Mac. Uploads the libraries - # as artifacts which are used in subsequent jobs. - build_mac_linux_x64: - strategy: - matrix: - os: [ ubuntu-20.04, macos-10.15 ] - java: [8] - - runs-on: ${{ matrix.os }} - - steps: - - name: Checkout Repo - uses: actions/checkout@v2 - - - name: Setup JDK ${{ matrix.java }} - uses: actions/setup-java@v1 - with: - java-version: ${{ matrix.java }} - - - name: Get Version Info - run: | - 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 - 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 - 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 - - - name: Build OpenCV - run: | - wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - unzip ${{ env.OPENCV_VERSION }} > /dev/null - - wget -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null - - base=${PWD} - cd opencv-${{ env.OPENCV_VERSION }} - mkdir build - cd build - cmake \ - -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ - -D BUILD_JAVA=ON \ - -D BUILD_FAT_JAVA_LIB=ON \ - -D OPENCV_ENABLE_NONFREE=ON \ - -D BUILD_SHARED_LIBS=OFF \ - -D BUILD_PERF_TESTS=OFF \ - -D BUILD_TESTS=OFF \ - -D BUILD_EXAMPLES=OFF \ - -D BUILD_DOCS=OFF \ - -D BUILD_PACKAGE=OFF \ - -D BUILD_opencv_python2=OFF \ - -D BUILD_opencv_python3=OFF \ - -D BUILD_opencv_apps=OFF \ - -D BUILD_opencv_gapi=OFF \ - -D CMAKE_BUILD_TYPE=RELEASE \ - -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ - .. - make -j8 - - - name: Copy Libraries - run: | - cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : - cp opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 || : - cp opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 || : - - - name: Build with Maven - run: mvn -B test - - - name: Upload Libraries - uses: actions/upload-artifact@v2 - with: - name: ${{ matrix.os }} - path: | - opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar - opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so - opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib - - - - - # Build Apple Silicon Mac native binary. - # See https://cmake.org/cmake/help/v3.23/variable/CMAKE_APPLE_SILICON_PROCESSOR.html - build_mac_aarch64: - strategy: - matrix: - java: [ 8 ] - runs-on: [self-hosted, macOS, ARM64] - - steps: - - name: Checkout Repo - uses: actions/checkout@v2 - - - name: Setup JDK ${{ matrix.java }} - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - architecture: aarch64 - java-version: ${{ matrix.java }} - - - name: Get Version Info - run: | - 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 - 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 - 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 - - - name: Build OpenCV - run: | - wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - unzip ${{ env.OPENCV_VERSION }} > /dev/null - - wget -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null - - base=${PWD} - cd opencv-${{ env.OPENCV_VERSION }} - mkdir build - cd build - cmake \ - -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ - -D BUILD_JAVA=ON \ - -D BUILD_FAT_JAVA_LIB=ON \ - -D OPENCV_ENABLE_NONFREE=ON \ - -D BUILD_SHARED_LIBS=OFF \ - -D BUILD_PERF_TESTS=OFF \ - -D BUILD_TESTS=OFF \ - -D BUILD_EXAMPLES=OFF \ - -D BUILD_DOCS=OFF \ - -D BUILD_PACKAGE=OFF \ - -D BUILD_opencv_python2=OFF \ - -D BUILD_opencv_python3=OFF \ - -D BUILD_opencv_apps=OFF \ - -D BUILD_opencv_gapi=OFF \ - -D CMAKE_BUILD_TYPE=RELEASE \ - -D CMAKE_APPLE_SILICON_PROCESSOR=arm64 \ - -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ - .. - make -j8 - - - name: Copy Libraries - run: | - cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : - cp opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 || : - - - name: Build with Maven - run: mvn -B test - - - name: Upload Libraries - uses: actions/upload-artifact@v2 - with: - name: macos-aarch64 - path: | - opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar - opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib - - +# build_linux_arm: + # strategy: + # matrix: + # os: [ ubuntu-18.04 ] + # java: [8] + # + # runs-on: ${{ matrix.os }} + # + # steps: + # - name: Checkout Repo + # uses: actions/checkout@v2 + # + # - name: Setup JDK ${{ matrix.java }} + # uses: actions/setup-java@v1 + # with: + # java-version: ${{ matrix.java }} + # + # - name: Get Version Info + # run: | + # 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 + # 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 + # 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 + # + # - name: Build OpenCV on Arm + # uses: uraimo/run-on-arch-action@v2.0.9 + # with: + # arch: armv7 + # distro: ubuntu18.04 + # + # # Not required, but speeds up builds + # githubToken: ${{ github.token }} + # + # # Create an artifacts directory + # setup: | + # mkdir -p "${PWD}/artifacts" + # + # # Mount the artifacts directory as /artifacts in the container + # # Also mount the checked out repo as /host_repo so we can do a test build. + # dockerRunArgs: | + # --volume "${PWD}/artifacts:/artifacts" + # --volume "${PWD}:/host_repo" + # + # run: | + # apt-get update -q -y + # apt-get install -q -y git wget cmake unzip build-essential default-jre default-jdk ant maven python3 ca-certificates + # + # # TODO: I'd like to get this path automatically somehow. I think it might be + # # in /etc/environment but sourcing it didn't seem to work. Need to figure out + # # where it would be after starting a new shell. + # export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-armhf + # + # wget --no-check-certificate https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + # unzip ${{ env.OPENCV_VERSION }} > /dev/null + # + # wget --no-check-certificate -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + # unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null + # + # base=${PWD} + # cd opencv-${{ env.OPENCV_VERSION }} + # mkdir build + # cd build + # cmake \ + # -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ + # -D BUILD_JAVA=ON \ + # -D BUILD_FAT_JAVA_LIB=ON \ + # -D OPENCV_ENABLE_NONFREE=ON \ + # -D BUILD_SHARED_LIBS=OFF \ + # -D BUILD_PERF_TESTS=OFF \ + # -D BUILD_TESTS=OFF \ + # -D BUILD_EXAMPLES=OFF \ + # -D BUILD_DOCS=OFF \ + # -D BUILD_PACKAGE=OFF \ + # -D BUILD_opencv_python2=OFF \ + # -D BUILD_opencv_python3=OFF \ + # -D BUILD_opencv_apps=OFF \ + # -D BUILD_opencv_gapi=OFF \ + # -D CMAKE_BUILD_TYPE=RELEASE \ + # -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ + # .. + # make -j4 + # + # # Copy the build artifacts to the /artifacts directory, which will be + # # used by the host to upload them. + # mkdir -p /artifacts/bin + # mkdir -p /artifacts/lib + # cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /artifacts/bin + # cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /artifacts/lib + # + # # And also copy the build artifacts to the repo, so we can do a test build. + # # Note that we use the repo checked out on the host so that we can use + # # actions/checkout for the Git stuff, rather than having to mess with + # # the authentication in this container. + # cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /host_repo/upstream + # cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /host_repo/src/main/resources/nu/pattern/opencv/linux/ARMv7 + # + # # Peform a test build in the host repo, which now contains all of the + # # build artifacts. + # cd /host_repo + # mvn -B test + # + # - name: Upload Artifacts + # uses: actions/upload-artifact@v2 + # with: + # name: ubuntu-18.04-arm + # path: | + # artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar + # artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so + # + # + # + # + # build_linux_arm64: + # strategy: + # matrix: + # os: [ ubuntu-18.04 ] + # java: [ 8 ] + # + # runs-on: ${{ matrix.os }} + # + # steps: + # - name: Checkout Repo + # uses: actions/checkout@v2 + # + # - name: Setup JDK ${{ matrix.java }} + # uses: actions/setup-java@v1 + # with: + # java-version: ${{ matrix.java }} + # + # - name: Get Version Info + # run: | + # 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 + # 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 + # 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 + # + # - name: Build OpenCV on Arm64 + # uses: uraimo/run-on-arch-action@v2.0.9 + # with: + # arch: aarch64 + # distro: ubuntu18.04 + # + # # Not required, but speeds up builds + # githubToken: ${{ github.token }} + # + # # Create an artifacts directory + # setup: | + # mkdir -p "${PWD}/artifacts" + # + # # Mount the artifacts directory as /artifacts in the container + # # Also mount the checked out repo as /host_repo so we can do a test build. + # dockerRunArgs: | + # --volume "${PWD}/artifacts:/artifacts" + # --volume "${PWD}:/host_repo" + # + # run: | + # apt-get update -q -y + # apt-get install -q -y git wget cmake unzip build-essential default-jre default-jdk ant maven python3 ca-certificates + # + # # TODO: I'd like to get this path automatically somehow. I think it might be + # # in /etc/environment but sourcing it didn't seem to work. Need to figure out + # # where it would be after starting a new shell. + # export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-arm64 + # + # wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + # unzip ${{ env.OPENCV_VERSION }} > /dev/null + # + # wget -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + # unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null + # + # base=${PWD} + # cd opencv-${{ env.OPENCV_VERSION }} + # mkdir build + # cd build + # cmake \ + # -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ + # -D BUILD_JAVA=ON \ + # -D BUILD_FAT_JAVA_LIB=ON \ + # -D OPENCV_ENABLE_NONFREE=ON \ + # -D BUILD_SHARED_LIBS=OFF \ + # -D BUILD_PERF_TESTS=OFF \ + # -D BUILD_TESTS=OFF \ + # -D BUILD_EXAMPLES=OFF \ + # -D BUILD_DOCS=OFF \ + # -D BUILD_PACKAGE=OFF \ + # -D BUILD_opencv_python2=OFF \ + # -D BUILD_opencv_python3=OFF \ + # -D BUILD_opencv_apps=OFF \ + # -D BUILD_opencv_gapi=OFF \ + # -D CMAKE_BUILD_TYPE=RELEASE \ + # -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ + # .. + # make -j4 + # + # # Copy the build artifacts to the /artifacts directory, which will be + # # used by the host to upload them. + # mkdir -p /artifacts/bin + # mkdir -p /artifacts/lib + # cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /artifacts/bin + # cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /artifacts/lib + # + # # And also copy the build artifacts to the repo, so we can do a test build. + # # Note that we use the repo checked out on the host so that we can use + # # actions/checkout for the Git stuff, rather than having to mess with + # # the authentication in this container. + # cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /host_repo/upstream + # cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /host_repo/src/main/resources/nu/pattern/opencv/linux/ARMv8 + # + # # Peform a test build in the host repo, which now contains all of the + # # build artifacts. + # cd /host_repo + # mvn -B test + # + # - name: Upload Artifacts + # uses: actions/upload-artifact@v2 + # with: + # name: ubuntu-18.04-arm64 + # path: | + # artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar + # artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so + # + # + # + # + # # Build native libraries for Linux and Mac. Uploads the libraries + # # as artifacts which are used in subsequent jobs. + # build_mac_linux_x64: + # strategy: + # matrix: + # os: [ ubuntu-20.04, macos-10.15 ] + # java: [8] + # + # runs-on: ${{ matrix.os }} + # + # steps: + # - name: Checkout Repo + # uses: actions/checkout@v2 + # + # - name: Setup JDK ${{ matrix.java }} + # uses: actions/setup-java@v1 + # with: + # java-version: ${{ matrix.java }} + # + # - name: Get Version Info + # run: | + # 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 + # 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 + # 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 + # + # - name: Build OpenCV + # run: | + # wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + # unzip ${{ env.OPENCV_VERSION }} > /dev/null + # + # wget -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + # unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null + # + # base=${PWD} + # cd opencv-${{ env.OPENCV_VERSION }} + # mkdir build + # cd build + # cmake \ + # -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ + # -D BUILD_JAVA=ON \ + # -D BUILD_FAT_JAVA_LIB=ON \ + # -D OPENCV_ENABLE_NONFREE=ON \ + # -D BUILD_SHARED_LIBS=OFF \ + # -D BUILD_PERF_TESTS=OFF \ + # -D BUILD_TESTS=OFF \ + # -D BUILD_EXAMPLES=OFF \ + # -D BUILD_DOCS=OFF \ + # -D BUILD_PACKAGE=OFF \ + # -D BUILD_opencv_python2=OFF \ + # -D BUILD_opencv_python3=OFF \ + # -D BUILD_opencv_apps=OFF \ + # -D BUILD_opencv_gapi=OFF \ + # -D CMAKE_BUILD_TYPE=RELEASE \ + # -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ + # .. + # make -j8 + # + # - name: Copy Libraries + # run: | + # cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : + # cp opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 || : + # cp opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 || : + # + # - name: Build with Maven + # run: mvn -B test + # + # - name: Upload Libraries + # uses: actions/upload-artifact@v2 + # with: + # name: ${{ matrix.os }} + # path: | + # opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar + # opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so + # opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib + # + # + # + # + # # Build Apple Silicon Mac native binary. + # # See https://cmake.org/cmake/help/v3.23/variable/CMAKE_APPLE_SILICON_PROCESSOR.html + # build_mac_aarch64: + # strategy: + # matrix: + # java: [ 8 ] + # runs-on: [self-hosted, macOS, ARM64] + # + # steps: + # - name: Checkout Repo + # uses: actions/checkout@v2 + # + # - name: Setup JDK ${{ matrix.java }} + # uses: actions/setup-java@v3 + # with: + # distribution: 'temurin' + # architecture: aarch64 + # java-version: ${{ matrix.java }} + # + # - name: Get Version Info + # run: | + # 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 + # 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 + # 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 + # + # - name: Build OpenCV + # run: | + # wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + # unzip ${{ env.OPENCV_VERSION }} > /dev/null + # + # wget -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + # unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null + # + # base=${PWD} + # cd opencv-${{ env.OPENCV_VERSION }} + # mkdir build + # cd build + # cmake \ + # -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ + # -D BUILD_JAVA=ON \ + # -D BUILD_FAT_JAVA_LIB=ON \ + # -D OPENCV_ENABLE_NONFREE=ON \ + # -D BUILD_SHARED_LIBS=OFF \ + # -D BUILD_PERF_TESTS=OFF \ + # -D BUILD_TESTS=OFF \ + # -D BUILD_EXAMPLES=OFF \ + # -D BUILD_DOCS=OFF \ + # -D BUILD_PACKAGE=OFF \ + # -D BUILD_opencv_python2=OFF \ + # -D BUILD_opencv_python3=OFF \ + # -D BUILD_opencv_apps=OFF \ + # -D BUILD_opencv_gapi=OFF \ + # -D CMAKE_BUILD_TYPE=RELEASE \ + # -D CMAKE_APPLE_SILICON_PROCESSOR=arm64 \ + # -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ + # .. + # make -j8 + # + # - name: Copy Libraries + # run: | + # cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : + # cp opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 || : + # + # - name: Build with Maven + # run: mvn -B test + # + # - name: Upload Libraries + # uses: actions/upload-artifact@v2 + # with: + # name: macos-aarch64 + # path: | + # opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar + # opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib + # + # # Build native libraries for Windows. Uploads the libraries @@ -452,7 +452,10 @@ jobs: -D CMAKE_BUILD_TYPE=RELEASE \ -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ .. - cmake --build . + cmake --build . --config release + cmake --build . --target install --config release + + ls -lahR - name: Copy Libraries shell: bash @@ -476,12 +479,13 @@ jobs: # Download and combine the artifacts from the above jobs and build the # distribution jar. Uploads it as an artifact for subsequent steps. build_dist: - needs: [build_mac_aarch64, build_linux_arm, build_linux_arm64, build_mac_linux_x64, build_windows] + # needs: [build_mac_aarch64, build_linux_arm, build_linux_arm64, build_mac_linux_x64, build_windows] + needs: [ build_windows ] strategy: matrix: os: [ ubuntu-20.04 ] - java: [8] + java: [ 8 ] runs-on: ${{ matrix.os }} @@ -505,14 +509,14 @@ jobs: - name: Copy Binaries run: | - cp macos-10.15/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream - cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 - cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 - cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 - cp ubuntu-20.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 - cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 - cp windows-2022/x86/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 - cp windows-2022/x64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 + # cp macos-10.15/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream + # cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 + # cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 + # cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 + # cp ubuntu-20.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 + # cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 + cp windows-2022/x86/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 + cp windows-2022/x64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 - name: Build with Maven run: mvn -B install From 2106b2807279fe16eea6fe1df5c4e505c492c771 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Wed, 23 Nov 2022 09:34:58 +0100 Subject: [PATCH 11/62] Update windows build and add test contrib --- .github/workflows/build.yml | 11 ++++---- src/test/java/nu/pattern/ImgHashTest.java | 32 +++++++++++++++++++++++ 2 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 src/test/java/nu/pattern/ImgHashTest.java diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7d97940..8f2e56f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -424,6 +424,9 @@ jobs: - name: Build OpenCV shell: bash run: | + # For some reason the windows install needs numpy. No idea why. + pip install numpy + curl -L -o opencv.zip https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null 7z x opencv.zip > /dev/null @@ -435,6 +438,7 @@ jobs: mkdir build cd build cmake \ + -G "MinGW Makefiles" -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ -D BUILD_JAVA=ON \ -D BUILD_FAT_JAVA_LIB=ON \ @@ -452,16 +456,13 @@ jobs: -D CMAKE_BUILD_TYPE=RELEASE \ -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ .. - cmake --build . --config release - cmake --build . --target install --config release + mingw32-make -j8 - ls -lahR - - name: Copy Libraries shell: bash run: | cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : - cp opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 || : + cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 || : - name: Build with Maven shell: bash diff --git a/src/test/java/nu/pattern/ImgHashTest.java b/src/test/java/nu/pattern/ImgHashTest.java new file mode 100644 index 0000000..0c2b3a8 --- /dev/null +++ b/src/test/java/nu/pattern/ImgHashTest.java @@ -0,0 +1,32 @@ +package nu.pattern; + +import org.junit.Assert; +import org.junit.Test; +import org.opencv.core.CvType; +import org.opencv.core.Mat; +import org.opencv.core.Point; +import org.opencv.core.Scalar; +import org.opencv.img_hash.Img_hash; +import org.opencv.imgproc.Imgproc; + +public class ImgHashTest { + static { + OpenCV.loadLocally(); + } + @Test + public void testImgHash(){ + Mat mat = new Mat(400, 400, CvType.CV_8U); + mat.setTo(new Scalar(0)); + Imgproc.circle( + mat, + new Point(200, 200), + 20, + new Scalar(100), + -1); + + Mat output = new Mat(400, 400, CvType.CV_8U); + Img_hash.pHash(mat, output); + Assert.assertEquals(2, output.dims()); + Assert.assertEquals("[153, 238, 102, 59, 153, 206, 102, 51]", output.dump()); + } +} From 6ee02f34f4c971cd14e4fe2a5688d0ee76684aee Mon Sep 17 00:00:00 2001 From: qwelyt Date: Wed, 23 Nov 2022 09:44:36 +0100 Subject: [PATCH 12/62] Change to unzip and remove bad path --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8f2e56f..a159061 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -428,10 +428,10 @@ jobs: pip install numpy curl -L -o opencv.zip https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - 7z x opencv.zip > /dev/null + unzip opencv.zip > /dev/null curl -L -o opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - 7z x opencv_contrib.zip > /dev/null + unzip opencv_contrib.zip > /dev/null base=${PWD} cd opencv-${{ env.OPENCV_VERSION }} @@ -454,7 +454,7 @@ jobs: -D BUILD_opencv_apps=OFF \ -D BUILD_opencv_gapi=OFF \ -D CMAKE_BUILD_TYPE=RELEASE \ - -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ + -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules \ .. mingw32-make -j8 From eaea13e59019980df319568a4651d2a9134771ef Mon Sep 17 00:00:00 2001 From: qwelyt Date: Wed, 23 Nov 2022 09:47:43 +0100 Subject: [PATCH 13/62] Stupid missing backslash --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a159061..5cb02f0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -438,7 +438,7 @@ jobs: mkdir build cd build cmake \ - -G "MinGW Makefiles" + -G "MinGW Makefiles" \ -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ -D BUILD_JAVA=ON \ -D BUILD_FAT_JAVA_LIB=ON \ From de3b4b4ab29c301b2a8f25b9efa1213ac61dbe4d Mon Sep 17 00:00:00 2001 From: qwelyt Date: Wed, 23 Nov 2022 11:26:16 +0100 Subject: [PATCH 14/62] ANT_HOME is not set in runner, try to find it --- .github/workflows/build.yml | 107 +++++++++++++++++++----------------- 1 file changed, 58 insertions(+), 49 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5cb02f0..d7582d9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -424,55 +424,64 @@ jobs: - name: Build OpenCV shell: bash run: | - # For some reason the windows install needs numpy. No idea why. - pip install numpy - - curl -L -o opencv.zip https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - unzip opencv.zip > /dev/null - - curl -L -o opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - unzip opencv_contrib.zip > /dev/null - - base=${PWD} - cd opencv-${{ env.OPENCV_VERSION }} - mkdir build - cd build - cmake \ - -G "MinGW Makefiles" \ - -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ - -D BUILD_JAVA=ON \ - -D BUILD_FAT_JAVA_LIB=ON \ - -D OPENCV_ENABLE_NONFREE=ON \ - -D BUILD_SHARED_LIBS=OFF \ - -D BUILD_PERF_TESTS=OFF \ - -D BUILD_TESTS=OFF \ - -D BUILD_EXAMPLES=OFF \ - -D BUILD_DOCS=OFF \ - -D BUILD_PACKAGE=OFF \ - -D BUILD_opencv_python2=OFF \ - -D BUILD_opencv_python3=OFF \ - -D BUILD_opencv_apps=OFF \ - -D BUILD_opencv_gapi=OFF \ - -D CMAKE_BUILD_TYPE=RELEASE \ - -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules \ - .. - mingw32-make -j8 - - - name: Copy Libraries - shell: bash - run: | - cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : - cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 || : - - - name: Build with Maven - shell: bash - run: mvn -B test - - - name: Upload Libraries - uses: actions/upload-artifact@v2 - with: - name: windows-2022 - path: opencv/build/java + # Figure out where ANT is + which ant + ls -lah ${MAVEN_HOME} + cd ${MAVEN_HOME} + cd .. + ls -lah + cd .. + ls -lah + cd .. + ls -lah +# pip install numpy +# +# curl -L -o opencv.zip https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null +# unzip opencv.zip > /dev/null +# +# curl -L -o opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null +# unzip opencv_contrib.zip > /dev/null +# +# base=${PWD} +# cd opencv-${{ env.OPENCV_VERSION }} +# mkdir build +# cd build +# cmake \ +# -G "MinGW Makefiles" \ +# -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ +# -D BUILD_JAVA=ON \ +# -D BUILD_FAT_JAVA_LIB=ON \ +# -D OPENCV_ENABLE_NONFREE=ON \ +# -D BUILD_SHARED_LIBS=OFF \ +# -D BUILD_PERF_TESTS=OFF \ +# -D BUILD_TESTS=OFF \ +# -D BUILD_EXAMPLES=OFF \ +# -D BUILD_DOCS=OFF \ +# -D BUILD_PACKAGE=OFF \ +# -D BUILD_opencv_python2=OFF \ +# -D BUILD_opencv_python3=OFF \ +# -D BUILD_opencv_apps=OFF \ +# -D BUILD_opencv_gapi=OFF \ +# -D CMAKE_BUILD_TYPE=RELEASE \ +# -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules \ +# .. +# mingw32-make -j8 +# +# - name: Copy Libraries +# shell: bash +# run: | +# cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : +# cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 || : +# +# - name: Build with Maven +# shell: bash +# run: mvn -B test +# +# - name: Upload Libraries +# uses: actions/upload-artifact@v2 +# with: +# name: windows-2022 +# path: opencv/build/java From c99c070f4aca90f6b730dd465bcbaf35144b4ad2 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Wed, 23 Nov 2022 11:32:50 +0100 Subject: [PATCH 15/62] Log --- .github/workflows/build.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d7582d9..8990337 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -425,14 +425,23 @@ jobs: shell: bash run: | # Figure out where ANT is + echo "Ant" which ant - ls -lah ${MAVEN_HOME} + echo "MAVEN_HOME" + echo ${MAVEN_HOME} + echo "JAVA_HOME" + echo ${JAVA_HOME} + echo "Start moving..." cd ${MAVEN_HOME} + echo ${PWD} cd .. + echo ${PWD} ls -lah cd .. + echo ${PWD} ls -lah cd .. + echo ${PWD} ls -lah # pip install numpy # From cb393d0ebff2940f2bad55adf15c801f400ac6a3 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Wed, 23 Nov 2022 11:36:56 +0100 Subject: [PATCH 16/62] MAVEN_HOME is not set. Move from JAVA_HOME --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8990337..15c0a06 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -432,7 +432,7 @@ jobs: echo "JAVA_HOME" echo ${JAVA_HOME} echo "Start moving..." - cd ${MAVEN_HOME} + cd ${JAVA_HOME} echo ${PWD} cd .. echo ${PWD} From 62e2171206a270ed0c0e0f2b683e4f328108e695 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Wed, 23 Nov 2022 11:41:20 +0100 Subject: [PATCH 17/62] Log ant --- .github/workflows/build.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 15c0a06..9f1ab2e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -427,6 +427,10 @@ jobs: # Figure out where ANT is echo "Ant" which ant + antbin=$(which ant) + ls -lah ${antbin}/.. + ls -lah ${antbin}/../.. + ls -lah ${antbin}/../.. echo "MAVEN_HOME" echo ${MAVEN_HOME} echo "JAVA_HOME" From 336fb42b12cb0ce4a2a5f4dfc9ab4f14c1fd29cd Mon Sep 17 00:00:00 2001 From: qwelyt Date: Wed, 23 Nov 2022 11:48:33 +0100 Subject: [PATCH 18/62] Just show me everything --- .github/workflows/build.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9f1ab2e..fad35fd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -427,10 +427,6 @@ jobs: # Figure out where ANT is echo "Ant" which ant - antbin=$(which ant) - ls -lah ${antbin}/.. - ls -lah ${antbin}/../.. - ls -lah ${antbin}/../.. echo "MAVEN_HOME" echo ${MAVEN_HOME} echo "JAVA_HOME" @@ -447,6 +443,9 @@ jobs: cd .. echo ${PWD} ls -lah + + echo "F it" + ls -lahR /c/ # pip install numpy # # curl -L -o opencv.zip https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null From c5afe76bc67806db5db818278f77e8bcd56f53c7 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Wed, 23 Nov 2022 13:34:28 +0100 Subject: [PATCH 19/62] Install ant and see if env var gets set --- .github/workflows/build.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fad35fd..4acff2e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -424,6 +424,7 @@ jobs: - name: Build OpenCV shell: bash run: | + choco install ant # Figure out where ANT is echo "Ant" which ant @@ -444,8 +445,11 @@ jobs: echo ${PWD} ls -lah - echo "F it" - ls -lahR /c/ + echo "Chocolate" + ls -lah /c/ProgramData/Chocolatey/ + echo "ProgramData" + ls -lah /c/ProgramData + # pip install numpy # # curl -L -o opencv.zip https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null From 387565ee9540df65869599800c3a68dd6579bcee Mon Sep 17 00:00:00 2001 From: qwelyt Date: Wed, 23 Nov 2022 13:44:03 +0100 Subject: [PATCH 20/62] dfj --- .github/workflows/build.yml | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4acff2e..08c7ff1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -424,32 +424,20 @@ jobs: - name: Build OpenCV shell: bash run: | - choco install ant # Figure out where ANT is echo "Ant" which ant + echo ${ANT_HOME} echo "MAVEN_HOME" echo ${MAVEN_HOME} echo "JAVA_HOME" echo ${JAVA_HOME} - echo "Start moving..." - cd ${JAVA_HOME} - echo ${PWD} - cd .. - echo ${PWD} - ls -lah - cd .. - echo ${PWD} - ls -lah - cd .. - echo ${PWD} - ls -lah - - echo "Chocolate" - ls -lah /c/ProgramData/Chocolatey/ - echo "ProgramData" - ls -lah /c/ProgramData + choco install --force ant + echo "Recheck now" + which ant + echo ${ANT_HOME} + # pip install numpy # # curl -L -o opencv.zip https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null From 2a2f97b34c2b990c61728184868945fe56430a77 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Wed, 23 Nov 2022 13:48:35 +0100 Subject: [PATCH 21/62] Ant should be there hope opencv finds it --- .github/workflows/build.yml | 99 ++++++++++++++++++------------------- 1 file changed, 47 insertions(+), 52 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 08c7ff1..1dfb7be 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -433,59 +433,54 @@ jobs: echo "JAVA_HOME" echo ${JAVA_HOME} - choco install --force ant - echo "Recheck now" - which ant - echo ${ANT_HOME} + pip install numpy + + curl -L -o opencv.zip https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + unzip opencv.zip > /dev/null + + curl -L -o opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + unzip opencv_contrib.zip > /dev/null + + base=${PWD} + cd opencv-${{ env.OPENCV_VERSION }} + mkdir build + cd build + cmake \ + -G "MinGW Makefiles" \ + -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ + -D BUILD_JAVA=ON \ + -D BUILD_FAT_JAVA_LIB=ON \ + -D OPENCV_ENABLE_NONFREE=ON \ + -D BUILD_SHARED_LIBS=OFF \ + -D BUILD_PERF_TESTS=OFF \ + -D BUILD_TESTS=OFF \ + -D BUILD_EXAMPLES=OFF \ + -D BUILD_DOCS=OFF \ + -D BUILD_PACKAGE=OFF \ + -D BUILD_opencv_python2=OFF \ + -D BUILD_opencv_python3=OFF \ + -D BUILD_opencv_apps=OFF \ + -D BUILD_opencv_gapi=OFF \ + -D CMAKE_BUILD_TYPE=RELEASE \ + -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules \ + .. + mingw32-make -j8 + + - name: Copy Libraries + shell: bash + run: | + cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : + cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 || : -# pip install numpy -# -# curl -L -o opencv.zip https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null -# unzip opencv.zip > /dev/null -# -# curl -L -o opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null -# unzip opencv_contrib.zip > /dev/null -# -# base=${PWD} -# cd opencv-${{ env.OPENCV_VERSION }} -# mkdir build -# cd build -# cmake \ -# -G "MinGW Makefiles" \ -# -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ -# -D BUILD_JAVA=ON \ -# -D BUILD_FAT_JAVA_LIB=ON \ -# -D OPENCV_ENABLE_NONFREE=ON \ -# -D BUILD_SHARED_LIBS=OFF \ -# -D BUILD_PERF_TESTS=OFF \ -# -D BUILD_TESTS=OFF \ -# -D BUILD_EXAMPLES=OFF \ -# -D BUILD_DOCS=OFF \ -# -D BUILD_PACKAGE=OFF \ -# -D BUILD_opencv_python2=OFF \ -# -D BUILD_opencv_python3=OFF \ -# -D BUILD_opencv_apps=OFF \ -# -D BUILD_opencv_gapi=OFF \ -# -D CMAKE_BUILD_TYPE=RELEASE \ -# -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules \ -# .. -# mingw32-make -j8 -# -# - name: Copy Libraries -# shell: bash -# run: | -# cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : -# cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 || : -# -# - name: Build with Maven -# shell: bash -# run: mvn -B test -# -# - name: Upload Libraries -# uses: actions/upload-artifact@v2 -# with: -# name: windows-2022 -# path: opencv/build/java + - name: Build with Maven + shell: bash + run: mvn -B test + + - name: Upload Libraries + uses: actions/upload-artifact@v2 + with: + name: windows-2022 + path: opencv/build/java From 669864d331faf632032b63bf13b4ab8485caf159 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Wed, 23 Nov 2022 13:56:57 +0100 Subject: [PATCH 22/62] Set ant path for cmake --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1dfb7be..9eb17a4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -432,6 +432,7 @@ jobs: echo ${MAVEN_HOME} echo "JAVA_HOME" echo ${JAVA_HOME} + ant_path=$(which ant) pip install numpy @@ -447,6 +448,7 @@ jobs: cd build cmake \ -G "MinGW Makefiles" \ + -D ANT_EXECUTABLE:FILEPATH=${ant_path} \ -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ -D BUILD_JAVA=ON \ -D BUILD_FAT_JAVA_LIB=ON \ From 200cf24e30a8b976fa4fcb6bf0d22717813964ab Mon Sep 17 00:00:00 2001 From: qwelyt Date: Wed, 23 Nov 2022 15:39:10 +0100 Subject: [PATCH 23/62] Add slash remove or --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9eb17a4..5a141db 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -471,8 +471,8 @@ jobs: - name: Copy Libraries shell: bash run: | - cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : - cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 || : + cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream/ + cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/ - name: Build with Maven shell: bash From 49e67894148eaa1cb4c49cf1574532479975e574 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Thu, 24 Nov 2022 09:20:56 +0100 Subject: [PATCH 24/62] Remove windows test Need to get the artifact on an actual computer to debug what happens here. Why won't it call it correctly? --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5a141db..112c2ba 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -474,9 +474,9 @@ jobs: cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream/ cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/ - - name: Build with Maven - shell: bash - run: mvn -B test +# - name: Build with Maven +# shell: bash +# run: mvn -B test - name: Upload Libraries uses: actions/upload-artifact@v2 From 6e2e8800de2d7791baa4ae8a3b86a7e92c7dcc8d Mon Sep 17 00:00:00 2001 From: qwelyt Date: Thu, 24 Nov 2022 09:56:59 +0100 Subject: [PATCH 25/62] Aha, wrong hard-coded search path. `libopencv_VERSION.dll` vs `opencv_version.dll` --- .github/workflows/build.yml | 6 +++--- src/main/java/nu/pattern/OpenCV.java | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 112c2ba..5a141db 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -474,9 +474,9 @@ jobs: cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream/ cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/ -# - name: Build with Maven -# shell: bash -# run: mvn -B test + - name: Build with Maven + shell: bash + run: mvn -B test - name: Upload Libraries uses: actions/upload-artifact@v2 diff --git a/src/main/java/nu/pattern/OpenCV.java b/src/main/java/nu/pattern/OpenCV.java index af73f8e..d4cb2f0 100644 --- a/src/main/java/nu/pattern/OpenCV.java +++ b/src/main/java/nu/pattern/OpenCV.java @@ -387,10 +387,10 @@ private static Path extractNativeBinary(final OS os, final Arch arch) { case WINDOWS: switch (arch) { case X86_32: - location = "/nu/pattern/opencv/windows/x86_32/opencv_java455.dll"; + location = "/nu/pattern/opencv/windows/x86_32/libopencv_java455.dll"; break; case X86_64: - location = "/nu/pattern/opencv/windows/x86_64/opencv_java455.dll"; + location = "/nu/pattern/opencv/windows/x86_64/libopencv_java455.dll"; break; default: throw new UnsupportedPlatformException(os, arch); From 1d04febd53b371949dd1ae8ed185a8620c13e273 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Thu, 24 Nov 2022 10:12:09 +0100 Subject: [PATCH 26/62] Fix windows dll name --- .github/workflows/build.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5a141db..289d714 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -526,8 +526,8 @@ jobs: # cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 # cp ubuntu-20.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 # cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 - cp windows-2022/x86/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 - cp windows-2022/x64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 + # cp windows-2022/x86/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 + cp windows-2022/x64/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 - name: Build with Maven run: mvn -B install @@ -619,14 +619,14 @@ jobs: - name: Copy Binaries run: | - cp macos-10.15/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream - cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 - cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 - cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 - cp ubuntu-20.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 - cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 - cp windows-2022/x86/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 - cp windows-2022/x64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 +# cp macos-10.15/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream +# cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 +# cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 +# cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 +# cp ubuntu-20.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 +# cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 +# cp windows-2022/x86/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 + cp windows-2022/x64/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 - name: Publish to Apache Maven Central run: mvn -B -e clean deploy -P release-sign-artifacts From 117407556d58af4cd300f3b60a79e35946492be7 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Thu, 24 Nov 2022 10:13:58 +0100 Subject: [PATCH 27/62] Format --- .github/workflows/build.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 289d714..21cd839 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,12 +13,12 @@ name: Build OpenPnP OpenCV Distribution -on: +on: push: pull_request: jobs: -# build_linux_arm: + # build_linux_arm: # strategy: # matrix: # os: [ ubuntu-18.04 ] @@ -534,7 +534,7 @@ jobs: - name: Upload Distribution uses: actions/upload-artifact@v2 - with: + with: name: dist path: target/opencv* @@ -550,7 +550,7 @@ jobs: strategy: matrix: os: [ macos-10.15, windows-2019, ubuntu-20.04, ubuntu-20.04 ] - java: [8, 9, 10, 11, 12, 13, 14, 15] + java: [ 8, 9, 10, 11, 12, 13, 14, 15 ] runs-on: ${{ matrix.os }} @@ -590,7 +590,7 @@ jobs: strategy: matrix: os: [ ubuntu-20.04 ] - java: [8] + java: [ 8 ] runs-on: ${{ matrix.os }} @@ -619,14 +619,14 @@ jobs: - name: Copy Binaries run: | -# cp macos-10.15/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream -# cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 -# cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 -# cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 -# cp ubuntu-20.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 -# cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 -# cp windows-2022/x86/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 - cp windows-2022/x64/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 + # cp macos-10.15/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream + # cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 + # cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 + # cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 + # cp ubuntu-20.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 + # cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 + # cp windows-2022/x86/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 + cp windows-2022/x64/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 - name: Publish to Apache Maven Central run: mvn -B -e clean deploy -P release-sign-artifacts From 999e173d2c6b5a282ae1726b4c8e37e54d99d9aa Mon Sep 17 00:00:00 2001 From: qwelyt Date: Thu, 24 Nov 2022 11:12:19 +0100 Subject: [PATCH 28/62] Rename dll --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 21cd839..a17bfdf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -472,7 +472,7 @@ jobs: shell: bash run: | cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream/ - cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/ + cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll - name: Build with Maven shell: bash @@ -527,7 +527,7 @@ jobs: # cp ubuntu-20.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 # cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 # cp windows-2022/x86/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 - cp windows-2022/x64/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 + cp windows-2022/x64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 - name: Build with Maven run: mvn -B install From d6243e2a012a49efe05ae42b20dc8eaa06ab10a0 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Thu, 24 Nov 2022 12:44:38 +0100 Subject: [PATCH 29/62] Stupid hardcoded paths --- src/main/java/nu/pattern/OpenCV.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/nu/pattern/OpenCV.java b/src/main/java/nu/pattern/OpenCV.java index d4cb2f0..af73f8e 100644 --- a/src/main/java/nu/pattern/OpenCV.java +++ b/src/main/java/nu/pattern/OpenCV.java @@ -387,10 +387,10 @@ private static Path extractNativeBinary(final OS os, final Arch arch) { case WINDOWS: switch (arch) { case X86_32: - location = "/nu/pattern/opencv/windows/x86_32/libopencv_java455.dll"; + location = "/nu/pattern/opencv/windows/x86_32/opencv_java455.dll"; break; case X86_64: - location = "/nu/pattern/opencv/windows/x86_64/libopencv_java455.dll"; + location = "/nu/pattern/opencv/windows/x86_64/opencv_java455.dll"; break; default: throw new UnsupportedPlatformException(os, arch); From ca6c53d952916f402f3a015fe64f791e58979cbe Mon Sep 17 00:00:00 2001 From: qwelyt Date: Thu, 24 Nov 2022 15:40:14 +0100 Subject: [PATCH 30/62] Do mvn test with powershell --- .github/workflows/build.yml | 5 ++--- src/main/java/nu/pattern/OpenCV.java | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a17bfdf..7393295 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -472,10 +472,9 @@ jobs: shell: bash run: | cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream/ - cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll + cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 - name: Build with Maven - shell: bash run: mvn -B test - name: Upload Libraries @@ -527,7 +526,7 @@ jobs: # cp ubuntu-20.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 # cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 # cp windows-2022/x86/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 - cp windows-2022/x64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 + cp windows-2022/x64/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 - name: Build with Maven run: mvn -B install diff --git a/src/main/java/nu/pattern/OpenCV.java b/src/main/java/nu/pattern/OpenCV.java index af73f8e..d4cb2f0 100644 --- a/src/main/java/nu/pattern/OpenCV.java +++ b/src/main/java/nu/pattern/OpenCV.java @@ -387,10 +387,10 @@ private static Path extractNativeBinary(final OS os, final Arch arch) { case WINDOWS: switch (arch) { case X86_32: - location = "/nu/pattern/opencv/windows/x86_32/opencv_java455.dll"; + location = "/nu/pattern/opencv/windows/x86_32/libopencv_java455.dll"; break; case X86_64: - location = "/nu/pattern/opencv/windows/x86_64/opencv_java455.dll"; + location = "/nu/pattern/opencv/windows/x86_64/libopencv_java455.dll"; break; default: throw new UnsupportedPlatformException(os, arch); From 2fede8cc0dc007e9f19554ebc274e06b209b01ea Mon Sep 17 00:00:00 2001 From: qwelyt Date: Thu, 24 Nov 2022 16:26:49 +0100 Subject: [PATCH 31/62] No tests on windows --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7393295..35f5bd0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -474,8 +474,8 @@ jobs: cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream/ cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 - - name: Build with Maven - run: mvn -B test +# - name: Build with Maven +# run: mvn -B test - name: Upload Libraries uses: actions/upload-artifact@v2 From a3a0fead784d9e670182ca87cbb612f9a58094b3 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Thu, 24 Nov 2022 16:27:28 +0100 Subject: [PATCH 32/62] We only have two cores on windows, see if this is faster --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 35f5bd0..2ce249a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -466,7 +466,7 @@ jobs: -D CMAKE_BUILD_TYPE=RELEASE \ -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules \ .. - mingw32-make -j8 + mingw32-make -j2 - name: Copy Libraries shell: bash From 29e61c20ff0e9c7d06c9d146a64d623bde4c62e0 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Fri, 25 Nov 2022 10:02:45 +0100 Subject: [PATCH 33/62] Change artifacts paths --- .github/workflows/build.yml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2ce249a..d4e975a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -471,8 +471,8 @@ jobs: - name: Copy Libraries shell: bash run: | - cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream/ - cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 + cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : + cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 || : # - name: Build with Maven # run: mvn -B test @@ -480,8 +480,10 @@ jobs: - name: Upload Libraries uses: actions/upload-artifact@v2 with: - name: windows-2022 - path: opencv/build/java + name: ${{ matrix.os }} + path: | + opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar + opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll @@ -526,7 +528,8 @@ jobs: # cp ubuntu-20.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 # cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 # cp windows-2022/x86/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 - cp windows-2022/x64/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 + cp windows-2022/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream + cp windows-2022/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 - name: Build with Maven run: mvn -B install From 9b84edd9bfe4f53eea1a0b916ce29b0fef8add6b Mon Sep 17 00:00:00 2001 From: qwelyt Date: Fri, 25 Nov 2022 10:48:41 +0100 Subject: [PATCH 34/62] Where are the files --- .github/workflows/build.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d4e975a..85c9e22 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -528,8 +528,9 @@ jobs: # cp ubuntu-20.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 # cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 # cp windows-2022/x86/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 - cp windows-2022/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream - cp windows-2022/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 + ls -lahR + cp windows-2022/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream + cp windows-2022/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 - name: Build with Maven run: mvn -B install From 03b97979d2caf0caf964fb6255b47daa34d6b5d9 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Fri, 25 Nov 2022 12:28:52 +0100 Subject: [PATCH 35/62] Perhaps correct path now --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 85c9e22..04e4a81 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -529,8 +529,8 @@ jobs: # cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 # cp windows-2022/x86/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 ls -lahR - cp windows-2022/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream - cp windows-2022/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 + cp windows-2022/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream + cp windows-2022/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 - name: Build with Maven run: mvn -B install From 6dc0cc799c1f076753c18d832c934bcadc675013 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Fri, 25 Nov 2022 14:06:41 +0100 Subject: [PATCH 36/62] Enable linux and mac --- .github/workflows/build.yml | 169 ++++++++++++++++++------------------ 1 file changed, 83 insertions(+), 86 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 04e4a81..9626342 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -240,80 +240,80 @@ jobs: # # # - # # Build native libraries for Linux and Mac. Uploads the libraries - # # as artifacts which are used in subsequent jobs. - # build_mac_linux_x64: - # strategy: - # matrix: - # os: [ ubuntu-20.04, macos-10.15 ] - # java: [8] - # - # runs-on: ${{ matrix.os }} - # - # steps: - # - name: Checkout Repo - # uses: actions/checkout@v2 - # - # - name: Setup JDK ${{ matrix.java }} - # uses: actions/setup-java@v1 - # with: - # java-version: ${{ matrix.java }} - # - # - name: Get Version Info - # run: | - # 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 - # 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 - # 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 - # - # - name: Build OpenCV - # run: | - # wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - # unzip ${{ env.OPENCV_VERSION }} > /dev/null - # - # wget -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - # unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null - # - # base=${PWD} - # cd opencv-${{ env.OPENCV_VERSION }} - # mkdir build - # cd build - # cmake \ - # -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ - # -D BUILD_JAVA=ON \ - # -D BUILD_FAT_JAVA_LIB=ON \ - # -D OPENCV_ENABLE_NONFREE=ON \ - # -D BUILD_SHARED_LIBS=OFF \ - # -D BUILD_PERF_TESTS=OFF \ - # -D BUILD_TESTS=OFF \ - # -D BUILD_EXAMPLES=OFF \ - # -D BUILD_DOCS=OFF \ - # -D BUILD_PACKAGE=OFF \ - # -D BUILD_opencv_python2=OFF \ - # -D BUILD_opencv_python3=OFF \ - # -D BUILD_opencv_apps=OFF \ - # -D BUILD_opencv_gapi=OFF \ - # -D CMAKE_BUILD_TYPE=RELEASE \ - # -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ - # .. - # make -j8 - # - # - name: Copy Libraries - # run: | - # cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : - # cp opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 || : - # cp opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 || : - # - # - name: Build with Maven - # run: mvn -B test - # - # - name: Upload Libraries - # uses: actions/upload-artifact@v2 - # with: - # name: ${{ matrix.os }} - # path: | - # opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar - # opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so - # opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib + # Build native libraries for Linux and Mac. Uploads the libraries + # as artifacts which are used in subsequent jobs. + build_mac_linux_x64: + strategy: + matrix: + os: [ ubuntu-20.04, macos-10.15 ] + java: [ 8 ] + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout Repo + uses: actions/checkout@v2 + + - name: Setup JDK ${{ matrix.java }} + uses: actions/setup-java@v1 + with: + java-version: ${{ matrix.java }} + + - name: Get Version Info + run: | + 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 + 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 + 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 + + - name: Build OpenCV + run: | + wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + unzip ${{ env.OPENCV_VERSION }} > /dev/null + + wget -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null + + base=${PWD} + cd opencv-${{ env.OPENCV_VERSION }} + mkdir build + cd build + cmake \ + -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ + -D BUILD_JAVA=ON \ + -D BUILD_FAT_JAVA_LIB=ON \ + -D OPENCV_ENABLE_NONFREE=ON \ + -D BUILD_SHARED_LIBS=OFF \ + -D BUILD_PERF_TESTS=OFF \ + -D BUILD_TESTS=OFF \ + -D BUILD_EXAMPLES=OFF \ + -D BUILD_DOCS=OFF \ + -D BUILD_PACKAGE=OFF \ + -D BUILD_opencv_python2=OFF \ + -D BUILD_opencv_python3=OFF \ + -D BUILD_opencv_apps=OFF \ + -D BUILD_opencv_gapi=OFF \ + -D CMAKE_BUILD_TYPE=RELEASE \ + -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ + .. + make -j8 + + - name: Copy Libraries + run: | + cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : + cp opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 || : + cp opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 || : + + - name: Build with Maven + run: mvn -B test + + - name: Upload Libraries + uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.os }} + path: | + opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar + opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so + opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib # # # @@ -474,16 +474,16 @@ jobs: cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 || : -# - name: Build with Maven -# run: mvn -B test + # - name: Build with Maven + # run: mvn -B test - name: Upload Libraries uses: actions/upload-artifact@v2 with: - name: ${{ matrix.os }} - path: | - opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar - opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll + name: ${{ matrix.os }} + path: | + opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar + opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll @@ -521,15 +521,12 @@ jobs: - name: Copy Binaries run: | - # cp macos-10.15/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream - # cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 + cp macos-10.15/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream + cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 # cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 - # cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 + cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 # cp ubuntu-20.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 # cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 - # cp windows-2022/x86/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 - ls -lahR - cp windows-2022/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream cp windows-2022/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 - name: Build with Maven From a5f95bad70e1885edaaa88c00c9bb50bfa77d2d1 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Fri, 25 Nov 2022 14:29:36 +0100 Subject: [PATCH 37/62] Add needs --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9626342..d344a1f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -492,7 +492,7 @@ jobs: # distribution jar. Uploads it as an artifact for subsequent steps. build_dist: # needs: [build_mac_aarch64, build_linux_arm, build_linux_arm64, build_mac_linux_x64, build_windows] - needs: [ build_windows ] + needs: [ build_windows, build_mac_linux_x64 ] strategy: matrix: From 8b8b2421a0da19a8232dfb56e4e309e06c8166b6 Mon Sep 17 00:00:00 2001 From: FB Date: Sun, 27 Nov 2022 21:22:36 +0100 Subject: [PATCH 38/62] Enable arm --- .github/workflows/build.yml | 461 ++++++++++++++++++------------------ 1 file changed, 230 insertions(+), 231 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d344a1f..4c4e179 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,228 +18,227 @@ on: pull_request: jobs: - # build_linux_arm: - # strategy: - # matrix: - # os: [ ubuntu-18.04 ] - # java: [8] - # - # runs-on: ${{ matrix.os }} - # - # steps: - # - name: Checkout Repo - # uses: actions/checkout@v2 - # - # - name: Setup JDK ${{ matrix.java }} - # uses: actions/setup-java@v1 - # with: - # java-version: ${{ matrix.java }} - # - # - name: Get Version Info - # run: | - # 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 - # 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 - # 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 - # - # - name: Build OpenCV on Arm - # uses: uraimo/run-on-arch-action@v2.0.9 - # with: - # arch: armv7 - # distro: ubuntu18.04 - # - # # Not required, but speeds up builds - # githubToken: ${{ github.token }} - # - # # Create an artifacts directory - # setup: | - # mkdir -p "${PWD}/artifacts" - # - # # Mount the artifacts directory as /artifacts in the container - # # Also mount the checked out repo as /host_repo so we can do a test build. - # dockerRunArgs: | - # --volume "${PWD}/artifacts:/artifacts" - # --volume "${PWD}:/host_repo" - # - # run: | - # apt-get update -q -y - # apt-get install -q -y git wget cmake unzip build-essential default-jre default-jdk ant maven python3 ca-certificates - # - # # TODO: I'd like to get this path automatically somehow. I think it might be - # # in /etc/environment but sourcing it didn't seem to work. Need to figure out - # # where it would be after starting a new shell. - # export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-armhf - # - # wget --no-check-certificate https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - # unzip ${{ env.OPENCV_VERSION }} > /dev/null - # - # wget --no-check-certificate -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - # unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null - # - # base=${PWD} - # cd opencv-${{ env.OPENCV_VERSION }} - # mkdir build - # cd build - # cmake \ - # -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ - # -D BUILD_JAVA=ON \ - # -D BUILD_FAT_JAVA_LIB=ON \ - # -D OPENCV_ENABLE_NONFREE=ON \ - # -D BUILD_SHARED_LIBS=OFF \ - # -D BUILD_PERF_TESTS=OFF \ - # -D BUILD_TESTS=OFF \ - # -D BUILD_EXAMPLES=OFF \ - # -D BUILD_DOCS=OFF \ - # -D BUILD_PACKAGE=OFF \ - # -D BUILD_opencv_python2=OFF \ - # -D BUILD_opencv_python3=OFF \ - # -D BUILD_opencv_apps=OFF \ - # -D BUILD_opencv_gapi=OFF \ - # -D CMAKE_BUILD_TYPE=RELEASE \ - # -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ - # .. - # make -j4 - # - # # Copy the build artifacts to the /artifacts directory, which will be - # # used by the host to upload them. - # mkdir -p /artifacts/bin - # mkdir -p /artifacts/lib - # cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /artifacts/bin - # cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /artifacts/lib - # - # # And also copy the build artifacts to the repo, so we can do a test build. - # # Note that we use the repo checked out on the host so that we can use - # # actions/checkout for the Git stuff, rather than having to mess with - # # the authentication in this container. - # cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /host_repo/upstream - # cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /host_repo/src/main/resources/nu/pattern/opencv/linux/ARMv7 - # - # # Peform a test build in the host repo, which now contains all of the - # # build artifacts. - # cd /host_repo - # mvn -B test - # - # - name: Upload Artifacts - # uses: actions/upload-artifact@v2 - # with: - # name: ubuntu-18.04-arm - # path: | - # artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar - # artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so - # - # - # - # - # build_linux_arm64: - # strategy: - # matrix: - # os: [ ubuntu-18.04 ] - # java: [ 8 ] - # - # runs-on: ${{ matrix.os }} - # - # steps: - # - name: Checkout Repo - # uses: actions/checkout@v2 - # - # - name: Setup JDK ${{ matrix.java }} - # uses: actions/setup-java@v1 - # with: - # java-version: ${{ matrix.java }} - # - # - name: Get Version Info - # run: | - # 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 - # 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 - # 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 - # - # - name: Build OpenCV on Arm64 - # uses: uraimo/run-on-arch-action@v2.0.9 - # with: - # arch: aarch64 - # distro: ubuntu18.04 - # - # # Not required, but speeds up builds - # githubToken: ${{ github.token }} - # - # # Create an artifacts directory - # setup: | - # mkdir -p "${PWD}/artifacts" - # - # # Mount the artifacts directory as /artifacts in the container - # # Also mount the checked out repo as /host_repo so we can do a test build. - # dockerRunArgs: | - # --volume "${PWD}/artifacts:/artifacts" - # --volume "${PWD}:/host_repo" - # - # run: | - # apt-get update -q -y - # apt-get install -q -y git wget cmake unzip build-essential default-jre default-jdk ant maven python3 ca-certificates - # - # # TODO: I'd like to get this path automatically somehow. I think it might be - # # in /etc/environment but sourcing it didn't seem to work. Need to figure out - # # where it would be after starting a new shell. - # export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-arm64 - # - # wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - # unzip ${{ env.OPENCV_VERSION }} > /dev/null - # - # wget -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - # unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null - # - # base=${PWD} - # cd opencv-${{ env.OPENCV_VERSION }} - # mkdir build - # cd build - # cmake \ - # -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ - # -D BUILD_JAVA=ON \ - # -D BUILD_FAT_JAVA_LIB=ON \ - # -D OPENCV_ENABLE_NONFREE=ON \ - # -D BUILD_SHARED_LIBS=OFF \ - # -D BUILD_PERF_TESTS=OFF \ - # -D BUILD_TESTS=OFF \ - # -D BUILD_EXAMPLES=OFF \ - # -D BUILD_DOCS=OFF \ - # -D BUILD_PACKAGE=OFF \ - # -D BUILD_opencv_python2=OFF \ - # -D BUILD_opencv_python3=OFF \ - # -D BUILD_opencv_apps=OFF \ - # -D BUILD_opencv_gapi=OFF \ - # -D CMAKE_BUILD_TYPE=RELEASE \ - # -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ - # .. - # make -j4 - # - # # Copy the build artifacts to the /artifacts directory, which will be - # # used by the host to upload them. - # mkdir -p /artifacts/bin - # mkdir -p /artifacts/lib - # cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /artifacts/bin - # cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /artifacts/lib - # - # # And also copy the build artifacts to the repo, so we can do a test build. - # # Note that we use the repo checked out on the host so that we can use - # # actions/checkout for the Git stuff, rather than having to mess with - # # the authentication in this container. - # cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /host_repo/upstream - # cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /host_repo/src/main/resources/nu/pattern/opencv/linux/ARMv8 - # - # # Peform a test build in the host repo, which now contains all of the - # # build artifacts. - # cd /host_repo - # mvn -B test - # - # - name: Upload Artifacts - # uses: actions/upload-artifact@v2 - # with: - # name: ubuntu-18.04-arm64 - # path: | - # artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar - # artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so - # - # - # - # + build_linux_arm: + strategy: + matrix: + os: [ ubuntu-18.04 ] + java: [8] + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout Repo + uses: actions/checkout@v2 + + - name: Setup JDK ${{ matrix.java }} + uses: actions/setup-java@v1 + with: + java-version: ${{ matrix.java }} + + - name: Get Version Info + run: | + 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 + 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 + 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 + + - name: Build OpenCV on Arm + uses: uraimo/run-on-arch-action@v2.0.9 + with: + arch: armv7 + distro: ubuntu18.04 + + # Not required, but speeds up builds + githubToken: ${{ github.token }} + + # Create an artifacts directory + setup: | + mkdir -p "${PWD}/artifacts" + + # Mount the artifacts directory as /artifacts in the container + # Also mount the checked out repo as /host_repo so we can do a test build. + dockerRunArgs: | + --volume "${PWD}/artifacts:/artifacts" + --volume "${PWD}:/host_repo" + + run: | + apt-get update -q -y + apt-get install -q -y git wget cmake unzip build-essential default-jre default-jdk ant maven python3 ca-certificates + + # TODO: I'd like to get this path automatically somehow. I think it might be + # in /etc/environment but sourcing it didn't seem to work. Need to figure out + # where it would be after starting a new shell. + export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-armhf + + wget --no-check-certificate https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + unzip ${{ env.OPENCV_VERSION }} > /dev/null + + wget --no-check-certificate -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null + + base=${PWD} + cd opencv-${{ env.OPENCV_VERSION }} + mkdir build + cd build + cmake \ + -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ + -D BUILD_JAVA=ON \ + -D BUILD_FAT_JAVA_LIB=ON \ + -D OPENCV_ENABLE_NONFREE=ON \ + -D BUILD_SHARED_LIBS=OFF \ + -D BUILD_PERF_TESTS=OFF \ + -D BUILD_TESTS=OFF \ + -D BUILD_EXAMPLES=OFF \ + -D BUILD_DOCS=OFF \ + -D BUILD_PACKAGE=OFF \ + -D BUILD_opencv_python2=OFF \ + -D BUILD_opencv_python3=OFF \ + -D BUILD_opencv_apps=OFF \ + -D BUILD_opencv_gapi=OFF \ + -D CMAKE_BUILD_TYPE=RELEASE \ + -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ + .. + make -j4 + + # Copy the build artifacts to the /artifacts directory, which will be + # used by the host to upload them. + mkdir -p /artifacts/bin + mkdir -p /artifacts/lib + cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /artifacts/bin + cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /artifacts/lib + + # And also copy the build artifacts to the repo, so we can do a test build. + # Note that we use the repo checked out on the host so that we can use + # actions/checkout for the Git stuff, rather than having to mess with + # the authentication in this container. + cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /host_repo/upstream + cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /host_repo/src/main/resources/nu/pattern/opencv/linux/ARMv7 + + # Peform a test build in the host repo, which now contains all of the + # build artifacts. + cd /host_repo + mvn -B test + + - name: Upload Artifacts + uses: actions/upload-artifact@v2 + with: + name: ubuntu-18.04-arm + path: | + artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar + artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so + + + + build_linux_arm64: + strategy: + matrix: + os: [ ubuntu-18.04 ] + java: [ 8 ] + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout Repo + uses: actions/checkout@v2 + + - name: Setup JDK ${{ matrix.java }} + uses: actions/setup-java@v1 + with: + java-version: ${{ matrix.java }} + + - name: Get Version Info + run: | + 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 + 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 + 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 + + - name: Build OpenCV on Arm64 + uses: uraimo/run-on-arch-action@v2.0.9 + with: + arch: aarch64 + distro: ubuntu18.04 + + # Not required, but speeds up builds + githubToken: ${{ github.token }} + + # Create an artifacts directory + setup: | + mkdir -p "${PWD}/artifacts" + + # Mount the artifacts directory as /artifacts in the container + # Also mount the checked out repo as /host_repo so we can do a test build. + dockerRunArgs: | + --volume "${PWD}/artifacts:/artifacts" + --volume "${PWD}:/host_repo" + + run: | + apt-get update -q -y + apt-get install -q -y git wget cmake unzip build-essential default-jre default-jdk ant maven python3 ca-certificates + + # TODO: I'd like to get this path automatically somehow. I think it might be + # in /etc/environment but sourcing it didn't seem to work. Need to figure out + # where it would be after starting a new shell. + export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-arm64 + + wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + unzip ${{ env.OPENCV_VERSION }} > /dev/null + + wget -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null + + base=${PWD} + cd opencv-${{ env.OPENCV_VERSION }} + mkdir build + cd build + cmake \ + -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ + -D BUILD_JAVA=ON \ + -D BUILD_FAT_JAVA_LIB=ON \ + -D OPENCV_ENABLE_NONFREE=ON \ + -D BUILD_SHARED_LIBS=OFF \ + -D BUILD_PERF_TESTS=OFF \ + -D BUILD_TESTS=OFF \ + -D BUILD_EXAMPLES=OFF \ + -D BUILD_DOCS=OFF \ + -D BUILD_PACKAGE=OFF \ + -D BUILD_opencv_python2=OFF \ + -D BUILD_opencv_python3=OFF \ + -D BUILD_opencv_apps=OFF \ + -D BUILD_opencv_gapi=OFF \ + -D CMAKE_BUILD_TYPE=RELEASE \ + -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ + .. + make -j4 + + # Copy the build artifacts to the /artifacts directory, which will be + # used by the host to upload them. + mkdir -p /artifacts/bin + mkdir -p /artifacts/lib + cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /artifacts/bin + cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /artifacts/lib + + # And also copy the build artifacts to the repo, so we can do a test build. + # Note that we use the repo checked out on the host so that we can use + # actions/checkout for the Git stuff, rather than having to mess with + # the authentication in this container. + cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /host_repo/upstream + cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /host_repo/src/main/resources/nu/pattern/opencv/linux/ARMv8 + + # Peform a test build in the host repo, which now contains all of the + # build artifacts. + cd /host_repo + mvn -B test + + - name: Upload Artifacts + uses: actions/upload-artifact@v2 + with: + name: ubuntu-18.04-arm64 + path: | + artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar + artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so + + + + # Build native libraries for Linux and Mac. Uploads the libraries # as artifacts which are used in subsequent jobs. build_mac_linux_x64: @@ -474,6 +473,7 @@ jobs: cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 || : + # For some reason windows don't want to load the binaries correctly on github # - name: Build with Maven # run: mvn -B test @@ -525,8 +525,8 @@ jobs: cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 # cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 - # cp ubuntu-20.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 - # cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 + cp ubuntu-20.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 + cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 cp windows-2022/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 - name: Build with Maven @@ -619,14 +619,13 @@ jobs: - name: Copy Binaries run: | - # cp macos-10.15/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream - # cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 + cp macos-10.15/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream + cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 # cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 - # cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 - # cp ubuntu-20.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 - # cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 - # cp windows-2022/x86/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_32 - cp windows-2022/x64/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 + cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 + cp ubuntu-20.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 + cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 + cp windows-2022/x64/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 - name: Publish to Apache Maven Central run: mvn -B -e clean deploy -P release-sign-artifacts From 9fe135799e87f1b4bb895d1e53835cd5d51cd1ed Mon Sep 17 00:00:00 2001 From: FB Date: Sun, 27 Nov 2022 21:26:23 +0100 Subject: [PATCH 39/62] Fix needs --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4c4e179..3bd4331 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -492,7 +492,7 @@ jobs: # distribution jar. Uploads it as an artifact for subsequent steps. build_dist: # needs: [build_mac_aarch64, build_linux_arm, build_linux_arm64, build_mac_linux_x64, build_windows] - needs: [ build_windows, build_mac_linux_x64 ] + needs: [ build_windows, build_mac_linux_x64, build_linux_arm, build_linux_arm64 ] strategy: matrix: @@ -549,7 +549,7 @@ jobs: needs: build_dist strategy: matrix: - os: [ macos-10.15, windows-2019, ubuntu-20.04, ubuntu-20.04 ] + os: [ macos-10.15, windows-2019, ubuntu-20.04 ] java: [ 8, 9, 10, 11, 12, 13, 14, 15 ] runs-on: ${{ matrix.os }} From de97c8db43767d5b19577f526912ddb59120476c Mon Sep 17 00:00:00 2001 From: qwelyt Date: Mon, 28 Nov 2022 08:31:39 +0100 Subject: [PATCH 40/62] Fix arm paths --- .github/workflows/build.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3bd4331..dcaaf12 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -525,8 +525,8 @@ jobs: cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 # cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 - cp ubuntu-20.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 - cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 + cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 + cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 cp windows-2022/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 - name: Build with Maven @@ -623,8 +623,8 @@ jobs: cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 # cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 - cp ubuntu-20.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 - cp ubuntu-20.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 + cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 + cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 cp windows-2022/x64/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 - name: Publish to Apache Maven Central From 20875f44675336573836648828a4c2b5afd63e8d Mon Sep 17 00:00:00 2001 From: qwelyt Date: Mon, 28 Nov 2022 12:21:11 +0100 Subject: [PATCH 41/62] Try and use ninja instead of mingw And set some vars like opencv_contrib does --- .github/workflows/build.yml | 470 ++++++++++++++++++------------------ 1 file changed, 232 insertions(+), 238 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dcaaf12..3bfadb6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,227 +18,227 @@ on: pull_request: jobs: - build_linux_arm: - strategy: - matrix: - os: [ ubuntu-18.04 ] - java: [8] - - runs-on: ${{ matrix.os }} - - steps: - - name: Checkout Repo - uses: actions/checkout@v2 - - - name: Setup JDK ${{ matrix.java }} - uses: actions/setup-java@v1 - with: - java-version: ${{ matrix.java }} - - - name: Get Version Info - run: | - 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 - 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 - 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 - - - name: Build OpenCV on Arm - uses: uraimo/run-on-arch-action@v2.0.9 - with: - arch: armv7 - distro: ubuntu18.04 - - # Not required, but speeds up builds - githubToken: ${{ github.token }} - - # Create an artifacts directory - setup: | - mkdir -p "${PWD}/artifacts" - - # Mount the artifacts directory as /artifacts in the container - # Also mount the checked out repo as /host_repo so we can do a test build. - dockerRunArgs: | - --volume "${PWD}/artifacts:/artifacts" - --volume "${PWD}:/host_repo" - - run: | - apt-get update -q -y - apt-get install -q -y git wget cmake unzip build-essential default-jre default-jdk ant maven python3 ca-certificates - - # TODO: I'd like to get this path automatically somehow. I think it might be - # in /etc/environment but sourcing it didn't seem to work. Need to figure out - # where it would be after starting a new shell. - export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-armhf - - wget --no-check-certificate https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - unzip ${{ env.OPENCV_VERSION }} > /dev/null - - wget --no-check-certificate -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null - - base=${PWD} - cd opencv-${{ env.OPENCV_VERSION }} - mkdir build - cd build - cmake \ - -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ - -D BUILD_JAVA=ON \ - -D BUILD_FAT_JAVA_LIB=ON \ - -D OPENCV_ENABLE_NONFREE=ON \ - -D BUILD_SHARED_LIBS=OFF \ - -D BUILD_PERF_TESTS=OFF \ - -D BUILD_TESTS=OFF \ - -D BUILD_EXAMPLES=OFF \ - -D BUILD_DOCS=OFF \ - -D BUILD_PACKAGE=OFF \ - -D BUILD_opencv_python2=OFF \ - -D BUILD_opencv_python3=OFF \ - -D BUILD_opencv_apps=OFF \ - -D BUILD_opencv_gapi=OFF \ - -D CMAKE_BUILD_TYPE=RELEASE \ - -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ - .. - make -j4 - - # Copy the build artifacts to the /artifacts directory, which will be - # used by the host to upload them. - mkdir -p /artifacts/bin - mkdir -p /artifacts/lib - cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /artifacts/bin - cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /artifacts/lib - - # And also copy the build artifacts to the repo, so we can do a test build. - # Note that we use the repo checked out on the host so that we can use - # actions/checkout for the Git stuff, rather than having to mess with - # the authentication in this container. - cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /host_repo/upstream - cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /host_repo/src/main/resources/nu/pattern/opencv/linux/ARMv7 - - # Peform a test build in the host repo, which now contains all of the - # build artifacts. - cd /host_repo - mvn -B test - - - name: Upload Artifacts - uses: actions/upload-artifact@v2 - with: - name: ubuntu-18.04-arm - path: | - artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar - artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so - - - - build_linux_arm64: - strategy: - matrix: - os: [ ubuntu-18.04 ] - java: [ 8 ] - - runs-on: ${{ matrix.os }} - - steps: - - name: Checkout Repo - uses: actions/checkout@v2 - - - name: Setup JDK ${{ matrix.java }} - uses: actions/setup-java@v1 - with: - java-version: ${{ matrix.java }} - - - name: Get Version Info - run: | - 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 - 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 - 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 - - - name: Build OpenCV on Arm64 - uses: uraimo/run-on-arch-action@v2.0.9 - with: - arch: aarch64 - distro: ubuntu18.04 - - # Not required, but speeds up builds - githubToken: ${{ github.token }} - - # Create an artifacts directory - setup: | - mkdir -p "${PWD}/artifacts" - - # Mount the artifacts directory as /artifacts in the container - # Also mount the checked out repo as /host_repo so we can do a test build. - dockerRunArgs: | - --volume "${PWD}/artifacts:/artifacts" - --volume "${PWD}:/host_repo" - - run: | - apt-get update -q -y - apt-get install -q -y git wget cmake unzip build-essential default-jre default-jdk ant maven python3 ca-certificates - - # TODO: I'd like to get this path automatically somehow. I think it might be - # in /etc/environment but sourcing it didn't seem to work. Need to figure out - # where it would be after starting a new shell. - export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-arm64 - - wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - unzip ${{ env.OPENCV_VERSION }} > /dev/null - - wget -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null - - base=${PWD} - cd opencv-${{ env.OPENCV_VERSION }} - mkdir build - cd build - cmake \ - -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ - -D BUILD_JAVA=ON \ - -D BUILD_FAT_JAVA_LIB=ON \ - -D OPENCV_ENABLE_NONFREE=ON \ - -D BUILD_SHARED_LIBS=OFF \ - -D BUILD_PERF_TESTS=OFF \ - -D BUILD_TESTS=OFF \ - -D BUILD_EXAMPLES=OFF \ - -D BUILD_DOCS=OFF \ - -D BUILD_PACKAGE=OFF \ - -D BUILD_opencv_python2=OFF \ - -D BUILD_opencv_python3=OFF \ - -D BUILD_opencv_apps=OFF \ - -D BUILD_opencv_gapi=OFF \ - -D CMAKE_BUILD_TYPE=RELEASE \ - -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ - .. - make -j4 - - # Copy the build artifacts to the /artifacts directory, which will be - # used by the host to upload them. - mkdir -p /artifacts/bin - mkdir -p /artifacts/lib - cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /artifacts/bin - cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /artifacts/lib - - # And also copy the build artifacts to the repo, so we can do a test build. - # Note that we use the repo checked out on the host so that we can use - # actions/checkout for the Git stuff, rather than having to mess with - # the authentication in this container. - cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /host_repo/upstream - cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /host_repo/src/main/resources/nu/pattern/opencv/linux/ARMv8 - - # Peform a test build in the host repo, which now contains all of the - # build artifacts. - cd /host_repo - mvn -B test - - - name: Upload Artifacts - uses: actions/upload-artifact@v2 - with: - name: ubuntu-18.04-arm64 - path: | - artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar - artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so - - - - + # build_linux_arm: + # strategy: + # matrix: + # os: [ ubuntu-18.04 ] + # java: [ 8 ] + # + # runs-on: ${{ matrix.os }} + # + # steps: + # - name: Checkout Repo + # uses: actions/checkout@v2 + # + # - name: Setup JDK ${{ matrix.java }} + # uses: actions/setup-java@v1 + # with: + # java-version: ${{ matrix.java }} + # + # - name: Get Version Info + # run: | + # 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 + # 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 + # 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 + # + # - name: Build OpenCV on Arm + # uses: uraimo/run-on-arch-action@v2.0.9 + # with: + # arch: armv7 + # distro: ubuntu18.04 + # + # # Not required, but speeds up builds + # githubToken: ${{ github.token }} + # + # # Create an artifacts directory + # setup: | + # mkdir -p "${PWD}/artifacts" + # + # # Mount the artifacts directory as /artifacts in the container + # # Also mount the checked out repo as /host_repo so we can do a test build. + # dockerRunArgs: | + # --volume "${PWD}/artifacts:/artifacts" + # --volume "${PWD}:/host_repo" + # + # run: | + # apt-get update -q -y + # apt-get install -q -y git wget cmake unzip build-essential default-jre default-jdk ant maven python3 ca-certificates + # + # # TODO: I'd like to get this path automatically somehow. I think it might be + # # in /etc/environment but sourcing it didn't seem to work. Need to figure out + # # where it would be after starting a new shell. + # export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-armhf + # + # wget --no-check-certificate https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + # unzip ${{ env.OPENCV_VERSION }} > /dev/null + # + # wget --no-check-certificate -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + # unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null + # + # base=${PWD} + # cd opencv-${{ env.OPENCV_VERSION }} + # mkdir build + # cd build + # cmake \ + # -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ + # -D BUILD_JAVA=ON \ + # -D BUILD_FAT_JAVA_LIB=ON \ + # -D OPENCV_ENABLE_NONFREE=ON \ + # -D BUILD_SHARED_LIBS=OFF \ + # -D BUILD_PERF_TESTS=OFF \ + # -D BUILD_TESTS=OFF \ + # -D BUILD_EXAMPLES=OFF \ + # -D BUILD_DOCS=OFF \ + # -D BUILD_PACKAGE=OFF \ + # -D BUILD_opencv_python2=OFF \ + # -D BUILD_opencv_python3=OFF \ + # -D BUILD_opencv_apps=OFF \ + # -D BUILD_opencv_gapi=OFF \ + # -D CMAKE_BUILD_TYPE=RELEASE \ + # -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ + # .. + # make -j4 + # + # # Copy the build artifacts to the /artifacts directory, which will be + # # used by the host to upload them. + # mkdir -p /artifacts/bin + # mkdir -p /artifacts/lib + # cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /artifacts/bin + # cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /artifacts/lib + # + # # And also copy the build artifacts to the repo, so we can do a test build. + # # Note that we use the repo checked out on the host so that we can use + # # actions/checkout for the Git stuff, rather than having to mess with + # # the authentication in this container. + # cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /host_repo/upstream + # cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /host_repo/src/main/resources/nu/pattern/opencv/linux/ARMv7 + # + # # Peform a test build in the host repo, which now contains all of the + # # build artifacts. + # cd /host_repo + # mvn -B test + # + # - name: Upload Artifacts + # uses: actions/upload-artifact@v2 + # with: + # name: ubuntu-18.04-arm + # path: | + # artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar + # artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so + # + # + # + # build_linux_arm64: + # strategy: + # matrix: + # os: [ ubuntu-18.04 ] + # java: [ 8 ] + # + # runs-on: ${{ matrix.os }} + # + # steps: + # - name: Checkout Repo + # uses: actions/checkout@v2 + # + # - name: Setup JDK ${{ matrix.java }} + # uses: actions/setup-java@v1 + # with: + # java-version: ${{ matrix.java }} + # + # - name: Get Version Info + # run: | + # 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 + # 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 + # 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 + # + # - name: Build OpenCV on Arm64 + # uses: uraimo/run-on-arch-action@v2.0.9 + # with: + # arch: aarch64 + # distro: ubuntu18.04 + # + # # Not required, but speeds up builds + # githubToken: ${{ github.token }} + # + # # Create an artifacts directory + # setup: | + # mkdir -p "${PWD}/artifacts" + # + # # Mount the artifacts directory as /artifacts in the container + # # Also mount the checked out repo as /host_repo so we can do a test build. + # dockerRunArgs: | + # --volume "${PWD}/artifacts:/artifacts" + # --volume "${PWD}:/host_repo" + # + # run: | + # apt-get update -q -y + # apt-get install -q -y git wget cmake unzip build-essential default-jre default-jdk ant maven python3 ca-certificates + # + # # TODO: I'd like to get this path automatically somehow. I think it might be + # # in /etc/environment but sourcing it didn't seem to work. Need to figure out + # # where it would be after starting a new shell. + # export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-arm64 + # + # wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + # unzip ${{ env.OPENCV_VERSION }} > /dev/null + # + # wget -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + # unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null + # + # base=${PWD} + # cd opencv-${{ env.OPENCV_VERSION }} + # mkdir build + # cd build + # cmake \ + # -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ + # -D BUILD_JAVA=ON \ + # -D BUILD_FAT_JAVA_LIB=ON \ + # -D OPENCV_ENABLE_NONFREE=ON \ + # -D BUILD_SHARED_LIBS=OFF \ + # -D BUILD_PERF_TESTS=OFF \ + # -D BUILD_TESTS=OFF \ + # -D BUILD_EXAMPLES=OFF \ + # -D BUILD_DOCS=OFF \ + # -D BUILD_PACKAGE=OFF \ + # -D BUILD_opencv_python2=OFF \ + # -D BUILD_opencv_python3=OFF \ + # -D BUILD_opencv_apps=OFF \ + # -D BUILD_opencv_gapi=OFF \ + # -D CMAKE_BUILD_TYPE=RELEASE \ + # -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ + # .. + # make -j4 + # + # # Copy the build artifacts to the /artifacts directory, which will be + # # used by the host to upload them. + # mkdir -p /artifacts/bin + # mkdir -p /artifacts/lib + # cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /artifacts/bin + # cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /artifacts/lib + # + # # And also copy the build artifacts to the repo, so we can do a test build. + # # Note that we use the repo checked out on the host so that we can use + # # actions/checkout for the Git stuff, rather than having to mess with + # # the authentication in this container. + # cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /host_repo/upstream + # cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /host_repo/src/main/resources/nu/pattern/opencv/linux/ARMv8 + # + # # Peform a test build in the host repo, which now contains all of the + # # build artifacts. + # cd /host_repo + # mvn -B test + # + # - name: Upload Artifacts + # uses: actions/upload-artifact@v2 + # with: + # name: ubuntu-18.04-arm64 + # path: | + # artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar + # artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so + # + # + # + # # Build native libraries for Linux and Mac. Uploads the libraries # as artifacts which are used in subsequent jobs. build_mac_linux_x64: @@ -268,10 +268,10 @@ jobs: run: | wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null unzip ${{ env.OPENCV_VERSION }} > /dev/null - + wget -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null - + base=${PWD} cd opencv-${{ env.OPENCV_VERSION }} mkdir build @@ -423,14 +423,6 @@ jobs: - name: Build OpenCV shell: bash run: | - # Figure out where ANT is - echo "Ant" - which ant - echo ${ANT_HOME} - echo "MAVEN_HOME" - echo ${MAVEN_HOME} - echo "JAVA_HOME" - echo ${JAVA_HOME} ant_path=$(which ant) pip install numpy @@ -445,8 +437,10 @@ jobs: cd opencv-${{ env.OPENCV_VERSION }} mkdir build cd build + # Set some vars. See https://github.com/opencv/ci-gha-workflow/blob/main/.github/workflows/OCV-Contrib-PR-4.x-W10.yaml#L118 + /c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2019/Community/VC/Auxiliary/Build/vcvars64.bat cmake \ - -G "MinGW Makefiles" \ + -G Ninja \ -D ANT_EXECUTABLE:FILEPATH=${ant_path} \ -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ -D BUILD_JAVA=ON \ @@ -465,7 +459,7 @@ jobs: -D CMAKE_BUILD_TYPE=RELEASE \ -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules \ .. - mingw32-make -j2 + ninja -j 8 - name: Copy Libraries shell: bash @@ -474,8 +468,8 @@ jobs: cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 || : # For some reason windows don't want to load the binaries correctly on github - # - name: Build with Maven - # run: mvn -B test + - name: Build with Maven + run: mvn -B test - name: Upload Libraries uses: actions/upload-artifact@v2 @@ -492,7 +486,7 @@ jobs: # distribution jar. Uploads it as an artifact for subsequent steps. build_dist: # needs: [build_mac_aarch64, build_linux_arm, build_linux_arm64, build_mac_linux_x64, build_windows] - needs: [ build_windows, build_mac_linux_x64, build_linux_arm, build_linux_arm64 ] + needs: [ build_windows ] #, build_mac_linux_x64, build_linux_arm, build_linux_arm64 ] strategy: matrix: @@ -525,8 +519,8 @@ jobs: cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 # cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 - cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 - cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 + # cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 + # cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 cp windows-2022/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 - name: Build with Maven From 8ca2da0f1335385425df82a49a8e57aa02700af2 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Mon, 28 Nov 2022 12:50:39 +0100 Subject: [PATCH 42/62] Install ninja and fix vcvars path --- .github/workflows/build.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3bfadb6..4e8c137 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -413,6 +413,11 @@ jobs: with: java-version: ${{ matrix.java }} + - name: Setup Ninja + uses: ashutoshvarma/setup-ninja@v1.1 + with: + version: 1.11.1 + - name: Get Version Info shell: bash run: | @@ -438,7 +443,8 @@ jobs: mkdir build cd build # Set some vars. See https://github.com/opencv/ci-gha-workflow/blob/main/.github/workflows/OCV-Contrib-PR-4.x-W10.yaml#L118 - /c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2019/Community/VC/Auxiliary/Build/vcvars64.bat + # /c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2019/Community/VC/Auxiliary/Build/vcvars64.bat + /c/Program\ Files/Microsoft\ Visual\ Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat cmake \ -G Ninja \ -D ANT_EXECUTABLE:FILEPATH=${ant_path} \ From 338a86e2f0ce28b4a598887dc5047405de64810b Mon Sep 17 00:00:00 2001 From: qwelyt Date: Mon, 28 Nov 2022 13:50:25 +0100 Subject: [PATCH 43/62] Disable windows tests --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4e8c137..e353eef 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -474,8 +474,8 @@ jobs: cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 || : # For some reason windows don't want to load the binaries correctly on github - - name: Build with Maven - run: mvn -B test +# - name: Build with Maven +# run: mvn -B test - name: Upload Libraries uses: actions/upload-artifact@v2 From 045262578cbba660b383d2db0c34214e406ff272 Mon Sep 17 00:00:00 2001 From: FB Date: Tue, 29 Nov 2022 10:11:42 +0100 Subject: [PATCH 44/62] Try with windows-2019 I just .. keep at it. Do I like frustration? --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e353eef..62a1b49 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -399,7 +399,7 @@ jobs: build_windows: strategy: matrix: - os: [ windows-2022 ] + os: [ windows-2019 ] java: [ 8 ] runs-on: ${{ matrix.os }} @@ -474,8 +474,8 @@ jobs: cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 || : # For some reason windows don't want to load the binaries correctly on github -# - name: Build with Maven -# run: mvn -B test + - name: Build with Maven + run: mvn -B test - name: Upload Libraries uses: actions/upload-artifact@v2 From 44a596f24d49fd4eb33b15debbfb3cceea908638 Mon Sep 17 00:00:00 2001 From: FB Date: Tue, 29 Nov 2022 10:19:26 +0100 Subject: [PATCH 45/62] Fix VS path --- .github/workflows/build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 62a1b49..28a3bb1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -444,7 +444,8 @@ jobs: cd build # Set some vars. See https://github.com/opencv/ci-gha-workflow/blob/main/.github/workflows/OCV-Contrib-PR-4.x-W10.yaml#L118 # /c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2019/Community/VC/Auxiliary/Build/vcvars64.bat - /c/Program\ Files/Microsoft\ Visual\ Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat + # /c/Program\ Files/Microsoft\ Visual\ Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat + /c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars64.bat cmake \ -G Ninja \ -D ANT_EXECUTABLE:FILEPATH=${ant_path} \ From 22a62a81932118db018b387a96a8ade01e0ea83d Mon Sep 17 00:00:00 2001 From: FB Date: Tue, 29 Nov 2022 10:29:11 +0100 Subject: [PATCH 46/62] Use VS to compile I don't know why I don't just use mingw again. But OpenCV uses VS in their winpack ci so I'm giving it a go. --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 28a3bb1..c3f0190 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -447,7 +447,7 @@ jobs: # /c/Program\ Files/Microsoft\ Visual\ Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat /c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars64.bat cmake \ - -G Ninja \ + -G "Visual Studio 16 2019" \ -D ANT_EXECUTABLE:FILEPATH=${ant_path} \ -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ -D BUILD_JAVA=ON \ @@ -466,7 +466,7 @@ jobs: -D CMAKE_BUILD_TYPE=RELEASE \ -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules \ .. - ninja -j 8 + cmake --build . --config debug --target install -- /maxcpucount:8 - name: Copy Libraries shell: bash From d933306b02a310d7dde50fc5d6ab853b59a6d610 Mon Sep 17 00:00:00 2001 From: FB Date: Tue, 29 Nov 2022 10:37:45 +0100 Subject: [PATCH 47/62] Back to mingw As suspected the vs build didn't work. So no we are back to mingw --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c3f0190..76d1fd9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -447,7 +447,7 @@ jobs: # /c/Program\ Files/Microsoft\ Visual\ Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat /c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars64.bat cmake \ - -G "Visual Studio 16 2019" \ + -G "MinGW Makefiles" \ -D ANT_EXECUTABLE:FILEPATH=${ant_path} \ -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ -D BUILD_JAVA=ON \ @@ -466,7 +466,7 @@ jobs: -D CMAKE_BUILD_TYPE=RELEASE \ -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules \ .. - cmake --build . --config debug --target install -- /maxcpucount:8 + mingw32-make -j8 - name: Copy Libraries shell: bash From 510c2b225674b15b8b111828c70ac1d45a70609b Mon Sep 17 00:00:00 2001 From: FB Date: Tue, 29 Nov 2022 11:18:03 +0100 Subject: [PATCH 48/62] Rename to opencv_java455.dll --- .github/workflows/build.yml | 23 +++++++---------------- src/main/java/nu/pattern/OpenCV.java | 4 ++-- 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 76d1fd9..241ae24 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -413,11 +413,6 @@ jobs: with: java-version: ${{ matrix.java }} - - name: Setup Ninja - uses: ashutoshvarma/setup-ninja@v1.1 - with: - version: 1.11.1 - - name: Get Version Info shell: bash run: | @@ -472,7 +467,7 @@ jobs: shell: bash run: | cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : - cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 || : + cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll || : # For some reason windows don't want to load the binaries correctly on github - name: Build with Maven @@ -493,7 +488,7 @@ jobs: # distribution jar. Uploads it as an artifact for subsequent steps. build_dist: # needs: [build_mac_aarch64, build_linux_arm, build_linux_arm64, build_mac_linux_x64, build_windows] - needs: [ build_windows ] #, build_mac_linux_x64, build_linux_arm, build_linux_arm64 ] + needs: [ build_windows, build_mac_linux_x64 ] #, build_linux_arm, build_linux_arm64 ] strategy: matrix: @@ -528,7 +523,7 @@ jobs: cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 # cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 # cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 - cp windows-2022/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 + cp windows-2022/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll - name: Build with Maven run: mvn -B install @@ -624,17 +619,13 @@ jobs: cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 # cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 - cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 - cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 - cp windows-2022/x64/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64 + # cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 + # cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 + cp windows-2022/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll - name: Publish to Apache Maven Central run: mvn -B -e clean deploy -P release-sign-artifacts env: OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }} OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} - MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} - - - - + MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} \ No newline at end of file diff --git a/src/main/java/nu/pattern/OpenCV.java b/src/main/java/nu/pattern/OpenCV.java index d4cb2f0..af73f8e 100644 --- a/src/main/java/nu/pattern/OpenCV.java +++ b/src/main/java/nu/pattern/OpenCV.java @@ -387,10 +387,10 @@ private static Path extractNativeBinary(final OS os, final Arch arch) { case WINDOWS: switch (arch) { case X86_32: - location = "/nu/pattern/opencv/windows/x86_32/libopencv_java455.dll"; + location = "/nu/pattern/opencv/windows/x86_32/opencv_java455.dll"; break; case X86_64: - location = "/nu/pattern/opencv/windows/x86_64/libopencv_java455.dll"; + location = "/nu/pattern/opencv/windows/x86_64/opencv_java455.dll"; break; default: throw new UnsupportedPlatformException(os, arch); From 817c17acd9f13ea28150caefd0192a2fe0d20482 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Tue, 29 Nov 2022 13:01:33 +0100 Subject: [PATCH 49/62] Fix paths and up version So ... windows 2019 seem to work. I frecking hate windows. Upping the version so we don't override the already out version. Should have done this before. --- .github/workflows/build.yml | 8 ++++---- pom.xml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 241ae24..46b7a71 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -523,7 +523,7 @@ jobs: cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 # cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 # cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 - cp windows-2022/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll + cp windows-2019/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll - name: Build with Maven run: mvn -B install @@ -619,9 +619,9 @@ jobs: cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 # cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 - # cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 - # cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 - cp windows-2022/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll + cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 + cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 + cp windows-2019/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll - name: Publish to Apache Maven Central run: mvn -B -e clean deploy -P release-sign-artifacts diff --git a/pom.xml b/pom.xml index 63e1de2..ecc616d 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ bundle org.openpnp opencv - 4.5.5-1 + 4.5.5-2 OpenPnP OpenCV OpenCV packaged with native libraries and loader for multiple platforms. http://github.com/openpnp/opencv From e783dea7b77348371e6199376716daf751ff3455 Mon Sep 17 00:00:00 2001 From: Jason von Nieda Date: Tue, 13 Dec 2022 21:19:43 -0600 Subject: [PATCH 50/62] - Test release v4.6.0 --- src/main/java/nu/pattern/OpenCV.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/nu/pattern/OpenCV.java b/src/main/java/nu/pattern/OpenCV.java index af73f8e..ae77583 100644 --- a/src/main/java/nu/pattern/OpenCV.java +++ b/src/main/java/nu/pattern/OpenCV.java @@ -360,13 +360,13 @@ private static Path extractNativeBinary(final OS os, final Arch arch) { case LINUX: switch (arch) { case X86_64: - location = "/nu/pattern/opencv/linux/x86_64/libopencv_java455.so"; + location = "/nu/pattern/opencv/linux/x86_64/libopencv_java460.so"; break; case ARMv7: - location = "/nu/pattern/opencv/linux/ARMv7/libopencv_java455.so"; + location = "/nu/pattern/opencv/linux/ARMv7/libopencv_java460.so"; break; case ARMv8: - location = "/nu/pattern/opencv/linux/ARMv8/libopencv_java455.so"; + location = "/nu/pattern/opencv/linux/ARMv8/libopencv_java460.so"; break; default: throw new UnsupportedPlatformException(os, arch); @@ -375,10 +375,10 @@ private static Path extractNativeBinary(final OS os, final Arch arch) { case OSX: switch (arch) { case X86_64: - location = "/nu/pattern/opencv/osx/x86_64/libopencv_java455.dylib"; + location = "/nu/pattern/opencv/osx/x86_64/libopencv_java460.dylib"; break; case ARMv8: - location = "/nu/pattern/opencv/osx/ARMv8/libopencv_java455.dylib"; + location = "/nu/pattern/opencv/osx/ARMv8/libopencv_java460.dylib"; break; default: throw new UnsupportedPlatformException(os, arch); @@ -387,10 +387,10 @@ private static Path extractNativeBinary(final OS os, final Arch arch) { case WINDOWS: switch (arch) { case X86_32: - location = "/nu/pattern/opencv/windows/x86_32/opencv_java455.dll"; + location = "/nu/pattern/opencv/windows/x86_32/opencv_java460.dll"; break; case X86_64: - location = "/nu/pattern/opencv/windows/x86_64/opencv_java455.dll"; + location = "/nu/pattern/opencv/windows/x86_64/opencv_java460.dll"; break; default: throw new UnsupportedPlatformException(os, arch); From 00ed90a14bdab05bf7a1db9d5d4505373153df1d Mon Sep 17 00:00:00 2001 From: Jason von Nieda Date: Mon, 20 Mar 2023 16:06:25 -0500 Subject: [PATCH 51/62] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2fe5a2a..92798cf 100644 --- a/README.md +++ b/README.md @@ -107,8 +107,8 @@ The following platforms are supported by this package: OS | Architecture --- | --- -OS X | x86_32 -OS X | x86_64 +macOS | Intel +macOS | Apple Silicon (arm64) Linux | x86_64 Linux | ARMv7 (arm) Linux | ARMv8 (arm64 / aarch64) From 91fc6733d0d9646587897c6bf02a35e5c6104fae Mon Sep 17 00:00:00 2001 From: Thomas Edwin Santosa Date: Mon, 20 Mar 2023 08:50:09 +0700 Subject: [PATCH 52/62] Bump opencv to 4.7.0 --- src/main/java/nu/pattern/OpenCV.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/nu/pattern/OpenCV.java b/src/main/java/nu/pattern/OpenCV.java index ae77583..4b9c710 100644 --- a/src/main/java/nu/pattern/OpenCV.java +++ b/src/main/java/nu/pattern/OpenCV.java @@ -360,13 +360,13 @@ private static Path extractNativeBinary(final OS os, final Arch arch) { case LINUX: switch (arch) { case X86_64: - location = "/nu/pattern/opencv/linux/x86_64/libopencv_java460.so"; + location = "/nu/pattern/opencv/linux/x86_64/libopencv_java470.so"; break; case ARMv7: - location = "/nu/pattern/opencv/linux/ARMv7/libopencv_java460.so"; + location = "/nu/pattern/opencv/linux/ARMv7/libopencv_java470.so"; break; case ARMv8: - location = "/nu/pattern/opencv/linux/ARMv8/libopencv_java460.so"; + location = "/nu/pattern/opencv/linux/ARMv8/libopencv_java470.so"; break; default: throw new UnsupportedPlatformException(os, arch); @@ -375,10 +375,10 @@ private static Path extractNativeBinary(final OS os, final Arch arch) { case OSX: switch (arch) { case X86_64: - location = "/nu/pattern/opencv/osx/x86_64/libopencv_java460.dylib"; + location = "/nu/pattern/opencv/osx/x86_64/libopencv_java470.dylib"; break; case ARMv8: - location = "/nu/pattern/opencv/osx/ARMv8/libopencv_java460.dylib"; + location = "/nu/pattern/opencv/osx/ARMv8/libopencv_java470.dylib"; break; default: throw new UnsupportedPlatformException(os, arch); @@ -387,10 +387,10 @@ private static Path extractNativeBinary(final OS os, final Arch arch) { case WINDOWS: switch (arch) { case X86_32: - location = "/nu/pattern/opencv/windows/x86_32/opencv_java460.dll"; + location = "/nu/pattern/opencv/windows/x86_32/opencv_java470.dll"; break; case X86_64: - location = "/nu/pattern/opencv/windows/x86_64/opencv_java460.dll"; + location = "/nu/pattern/opencv/windows/x86_64/opencv_java470.dll"; break; default: throw new UnsupportedPlatformException(os, arch); From 14d4536e1726d47ca4902ce1bca9d6b95bcd30ff Mon Sep 17 00:00:00 2001 From: qwelyt Date: Tue, 25 Apr 2023 12:50:47 +0200 Subject: [PATCH 53/62] Let's find the files --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 44656fb..3f03ad2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -465,6 +465,7 @@ jobs: - name: Copy Libraries shell: bash run: | + ls -lahR opencv-${{ env.OPENCV_VERSION }} cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll || : From 2892768d0eea0ca6104372ec49865c578c8808d2 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Tue, 25 Apr 2023 13:31:58 +0200 Subject: [PATCH 54/62] Probably correct path now --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3f03ad2..840f118 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -460,14 +460,14 @@ jobs: -D CMAKE_BUILD_TYPE=RELEASE \ -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules \ .. - cmake --build . + cmake --build . --config Release - name: Copy Libraries shell: bash run: | ls -lahR opencv-${{ env.OPENCV_VERSION }} cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : - cp opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll || : + cp opencv-${{ env.OPENCV_VERSION }}/build/bin/Release/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll || : - name: Build with Maven run: mvn -B test From 2f8dcb6c0a000167a13d1755485098acfc44147d Mon Sep 17 00:00:00 2001 From: qwelyt Date: Tue, 25 Apr 2023 14:16:40 +0200 Subject: [PATCH 55/62] Play with paths --- .github/workflows/build.yml | 5 ++--- src/main/java/nu/pattern/OpenCV.java | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 840f118..c403231 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -465,9 +465,8 @@ jobs: - name: Copy Libraries shell: bash run: | - ls -lahR opencv-${{ env.OPENCV_VERSION }} cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : - cp opencv-${{ env.OPENCV_VERSION }}/build/bin/Release/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll || : + cp opencv-${{ env.OPENCV_VERSION }}/build/bin/Release/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll || : - name: Build with Maven run: mvn -B test @@ -523,7 +522,7 @@ jobs: # cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 # cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 # cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 - cp windows-2022/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll + cp windows-2022/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/ - name: Build with Maven run: mvn -B install diff --git a/src/main/java/nu/pattern/OpenCV.java b/src/main/java/nu/pattern/OpenCV.java index 4b9c710..3534f40 100644 --- a/src/main/java/nu/pattern/OpenCV.java +++ b/src/main/java/nu/pattern/OpenCV.java @@ -387,10 +387,10 @@ private static Path extractNativeBinary(final OS os, final Arch arch) { case WINDOWS: switch (arch) { case X86_32: - location = "/nu/pattern/opencv/windows/x86_32/opencv_java470.dll"; + location = "/nu/pattern/opencv/windows/x86_32/libopencv_java470.dll"; break; case X86_64: - location = "/nu/pattern/opencv/windows/x86_64/opencv_java470.dll"; + location = "/nu/pattern/opencv/windows/x86_64/libopencv_java470.dll"; break; default: throw new UnsupportedPlatformException(os, arch); From 415ba4f96ee88515331c08bac103dedd79182f3d Mon Sep 17 00:00:00 2001 From: qwelyt Date: Tue, 25 Apr 2023 14:56:33 +0200 Subject: [PATCH 56/62] Remove `lib` --- .github/workflows/build.yml | 6 +++--- src/main/java/nu/pattern/OpenCV.java | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c403231..c822592 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -466,7 +466,7 @@ jobs: shell: bash run: | cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : - cp opencv-${{ env.OPENCV_VERSION }}/build/bin/Release/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll || : + cp opencv-${{ env.OPENCV_VERSION }}/build/bin/Release/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll || : - name: Build with Maven run: mvn -B test @@ -477,7 +477,7 @@ jobs: name: ${{ matrix.os }} path: | opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar - opencv-${{ env.OPENCV_VERSION }}/build/bin/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll + opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll @@ -522,7 +522,7 @@ jobs: # cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 # cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 # cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 - cp windows-2022/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/ + cp windows-2022/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/ - name: Build with Maven run: mvn -B install diff --git a/src/main/java/nu/pattern/OpenCV.java b/src/main/java/nu/pattern/OpenCV.java index 3534f40..4b9c710 100644 --- a/src/main/java/nu/pattern/OpenCV.java +++ b/src/main/java/nu/pattern/OpenCV.java @@ -387,10 +387,10 @@ private static Path extractNativeBinary(final OS os, final Arch arch) { case WINDOWS: switch (arch) { case X86_32: - location = "/nu/pattern/opencv/windows/x86_32/libopencv_java470.dll"; + location = "/nu/pattern/opencv/windows/x86_32/opencv_java470.dll"; break; case X86_64: - location = "/nu/pattern/opencv/windows/x86_64/libopencv_java470.dll"; + location = "/nu/pattern/opencv/windows/x86_64/opencv_java470.dll"; break; default: throw new UnsupportedPlatformException(os, arch); From 0dddcbf01e3a4408cceae700e1fb32e06a8c8144 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Tue, 25 Apr 2023 18:51:26 +0200 Subject: [PATCH 57/62] Fix copy --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c822592..e013a71 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -477,7 +477,7 @@ jobs: name: ${{ matrix.os }} path: | opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar - opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll + opencv-${{ env.OPENCV_VERSION }}/build/bin/Release/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll From fa250af450212a15f7fee60d1ea81d2af25ef172 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Tue, 25 Apr 2023 19:20:06 +0200 Subject: [PATCH 58/62] Fix path --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e013a71..b2f09c6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -522,7 +522,7 @@ jobs: # cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 # cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 # cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 - cp windows-2022/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/ + cp windows-2022/Release/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/ - name: Build with Maven run: mvn -B install From fa3fb64ffd7a27be95d46ce1ef5263a70565274a Mon Sep 17 00:00:00 2001 From: qwelyt Date: Tue, 25 Apr 2023 19:52:26 +0200 Subject: [PATCH 59/62] Enable mac and linux --- .github/workflows/build.yml | 158 ++++++++++++++++++------------------ 1 file changed, 78 insertions(+), 80 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b2f09c6..8cf9d3c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -241,82 +241,80 @@ jobs: # # Build native libraries for Linux and Mac. Uploads the libraries # as artifacts which are used in subsequent jobs. - # build_mac_linux_x64: - # strategy: - # matrix: - # os: [ ubuntu-20.04, macos-10.15 ] - # java: [ 8 ] - # - # runs-on: ${{ matrix.os }} - # - # steps: - # - name: Checkout Repo - # uses: actions/checkout@v2 - # - # - name: Setup JDK ${{ matrix.java }} - # uses: actions/setup-java@v1 - # with: - # java-version: ${{ matrix.java }} - # - # - name: Get Version Info - # run: | - # 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 - # 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 - # 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 - # - # - name: Build OpenCV - # run: | - # wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - # unzip ${{ env.OPENCV_VERSION }} > /dev/null - # - # wget -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - # unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null - # - # base=${PWD} - # cd opencv-${{ env.OPENCV_VERSION }} - # mkdir build - # cd build - # cmake \ - # -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ - # -D BUILD_JAVA=ON \ - # -D BUILD_FAT_JAVA_LIB=ON \ - # -D OPENCV_ENABLE_NONFREE=ON \ - # -D BUILD_SHARED_LIBS=OFF \ - # -D BUILD_PERF_TESTS=OFF \ - # -D BUILD_TESTS=OFF \ - # -D BUILD_EXAMPLES=OFF \ - # -D BUILD_DOCS=OFF \ - # -D BUILD_PACKAGE=OFF \ - # -D BUILD_opencv_python2=OFF \ - # -D BUILD_opencv_python3=OFF \ - # -D BUILD_opencv_apps=OFF \ - # -D BUILD_opencv_gapi=OFF \ - # -D CMAKE_BUILD_TYPE=RELEASE \ - # -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ - # .. - # make -j8 - # - # - name: Copy Libraries - # run: | - # cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : - # cp opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 || : - # cp opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 || : - # - # - name: Build with Maven - # run: mvn -B test - # - # - name: Upload Libraries - # uses: actions/upload-artifact@v2 - # with: - # name: ${{ matrix.os }} - # path: | - # opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar - # opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so - # opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib - # - # - # - # + build_mac_linux_x64: + strategy: + matrix: + os: [ ubuntu-20.04, macos-10.15 ] + java: [ 8 ] + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout Repo + uses: actions/checkout@v2 + + - name: Setup JDK ${{ matrix.java }} + uses: actions/setup-java@v1 + with: + java-version: ${{ matrix.java }} + + - name: Get Version Info + run: | + 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 + 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 + 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 + + - name: Build OpenCV + run: | + wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + unzip ${{ env.OPENCV_VERSION }} > /dev/null + + wget -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null + + base=${PWD} + cd opencv-${{ env.OPENCV_VERSION }} + mkdir build + cd build + cmake \ + -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ + -D BUILD_JAVA=ON \ + -D BUILD_FAT_JAVA_LIB=ON \ + -D OPENCV_ENABLE_NONFREE=ON \ + -D BUILD_SHARED_LIBS=OFF \ + -D BUILD_PERF_TESTS=OFF \ + -D BUILD_TESTS=OFF \ + -D BUILD_EXAMPLES=OFF \ + -D BUILD_DOCS=OFF \ + -D BUILD_PACKAGE=OFF \ + -D BUILD_opencv_python2=OFF \ + -D BUILD_opencv_python3=OFF \ + -D BUILD_opencv_apps=OFF \ + -D BUILD_opencv_gapi=OFF \ + -D CMAKE_BUILD_TYPE=RELEASE \ + -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ + .. + make -j8 + + - name: Copy Libraries + run: | + cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : + cp opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 || : + cp opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 || : + + - name: Build with Maven + run: mvn -B test + + - name: Upload Libraries + uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.os }} + path: | + opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar + opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so + opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib + + # # Build Apple Silicon Mac native binary. # # See https://cmake.org/cmake/help/v3.23/variable/CMAKE_APPLE_SILICON_PROCESSOR.html # build_mac_aarch64: @@ -486,7 +484,7 @@ jobs: # distribution jar. Uploads it as an artifact for subsequent steps. build_dist: # needs: [build_mac_aarch64, build_linux_arm, build_linux_arm64, build_mac_linux_x64, build_windows] - needs: [ build_windows ] + needs: [ build_mac_linux_x86, build_windows ] strategy: matrix: @@ -516,10 +514,10 @@ jobs: - name: Copy Binaries run: | ls -lahR - # cp macos-10.15/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream - # cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 + cp macos-10.15/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream + cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 # cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 - # cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 + cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 # cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 # cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 cp windows-2022/Release/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/ From c93851dcc27a6e8675f247b42d64632b1ed9807b Mon Sep 17 00:00:00 2001 From: qwelyt Date: Tue, 25 Apr 2023 19:56:34 +0200 Subject: [PATCH 60/62] Oops. x64, no 86. --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8cf9d3c..ed0831f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -484,7 +484,7 @@ jobs: # distribution jar. Uploads it as an artifact for subsequent steps. build_dist: # needs: [build_mac_aarch64, build_linux_arm, build_linux_arm64, build_mac_linux_x64, build_windows] - needs: [ build_mac_linux_x86, build_windows ] + needs: [ build_mac_linux_x64, build_windows ] strategy: matrix: From 0d81ce644fc27e79c877e80f2f9db9a2a3840c29 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Wed, 26 Apr 2023 09:26:05 +0200 Subject: [PATCH 61/62] Enable all platforms --- .github/workflows/build.yml | 614 ++++++++++++++++++------------------ 1 file changed, 306 insertions(+), 308 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ed0831f..229222d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,227 +18,227 @@ on: pull_request: jobs: - # build_linux_arm: - # strategy: - # matrix: - # os: [ ubuntu-18.04 ] - # java: [ 8 ] - # - # runs-on: ${{ matrix.os }} - # - # steps: - # - name: Checkout Repo - # uses: actions/checkout@v2 - # - # - name: Setup JDK ${{ matrix.java }} - # uses: actions/setup-java@v1 - # with: - # java-version: ${{ matrix.java }} - # - # - name: Get Version Info - # run: | - # 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 - # 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 - # 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 - # - # - name: Build OpenCV on Arm - # uses: uraimo/run-on-arch-action@v2.0.9 - # with: - # arch: armv7 - # distro: ubuntu18.04 - # - # # Not required, but speeds up builds - # githubToken: ${{ github.token }} - # - # # Create an artifacts directory - # setup: | - # mkdir -p "${PWD}/artifacts" - # - # # Mount the artifacts directory as /artifacts in the container - # # Also mount the checked out repo as /host_repo so we can do a test build. - # dockerRunArgs: | - # --volume "${PWD}/artifacts:/artifacts" - # --volume "${PWD}:/host_repo" - # - # run: | - # apt-get update -q -y - # apt-get install -q -y git wget cmake unzip build-essential default-jre default-jdk ant maven python3 ca-certificates - # - # # TODO: I'd like to get this path automatically somehow. I think it might be - # # in /etc/environment but sourcing it didn't seem to work. Need to figure out - # # where it would be after starting a new shell. - # export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-armhf - # - # wget --no-check-certificate https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - # unzip ${{ env.OPENCV_VERSION }} > /dev/null - # - # wget --no-check-certificate -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - # unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null - # - # base=${PWD} - # cd opencv-${{ env.OPENCV_VERSION }} - # mkdir build - # cd build - # cmake \ - # -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ - # -D BUILD_JAVA=ON \ - # -D BUILD_FAT_JAVA_LIB=ON \ - # -D OPENCV_ENABLE_NONFREE=ON \ - # -D BUILD_SHARED_LIBS=OFF \ - # -D BUILD_PERF_TESTS=OFF \ - # -D BUILD_TESTS=OFF \ - # -D BUILD_EXAMPLES=OFF \ - # -D BUILD_DOCS=OFF \ - # -D BUILD_PACKAGE=OFF \ - # -D BUILD_opencv_python2=OFF \ - # -D BUILD_opencv_python3=OFF \ - # -D BUILD_opencv_apps=OFF \ - # -D BUILD_opencv_gapi=OFF \ - # -D CMAKE_BUILD_TYPE=RELEASE \ - # -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ - # .. - # make -j4 - # - # # Copy the build artifacts to the /artifacts directory, which will be - # # used by the host to upload them. - # mkdir -p /artifacts/bin - # mkdir -p /artifacts/lib - # cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /artifacts/bin - # cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /artifacts/lib - # - # # And also copy the build artifacts to the repo, so we can do a test build. - # # Note that we use the repo checked out on the host so that we can use - # # actions/checkout for the Git stuff, rather than having to mess with - # # the authentication in this container. - # cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /host_repo/upstream - # cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /host_repo/src/main/resources/nu/pattern/opencv/linux/ARMv7 - # - # # Peform a test build in the host repo, which now contains all of the - # # build artifacts. - # cd /host_repo - # mvn -B test - # - # - name: Upload Artifacts - # uses: actions/upload-artifact@v2 - # with: - # name: ubuntu-18.04-arm - # path: | - # artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar - # artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so - # - # - # - # build_linux_arm64: - # strategy: - # matrix: - # os: [ ubuntu-18.04 ] - # java: [ 8 ] - # - # runs-on: ${{ matrix.os }} - # - # steps: - # - name: Checkout Repo - # uses: actions/checkout@v2 - # - # - name: Setup JDK ${{ matrix.java }} - # uses: actions/setup-java@v1 - # with: - # java-version: ${{ matrix.java }} - # - # - name: Get Version Info - # run: | - # 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 - # 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 - # 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 - # - # - name: Build OpenCV on Arm64 - # uses: uraimo/run-on-arch-action@v2.0.9 - # with: - # arch: aarch64 - # distro: ubuntu18.04 - # - # # Not required, but speeds up builds - # githubToken: ${{ github.token }} - # - # # Create an artifacts directory - # setup: | - # mkdir -p "${PWD}/artifacts" - # - # # Mount the artifacts directory as /artifacts in the container - # # Also mount the checked out repo as /host_repo so we can do a test build. - # dockerRunArgs: | - # --volume "${PWD}/artifacts:/artifacts" - # --volume "${PWD}:/host_repo" - # - # run: | - # apt-get update -q -y - # apt-get install -q -y git wget cmake unzip build-essential default-jre default-jdk ant maven python3 ca-certificates - # - # # TODO: I'd like to get this path automatically somehow. I think it might be - # # in /etc/environment but sourcing it didn't seem to work. Need to figure out - # # where it would be after starting a new shell. - # export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-arm64 - # - # wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - # unzip ${{ env.OPENCV_VERSION }} > /dev/null - # - # wget -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - # unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null - # - # base=${PWD} - # cd opencv-${{ env.OPENCV_VERSION }} - # mkdir build - # cd build - # cmake \ - # -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ - # -D BUILD_JAVA=ON \ - # -D BUILD_FAT_JAVA_LIB=ON \ - # -D OPENCV_ENABLE_NONFREE=ON \ - # -D BUILD_SHARED_LIBS=OFF \ - # -D BUILD_PERF_TESTS=OFF \ - # -D BUILD_TESTS=OFF \ - # -D BUILD_EXAMPLES=OFF \ - # -D BUILD_DOCS=OFF \ - # -D BUILD_PACKAGE=OFF \ - # -D BUILD_opencv_python2=OFF \ - # -D BUILD_opencv_python3=OFF \ - # -D BUILD_opencv_apps=OFF \ - # -D BUILD_opencv_gapi=OFF \ - # -D CMAKE_BUILD_TYPE=RELEASE \ - # -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ - # .. - # make -j4 - # - # # Copy the build artifacts to the /artifacts directory, which will be - # # used by the host to upload them. - # mkdir -p /artifacts/bin - # mkdir -p /artifacts/lib - # cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /artifacts/bin - # cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /artifacts/lib - # - # # And also copy the build artifacts to the repo, so we can do a test build. - # # Note that we use the repo checked out on the host so that we can use - # # actions/checkout for the Git stuff, rather than having to mess with - # # the authentication in this container. - # cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /host_repo/upstream - # cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /host_repo/src/main/resources/nu/pattern/opencv/linux/ARMv8 - # - # # Peform a test build in the host repo, which now contains all of the - # # build artifacts. - # cd /host_repo - # mvn -B test - # - # - name: Upload Artifacts - # uses: actions/upload-artifact@v2 - # with: - # name: ubuntu-18.04-arm64 - # path: | - # artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar - # artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so - # - # - # - # + build_linux_arm: + strategy: + matrix: + os: [ ubuntu-18.04 ] + java: [ 8 ] + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout Repo + uses: actions/checkout@v2 + + - name: Setup JDK ${{ matrix.java }} + uses: actions/setup-java@v1 + with: + java-version: ${{ matrix.java }} + + - name: Get Version Info + run: | + 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 + 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 + 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 + + - name: Build OpenCV on Arm + uses: uraimo/run-on-arch-action@v2.0.9 + with: + arch: armv7 + distro: ubuntu18.04 + + # Not required, but speeds up builds + githubToken: ${{ github.token }} + + # Create an artifacts directory + setup: | + mkdir -p "${PWD}/artifacts" + + # Mount the artifacts directory as /artifacts in the container + # Also mount the checked out repo as /host_repo so we can do a test build. + dockerRunArgs: | + --volume "${PWD}/artifacts:/artifacts" + --volume "${PWD}:/host_repo" + + run: | + apt-get update -q -y + apt-get install -q -y git wget cmake unzip build-essential default-jre default-jdk ant maven python3 ca-certificates + + # TODO: I'd like to get this path automatically somehow. I think it might be + # in /etc/environment but sourcing it didn't seem to work. Need to figure out + # where it would be after starting a new shell. + export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-armhf + + wget --no-check-certificate https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + unzip ${{ env.OPENCV_VERSION }} > /dev/null + + wget --no-check-certificate -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null + + base=${PWD} + cd opencv-${{ env.OPENCV_VERSION }} + mkdir build + cd build + cmake \ + -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ + -D BUILD_JAVA=ON \ + -D BUILD_FAT_JAVA_LIB=ON \ + -D OPENCV_ENABLE_NONFREE=ON \ + -D BUILD_SHARED_LIBS=OFF \ + -D BUILD_PERF_TESTS=OFF \ + -D BUILD_TESTS=OFF \ + -D BUILD_EXAMPLES=OFF \ + -D BUILD_DOCS=OFF \ + -D BUILD_PACKAGE=OFF \ + -D BUILD_opencv_python2=OFF \ + -D BUILD_opencv_python3=OFF \ + -D BUILD_opencv_apps=OFF \ + -D BUILD_opencv_gapi=OFF \ + -D CMAKE_BUILD_TYPE=RELEASE \ + -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ + .. + make -j4 + + # Copy the build artifacts to the /artifacts directory, which will be + # used by the host to upload them. + mkdir -p /artifacts/bin + mkdir -p /artifacts/lib + cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /artifacts/bin + cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /artifacts/lib + + # And also copy the build artifacts to the repo, so we can do a test build. + # Note that we use the repo checked out on the host so that we can use + # actions/checkout for the Git stuff, rather than having to mess with + # the authentication in this container. + cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /host_repo/upstream + cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /host_repo/src/main/resources/nu/pattern/opencv/linux/ARMv7 + + # Peform a test build in the host repo, which now contains all of the + # build artifacts. + cd /host_repo + mvn -B test + + - name: Upload Artifacts + uses: actions/upload-artifact@v2 + with: + name: ubuntu-18.04-arm + path: | + artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar + artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so + + + + build_linux_arm64: + strategy: + matrix: + os: [ ubuntu-18.04 ] + java: [ 8 ] + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout Repo + uses: actions/checkout@v2 + + - name: Setup JDK ${{ matrix.java }} + uses: actions/setup-java@v1 + with: + java-version: ${{ matrix.java }} + + - name: Get Version Info + run: | + 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 + 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 + 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 + + - name: Build OpenCV on Arm64 + uses: uraimo/run-on-arch-action@v2.0.9 + with: + arch: aarch64 + distro: ubuntu18.04 + + # Not required, but speeds up builds + githubToken: ${{ github.token }} + + # Create an artifacts directory + setup: | + mkdir -p "${PWD}/artifacts" + + # Mount the artifacts directory as /artifacts in the container + # Also mount the checked out repo as /host_repo so we can do a test build. + dockerRunArgs: | + --volume "${PWD}/artifacts:/artifacts" + --volume "${PWD}:/host_repo" + + run: | + apt-get update -q -y + apt-get install -q -y git wget cmake unzip build-essential default-jre default-jdk ant maven python3 ca-certificates + + # TODO: I'd like to get this path automatically somehow. I think it might be + # in /etc/environment but sourcing it didn't seem to work. Need to figure out + # where it would be after starting a new shell. + export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-arm64 + + wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + unzip ${{ env.OPENCV_VERSION }} > /dev/null + + wget -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null + + base=${PWD} + cd opencv-${{ env.OPENCV_VERSION }} + mkdir build + cd build + cmake \ + -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ + -D BUILD_JAVA=ON \ + -D BUILD_FAT_JAVA_LIB=ON \ + -D OPENCV_ENABLE_NONFREE=ON \ + -D BUILD_SHARED_LIBS=OFF \ + -D BUILD_PERF_TESTS=OFF \ + -D BUILD_TESTS=OFF \ + -D BUILD_EXAMPLES=OFF \ + -D BUILD_DOCS=OFF \ + -D BUILD_PACKAGE=OFF \ + -D BUILD_opencv_python2=OFF \ + -D BUILD_opencv_python3=OFF \ + -D BUILD_opencv_apps=OFF \ + -D BUILD_opencv_gapi=OFF \ + -D CMAKE_BUILD_TYPE=RELEASE \ + -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ + .. + make -j4 + + # Copy the build artifacts to the /artifacts directory, which will be + # used by the host to upload them. + mkdir -p /artifacts/bin + mkdir -p /artifacts/lib + cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /artifacts/bin + cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /artifacts/lib + + # And also copy the build artifacts to the repo, so we can do a test build. + # Note that we use the repo checked out on the host so that we can use + # actions/checkout for the Git stuff, rather than having to mess with + # the authentication in this container. + cp bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar /host_repo/upstream + cp lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so /host_repo/src/main/resources/nu/pattern/opencv/linux/ARMv8 + + # Peform a test build in the host repo, which now contains all of the + # build artifacts. + cd /host_repo + mvn -B test + + - name: Upload Artifacts + uses: actions/upload-artifact@v2 + with: + name: ubuntu-18.04-arm64 + path: | + artifacts/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar + artifacts/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so + + + + # Build native libraries for Linux and Mac. Uploads the libraries # as artifacts which are used in subsequent jobs. build_mac_linux_x64: @@ -315,81 +315,81 @@ jobs: opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib - # # Build Apple Silicon Mac native binary. - # # See https://cmake.org/cmake/help/v3.23/variable/CMAKE_APPLE_SILICON_PROCESSOR.html - # build_mac_aarch64: - # strategy: - # matrix: - # java: [ 8 ] - # runs-on: [self-hosted, macOS, ARM64] - # - # steps: - # - name: Checkout Repo - # uses: actions/checkout@v2 - # - # - name: Setup JDK ${{ matrix.java }} - # uses: actions/setup-java@v3 - # with: - # distribution: 'temurin' - # architecture: aarch64 - # java-version: ${{ matrix.java }} - # - # - name: Get Version Info - # run: | - # 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 - # 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 - # 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 - # - # - name: Build OpenCV - # run: | - # wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - # unzip ${{ env.OPENCV_VERSION }} > /dev/null - # - # wget -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null - # unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null - # - # base=${PWD} - # cd opencv-${{ env.OPENCV_VERSION }} - # mkdir build - # cd build - # cmake \ - # -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ - # -D BUILD_JAVA=ON \ - # -D BUILD_FAT_JAVA_LIB=ON \ - # -D OPENCV_ENABLE_NONFREE=ON \ - # -D BUILD_SHARED_LIBS=OFF \ - # -D BUILD_PERF_TESTS=OFF \ - # -D BUILD_TESTS=OFF \ - # -D BUILD_EXAMPLES=OFF \ - # -D BUILD_DOCS=OFF \ - # -D BUILD_PACKAGE=OFF \ - # -D BUILD_opencv_python2=OFF \ - # -D BUILD_opencv_python3=OFF \ - # -D BUILD_opencv_apps=OFF \ - # -D BUILD_opencv_gapi=OFF \ - # -D CMAKE_BUILD_TYPE=RELEASE \ - # -D CMAKE_APPLE_SILICON_PROCESSOR=arm64 \ - # -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ - # .. - # make -j8 - # - # - name: Copy Libraries - # run: | - # cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : - # cp opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 || : - # - # - name: Build with Maven - # run: mvn -B test - # - # - name: Upload Libraries - # uses: actions/upload-artifact@v2 - # with: - # name: macos-aarch64 - # path: | - # opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar - # opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib - # - # + # Build Apple Silicon Mac native binary. + # See https://cmake.org/cmake/help/v3.23/variable/CMAKE_APPLE_SILICON_PROCESSOR.html + build_mac_aarch64: + strategy: + matrix: + java: [ 8 ] + runs-on: [self-hosted, macOS, ARM64] + + steps: + - name: Checkout Repo + uses: actions/checkout@v2 + + - name: Setup JDK ${{ matrix.java }} + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + architecture: aarch64 + java-version: ${{ matrix.java }} + + - name: Get Version Info + run: | + 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 + 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 + 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 + + - name: Build OpenCV + run: | + wget https://github.com/opencv/opencv/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + unzip ${{ env.OPENCV_VERSION }} > /dev/null + + wget -O opencv_contrib-${{ env.OPENCV_VERSION }}.zip https://github.com/opencv/opencv_contrib/archive/${{ env.OPENCV_VERSION }}.zip > /dev/null + unzip opencv_contrib-${{ env.OPENCV_VERSION }}.zip > /dev/null + + base=${PWD} + cd opencv-${{ env.OPENCV_VERSION }} + mkdir build + cd build + cmake \ + -D OPENCV_FORCE_3RDPARTY_BUILD=ON \ + -D BUILD_JAVA=ON \ + -D BUILD_FAT_JAVA_LIB=ON \ + -D OPENCV_ENABLE_NONFREE=ON \ + -D BUILD_SHARED_LIBS=OFF \ + -D BUILD_PERF_TESTS=OFF \ + -D BUILD_TESTS=OFF \ + -D BUILD_EXAMPLES=OFF \ + -D BUILD_DOCS=OFF \ + -D BUILD_PACKAGE=OFF \ + -D BUILD_opencv_python2=OFF \ + -D BUILD_opencv_python3=OFF \ + -D BUILD_opencv_apps=OFF \ + -D BUILD_opencv_gapi=OFF \ + -D CMAKE_BUILD_TYPE=RELEASE \ + -D CMAKE_APPLE_SILICON_PROCESSOR=arm64 \ + -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ + .. + make -j8 + + - name: Copy Libraries + run: | + cp opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream || : + cp opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 || : + + - name: Build with Maven + run: mvn -B test + + - name: Upload Libraries + uses: actions/upload-artifact@v2 + with: + name: macos-aarch64 + path: | + opencv-${{ env.OPENCV_VERSION }}/build/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar + opencv-${{ env.OPENCV_VERSION }}/build/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib + + # Build native libraries for Windows. Uploads the libraries @@ -483,8 +483,7 @@ jobs: # Download and combine the artifacts from the above jobs and build the # distribution jar. Uploads it as an artifact for subsequent steps. build_dist: - # needs: [build_mac_aarch64, build_linux_arm, build_linux_arm64, build_mac_linux_x64, build_windows] - needs: [ build_mac_linux_x64, build_windows ] + needs: [build_mac_aarch64, build_linux_arm, build_linux_arm64, build_mac_linux_x64, build_windows] strategy: matrix: @@ -513,13 +512,12 @@ jobs: - name: Copy Binaries run: | - ls -lahR cp macos-10.15/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 - # cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 + cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 - # cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 - # cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 + cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 + cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 cp windows-2022/Release/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/ - name: Build with Maven @@ -612,12 +610,12 @@ jobs: - name: Copy Binaries run: | - # cp macos-10.15/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream - # cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 - # cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 - # cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 - # cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 - # cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 + cp macos-10.15/bin/opencv-${{ env.OPENCV_VERSION_SHORT }}.jar upstream + cp macos-10.15/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/x86_64 + cp macos-aarch64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dylib src/main/resources/nu/pattern/opencv/osx/ARMv8 + cp ubuntu-20.04/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/x86_64 + cp ubuntu-18.04-arm/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv7 + cp ubuntu-18.04-arm64/lib/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.so src/main/resources/nu/pattern/opencv/linux/ARMv8 cp windows-2022/libopencv_java${{ env.OPENCV_VERSION_SHORT }}.dll src/main/resources/nu/pattern/opencv/windows/x86_64/opencv_java${{ env.OPENCV_VERSION_SHORT }}.dll - name: Publish to Apache Maven Central From c104c0ac14f4a549a704969781aeb2113cfb8e65 Mon Sep 17 00:00:00 2001 From: qwelyt Date: Wed, 26 Apr 2023 09:49:50 +0200 Subject: [PATCH 62/62] Add back the cxx standard --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 229222d..b43ef7a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -369,6 +369,7 @@ jobs: -D BUILD_opencv_gapi=OFF \ -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_APPLE_SILICON_PROCESSOR=arm64 \ + -D CMAKE_CXX_STANDARD=17 \ -D OPENCV_EXTRA_MODULES_PATH=${base}/opencv_contrib-${{ env.OPENCV_VERSION }}/modules ${base}/opencv-${{ env.OPENCV_VERSION }} \ .. make -j8