Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 20 additions & 66 deletions .github/workflows/linux-arm.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Linux ARM
name: Linux ARM

on:
pull_request:
Expand All @@ -19,7 +19,7 @@ jobs:
steps:
- uses: actions/checkout@v6
with:
path: opencvsharp
submodules: true

- name: Install dependencies
run: |
Expand Down Expand Up @@ -52,69 +52,21 @@ jobs:
id: opencv-cache
uses: actions/cache/restore@v5
with:
path: ${{ github.workspace }}/opencv_artifacts/
path: |
${{ github.workspace }}/opencv_artifacts/include
${{ github.workspace }}/opencv_artifacts/lib
key: opencv-arm-${{ env.OPENCV_VERSION }}-${{ hashFiles('.github/workflows/linux-arm.yml') }}
restore-keys: |
opencv-arm-${{ env.OPENCV_VERSION }}-

- name: Checkout OpenCV
if: steps.opencv-cache.outputs.cache-hit != 'true'
uses: actions/checkout@v6
with:
repository: opencv/opencv
path: opencv
ref: ${{ env.OPENCV_VERSION }}
- name: Checkout OpenCV Contrib
if: steps.opencv-cache.outputs.cache-hit != 'true'
uses: actions/checkout@v6
with:
repository: opencv/opencv_contrib
path: opencv_contrib
ref: ${{ env.OPENCV_VERSION }}

- name: Build OpenCV
if: steps.opencv-cache.outputs.cache-hit != 'true'
run: |
cmake \
-C cmake/opencv_build_options.cmake \
-S opencv \
-B opencv/build \
-D CMAKE_BUILD_TYPE=Release \
-D OPENCV_EXTRA_MODULES_PATH=${GITHUB_WORKSPACE}/opencv_contrib/modules \
-D BUILD_SHARED_LIBS=OFF \
-D ENABLE_CXX11=ON \
-D BUILD_EXAMPLES=OFF \
-D BUILD_DOCS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_JAVA=OFF \
-D BUILD_opencv_apps=OFF \
-D BUILD_opencv_barcode=OFF \
-D BUILD_opencv_java_bindings_generator=OFF \
-D BUILD_opencv_python_bindings_generator=OFF \
-D BUILD_opencv_python_tests=OFF \
-D BUILD_opencv_ts=OFF \
-D BUILD_opencv_js=OFF \
-D BUILD_opencv_js_bindings_generator=OFF \
-D BUILD_opencv_bioinspired=OFF \
-D BUILD_opencv_ccalib=OFF \
-D BUILD_opencv_datasets=OFF \
-D BUILD_opencv_dnn_objdetect=OFF \
-D BUILD_opencv_dpm=OFF \
-D BUILD_opencv_fuzzy=OFF \
-D BUILD_opencv_gapi=ON \
-D BUILD_opencv_intensity_transform=OFF \
-D BUILD_opencv_mcc=OFF \
-D BUILD_opencv_objc_bindings_generator=OFF \
-D BUILD_opencv_rapid=OFF \
-D BUILD_opencv_reg=OFF \
-D BUILD_opencv_stereo=OFF \
-D BUILD_opencv_structured_light=OFF \
-D BUILD_opencv_surface_matching=OFF \
-D BUILD_opencv_wechat_qrcode=ON \
-D BUILD_opencv_videostab=OFF \
-D WITH_GSTREAMER=OFF \
-D WITH_ADE=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D CMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/opencv_artifacts
cmake --build opencv/build -j 3
cmake --install opencv/build
Expand All @@ -125,23 +77,25 @@ jobs:
if: steps.opencv-cache.outputs.cache-hit != 'true' && github.event_name == 'push' && github.ref == 'refs/heads/main'
uses: actions/cache/save@v5
with:
path: ${{ github.workspace }}/opencv_artifacts/
path: |
${{ github.workspace }}/opencv_artifacts/include
${{ github.workspace }}/opencv_artifacts/lib
key: opencv-arm-${{ env.OPENCV_VERSION }}

- name: Build OpenCvSharpExtern
run: |
cmake \
-S opencvsharp/src \
-B opencvsharp/src/build \
-S src \
-B src/build \
-D CMAKE_BUILD_TYPE=Release \
-D CMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/opencv_artifacts
cmake --build opencvsharp/src/build -j
ls opencvsharp/src/build/OpenCvSharpExtern
cp opencvsharp/src/build/OpenCvSharpExtern/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/opencvsharp/nuget/
cmake --build src/build -j
ls src/build/OpenCvSharpExtern
cp src/build/OpenCvSharpExtern/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/nuget/

- name: Check OpenCvSharpExtern
run: |
cd ${GITHUB_WORKSPACE}/opencvsharp/nuget/
cd ${GITHUB_WORKSPACE}/nuget/
ldd libOpenCvSharpExtern.so
nm libOpenCvSharpExtern.so
echo -ne "#include <stdio.h> \n int core_Mat_sizeof(); int main(){ int i = core_Mat_sizeof(); printf(\"sizeof(Mat) = %d\", i); return 0; }" > test.c
Expand All @@ -162,7 +116,7 @@ jobs:
version="${OPENCV_VERSION}.${yyyymmdd}${BETA}"
echo "Package version: $version"

cd ${GITHUB_WORKSPACE}/opencvsharp
cd ${GITHUB_WORKSPACE}
dotnet pack nuget/OpenCvSharp4.runtime.linux-arm.csproj -o ${GITHUB_WORKSPACE}/artifacts_arm -p:Version=$version

ls ${GITHUB_WORKSPACE}/artifacts_arm
Expand All @@ -174,9 +128,9 @@ jobs:

- name: Test
run: |
cd ${GITHUB_WORKSPACE}/opencvsharp/test/OpenCvSharp.Tests
cd ${GITHUB_WORKSPACE}/test/OpenCvSharp.Tests
dotnet build -c Release -f net8.0
cp ${GITHUB_WORKSPACE}/opencvsharp/nuget/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/opencvsharp/test/OpenCvSharp.Tests/bin/Release/net8.0/
cp ${GITHUB_WORKSPACE}/opencvsharp/nuget/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/opencvsharp/test/OpenCvSharp.Tests/
sudo cp ${GITHUB_WORKSPACE}/opencvsharp/nuget/libOpenCvSharpExtern.so /usr/lib/
cp ${GITHUB_WORKSPACE}/nuget/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/test/OpenCvSharp.Tests/bin/Release/net8.0/
cp ${GITHUB_WORKSPACE}/nuget/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/test/OpenCvSharp.Tests/
sudo cp ${GITHUB_WORKSPACE}/nuget/libOpenCvSharpExtern.so /usr/lib/
LD_LIBRARY_PATH=. dotnet test OpenCvSharp.Tests.csproj -c Release -f net8.0 --runtime linux-arm64 --logger "trx;LogFileName=test-results.trx" < /dev/null
46 changes: 11 additions & 35 deletions .github/workflows/ubuntu-slim.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Ubuntu Slim
name: Ubuntu Slim

on:
pull_request:
Expand All @@ -25,7 +25,7 @@ jobs:
steps:
- uses: actions/checkout@v6
with:
path: opencvsharp
submodules: true

- name: Install dependencies
run: |
Expand Down Expand Up @@ -54,39 +54,15 @@ jobs:
${{ github.workspace }}/opencv_artifacts_slim/lib
key: opencv-${{ env.OPENCV_VERSION }}-ubuntu-${{ matrix.ubuntu }}-slim

- name: Checkout OpenCV
if: steps.opencv-cache.outputs.cache-hit != 'true'
uses: actions/checkout@v6
with:
repository: opencv/opencv
path: opencv
ref: ${{ env.OPENCV_VERSION }}

- name: Build OpenCV (slim)
if: steps.opencv-cache.outputs.cache-hit != 'true'
run: |
# Keep a practical subset (e.g., features2d/objdetect) while avoiding heavy runtime deps
# from UI/video stacks and contrib modules.
cmake \
-C cmake/opencv_build_options_slim.cmake \
-S opencv \
-B opencv/build \
-D CMAKE_BUILD_TYPE=Release \
-D BUILD_SHARED_LIBS=OFF \
-D ENABLE_CXX11=ON \
-D BUILD_LIST=core,imgproc,imgcodecs,calib3d,features2d,flann,objdetect,photo \
-D BUILD_PROTOBUF=OFF \
-D BUILD_opencv_dnn=OFF \
-D BUILD_EXAMPLES=OFF \
-D BUILD_DOCS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_JAVA=OFF \
-D BUILD_opencv_apps=OFF \
-D WITH_GSTREAMER=OFF \
-D WITH_FFMPEG=OFF \
-D WITH_GTK=OFF \
-D WITH_PROTOBUF=OFF \
-D WITH_ADE=OFF \
-D CMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/opencv_artifacts_slim
cmake --build opencv/build -j 3
cmake --install opencv/build
Expand Down Expand Up @@ -141,8 +117,8 @@ jobs:
run: |
# Match OpenCV subset above: keep common CV modules, disable wrappers for disabled modules.
cmake \
-S opencvsharp/src \
-B opencvsharp/src/build-slim \
-S src \
-B src/build-slim \
-D CMAKE_BUILD_TYPE=Release \
-D CMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/opencv_artifacts_slim \
-D NO_CONTRIB=ON \
Expand All @@ -153,18 +129,18 @@ jobs:
-D NO_DNN=ON \
-D NO_ML=ON \
-D NO_BARCODE=ON
cmake --build opencvsharp/src/build-slim -j
cp opencvsharp/src/build-slim/OpenCvSharpExtern/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/opencvsharp/nuget/
cmake --build src/build-slim -j
cp src/build-slim/OpenCvSharpExtern/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/nuget/

- name: Check OpenCvSharpExtern dependencies (slim)
run: |
cd ${GITHUB_WORKSPACE}/opencvsharp/nuget/
cd ${GITHUB_WORKSPACE}/nuget/
ldd -r libOpenCvSharpExtern.so
! ldd libOpenCvSharpExtern.so | grep -q "not found"

- name: Smoke test OpenCvSharpExtern (slim)
run: |
cd ${GITHUB_WORKSPACE}/opencvsharp/nuget/
cd ${GITHUB_WORKSPACE}/nuget/
echo -ne "#include <stdio.h> \n int core_Mat_sizeof(); int main(){ int i = core_Mat_sizeof(); printf(\"sizeof(Mat) = %d\", i); return 0; }" > test.c
gcc -I./ -L./ test.c -o test -lOpenCvSharpExtern
LD_LIBRARY_PATH=. ./test
Expand All @@ -182,7 +158,7 @@ jobs:
version="${OPENCV_VERSION}.${yyyymmdd}${BETA}"
echo "Package version: $version"

cd ${GITHUB_WORKSPACE}/opencvsharp
cd ${GITHUB_WORKSPACE}
package_project="OpenCvSharp4.official.runtime.ubuntu.${{ matrix.ubuntu }}-x64.slim.csproj"
dotnet pack "nuget/${package_project}" -o ${GITHUB_WORKSPACE}/artifacts -p:Version=$version

Expand All @@ -195,7 +171,7 @@ jobs:
version="${OPENCV_VERSION}.${yyyymmdd}${BETA}"
echo "Package version: $version"

cd ${GITHUB_WORKSPACE}/opencvsharp
cd ${GITHUB_WORKSPACE}
dotnet pack "nuget/OpenCvSharp4.official.runtime.linux-x64.slim.csproj" -o ${GITHUB_WORKSPACE}/artifacts -p:Version=$version

- uses: actions/upload-artifact@v6
Expand Down
80 changes: 15 additions & 65 deletions .github/workflows/ubuntu.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Ubuntu
name: Ubuntu

on:
pull_request:
Expand Down Expand Up @@ -27,7 +27,7 @@ jobs:
steps:
- uses: actions/checkout@v6
with:
path: opencvsharp
submodules: true

- name: Install dependencies
run: |
Expand Down Expand Up @@ -65,64 +65,14 @@ jobs:
${{ github.workspace }}/opencv_artifacts/lib
key: opencv-${{ env.OPENCV_VERSION }}-ubuntu-${{ matrix.ubuntu }}

- name: Checkout OpenCV
if: steps.opencv-cache.outputs.cache-hit != 'true'
uses: actions/checkout@v6
with:
repository: opencv/opencv
path: opencv
ref: ${{ env.OPENCV_VERSION }}
- name: Checkout OpenCV Contrib
if: steps.opencv-cache.outputs.cache-hit != 'true'
uses: actions/checkout@v6
with:
repository: opencv/opencv_contrib
path: opencv_contrib
ref: ${{ env.OPENCV_VERSION }}

- name: Build OpenCV
if: steps.opencv-cache.outputs.cache-hit != 'true'
run: |
cmake \
-C cmake/opencv_build_options.cmake \
-S opencv \
-B opencv/build \
-D CMAKE_BUILD_TYPE=Release \
-D OPENCV_EXTRA_MODULES_PATH=${GITHUB_WORKSPACE}/opencv_contrib/modules \
-D BUILD_SHARED_LIBS=OFF \
-D ENABLE_CXX11=ON \
-D BUILD_EXAMPLES=OFF \
-D BUILD_DOCS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_JAVA=OFF \
-D BUILD_opencv_apps=OFF \
-D BUILD_opencv_barcode=OFF \
-D BUILD_opencv_java_bindings_generator=OFF \
-D BUILD_opencv_python_bindings_generator=OFF \
-D BUILD_opencv_python_tests=OFF \
-D BUILD_opencv_ts=OFF \
-D BUILD_opencv_js=OFF \
-D BUILD_opencv_js_bindings_generator=OFF \
-D BUILD_opencv_bioinspired=OFF \
-D BUILD_opencv_ccalib=OFF \
-D BUILD_opencv_datasets=OFF \
-D BUILD_opencv_dnn_objdetect=OFF \
-D BUILD_opencv_dpm=OFF \
-D BUILD_opencv_fuzzy=OFF \
-D BUILD_opencv_gapi=ON \
-D BUILD_opencv_intensity_transform=OFF \
-D BUILD_opencv_mcc=OFF \
-D BUILD_opencv_objc_bindings_generator=OFF \
-D BUILD_opencv_rapid=OFF \
-D BUILD_opencv_reg=OFF \
-D BUILD_opencv_stereo=OFF \
-D BUILD_opencv_structured_light=OFF \
-D BUILD_opencv_surface_matching=OFF \
-D BUILD_opencv_wechat_qrcode=ON \
-D BUILD_opencv_videostab=OFF \
-D WITH_GSTREAMER=OFF \
-D WITH_ADE=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D CMAKE_INSTALL_PREFIX=${GITHUB_WORKSPACE}/opencv_artifacts
cmake --build opencv/build -j 3
cmake --install opencv/build
Expand All @@ -141,17 +91,17 @@ jobs:
- name: Build OpenCvSharpExtern
run: |
cmake \
-S opencvsharp/src \
-B opencvsharp/src/build \
-S src \
-B src/build \
-D CMAKE_BUILD_TYPE=Release \
-D CMAKE_PREFIX_PATH=${GITHUB_WORKSPACE}/opencv_artifacts
cmake --build opencvsharp/src/build -j
ls opencvsharp/src/build/OpenCvSharpExtern
cp opencvsharp/src/build/OpenCvSharpExtern/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/opencvsharp/nuget/
cmake --build src/build -j
ls src/build/OpenCvSharpExtern
cp src/build/OpenCvSharpExtern/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/nuget/

- name: Check OpenCvSharpExtern
run: |
cd ${GITHUB_WORKSPACE}/opencvsharp/nuget/
cd ${GITHUB_WORKSPACE}/nuget/
ldd libOpenCvSharpExtern.so
nm libOpenCvSharpExtern.so
echo -ne "#include <stdio.h> \n int core_Mat_sizeof(); int main(){ int i = core_Mat_sizeof(); printf(\"sizeof(Mat) = %d\", i); return 0; }" > test.c
Expand All @@ -165,11 +115,11 @@ jobs:

- name: Test
run: |
cd ${GITHUB_WORKSPACE}/opencvsharp/test/OpenCvSharp.Tests
cd ${GITHUB_WORKSPACE}/test/OpenCvSharp.Tests
dotnet build -c Release -f net8.0
cp ${GITHUB_WORKSPACE}/opencvsharp/nuget/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/opencvsharp/test/OpenCvSharp.Tests/bin/Release/net8.0/
cp ${GITHUB_WORKSPACE}/opencvsharp/nuget/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/opencvsharp/test/OpenCvSharp.Tests/
sudo cp ${GITHUB_WORKSPACE}/opencvsharp/nuget/libOpenCvSharpExtern.so /usr/lib/
cp ${GITHUB_WORKSPACE}/nuget/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/test/OpenCvSharp.Tests/bin/Release/net8.0/
cp ${GITHUB_WORKSPACE}/nuget/libOpenCvSharpExtern.so ${GITHUB_WORKSPACE}/test/OpenCvSharp.Tests/
sudo cp ${GITHUB_WORKSPACE}/nuget/libOpenCvSharpExtern.so /usr/lib/
LD_LIBRARY_PATH=. dotnet test OpenCvSharp.Tests.csproj -c Release -f net8.0 --runtime linux-x64 --logger "trx;LogFileName=test-results.trx" < /dev/null

- name: Create NuGet package
Expand All @@ -181,7 +131,7 @@ jobs:
version="${OPENCV_VERSION}.${yyyymmdd}${BETA}"
echo "Package version: $version"

cd ${GITHUB_WORKSPACE}/opencvsharp
cd ${GITHUB_WORKSPACE}
package_project="OpenCvSharp4.official.runtime.ubuntu.${{ matrix.ubuntu }}-x64.csproj"
dotnet pack "nuget/${package_project}" -o ${GITHUB_WORKSPACE}/artifacts -p:Version=$version

Expand All @@ -196,7 +146,7 @@ jobs:
version="${OPENCV_VERSION}.${yyyymmdd}${BETA}"
echo "Package version: $version"

cd ${GITHUB_WORKSPACE}/opencvsharp
cd ${GITHUB_WORKSPACE}
dotnet pack "nuget/OpenCvSharp4.official.runtime.linux-x64.csproj" -o ${GITHUB_WORKSPACE}/artifacts -p:Version=$version

ls ${GITHUB_WORKSPACE}/artifacts
Expand Down
Loading
Loading