-
Notifications
You must be signed in to change notification settings - Fork 18
150 lines (134 loc) · 5.48 KB
/
basictest.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
name: basictest
on:
push:
pull_request:
schedule:
- cron: '30 18 * * 0' # 18:30 every Sunday
workflow_dispatch:
inputs:
manual-debugging:
type: boolean
description: Launch manual debugging tmate session on failure
default: true
env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release
jobs:
build:
# The CMake configure and build commands are platform agnostic and should work equally
# well on Windows or Mac. You can convert this to a matrix build if you need
# cross-platform coverage.
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
strategy:
matrix:
include:
#Note: Python 3.13 works (Aug 2024) because of the
#"allow-prereleases: true" below.
- { os: ubuntu-20.04, CC: gcc-10, CXX: g++-10, python: '3.8' }
- { os: ubuntu-22.04, CC: gcc, CXX: g++, python: '3.9' }
- { os: ubuntu-latest, CC: gcc, CXX: g++, python: '3.10' }
- { os: ubuntu-latest, CC: clang, CXX: clang++, python: '3.11' }
- { os: ubuntu-latest, CC: gcc-12, CXX: g++-12, python: '3.12' }
- { os: ubuntu-latest, CC: gcc, CXX: g++, python: '3.13' }
- { os: macos-latest, CC: clang, CXX: clang++, python: "3.12" }
- { os: macos-12, CC: clang, CXX: clang++, python: "3.10" }
- { 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 }}
# SHELL: /bin/bash
#name: Ubuntu with Python ${{ matrix.python-version }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
path: src
- name: Setup python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
allow-prereleases: true #Needed (Aug 2024) for Python 3.13.
- name: Pip install dependencies
run: |
python3 -m pip install numpy gemmi spglib ase mpmath matplotlib
- name: Configure CMake
run: >
cmake
-S ${{github.workspace}}/src
-B ${{github.workspace}}/build
-DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
-DCMAKE_INSTALL_PREFIX=${{github.workspace}}/install
-DNCRYSTAL_ENABLE_EXAMPLES=ON
-DNCRYSTAL_BUILD_STRICT=ON
-DNCRYSTAL_ENABLE_TESTING=ON
-DMCTOOLS_REQUIRE_ALL_TEST_DEPS=ON
- name: Build
run: >
cmake
--build ${{github.workspace}}/build
--config ${{env.BUILD_TYPE}}
- name: CTest (from the build area)
run: |
set -eux
cd ${{github.workspace}}/build
ctest --output-on-failure --test-output-size-failed 100000 --test-output-truncation middle
- name: Install
run: cmake --install ${{github.workspace}}/build
- name: Test installed
run: |
set -eux
${{github.workspace}}/install/bin/ncrystal-config --summary
echo "listing bindir"
ls -l ${{github.workspace}}/install/bin
echo "listing bindir done"
#Expose ncrystal-config and examples:
export PATH="${{github.workspace}}/install/bin:${PATH:-}"
#Add python modules and cmdline scripts:
pip install ${{github.workspace}}/src/ncrystal_python
ncrystal-config --summary
nctool --test
ncrystal-config --help
ncrystal_example_c
ncrystal_example_cpp
python3 ${{github.workspace}}/src/examples/ncrystal_example_py
nctool --help
nctool --dump 'Al_sg225.ncmat;dcutoff=1.5'
python3 -c 'import NCrystal; NCrystal.test()'
ncrystal_vdos2ncmat --help
ncrystal_cif2ncmat --help
ncrystal_ncmat2cpp --help
ncrystal_hfg2ncmat --help
ncrystal_verifyatompos --help
ncrystal_cif2ncmat codid::9008460
ncrystal_ncmat2hkl --help
ncrystal_ncmat2hkl --format=laz 'Al_sg225.ncmat;temp=250K;dcutoff=0.75' -o test_Al.laz
ncrystal_ncmat2hkl --format=lau 'Al_sg225.ncmat;temp=250K;dcutoff=0.75' -o test_Al.lau
nctool -d ./test_Al.laz
nctool -d ./test_Al.lau
ncrystal_ncmat2cpp $(ncrystal-config --show datadir)/Al_sg225.ncmat -o test.cpp
cat test.cpp
nctool --pdf Al_sg225.ncmat
#Examples from README:
cp ./src/examples/ncrystal_example_cpp.cc ./my_cpp_code.cpp
cp ./src/examples/ncrystal_example_c.c ./my_c_code.c
test -f $(ncrystal-config --show libpath)
test -d $(ncrystal-config --show libdir)
#NOTE: Important that build flags comes AFTER the code being
#compiled. Otherwise ncrystal symbols will be initially ignored, leading
#to errors later:
cc -std=c11 my_c_code.c $(ncrystal-config --show buildflags) -o my_c_app
./my_c_app
c++ -std=c++17 my_cpp_code.cpp $(ncrystal-config --show buildflags) -o my_cpp_app
./my_cpp_app
echo "Custom compilation of downstream C/C++ code succeeded"
#Final step, so tmate step can check if we got this far.
- name: Final
id: final-step
run: echo "All steps fine"
- name: Setup tmate session for manual debugging
uses: mxschmitt/action-tmate@v3
if: always() && inputs.manual-debugging == true && (steps.final-step != 'success')
with:
limit-access-to-actor: true