diff --git a/.github/workflows/CMake-minimal-version.yaml b/.github/workflows/CMake-minimal-version.yaml new file mode 100644 index 0000000000..e6ffb04f5a --- /dev/null +++ b/.github/workflows/CMake-minimal-version.yaml @@ -0,0 +1,53 @@ +name: CMake minimal version +# The aim of this test derminate minimal supported CMake version for LibRS project +# and check if it equlas to expected minimal CMAke version + +on: + push: + pull_request: + +env: + EXPECTED_CMAKE_VERSION: "VERSION 3.8.0" + +jobs: + test_downloader: + name: "Run CMake compatibility tool" + runs-on: ubuntu-22.04 + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: "Get current CMake version" + id: cmake_version + run: | + sudo apt-get install xorg-dev libglu1-mesa-dev + + # Go back from RealSense directory to parent directory + cd .. + + git clone https://github.com/nlohmann/cmake_min_version.git + cd cmake_min_version + # We clone a specific commit which we tested the process as working + git checkout 687dc56e1cf52c865cebf6ac94ad67906d6e1369 + + python3 -mvenv venv + venv/bin/pip3 install -r requirements.txt + venv/bin/python3 cmake_downloader.py --first_minor + output=$(venv/bin/python3 cmake_min_version.py /home/runner/work/librealsense/librealsense/) + echo "$output" + + # Retrieve CMake minimal version from the last line of the tool output. + current_cmake_version=$(echo ${output: -30} | cut -d'(' -f 2 | head -c -2) + # Saving cmake minimal version string in GitHub output + echo "current_cmake_version=$current_cmake_version" >> $GITHUB_OUTPUT + + - name: "Check minimal CMake version" + run: | + if [ "${{steps.cmake_version.outputs.current_cmake_version}}" == "${EXPECTED_CMAKE_VERSION}" ] || [ "${{steps.cmake_version.outputs.current_cmake_version}}" \< "${EXPECTED_CMAKE_VERSION}" ] + then + echo "The test PASSED, current CMake version is ${{steps.cmake_version.outputs.current_cmake_version}} and it is not higher than ${EXPECTED_CMAKE_VERSION}" + exit 0 + else + echo "Error - LibRS minimal CMake version require is ${EXPECTED_CMAKE_VERSION} but on this build the minimal is ${{steps.cmake_version.outputs.current_cmake_version}}" + exit 1 + fi