-
Notifications
You must be signed in to change notification settings - Fork 4
135 lines (120 loc) · 3.81 KB
/
build-and-deploy.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
name: Build and deploy
on:
push:
branches:
- master
- ci
pull_request:
branches:
- master
schedule:
- cron: '0 0 * * 6'
jobs:
build:
strategy:
matrix:
include:
- {os: ubuntu-22.04, cc: gcc-12, cxx: g++-12}
- {os: ubuntu-22.04, cc: clang-15, cxx: clang++-15}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- name: Update apt-get cache
run: sudo apt-get update
- name: Install Ubuntu dependencies
run: >
sudo apt-get install lsb-release wget software-properties-common &&
sudo apt-get install
g++-12
clang-15
libc++-15-dev
libc++abi-15-dev
libomp-15-dev
libgfortran5
gfortran
openmpi-bin
openmpi-common
openmpi-doc
libopenmpi-dev
libblas-dev
liblapack-dev
libfftw3-dev
libgmp-dev
hdf5-tools
libhdf5-dev
python3-dev
python3-clang-15
python3-numpy
python3-scipy
python3-matplotlib
ipython3
python3-mpi4py
python3-mako
- name: Cache Boost (a C++20 compatible version)
id: cache-boost
uses: actions/cache@v3
with:
path: ~/boost
key: boost-1.82
- name: Download Boost (a C++20 compatible version)
if: ${{ steps.cache-boost.outputs.cache-hit != 'true' }}
run: |
wget -q https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/boost_1_82_0.tar.bz2
tar -xf boost_1_82_0.tar.bz2
mv boost_1_82_0 $HOME/boost
- name: Install Sphinx and related packages
if: startsWith(matrix.cxx, 'clang')
run: |
python -m pip install --upgrade pip
pip install sphinx nbsphinx linkify-it-py sphinx-rtd-theme myst-parser
- name: Force use of libc++
if: startsWith(matrix.cxx, 'clang')
run: echo "CXXFLAGS=-stdlib=libc++" >> $GITHUB_ENV
- name: Build & install TRIQS
env:
CC: ${{ matrix.cc }}
CXX: ${{ matrix.cxx }}
run: |
git clone https://github.com/TRIQS/triqs --branch 3.3.x
mkdir triqs/build && pushd triqs/build
cmake .. \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_INSTALL_PREFIX=$HOME/install \
-DBoost_INCLUDE_DIR=$HOME/boost \
-DBuild_Tests=OFF
make -j2 install VERBOSE=1
popd
- name: Build SOM
env:
CC: ${{ matrix.cc }}
CXX: ${{ matrix.cxx }}
run: |
source $HOME/install/share/triqs/triqsvars.sh
if [[ "${CXX}" == clang* ]]; then
DOCS="ON"
else
DOCS="OFF"
fi
mkdir build && pushd build
cmake .. \
-DCMAKE_BUILD_TYPE=Debug \
-DBUILD_SHARED_LIBS=ON \
-DBoost_INCLUDE_DIR=$HOME/boost \
-DBuild_Documentation=${DOCS}
make -j2 VERBOSE=1
popd
- name: Test SOM
run: |
sudo sh -c 'echo -e "\nrmaps_base_oversubscribe = 1" >> \
/etc/openmpi/openmpi-mca-params.conf'
pushd build
source $HOME/install/share/triqs/triqsvars.sh
ctest --output-on-failure
popd
- name: Deploy documentation
if: github.ref == 'refs/heads/master' && startsWith(matrix.cxx, 'clang')
uses: JamesIves/github-pages-deploy-action@v4
with:
branch: gh-pages
token: ${{ secrets.GITHUB_TOKEN }}
folder: build/doc/html