Skip to content

Complete redesign of AprilTag integration and support for ArUco families #3264

Complete redesign of AprilTag integration and support for ArUco families

Complete redesign of AprilTag integration and support for ArUco families #3264

Workflow file for this run

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:
# https://github.com/orgs/community/discussions/28474#discussioncomment-3350256
check_skip_flags:
name: Check skip flags
runs-on: macos-latest
outputs:
head-commit-message: ${{ steps.get_head_commit_message.outputs.headCommitMsg }}
steps:
- name: Get repo
uses: actions/checkout@v5
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Print head git commit message
id: get_head_commit_message
run: echo "headCommitMsg=$(git show -s --format=%s)" >> $GITHUB_OUTPUT
build-macos:
runs-on: ${{ matrix.os }}
needs: check_skip_flags
if: >-
${{
(!contains(needs.check_skip_flags.outputs.head-commit-message, '[SKIP-CI ALL]') &&
!contains(needs.check_skip_flags.outputs.head-commit-message, '[SKIP-CI MACOS]')) ||
contains(needs.check_skip_flags.outputs.head-commit-message, '[ENABLE-CI MACOS]')
}}
strategy:
fail-fast: false
matrix:
os: [macos-14, macos-latest]
steps:
- name: Checkout repository
uses: actions/checkout@v5
- 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 pkg-config nlohmann-json
- name: Install dependencies on macos-14
# XXX Testing this on macos-14
# ----------------
# On macos-13 we need to do a specific action
# ==> Pouring [email protected]_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 [email protected]
#
# Fix proposed in https://github.com/actions/runner-images/issues/6817
# ----------------
# TODO Might be merged with macos-latest deps installation if succeed
if: matrix.os == 'macos-14'
run: |
brew install libpng libjpeg-turbo libdc1394 opencv pcl librealsense zbar pkg-config nlohmann-json
# brew update
# brew upgrade || true
# brew install libpng libjpeg-turbo libdc1394 pcl librealsense zbar pkg-config nlohmann-json
# brew install opencv eigen
- name: Debug Eigen after upgrade 1
run: |
ls /opt/homebrew/Cellar/eigen/
- name: Debug Eigen after upgrade 2
run: |
ls -als /opt/homebrew/share/
- name: Debug Eigen after upgrade 3
run: |
ls -als /opt/homebrew/share/eigen3/
- name: Debug Eigen after upgrade 4
run: |
ls -als /opt/homebrew/share/eigen3/cmake
- name: Debug Eigen after upgrade 5
run: |
cat /opt/homebrew/share/eigen3/cmake/Eigen3Config.cmake
# sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
# locate "Eigen/Core"
# locate "Eigen3Config.cmake"
# ls /opt/homebrew/share/eigen3/cmake/
# cat /opt/homebrew/share/eigen3/cmake/Eigen3Config.cmake
- name: Install java dependencies
run: |
brew install openjdk ant
sudo ln -sfn /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
echo "JAVA_HOME=$(/usr/libexec/java_home)" >> $GITHUB_ENV
echo ${JAVA_HOME}
- 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
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
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
- name: ViSP as 3rdparty with cmake
run: |
cd ${HOME}/visp_sample
mkdir visp_sample-build
cd visp_sample-build
cmake ../ -DVISP_DIR=/tmp/usr/local/lib/cmake/visp -DCMAKE_VERBOSE_MAKEFILE=ON
make -j$(sysctl -n hw.logicalcpu)
- name: ViSP as 3rdparty with visp.pc and pkg-config
run: |
cd ${HOME}/visp_sample
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/tmp/usr/local/lib/pkgconfig
pkg-config --cflags visp
pkg-config --libs visp
make -j$(sysctl -n hw.logicalcpu) -f Makefile.visp.pc
make -j$(sysctl -n hw.logicalcpu) -f Makefile.visp.pc clean
- name: ViSP as 3rdparty with visp-config
run: |
cd ${HOME}/visp_sample
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/tmp/usr/local/lib/pkgconfig
export VISP_INSTALL_PREFIX=/tmp/usr/local
$VISP_INSTALL_PREFIX/bin/visp-config --cflags
$VISP_INSTALL_PREFIX/bin/visp-config --libs
make -j$(sysctl -n hw.logicalcpu) -f Makefile.visp-config
make -j$(sysctl -n hw.logicalcpu) -f Makefile.visp-config clean