Skip to content

Commit

Permalink
Update CI
Browse files Browse the repository at this point in the history
  • Loading branch information
PierreMarchand20 committed Sep 24, 2024
1 parent f39c0ca commit 6b0b03f
Show file tree
Hide file tree
Showing 5 changed files with 112 additions and 52 deletions.
4 changes: 2 additions & 2 deletions .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@ BinPackArguments: false
IndentPPDirectives: AfterHash
AlwaysBreakTemplateDeclarations: true
BreakBeforeBinaryOperators: NonAssignment
AlignConsecutiveAssignments: true
ColumnLimit: 0
AlignConsecutiveAssignments: Consecutive
ColumnLimit: 0
133 changes: 87 additions & 46 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,9 @@ name: CI
# Controls when the action will run.
on:
# Triggers the workflow on push or pull request events but only for the master branch
push:
branches: [main, develop]

pull_request:
branches: [main, develop]
branches: [main]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
Expand All @@ -31,21 +30,21 @@ jobs:
CXX_COMPILER: g++
container: "ubuntu_gcc_openmpi"
MPIEXEC_PREFLAGS: "--allow-run-as-root --oversubscribe"
USE_SANITIZER: Address""
ASAN_OPTIONS: "ASAN_OPTIONS=detect_leaks=0" # issue probably with openmpi
CMAKE_BUILD_TYPE: Release
DOCKER_OPTIONS: " "
USE_SANITIZER: ""
# ASAN_OPTIONS: "ASAN_OPTIONS=detect_leaks=0" # issue probably with openmpi
CMAKE_BUILD_TYPE: Debug
CODE_COVERAGE: "OFF"
DOCKER_OPTIONS: "--cap-add SYS_PTRACE"

- name: "Ubuntu OpenMPI clang++"
CC_COMPILER: clang
CXX_COMPILER: clang++
container: "ubuntu_clang_openmpi"
MPIEXEC_PREFLAGS: "--allow-run-as-root --oversubscribe"
USE_SANITIZER: ""
CMAKE_BUILD_TYPE: Release
DOCKER_OPTIONS: " "
CMAKE_BUILD_TYPE: Debug
CODE_COVERAGE: "OFF"
DOCKER_OPTIONS: "--cap-add SYS_PTRACE"

- name: "Ubuntu MPICH g++"
CC_COMPILER: gcc
Expand All @@ -70,27 +69,26 @@ jobs:
CODE_COVERAGE: "OFF"

# Hangs up on github
# - name: "Debian OpenMPI g++"
# CC_COMPILER: gcc
# CXX_COMPILER: g++
# container: "debian_openmpi"
# MPIEXEC_PREFLAGS: "--allow-run-as-root --oversubscribe"
# USE_SANITIZER: "Address"
# ASAN_OPTIONS: "ASAN_OPTIONS=detect_leaks=0" # issue probably with openmpi
# CMAKE_BUILD_TYPE: Debug
# DOCKER_OPTIONS: " "
# CODE_COVERAGE: "OFF"
# # DOCKER_OPTIONS: "--cap-add SYS_PTRACE"
# - name: "Debian OpenMPI clang++"
# CC_COMPILER: clang
# CXX_COMPILER: clang++
# container: "debian_openmpi"
# MPIEXEC_PREFLAGS: "--allow-run-as-root --oversubscribe"
# USE_SANITIZER: ""
# CMAKE_BUILD_TYPE: Debug
# DOCKER_OPTIONS: " "
# CODE_COVERAGE: "OFF"
# DOCKER_OPTIONS: "--cap-add SYS_PTRACE"
- name: "Debian OpenMPI g++"
CC_COMPILER: gcc
CXX_COMPILER: g++
container: "debian_gcc_openmpi"
MPIEXEC_PREFLAGS: "--allow-run-as-root --oversubscribe"
USE_SANITIZER: ""
# ASAN_OPTIONS: "ASAN_OPTIONS=detect_leaks=0" # issue probably with openmpi
CMAKE_BUILD_TYPE: Debug
CODE_COVERAGE: "OFF"
DOCKER_OPTIONS: "--cap-add SYS_PTRACE"

- name: "Debian OpenMPI clang++"
CC_COMPILER: clang
CXX_COMPILER: clang++
container: "debian_clang_openmpi"
MPIEXEC_PREFLAGS: "--allow-run-as-root --oversubscribe"
USE_SANITIZER: ""
CMAKE_BUILD_TYPE: Debug
CODE_COVERAGE: "OFF"
DOCKER_OPTIONS: "--cap-add SYS_PTRACE"

- name: "Debian MPICH g++"
CC_COMPILER: gcc
Expand Down Expand Up @@ -126,46 +124,63 @@ jobs:
name: CI (${{ matrix.name }})

# Steps represent a sequence of tasks that will be executed as part of the job
if: "!contains(github.event.head_commit.message, '[ci skip]')"
steps:
- name: Checkout htool
uses: actions/checkout@v3
with:
path: "htool"
# ref: 14d013835eceb940b9b51dd90462fe67834db777
fetch-depth: 0 # to get tags
- name: Checkout hpddm
uses: actions/checkout@v3
with:
repository: hpddm/hpddm
ref: d19056d0e3010b905fca5b73f5c48a766b8a042d
path: "hpddm"
run: |
git clone https://github.com/hpddm/hpddm.git hpddm
cd hpddm && git checkout 5890d5addf3962d539dc25c441ec3ff4af93b3ab
# uses: actions/checkout@v3
# with:
# path: "hpddm"
# repository: hpddm/hpddm
# ref: afb9562c9c6673d9ff760985b104ef8d4caa3621

- name: Activate virtualenv
run: |
. /usr/local/share/venv/bin/activate
echo PATH=$PATH >> $GITHUB_ENV
- name: Build tests
run: |
cd htool && mkdir build && cd build
cmake -DHTOOL_WITH_EXAMPLES=1 -DMPIEXEC_PREFLAGS="${{ matrix.MPIEXEC_PREFLAGS }}" -DUSE_SANITIZER=${{ matrix.USE_SANITIZER }} -DCMAKE_BUILD_TYPE=${{ matrix.CMAKE_BUILD_TYPE }} -DCODE_COVERAGE=${{ matrix.CODE_COVERAGE }} ../
make -j2 build-tests
cmake -DHTOOL_WITH_EXAMPLES=ON -DHTOOL_WITH_DOC=ON -DHTOOL_WITH_STRICT_TESTS=ON -DMPIEXEC_PREFLAGS="${{ matrix.MPIEXEC_PREFLAGS }}" -DUSE_SANITIZER=${{ matrix.USE_SANITIZER }} -DCMAKE_BUILD_TYPE=${{ matrix.CMAKE_BUILD_TYPE }} -DCODE_COVERAGE=${{ matrix.CODE_COVERAGE }} ../
make -j 4 build-tests
- name: Run tests
run: |
cd htool/build
export OMP_NUM_THREADS=2
${{ matrix.ASAN_OPTIONS }} ctest --output-on-failure
${{ matrix.ASAN_OPTIONS }} ctest -j 4 --output-on-failure
- name: Build examples
run: |
cd htool/build
make -j2 build-examples
make -j 4 build-examples
- name: Build documentation
run: |
cd htool/build
make doc
- name: Check format
- name: Check c++ format
uses: DoozyX/[email protected]
with:
source: 'htool/include htool/tests'
# exclude: './third_party ./external'
extensions: 'hpp,cpp'
clangFormatVersion: 16
style: file

- name: Check cmake format
run: |
. /usr/local/share/venv/bin/activate
cd htool/build
make format
make cmake-format
git diff --exit-code
Expand All @@ -174,10 +189,36 @@ jobs:
run: |
cd htool/
lcov --capture --base-directory ./ --directory build/ --output-file coverage.info
lcov --remove coverage.info '/usr/*' '*/hpddm/*' --output-file coverage.info
lcov --remove coverage.info '/usr/*' '*/hpddm/*' --output-file ../coverage.info
- name: Upload coverage to Codecov
- uses: actions/upload-artifact@v4
with:
path: coverage.info
if-no-files-found: error
if: matrix.CODE_COVERAGE == 'ON'
uses: codecov/codecov-action@v2

# - name: Upload coverage to Codecov
# if: matrix.CODE_COVERAGE == 'ON'
# uses: codecov/[email protected]
# with:
# fail_ci_if_error: true
# files: htool/coverage.info
# token: ${{ secrets.CODECOV_TOKEN }}
# verbose: true

coverage:
runs-on: ubuntu-latest
if: ${{ success() }}
needs: [ linux ]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/download-artifact@v4
- name: Upload coverage report
uses: codecov/codecov-action@v4
with:
file: htool/coverage.info
fail_ci_if_error: true
file: ./coverage.info
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
# Dotfiles
.*
!.gitignore
!.clang-format
!.clang-tidy
!.devcontainer
!.github

# Compiled Object files
*.slo
*.lo
Expand Down
14 changes: 11 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ endif()
# Options
option(HTOOL_WITH_EXAMPLES "Build htool examples ?" ON)
option(HTOOL_WITH_DOC "Build documentation" ON)
option(HTOOL_WITH_STRICT_TESTS "Add -Werror to the tests" OFF)

#=============================================================================#
#========================== External Libraries ===============================#
Expand Down Expand Up @@ -126,7 +127,12 @@ if(OpenMP_CXX_FOUND)
endif()
target_compile_features(htool INTERFACE cxx_std_11)

if("${BLA_VENDOR}" STREQUAL "Intel10_64lp_seq" OR "${BLA_VENDOR}" STREQUAL "Intel10_64lp")
if("${BLA_VENDOR}" STREQUAL "Intel10_32"
OR "${BLA_VENDOR}" STREQUAL "Intel10_64lp"
OR "${BLA_VENDOR}" STREQUAL "Intel10_64lp_seq"
OR "${BLA_VENDOR}" STREQUAL "Intel10_64ilp"
OR "${BLA_VENDOR}" STREQUAL "Intel10_64ilp_seq"
OR "${BLA_VENDOR}" STREQUAL "Intel10_64_dyn")
target_compile_definitions(htool INTERFACE "-DHPDDM_MKL -DHTOOL_MKL")
endif()

Expand Down Expand Up @@ -182,11 +188,13 @@ if((CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) AND BUILD_TESTING)
target_compile_options(htool INTERFACE -fprofile-arcs -ftest-coverage)
target_link_libraries(htool INTERFACE gcov)
endif()
if(HTOOL_WITH_STRICT_TESTS)
target_compile_options(htool INTERFACE -Werror)
endif()
target_compile_options(
htool
INTERFACE -Wall
-Wextra
-Werror
-Wshadow
-Wnon-virtual-dtor
-pedantic
Expand All @@ -199,7 +207,7 @@ if((CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) AND BUILD_TESTING)
-Wdouble-promotion
-Wno-sign-compare
-Wextra-semi
# -Wzero-as-null-pointer-constant
-Wzero-as-null-pointer-constant
-Wundef)
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
target_compile_options(htool INTERFACE -Wimplicit-fallthrough -Wextra-semi-stmt -ferror-limit=200)
Expand Down
5 changes: 4 additions & 1 deletion tests/functional_tests/solvers/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@ FetchContent_Declare(
GIT_SUBMODULES_RECURSE FALSE
GIT_SUBMODULES "")

FetchContent_MakeAvailable(data_test_repository)
FetchContent_GetProperties(data_test_repository)
if(NOT data_test_repository_POPULATED)
FetchContent_Populate(data_test_repository)
endif()

set(Test_solver_ARGS ${data_test_repository_SOURCE_DIR}/data/)

Expand Down

0 comments on commit 6b0b03f

Please sign in to comment.