name: Ubuntu-valgrind

# https://www.jeffgeerling.com/blog/2020/running-github-actions-workflow-on-schedule-and-other-events
on:
  push:
  pull_request:
  schedule:
    - cron: '0 2 * * SUN'

jobs:
  build-ubuntu-valgrind:
    runs-on: ubuntu-latest

    steps:
    # https://github.com/marketplace/actions/cancel-workflow-action
    - name: Cancel Previous Runs
      uses: styfle/cancel-workflow-action@0.9.1
      with:
        access_token: ${{ github.token }}

    - name: Checkout repository
      uses: actions/checkout@v3

    - name: Print system information
      run: lscpu

    - name: Print OS information
      run: lsb_release -a

    - name: Install dependencies
      run: sudo apt-get update && sudo apt-get install -y libx11-dev libdc1394-dev libv4l-dev liblapack-dev libopenblas-dev libeigen3-dev libopencv-dev nlohmann-json3-dev valgrind

    - name: Clone visp-images
      env:
        BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
      # https://remarkablemark.org/blog/2022/09/25/check-git-branch-exists-in-remote-repository/
      run: |
        git clone --depth 1 https://github.com/lagadic/visp-images ${HOME}/visp-images
        echo "VISP_INPUT_IMAGE_PATH=$HOME/visp-images" >> $GITHUB_ENV
        echo ${VISP_INPUT_IMAGE_PATH}

    - name: Configure CMake
      run: |
        mkdir build
        cd build
        cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo
        cat ViSP-third-party.txt

    - name: Compile
      working-directory: build
      run: make -j$(nproc)

    - name: Run unit tests with Valgrind
      working-directory: build
      run: ctest -j$(nproc) -T memcheck
