From ee0ac57ab8b122078e78d35fed346bce7aa52e9a Mon Sep 17 00:00:00 2001 From: LAGNEAU Romain Date: Wed, 17 Jul 2024 10:46:26 +0200 Subject: [PATCH 1/6] [CI] First attempt on creating a CI using MacOS and Ubuntu to test the namespace option --- .github/workflows/macos-linux-namespace.yml | 106 ++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 .github/workflows/macos-linux-namespace.yml 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 From f73469c4d4ed2bbea2828df1efef7c1b99a202b1 Mon Sep 17 00:00:00 2001 From: LAGNEAU Romain Date: Wed, 17 Jul 2024 14:17:59 +0200 Subject: [PATCH 2/6] [CI] Removed the cron attribute --- .github/workflows/macos-linux-namespace.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/macos-linux-namespace.yml b/.github/workflows/macos-linux-namespace.yml index 569de8c49f..2d87e290e9 100644 --- a/.github/workflows/macos-linux-namespace.yml +++ b/.github/workflows/macos-linux-namespace.yml @@ -4,8 +4,6 @@ name: MacOS 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 From 30662ea78480fed9ae54730fd154dcf07b051179 Mon Sep 17 00:00:00 2001 From: LAGNEAU Romain Date: Wed, 17 Jul 2024 14:28:09 +0200 Subject: [PATCH 3/6] [CI] Changed compilation and ctest commands --- .github/workflows/macos-linux-namespace.yml | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/.github/workflows/macos-linux-namespace.yml b/.github/workflows/macos-linux-namespace.yml index 2d87e290e9..304d7bd057 100644 --- a/.github/workflows/macos-linux-namespace.yml +++ b/.github/workflows/macos-linux-namespace.yml @@ -1,4 +1,4 @@ -name: MacOS +name: MacOS-Linux-Namespace # https://www.jeffgeerling.com/blog/2020/running-github-actions-workflow-on-schedule-and-other-events on: @@ -18,6 +18,7 @@ jobs: fail-fast: false matrix: os: ["ubuntu-latest", "macos-latest"] + build_type: [Release] steps: - name: Checkout repository @@ -95,10 +96,20 @@ jobs: 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: Determine number of processor on Ubuntu + if: matrix.os == 'ubuntu-latest' + run: | + echo "NPROC=$(nproc)" >> $GITHUB_ENV + + - name: Determine number of processor on MacOS + if: matrix.os == 'macos-latest' + run: | + echo "NPROC=$(sysctl -n hw.logicalcpu)" >> $GITHUB_ENV + - name: Compile working-directory: build - run: make -j$(sysctl -n hw.logicalcpu) install + run: make -j${NPROC} install - name: Run unit tests working-directory: build - run: ctest -j$(sysctl -n hw.logicalcpu) --output-on-failure -V + run: ctest -j${NPROC} --output-on-failure -V From 4601bfc6d4c3cf49ae406036218286ada7cb3c4f Mon Sep 17 00:00:00 2001 From: LAGNEAU Romain Date: Wed, 17 Jul 2024 14:29:45 +0200 Subject: [PATCH 4/6] [CI] Remove print system info --- .github/workflows/macos-linux-namespace.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.github/workflows/macos-linux-namespace.yml b/.github/workflows/macos-linux-namespace.yml index 304d7bd057..9c6a3d0e95 100644 --- a/.github/workflows/macos-linux-namespace.yml +++ b/.github/workflows/macos-linux-namespace.yml @@ -24,14 +24,6 @@ jobs: - 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: | From 6e234bf9db73fee4655c326151f0b0b1f7c5fca0 Mon Sep 17 00:00:00 2001 From: LAGNEAU Romain Date: Wed, 17 Jul 2024 16:41:53 +0200 Subject: [PATCH 5/6] [CI] Fixed flag to deactivate deprecated functions --- .github/workflows/macos-linux-namespace.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/macos-linux-namespace.yml b/.github/workflows/macos-linux-namespace.yml index 9c6a3d0e95..ca0b0aef94 100644 --- a/.github/workflows/macos-linux-namespace.yml +++ b/.github/workflows/macos-linux-namespace.yml @@ -77,7 +77,7 @@ jobs: 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 + cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/tmp/usr/local -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_VISP_NAMESPACE=ON -DENABLE_EXPLICIT_KEYWORD=ON -DBUILD_DEPRECATED_FUNCTIONS=OFF cat ViSP-third-party.txt - name: Configure CMake @@ -85,7 +85,7 @@ jobs: 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 + cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/tmp/usr/local -DCMAKE_VERBOSE_MAKEFILE=ON -DENABLE_VISP_NAMESPACE=ON -DENABLE_EXPLICIT_KEYWORD=ON -DBUILD_DEPRECATED_FUNCTIONS=OFF cat ViSP-third-party.txt - name: Determine number of processor on Ubuntu From 504583e660e4c1d64d6a6141deaf6744d904d746 Mon Sep 17 00:00:00 2001 From: LAGNEAU Romain Date: Thu, 18 Jul 2024 09:10:53 +0200 Subject: [PATCH 6/6] [CI] Removed useless section targetting macos-13 and cloning visp-sample (because not used) --- .github/workflows/macos-linux-namespace.yml | 25 --------------------- 1 file changed, 25 deletions(-) diff --git a/.github/workflows/macos-linux-namespace.yml b/.github/workflows/macos-linux-namespace.yml index ca0b0aef94..5a2bfa6f8b 100644 --- a/.github/workflows/macos-linux-namespace.yml +++ b/.github/workflows/macos-linux-namespace.yml @@ -34,27 +34,6 @@ jobs: 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 }} @@ -64,10 +43,6 @@ jobs: 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