-
Notifications
You must be signed in to change notification settings - Fork 4
162 lines (143 loc) · 6.63 KB
/
linux.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
name: Linux CI
on:
push:
branches-ignore:
- "ghxyz"
paths:
- "conanfile.py"
- ".github/workflows/linux.yml"
- "environment/cmake/**"
- "environment/script/write_conan_profile.py"
- "source/**"
- "!source/qa/python/qa/**"
jobs:
build:
strategy:
matrix:
os: ["ubuntu-22.04"]
python-version: ["3.9", "3.11"]
compiler:
# To be recognized by Conan, name must be one of:
# 'Visual Studio', 'apple-clang', 'clang', 'gcc', 'intel', 'intel-cc', 'mcst-lcc',
# 'msvc', 'qcc', 'sun-cc'
- { name: gcc , version: 9, cc: gcc-9 , cxx: g++-9 , package: g++-9 }
- { name: gcc , version: 12, cc: gcc-12 , cxx: g++-12 , package: g++-12 }
- { name: clang, version: 11, cc: clang-11, cxx: clang++-11, package: clang-11 }
- { name: clang, version: 14, cc: clang-14, cxx: clang++-14, package: clang-14 }
fail-fast: true
runs-on: ${{ matrix.os }}
name: ${{ matrix.os }} / ${{ matrix.compiler.cxx }} / python - ${{ matrix.python-version }}
steps:
- name: checkout lue
uses: actions/checkout@v3
- name: configure system
run: |
sudo apt-get update
# sudo apt-get upgrade
sudo apt-get remove libunwind-14-dev
sudo apt-get install \
cmake \
doxygen \
graphviz \
hwloc \
lftp \
libasio-dev \
libboost-all-dev \
libdocopt-dev \
libfmt-dev \
libglfw3-dev \
libgdal-dev \
libgoogle-perftools-dev \
libhdf5-dev \
libvulkan-dev \
${{ matrix.compiler.package }} \
ninja-build \
nlohmann-json3-dev \
pybind11-dev
- uses: conda-incubator/setup-miniconda@v2
with:
auto-update-conda: true
python-version: ${{ matrix.python-version }}
channels: conda-forge
- name: install python packages
shell: bash -l {0}
run: |
conda install docopt breathe jinja2 markupsafe matplotlib numpy pip ruamel.yaml sphinx
# Use conan from pypi to get the latest version
pip install "conan>=2"
- name: configure lue
shell: bash -l {0}
run: |
python environment/script/write_conan_profile.py ${{ matrix.compiler.name }} host_profile
python environment/script/write_conan_profile.py ${{ matrix.compiler.name }} build_profile
mkdir $GITHUB_WORKSPACE/../build
CC=${{ matrix.compiler.cc }} \
CXX=${{ matrix.compiler.cxx }} \
LUE_CONAN_PACKAGES="imgui span-lite" \
conan install . \
--profile:host=host_profile \
--profile:build=build_profile \
--build=missing \
--output-folder=$GITHUB_WORKSPACE/../build
CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/../build \
cmake --preset conan-release \
-B $GITHUB_WORKSPACE/../build \
-D CMAKE_C_COMPILER=${{ matrix.compiler.cc }} \
-D CMAKE_CXX_COMPILER=${{ matrix.compiler.cxx }} \
-D LUE_BUILD_DOCUMENTATION=TRUE \
-D LUE_BUILD_QA=TRUE \
-D LUE_QA_WITH_PYTHON_API=TRUE \
-D LUE_QA_WITH_TESTS=TRUE \
-D LUE_QA_TEST_NR_LOCALITIES_PER_TEST=1 \
-D LUE_QA_TEST_NR_THREADS_PER_LOCALITY=2 \
-D LUE_DATA_MODEL_WITH_PYTHON_API=TRUE \
-D LUE_DATA_MODEL_WITH_UTILITIES=TRUE \
-D LUE_FRAMEWORK_WITH_PYTHON_API=TRUE \
-D LUE_BUILD_HPX=TRUE \
-D HPX_USE_CMAKE_CXX_STANDARD=TRUE \
-D HPX_WITH_MALLOC="tcmalloc" \
-D HPX_WITH_PKGCONFIG=FALSE \
-D HPX_WITH_EXAMPLES=FALSE \
-D HPX_WITH_TESTS=FALSE
- name: build lue
shell: bash -l {0}
run: |
cmake --build $GITHUB_WORKSPACE/../build --target all
- name: test lue
shell: bash -l {0}
run: |
cd $GITHUB_WORKSPACE/../build
ctest --output-on-failure
- name: generate lue documentation
if: github.ref == 'refs/heads/master' && matrix.compiler.cxx == 'g++-12' && matrix.python-version == '3.10'
shell: bash
run: |
cmake --build $GITHUB_WORKSPACE/../build --target cpp_doc py_doc
cmake --build $GITHUB_WORKSPACE/../build --target sphinx_doc
- name: install runtime component
shell: bash -l {0}
run: |
cmake --install $GITHUB_WORKSPACE/../build --prefix install --component runtime
cmake --install $GITHUB_WORKSPACE/../build --prefix install --component lue_runtime
install/bin/lue_translate --version
install/bin/lue_validate --version
install/bin/lue_view --version
export PYTHONPATH="install/lib/python${{ matrix.python-version }}:$PYTHONPATH"
install/bin/lue_scalability --version
python -c "import lue, lue.data_model, lue.framework, lue.pcraster, lue.qa.scalability; print(lue.__version__)"
- name: deploy lue documentation
if: github.ref == 'refs/heads/master' && matrix.compiler.cxx == 'g++-12' && matrix.python-version == '3.10'
env:
ftp_server: ${{ secrets.FTP_SERVER }}
ftp_port: ${{ secrets.FTP_PORT }}
ftp_username: ${{ secrets.FTP_USERNAME }}
ftp_password: ${{ secrets.FTP_PASSWORD }}
remote_dir: ${{ secrets.FTP_REMOTE_DIR }}
local_dir: "sphinx/"
run: |
mkdir -p $HOME/.ssh
echo "HostKeyAlgorithms ssh-rsa" >> $HOME/.ssh/config
echo "PubkeyAcceptedKeyTypes ssh-rsa" >> $HOME/.ssh/config
echo "StrictHostKeyChecking no" >> $HOME/.ssh/config
cd $GITHUB_WORKSPACE/../build/document/doc
lftp -e "mirror --reverse --delete --transfer-all --parallel=2 $local_dir $remote_dir/doc; quit" -u $ftp_username,$ftp_password sftp://$ftp_server -p $ftp_port