Skip to content

Fix C/I, take II

Fix C/I, take II #815

Workflow file for this run

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