-
Notifications
You must be signed in to change notification settings - Fork 54
173 lines (157 loc) · 5.72 KB
/
mcstas-testsuite.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
name: mcstas-testsuite
on:
workflow_dispatch:
inputs:
manual-debugging:
type: boolean
description: Launch manual debugging tmate for inspection (automatic in case of errors)
default: false
jobs:
build:
strategy:
fail-fast: false
matrix:
include:
- { os: ubuntu-latest, CC: clang, CXX: clang++, python: '3.11' }
# Drop macOS, takes much too long time executing
# - { os: macos-13, CC: clang, CXX: clang++, python: "3.11" }
name: ${{ matrix.os }}.${{ matrix.CC }}.python-${{ matrix.python }}
runs-on: ${{ matrix.os }}
env:
CC: ${{ matrix.CC }}
CXX: ${{ matrix.CXX }}
defaults:
run:
shell: bash -el {0}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
path: src
- name: Setup python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
- name: Setup Bison (macOS)
id: setup-flex-bison-macos
if: runner.os == 'macOS'
run: |
brew install bison flex
- name: Setup Bison (Windows)
id: setup-flex-bison-Windows
if: runner.os == 'Windows'
run: |
choco install winflexbison3
- name: Setup OpenMPI (Linux)
id: setup-openmpi-nexus-linux
if: runner.os == 'Linux'
run: |
sudo apt -y install libopenmpi-dev libnexus-dev curl
sudo curl -O https://packages.mccode.org/debian/dists/stable/main/binary-amd64/mcpl-1.6.2-deb64.deb
sudo dpkg -i mcpl-1.6.2-deb64.deb
sudo apt-get -f install
- name: Setup OpenMPI (macOS-12,13)
id: setup-openmpi-macos
if: runner.os == 'macOS' && matrix.os != 'macos-11'
run: |
set -e
set -u
set -x
brew install openmpi
- name: Check versions
id: version-checks
run: |
which python3
python3 --version
which cmake
cmake --version
#NB: bison and flex in path are actually too old, on mac we
#inject these via a brew keg later
- name: Configure build and install mcstas
id: mcstas-install
run: |
if [ "$RUNNER_OS" == "macOS" ]; then export SDKROOT=$(xcrun --sdk macosx --show-sdk-path); fi
set -e
set -u
set -x
mkdir build_mcstas
cd build_mcstas
export EXTRA_ARGS_FOR_CMAKE=""
if [ "$RUNNER_OS" == "macOS" ]; then export EXTRA_ARGS_FOR_CMAKE="-DBISON_EXECUTABLE=/usr/local/opt/bison/bin/bison -DFLEX_EXECUTABLE=/usr/local/opt/flex/bin/flex"; fi
if [ "$RUNNER_OS" == "Linux" ]; then export EXTRA_ARGS_FOR_CMAKE="-DNEXUSLIB=/usr/lib -DNEXUSINCLUDE=/usr/include/nexus"; fi
cmake \
-DCMAKE_INSTALL_PREFIX=../install_mcstas \
-S ../src \
-G "Unix Makefiles" \
-DMCVERSION="3.99.99" \
-DMCCODE_BUILD_CONDA_PKG=ON \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_INSTALL_LIBDIR=lib \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_MCSTAS=ON \
-DMCCODE_USE_LEGACY_DESTINATIONS=OFF \
-DBUILD_TOOLS=ON \
-DENABLE_COMPONENTS=ON \
-DENSURE_MCPL=ON \
-DENSURE_NCRYSTAL=OFF \
-DENABLE_CIF2HKL=OFF \
-DENABLE_NEUTRONICS=OFF \
${EXTRA_ARGS_FOR_CMAKE}
cmake --build . --config Release
cmake --build . --target install --config Release
export MCSTAS_EXECUTABLE="mcstas"
export MCRUN_EXECUTABLE="mcrun"
if [ "$RUNNER_OS" == "Windows" ];
then
export MCSTAS_EXECUTABLE="mcstas.exe"
export MCRUN_EXECUTABLE="mcrun.bat"
fi
test -f "../install_mcstas/bin/${MCSTAS_EXECUTABLE}"
test -f "../install_mcstas/bin/${MCRUN_EXECUTABLE}"
test -f "../install_mcstas/share/mcstas/tools/Python/mccodelib/__init__.py"
test -d "../install_mcstas/share/mcstas/resources/data"
echo *******************************************************************************
echo Resulting mccode_config.json:
echo *******************************************************************************
cat ../install_mcstas/share/mcstas/tools/Python/mccodelib/mccode_config.json
echo *******************************************************************************
- name: Pip install various
id: pip-install
run: |
set -e
set -u
set -x
python3 -mpip install PyYAML ply McStasscript
if [ "$RUNNER_OS" != "Windows" ];
then
python3 -mpip install ncrystal
fi
- name: Test suite, 2-core MPI
id: test-suite
run: |
set -e
set -u
set -x
export PATH=$PWD/install_mcstas/bin/:$PATH
mkdir run_test-suite && cd run_test-suite
mctest --testdir $PWD --mpi=2 --suffix ${{ matrix.os }}
- name: 'Tar output files'
id: tar-package
if: always()
run: |
set -e
set -u
set -x
tar cvfz mcstas-${{ matrix.os }}.${{ matrix.CC }}.python-${{ matrix.python }}_output.tgz run_*
- name: 'Upload Artifact'
id: tar-upload
uses: actions/upload-artifact@v3
if: always()
with:
name: mcstas-artefacts
path: "*_output.tgz"
- name: Setup tmate session for manual debugging
uses: mxschmitt/action-tmate@v3
if: always() && (inputs.manual-debugging == true && steps.tar-package.outcome != 'success')
with:
limit-access-to-actor: true