-
Notifications
You must be signed in to change notification settings - Fork 2
175 lines (151 loc) · 5.5 KB
/
visualneuro.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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
name: Build VisualNeuro
on:
push:
branches:
- master
pull_request:
permissions:
contents: write # Enable vcpkg to write to the dependency graph
env:
VCPKG_BINARY_SOURCES: 'clear;x-gha,readwrite' # recognized by vcpkg
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
VCPKG_FEATURE_FLAGS: dependencygraph
jobs:
build:
name: "Build"
strategy:
matrix:
system: [windows, macos, linux]
linkage: [dynamic]
cmake_linkage: ['ON']
configuration: [Release]
include:
- system: windows
os: 'windows-latest'
triplet: 'x64-windows'
cmake: '-DIVW_MODULE_HDF5=OFF'
preset: msvc-visualneuro
targets: 'ALL_BUILD package'
installer: 'visualneuro-installer-win'
artifact: 'build/Visual Neuro-v*.exe'
- system: macos
os: 'macos-13' # for now macos-latest == macos-12 since macos-13 is still "beta"
triplet: 'x64-osx'
cmake: '-DVCPKG_APPLOCAL_DEPS=OFF'
preset: ninja-visualneuro
targets: 'all package'
installer: 'visualneuro-installer-macos'
artifact: 'build/Visual Neuro-v*.dmg'
- system: linux
os: 'ubuntu-22.04'
triplet: 'x64-linux'
cmake: '-DIVW_PACKAGE_INSTALLER=OFF'
preset: ninja-visualneuro
targets: 'all package'
installer: 'visualneuro-installer-ubuntu'
artifact: 'build/Visual Neuro-v*.tar.gz'
fail-fast: false
runs-on: ${{ matrix.os }}
timeout-minutes: 360
steps:
- name: Chocolatey Install
if: runner.os == 'Windows'
shell: pwsh
run: |
# Choco-Install is GH Actions wrappers around choco, which does retries
# https://github.com/actions/runner-images/blob/main/images/windows/scripts/helpers/ChocoHelpers.ps1
Install-ChocoPackage -PackageName nsis
- name: "Chocolatey update paths"
if: runner.os == 'Windows'
shell: bash
run: |
GP=`cygpath -u $GITHUB_PATH`
echo "/c/Program Files/doxygen/bin" >> $GP
echo "/c/Program Files (x86)/NSIS" >> $GP
- name: Brew Install
shell: bash
if: runner.os == 'macOS'
# xcode 14.3 is currently default.
run: |
brew install ninja pkg-config nasm
sudo xcode-select --switch /Applications/Xcode_15.0.app/Contents/Developer
- name: "Apt Install, switch to gcc-13"
shell: bash
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt install --fix-missing libxinerama-dev libxcursor-dev xorg-dev libglu1-mesa-dev \
libglew-dev ninja-build gcc-13 g++-13 nasm
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 130 \
--slave /usr/bin/g++ g++ /usr/bin/g++-13 \
--slave /usr/bin/gcov gcov /usr/bin/gcov-12
sudo update-alternatives --set gcc /usr/bin/gcc-13
- name: "Install Qt"
uses: jurplel/install-qt-action@v3
with:
version: 6.6.0
dir: ${{ github.workspace }}
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
architecture: 'x64'
- name: "Install Python Modules"
shell: bash
run: pip3 install numpy
- name: "Setup MSVC"
if: runner.os == 'Windows'
uses: ilammy/msvc-dev-cmd@v1
- name: "VCPKG Update"
shell: bash
run: |
echo $VCPKG_INSTALLATION_ROOT
cd $VCPKG_INSTALLATION_ROOT
git reset --hard
git pull
- name: "VCPKG Cache config"
# Cache built dependencies for faster subsequent builds
# https://learn.microsoft.com/en-us/vcpkg/users/binarycaching#gha
uses: actions/github-script@v7
with:
script: |
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
- name: "Clone Inviwo"
uses: actions/checkout@v4
with:
repository: 'inviwo/inviwo'
ref: '1abb2b923c51d684af8b6205c3b3e8ece2f86c6a'
path: 'inviwo'
submodules: recursive
- name: "Clone VisualNeuro"
uses: actions/checkout@v4
with:
path: visualneuro
submodules: recursive
- name: "Copy CMakePresets to Inviwo"
shell: bash
run: >
cp "visualneuro/CMakePresets.json" "inviwo/CMakeUserPresets.json"
- name: "Configure CMake"
shell: bash
run: >
VCPKG_ROOT=$VCPKG_INSTALLATION_ROOT && cmake -S inviwo -B build --preset ${{ matrix.preset }}
--toolchain $VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake
-DCMAKE_TOOLCHAIN_FILE=$VCPKG_INSTALLATION_ROOT/scripts/buildsystems/vcpkg.cmake
-DVCPKG_TARGET_TRIPLET=${{ matrix.triplet }}
-DVCPKG_INSTALL_OPTIONS='--clean-after-build'
-DBUILD_SHARED_LIBS=${{ matrix.cmake_linkage }}
-DCMAKE_BUILD_TYPE=${{ matrix.configuration }}
${{ matrix.cmake }}
- name: "Setup C++ Log matchers"
uses: Trass3r/setup-cpp@v1
- name: "Build"
timeout-minutes: 360
shell: bash
run: cmake --build build --config ${{ matrix.configuration }} --parallel --target ${{ matrix.targets }}
- name: "Upload installer"
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.installer }}
path: ${{ matrix.artifact }}