diff --git a/.github/workflows/macos-linux-namespace.yml b/.github/workflows/macos-linux-namespace.yml new file mode 100644 index 0000000000..569de8c49f --- /dev/null +++ b/.github/workflows/macos-linux-namespace.yml @@ -0,0 +1,106 @@ +name: MacOS + +# https://www.jeffgeerling.com/blog/2020/running-github-actions-workflow-on-schedule-and-other-events +on: + pull_request: + types: [opened, reopened, synchronize] + schedule: + - cron: '0 2 * * SUN' + +# https://stackoverflow.com/questions/66335225/how-to-cancel-previous-runs-in-the-pr-when-you-push-new-commitsupdate-the-curre#comment133398800_72408109 +# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#concurrency +concurrency: + group: ${{ github.workflow }}-${{ github.ref || github.run_id }} + cancel-in-progress: true + +jobs: + build-macos: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: ["ubuntu-latest", "macos-latest"] + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Print system information + run: | + sysctl -a | grep machdep.cpu + sysctl -a | grep logical + + - name: Print OS information + run: system_profiler SPSoftwareDataType + + - name: Install dependencies on macos-latest + if: matrix.os == 'macos-latest' + run: | + brew install libpng libjpeg-turbo libdc1394 opencv pcl librealsense zbar nlohmann-json + + - name: Install dependencies on Ubuntu + if: matrix.os == 'ubuntu-latest' + run: | + sudo apt-get update && sudo apt-get install -y libjpeg-dev libpng-dev libopencv-dev libpcl-dev libx11-dev liblapack-dev libeigen3-dev libv4l-dev libzbar-dev libpthread-stubs0-dev libdc1394-dev nlohmann-json3-dev + + - name: Install dependencies on macos-13 + # On macos-13 we need to do a specific action + # ==> Pouring python@3.12--3.12.1_1.ventura.bottle.tar.gz + # Error: The `brew link` step did not complete successfully + # The formula built, but is not symlinked into /usr/local + # Could not symlink bin/2to3-3.12 + # Target /usr/local/bin/2to3-3.12 + # already exists. You may want to remove it: + # rm '/usr/local/bin/2to3-3.12' + # + # To force the link and overwrite all conflicting files: + # brew link --overwrite python@3.12 + # + # Fix proposed in https://github.com/actions/runner-images/issues/6817 + if: matrix.os == 'macos-13' + run: | + brew update + brew upgrade || true + brew install libpng libjpeg-turbo libdc1394 pcl librealsense zbar nlohmann-json + brew install opencv + + - 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: Clone visp_sample + run: | + git clone --depth 1 https://github.com/lagadic/visp_sample ${HOME}/visp_sample + + # Openblas location is exported explicitly because openblas is keg-only, + # which means it was not symlinked into /usr/local/. + - name: Configure CMake + if: matrix.os == 'macos-latest' + run: | + export LDFLAGS="-L/usr/local/opt/openblas/lib" + export CPPFLAGS="-I/usr/local/opt/openblas/include" + mkdir build + cd build + cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/tmp/usr/local -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_VISP_NAMESPACE=ON -DENABLE_EXPLICIT_KEYWORD=ON -DVISP_BUILD_DEPRECATED_FUNCTIONS=OFF + cat ViSP-third-party.txt + + - name: Configure CMake + if: matrix.os == 'ubuntu-latest' + run: | + mkdir build + cd build + cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/tmp/usr/local -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_VISP_NAMESPACE=ON -DENABLE_EXPLICIT_KEYWORD=ON -DVISP_BUILD_DEPRECATED_FUNCTIONS=OFF + cat ViSP-third-party.txt + + - name: Compile + working-directory: build + run: make -j$(sysctl -n hw.logicalcpu) install + + - name: Run unit tests + working-directory: build + run: ctest -j$(sysctl -n hw.logicalcpu) --output-on-failure -V