TTG device tasks with coroutines #1282
Workflow file for this run
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/MacOS Build | |
on: [push, pull_request] | |
#env: | |
jobs: | |
build: | |
strategy: | |
fail-fast: false | |
matrix: | |
build_type : [ Release, Debug ] | |
os : [ macos-latest, ubuntu-20.04 ] | |
include: | |
- os: ubuntu-20.04 | |
cc: /usr/bin/gcc-10 | |
cxx: /usr/bin/g++-10 | |
- os: macos-latest | |
cc: clang | |
cxx: clang++ | |
name: "${{ matrix.os }}: ${{ matrix.cxx }} ${{ matrix.build_type }}" | |
runs-on: ${{ matrix.os }} | |
env: | |
CXX : ${{ matrix.cxx }} | |
DOXYGEN_VERSION : 1.9.2 | |
GH_TTG_TOKEN : ${{ secrets.GH_TTG_TOKEN }} | |
CCACHE_DIR : ${{github.workspace}}/build/.ccache | |
CCACHE_COMPRESS : true | |
CCACHE_COMPRESSLEVEL : 6 | |
OMPI_MCA_btl_vader_single_copy_mechanism : none | |
PARSEC_MCA_runtime_bind_threads : 0 | |
BUILD_CONFIG : > | |
-G Ninja | |
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} | |
-DCMAKE_PREFIX_PATH=/usr/local/opt/bison | |
-DBUILD_SHARED_LIBS=OFF | |
-DMPIEXEC_PREFLAGS='--bind-to;none;--allow-run-as-root' | |
-DCMAKE_INSTALL_PREFIX=${{github.workspace}}/install | |
-DTTG_EXAMPLES=ON | |
-DCMAKE_CXX_STANDARD=20 | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Install prerequisite MacOS packages | |
if: ${{ matrix.os == 'macos-latest' }} | |
run: brew install ninja gcc@10 boost eigen open-mpi bison ccache | |
- name: Install prerequisites Ubuntu packages | |
if: ${{ matrix.os == 'ubuntu-20.04' }} | |
run: | | |
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null | |
sudo apt-add-repository "deb https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main" | |
sudo apt-get update | |
sudo apt-get -y install ninja-build g++-10 liblapack-dev libboost-dev libboost-serialization-dev libeigen3-dev openmpi-bin libopenmpi-dev libtbb-dev ccache flex bison cmake | |
- name: Create Build Environment | |
# Some projects don't allow in-source building, so create a separate build directory | |
# We'll use this as our working directory for all subsequent commands | |
run: | | |
cmake -E make_directory ${{github.workspace}}/build | |
- name: Install doxygen for Release test | |
if: ${{ matrix.os == 'ubuntu-20.04' }} | |
run: | | |
if [ "${{matrix.build_type}}" = "Release" ]; then | |
sudo apt-get -y install libclang1-9 libclang-cpp9 graphviz fonts-liberation | |
cd ${{github.workspace}}/build | |
# If we fail getting doxygen-${DOXYGEN_VERSION}.linux.bin.tar.gz from sourceforge, | |
# use EFV's gdrive mirror of 1.9.2 to work around the unreliable sourceforge | |
# the sharing link: https://drive.google.com/file/d/16GXpH4YOEUxGXQrXOKdAIibhdfzATY0d/view?usp=sharing | |
wget https://downloads.sourceforge.net/project/doxygen/rel-${DOXYGEN_VERSION}/doxygen-${DOXYGEN_VERSION}.linux.bin.tar.gz || wget -4 --no-check-certificate -O doxygen-${DOXYGEN_VERSION}.linux.bin.tar.gz "https://drive.google.com/uc?export=download&id=16GXpH4YOEUxGXQrXOKdAIibhdfzATY0d" | |
tar xzf ./doxygen-${DOXYGEN_VERSION}.linux.bin.tar.gz | |
export DOXYGEN_DIR=${{github.workspace}}/build/doxygen-${DOXYGEN_VERSION} | |
${DOXYGEN_DIR}/bin/doxygen --version | |
# doxygen should be in PATH in subsequent steps | |
echo "${DOXYGEN_DIR}/bin" >> $GITHUB_PATH | |
fi | |
- name: Prepare ccache timestamp | |
id: ccache_cache_timestamp | |
shell: cmake -P {0} | |
run: | | |
string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC) | |
message("::set-output name=timestamp::${current_date}") | |
- name: Setup ccache cache files | |
uses: actions/[email protected] | |
with: | |
path: ${{github.workspace}}/build/.ccache | |
key: ${{ matrix.config.name }}-ccache-${{ steps.ccache_cache_timestamp.outputs.timestamp }} | |
restore-keys: | | |
${{ matrix.config.name }}-ccache- | |
- name: Configure CMake | |
# Use a bash shell so we can use the same syntax for environment variable | |
# access regardless of the host operating system | |
shell: bash | |
working-directory: ${{github.workspace}}/build | |
# Note the current convention is to use the -S and -B options here to specify source | |
# and build directories, but this is only available with CMake 3.13 and higher. | |
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12 | |
run: | | |
cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE $BUILD_CONFIG || (cat CMakeFiles/CMakeOutput.log && cat CMakeFiles/CMakeError.log) | |
- name: Build | |
working-directory: ${{github.workspace}}/build | |
shell: bash | |
# Execute the build. You can specify a specific target with "--target <NAME>" | |
run: ccache -p && ccache -z && cmake --build . && ccache -s | |
- name: Test | |
working-directory: ${{github.workspace}}/build | |
shell: bash | |
# Execute tests defined by the CMake configuration. | |
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail | |
# run: ctest -C $BUILD_TYPE | |
run: cmake --build . --target check-ttg | |
- name: Install | |
working-directory: ${{github.workspace}}/build | |
shell: bash | |
run: cmake --build . --target install | |
- name: Test Install Tree | |
working-directory: ${{github.workspace}}/build | |
shell: bash | |
run: | | |
cmake -S $GITHUB_WORKSPACE/doc/dox/dev/devsamp/main -B test_install_devsamp -DCMAKE_PREFIX_PATH=${{github.workspace}}/install || (cat test_install_devsamp/CMakeFiles/CMakeOutput.log && cat test_install_devsamp/CMakeFiles/CMakeError.log) | |
cmake --build test_install_devsamp | |
cmake -E make_directory test_install_userexamples | |
cat > test_install_userexamples/CMakeLists.txt <<EOF | |
cmake_minimum_required(VERSION 3.14) | |
project(test) | |
find_package(ttg REQUIRED) | |
add_ttg_executable(simple $GITHUB_WORKSPACE/doc/dox/user/examples/simple.cc NOT_EXCLUDE_FROM_ALL) | |
add_ttg_executable(reducing $GITHUB_WORKSPACE/doc/dox/user/examples/reducing.cc NOT_EXCLUDE_FROM_ALL) | |
add_ttg_executable(iterative $GITHUB_WORKSPACE/doc/dox/user/examples/iterative.cc NOT_EXCLUDE_FROM_ALL) | |
add_ttg_executable(distributed $GITHUB_WORKSPACE/doc/dox/user/examples/distributed.cc NOT_EXCLUDE_FROM_ALL) | |
EOF | |
cmake -S test_install_userexamples -B test_install_userexamples/build -DCMAKE_PREFIX_PATH=${{github.workspace}}/install || (cat test_install_userexamples/CMakeFiles/CMakeOutput.log && cat test_install_userexamples/CMakeFiles/CMakeError.log) | |
cmake --build test_install_userexamples/build | |
- name: Build+Deploy Dox | |
if: ${{ matrix.os == 'ubuntu-20.04' && matrix.build_type == 'Release' && github.ref == 'refs/heads/master' }} | |
working-directory: ${{github.workspace}}/build | |
shell: bash | |
run: | | |
echo "== deploying dox ==" | |
git config --global user.email "[email protected]" | |
git config --global user.name "GitHub Actions" | |
cmake --build . --target html | |
git clone --depth=1 https://github.com/TESSEorg/ttg.git --branch gh-pages --single-branch ttg-docs-current | |
git clone --depth=1 https://github.com/TESSEorg/ttg.git --branch gh-pages-template --single-branch ttg-docs-template | |
cmake -E make_directory ttg-docs | |
cp -rp ttg-docs-current/* ttg-docs | |
rm -rf ttg-docs-current | |
cp -p ttg-docs-template/* ttg-docs | |
rm -rf ttg-docs-template | |
cd ttg-docs | |
# copy TTG's README.md into index.md | |
cp ${{github.workspace}}/README.md index.md | |
# update dox | |
if [ -d dox-master ]; then | |
rm -rf dox-master | |
fi | |
mv ${{github.workspace}}/build/doc/dox/html dox-master | |
# Jekyll does not allow files with "special" names, e.g. whose names start with underscore | |
# must "include" such files explicitly | |
# re: how file names must be formatted: see https://github.com/jekyll/jekyll/issues/1352 | |
echo "include:" >> _config.yml | |
find dox-master -name "_*" | sed "s/dox-master\// \- /g" >> _config.yml | |
# make empty repo to ensure gh-pages contains no history | |
git init | |
git add * | |
git commit -a -q -m "rebuilt TTG master docs via GitHub Actions build: $GITHUB_RUN_NUMBER" | |
git checkout -b gh-pages | |
git remote add origin https://${GH_TTG_TOKEN}@github.com/TESSEorg/ttg.git > /dev/null 2>&1 | |
git push origin +gh-pages --force | |
cd .. | |
rm -rf ttg-docs |