Merge branch 'gh547' #818
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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: false | |
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 | |
- 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 pybind11 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 |