Skip to content

Update Fedora and RHEL requirements in README #275

Update Fedora and RHEL requirements in README

Update Fedora and RHEL requirements in README #275

Workflow file for this run

---
name: OpenELP CI
on: # yamllint disable-line rule:truthy
workflow_dispatch:
pull_request:
push:
branches:
- devel
- main
- release/*
jobs:
build_and_test:
name: Build and Test
runs-on: ${{matrix.os}}
strategy:
matrix:
os: [macos-latest, ubuntu-latest, windows-latest]
build_type: [Release]
include:
- os: macos-latest
test_target: test
extra_flags: -Werror
- os: ubuntu-latest
test_target: test
extra_flags: -Werror -Wformat-overflow -Wformat-security
- os: windows-latest
test_target: RUN_TESTS
extra_flags: /WX
extra_compiler_flags: >-
/experimental:external
/external:anglebrackets
/external:W0
steps:
- name: Cache PCRE2
uses: actions/cache@v4
with:
path: ${{runner.workspace}}/build/pcre-prefix/src/pcre2-10.42.tar.gz
key: pcre2-10.42
- name: Clone project
uses: actions/checkout@v4
- name: Get snapshot ID
id: get-snap-id
shell: bash
run: echo "snap_id=git${{github.sha}}" | cut -c-19 >> $GITHUB_OUTPUT
- name: Create build environment
shell: bash
working-directory: ${{runner.workspace}}
run: mkdir -p build
- name: Configure project
working-directory: ${{runner.workspace}}/build
run: >-
cmake ${{github.workspace}}
-Werror=dev
-Werror=deprecated
-DCMAKE_BUILD_TYPE=${{matrix.build_type}}
-DBUILD_TESTING:BOOL=ON
-DBUILD_SHARED_LIBS:BOOL=ON
-DOPENELP_DOC_HTMLHELP:BOOL=OFF
-DOPENELP_BUNDLE_PCRE:BOOL=ON
-DOPENELP_USE_OPENSSL:BOOL=OFF
-DCPACK_GENERATOR=ZIP
-DCPACK_PACKAGE_FILE_NAME=OpenELP-${{runner.os}}
-DCPACK_TOPLEVEL_TAG=${{runner.os}}
-DOPENELP_EXTRA_VERSION=${{steps.get-snap-id.outputs.snap_id}}
-DCMAKE_C_FLAGS="${{matrix.extra_flags}} ${{matrix.extra_compiler_flags}}"
-DCMAKE_EXE_LINKER_FLAGS="${{matrix.extra_flags}}"
-DCMAKE_SHARED_LINKER_FLAGS="${{matrix.extra_flags}}"
-DCMAKE_STATIC_LINKER_FLAGS="${{matrix.extra_flags}}"
- name: Build PCRE2
run: >-
cmake
--build ${{runner.workspace}}/build
--config ${{matrix.build_type}}
-j2
-t pcre
- name: Build project
run: >-
cmake
--build ${{runner.workspace}}/build
--config ${{matrix.build_type}}
-j2
- name: Test project
run: >-
cmake
--build ${{runner.workspace}}/build
--config ${{matrix.build_type}}
-j2
-t ${{matrix.test_target}}
if: ${{matrix.test_target}}
env:
CTEST_OUTPUT_ON_FAILURE: 1
- name: Package project
run: >-
cmake
--build ${{runner.workspace}}/build
--config ${{matrix.build_type}}
-j2
-t package
- name: Upload package
uses: actions/upload-artifact@v4
with:
name: OpenELP-${{runner.os}}
path: ${{runner.workspace}}/build/_CPack_Packages/${{runner.os}}/ZIP/OpenELP-${{runner.os}}/*
build_documentation:
name: Build Documentation
runs-on: ubuntu-20.04
steps:
- name: Install Prerequisites
run: sudo apt-get install libclang-cpp9 libclang1-9 -y
- name: Cache Doxygen
id: cache-doxygen
uses: actions/cache@v4
with:
path: ${{runner.workspace}}/doxygen
key: doxygen-1.9.7
- name: Download Doxygen
if: steps.cache-doxygen.outputs.cache-hit != 'true'
working-directory: ${{runner.workspace}}
run: |
wget -O - https://www.doxygen.nl/files/doxygen-1.9.7.linux.bin.tar.gz | tar -xz
mv doxygen-1.9.7 doxygen
- name: Clone project
uses: actions/checkout@v4
- name: Create build environment
shell: bash
run: |
mkdir -p ${{runner.workspace}}/build
echo "WARN_AS_ERROR = FAIL_ON_WARNINGS" >> doc/Doxyfile.in
- name: Configure project
working-directory: ${{runner.workspace}}/build
run: >-
cmake ${{github.workspace}}
-Werror=dev
-Werror=deprecated
-DCMAKE_PROGRAM_PATH:PATH="${{runner.workspace}}/doxygen/bin"
-DBUILD_TESTING:BOOL=OFF
-DBUILD_SHARED_LIBS:BOOL=OFF
-DOPENELP_DOC_HTMLHELP:BOOL=OFF
-DOPENELP_BUNDLE_PCRE:BOOL=OFF
-DOPENELP_USE_OPENSSL:BOOL=OFF
-DOPENELP_EXTRA_VERSION=${{steps.get-snap-id.outputs.snap_id}}
-DOPENELP_DOC_INTERNAL=ON
- name: Build documentation
run: >-
cmake
--build ${{runner.workspace}}/build
-j2
-t doc
- name: Upload documentation
uses: actions/upload-artifact@v4
with:
name: OpenELP-HTML-Docs
path: ${{runner.workspace}}/build/doc/html/*
coverage:
name: Code Coverage
runs-on: ubuntu-20.04
steps:
- name: Clone project
uses: actions/checkout@v4
- name: Create build environment
shell: bash
working-directory: ${{runner.workspace}}
run: mkdir -p build
- name: Configure project
working-directory: ${{runner.workspace}}/build
run: >-
cmake ${{github.workspace}}
-Wno-dev
-DCMAKE_BUILD_TYPE=Debug
-DBUILD_TESTING:BOOL=ON
-DBUILD_SHARED_LIBS:BOOL=ON
-DOPENELP_BUNDLE_PCRE:BOOL=OFF
-DOPENELP_USE_OPENSSL:BOOL=OFF
-DCMAKE_C_FLAGS="--coverage"
- name: Build project
run: >-
cmake
--build ${{runner.workspace}}/build
--config Debug
-j2
- name: Test project
run: >-
cmake
--build ${{runner.workspace}}/build
--config Debug
-j2
-t test
env:
CTEST_OUTPUT_ON_FAILURE: 1
- name: Upload coverage
uses: codecov/codecov-action@v1
with:
directory: ${{github.workspace}}
gcov_args: -s ${{github.workspace}}
gcov_path_exclude: '*/CompilerIdC/*'
gcov_root_dir: ${{runner.workspace}}/build
working-directory: ${{github.workspace}}