-
Notifications
You must be signed in to change notification settings - Fork 286
129 lines (112 loc) · 4.9 KB
/
macos.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
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: [macos-13, 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 pkg-config nlohmann-json
- name: Install dependencies on macos-13
# 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
if: matrix.os == 'macos-13'
run: |
brew update
brew upgrade || true
brew install libpng libjpeg-turbo libdc1394 pcl librealsense zbar pkg-config nlohmann-json
brew install opencv
- 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/.
# qt@5 is as a requested dependency for vtk and thus for pcl 1.12.1
# qt@5 is keg-only, which means it was not symlinked into /usr/local that's why we need to set Qt5_DIR
- name: Configure CMake
run: |
export LDFLAGS="-L/usr/local/opt/openblas/lib"
export CPPFLAGS="-I/usr/local/opt/openblas/include"
export Qt5_DIR="$(brew --prefix qt5)/lib/cmake/Qt5"
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/tmp/usr/local -DCMAKE_VERBOSE_MAKEFILE=ON -DQt5_DIR=$(brew --prefix qt5)/lib/cmake/Qt5
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