Skip to content

ci: Remove OpenCV dependency and fix CTS build (#2) #16

ci: Remove OpenCV dependency and fix CTS build (#2)

ci: Remove OpenCV dependency and fix CTS build (#2) #16

name: OpenVX Vision Conformance
on:
push:
branches: [ main, master, develop ]
pull_request:
branches: [ main, master ]
workflow_dispatch:
inputs:
test_filter:
description: 'Test filter pattern (optional)'
required: false
default: ''
verbose:
description: 'Verbose output'
required: false
default: 'false'
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
jobs:
build-and-test:
runs-on: ubuntu-22.04
timeout-minutes: 60
steps:
- name: Checkout rustVX
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
- name: Debug directory structure
run: |
echo "=== Directory Structure ==="
ls -la
echo "=== OpenVX-cts structure ==="
ls -la OpenVX-cts/ || echo "No OpenVX-cts directory!"
echo "=== Current working directory ==="
pwd
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential \
cmake \
ninja-build \
libgtest-dev \
<<<<<<< HEAD

Check failure on line 53 in .github/workflows/openvx-conformance.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/openvx-conformance.yml

Invalid workflow file

You have an error in your yaml syntax on line 53
libjpeg-dev \
libpng-dev \
libtiff-dev \
=======
libopencv-dev \
>>>>>>> origin/master
python3 \
python3-pip
- name: Install Rust
run: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable
source $HOME/.cargo/env
rustc --version
cargo --version
<<<<<<< HEAD
- name: Cache Cargo registry
uses: actions/cache@v4
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-registry-
- name: Cache Cargo index
uses: actions/cache@v4
with:
path: ~/.cargo/git
key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-index-
- name: Cache Cargo build
uses: actions/cache@v4
with:
path: target
key: ${{ runner.os }}-cargo-build-${{ hashFiles('**/Cargo.lock') }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-cargo-build-${{ hashFiles('**/Cargo.lock') }}-
${{ runner.os }}-cargo-build-
- name: Cache OpenVX CTS build
uses: actions/cache@v4
with:
path: OpenVX-cts/build
key: ${{ runner.os }}-cts-build-${{ hashFiles('OpenVX-cts/CMakeLists.txt') }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-cts-build-${{ hashFiles('OpenVX-cts/CMakeLists.txt') }}-
${{ runner.os }}-cts-build-
=======
>>>>>>> origin/master
- name: Build rustVX
run: |
source $HOME/.cargo/env
echo "Building rustVX..."
cargo build --release
echo "Build complete. Library files:"
ls -la target/release/*.so target/release/*.rlib 2>/dev/null || true
- name: Build OpenVX CTS
run: |
echo "=== Building OpenVX CTS ==="
# Check OpenVX-cts directory
if [ ! -d "OpenVX-cts" ]; then
echo "ERROR: OpenVX-cts directory not found!"
ls -la
exit 1
fi
cd OpenVX-cts
# Check for CMakeLists.txt
if [ ! -f "CMakeLists.txt" ]; then
echo "ERROR: CMakeLists.txt not found!"
ls -la
exit 1
fi
# Prepare include directory
mkdir -p include
if [ -d "../include" ]; then
echo "Copying OpenVX headers..."
cp -r ../include/* include/ 2>/dev/null || true
fi
<<<<<<< HEAD
# Ensure clean build directory if CMake configuration changed
if [ -f "build/CMakeCache.txt" ]; then
echo "Using cached CTS build"
else
echo "Creating fresh CTS build directory"
rm -rf build
mkdir -p build
fi
=======
mkdir -p build
>>>>>>> origin/master
cd build
# Configure with verbose output and proper include paths
echo "Running cmake..."
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_STANDARD_LIBRARIES="-lm" \
-DCMAKE_CXX_STANDARD_LIBRARIES="-lm" \
-DOPENVX_INCLUDES="${{ github.workspace }}/include;${{ github.workspace }}/OpenVX-cts/include" \
-DOPENVX_LIBRARIES="${{ github.workspace }}/target/release/libopenvx_core.so;${{ github.workspace }}/target/release/libopenvx_ffi.so;m" \
-DOPENVX_CONFORMANCE_VISION=ON \
<<<<<<< HEAD
-DOPENVX_CONFORMANCE_NEURAL_NETWORKS=OFF \
-DOPENVX_CONFORMANCE_OTHER=OFF \
=======
>>>>>>> origin/master
2>&1 || {
echo "CMAKE FAILED!"
echo "CMake output:"
cat CMakeFiles/CMakeOutput.log 2>/dev/null | tail -100 || echo "No CMakeOutput.log"
cat CMakeFiles/CMakeError.log 2>/dev/null | tail -100 || echo "No CMakeError.log"
exit 1
}
# Build
echo "Running make..."
make VERBOSE=1 -j$(nproc) 2>&1 || {
echo "MAKE FAILED!"
exit 1
}
echo "Build complete. Listing binaries:"
ls -la bin/ 2>/dev/null || echo "No bin directory"
find . -name "vx_test_conformance" -type f 2>/dev/null
- name: Run Vision Conformance Tests
id: run_tests
continue-on-error: true
run: |
source $HOME/.cargo/env
echo "========================================"
echo "Running OpenVX Vision Conformance Tests"
echo "========================================"
# Find CTS build directory
CTS_DIR="OpenVX-cts/build"
if [ ! -d "$CTS_DIR" ]; then
echo "ERROR: CTS build directory not found!"
exit 1
fi
cd "$CTS_DIR"
# Check for test binary
if [ ! -f "bin/vx_test_conformance" ]; then
echo "Test binary not found, searching..."
find . -name "vx_test_conformance" -type f 2>/dev/null
ls -la bin/ 2>/dev/null || true
fi
# Set library path for the conformance tests
export LD_LIBRARY_PATH=${{ github.workspace }}/target/release:$LD_LIBRARY_PATH
export VX_TEST_DATA_PATH="${{ github.workspace }}/OpenVX-cts/test_data/"
echo "Library path: $LD_LIBRARY_PATH"
echo "VX_TEST_DATA_PATH: $VX_TEST_DATA_PATH"
# Create output directory for results
mkdir -p ${{ github.workspace }}/test-results
<<<<<<< HEAD
# Run full vision conformance tests
timeout 600 ./bin/vx_test_conformance 2>&1 | tee ${{ github.workspace }}/test-results/vision_test_output.txt || true
=======
# Run tests
timeout 300 ./bin/vx_test_conformance 2>&1 | tee ${{ github.workspace }}/test-results/vision_test_output.txt || true
>>>>>>> origin/master
echo "Test execution completed."
- name: Analyze test results
id: analyze_results
run: |
source $HOME/.cargo/env
echo "========================================"
echo "Analyzing Test Results"
echo "========================================"
OUTPUT_FILE="${{ github.workspace }}/test-results/vision_test_output.txt"
# Create output file if it doesn't exist
mkdir -p ${{ github.workspace }}/test-results
touch "$OUTPUT_FILE"
# Count passing tests
PASS_COUNT=$(grep -c "\[ DONE \]" "$OUTPUT_FILE" 2>/dev/null || echo "0")
echo "Tests passed: $PASS_COUNT"
# Count failing tests
FAIL_COUNT=$(grep -c "\[ !FAILED! \]" "$OUTPUT_FILE" 2>/dev/null || echo "0")
echo "Tests failed: $FAIL_COUNT"
<<<<<<< HEAD
# Count skipped tests
SKIP_COUNT=$(grep -c "\[ SKIP \]" "$OUTPUT_FILE" 2>/dev/null || echo "0")
echo "Tests skipped: $SKIP_COUNT"
=======
>>>>>>> origin/master
# Extract test summary
echo "========================================" | tee ${{ github.workspace }}/test-results/summary.txt
echo "Vision Conformance Test Summary" | tee -a ${{ github.workspace }}/test-results/summary.txt
echo "========================================" | tee -a ${{ github.workspace }}/test-results/summary.txt
echo "Passed: $PASS_COUNT" | tee -a ${{ github.workspace }}/test-results/summary.txt
echo "Failed: $FAIL_COUNT" | tee -a ${{ github.workspace }}/test-results/summary.txt
<<<<<<< HEAD
echo "Skipped: $SKIP_COUNT" | tee -a ${{ github.workspace }}/test-results/summary.txt
echo "Total: $((PASS_COUNT + FAIL_COUNT + SKIP_COUNT))" | tee -a ${{ github.workspace }}/test-results/summary.txt
=======
echo "Total: $((PASS_COUNT + FAIL_COUNT))" | tee -a ${{ github.workspace }}/test-results/summary.txt
>>>>>>> origin/master
if [ "$FAIL_COUNT" -eq 0 ] && [ "$PASS_COUNT" -gt 0 ]; then
echo "Status: ✅ ALL TESTS PASSED" | tee -a ${{ github.workspace }}/test-results/summary.txt
elif [ "$PASS_COUNT" -gt 0 ]; then
echo "Status: ⚠️ PARTIAL SUCCESS ($PASS_COUNT/$((PASS_COUNT + FAIL_COUNT)))" | tee -a ${{ github.workspace }}/test-results/summary.txt
else
echo "Status: ❌ NO TESTS PASSED" | tee -a ${{ github.workspace }}/test-results/summary.txt
fi
# Set outputs for GitHub Actions summary
echo "pass_count=$PASS_COUNT" >> $GITHUB_OUTPUT
echo "fail_count=$FAIL_COUNT" >> $GITHUB_OUTPUT
<<<<<<< HEAD
echo "skip_count=$SKIP_COUNT" >> $GITHUB_OUTPUT
=======
>>>>>>> origin/master
- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: conformance-test-results
path: |
test-results/
retention-days: 30
- name: Create GitHub Actions Summary
if: always()
run: |
echo "## 🧪 OpenVX Vision Conformance Test Results" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
if [ -f "test-results/summary.txt" ]; then
cat test-results/summary.txt >> $GITHUB_STEP_SUMMARY
fi
echo "" >> $GITHUB_STEP_SUMMARY
echo "### Build Information" >> $GITHUB_STEP_SUMMARY
source $HOME/.cargo/env
echo "- **Rust Version:** $(rustc --version)" >> $GITHUB_STEP_SUMMARY
echo "- **Build Type:** Release" >> $GITHUB_STEP_SUMMARY
<<<<<<< HEAD
echo "- **CTS Build:** OpenVX Conformance Test Suite (Vision Only)" >> $GITHUB_STEP_SUMMARY
echo "- **Test Suite:** Full Vision Conformance (~6000 tests)" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "📥 **Download full logs:** See Artifacts section above" >> $GITHUB_STEP_SUMMARY
=======
echo "- **CTS Build:** OpenVX Conformance Test Suite" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "📥 **Download full logs:** See Artifacts section above" >> $GITHUB_STEP_SUMMARY
>>>>>>> origin/master