Skip to content

Skip any missed timer events updating the timer to now #58

Skip any missed timer events updating the timer to now

Skip any missed timer events updating the timer to now #58

# .github/workflows/ci-scripts-build.yml for use with EPICS Base ci-scripts
# (see: https://github.com/epics-base/ci-scripts)
# This is YAML - indentation levels are crucial
# Workflow name, shared by all branches
name: pvData
# Trigger on pushes and PRs to any branch
on:
push:
paths-ignore:
- .appveyor.yml
pull_request:
env:
SETUP_PATH: .ci-local:.ci
EPICS_TEST_IMPRECISE_TIMING: YES
EPICS_TEST_TIMEOUT: 300 # 5 min
jobs:
native:
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
# Set environment variables from matrix parameters
env:
# NB: PVA modules build against both BASE 7.0 and 3.15
BASE: ${{ matrix.base }}
CMP: ${{ matrix.cmp }}
BCFG: ${{ matrix.configuration }}
CI_CROSS_TARGETS: ${{ matrix.cross }}
EXTRA: ${{ matrix.extra }}
TEST: ${{ matrix.test }}
strategy:
fail-fast: false
matrix:
# Job names also name artifacts, character limitations apply
include:
- name: "7.0 Ub gcc c++20 Werror"
base: "7.0"
os: ubuntu-latest
cmp: gcc
configuration: default
# Turn all warnings into errors,
# except for those we could not fix (yet).
# Remove respective -Wno-error=... flag once it is fixed.
extra: "CMD_CXXFLAGS=-std=c++20
CMD_CPPFLAGS='-fdiagnostics-color
-fstack-protector-strong
-Wformat
-Werror
-Werror=format-security
-Wno-error=deprecated-declarations
-Wno-error=stringop-truncation
-Wno-error=restrict
-Wno-error=sizeof-pointer-memaccess
-Wno-error=nonnull
-Wno-error=dangling-pointer
-Wno-error=format-overflow
-Wno-error=stringop-overread
-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3'
CMD_LDFLAGS=-Wl,-z,relro"
- name: "7.0 Ub gcc C++11, static"
base: "7.0"
os: ubuntu-latest
cmp: gcc
configuration: static
extra: "CMD_CXXFLAGS=-std=c++11"
- name: "7.0 Ub gcc u-char"
base: "7.0"
os: ubuntu-latest
cmp: gcc
configuration: static
extra: "CMD_CFLAGS=-funsigned-char CMD_CXXFLAGS=-funsigned-char"
- name: "7.0 Ub clang"
base: "7.0"
os: ubuntu-latest
cmp: clang
configuration: default
- name: "7.0 Ub clang C++11"
base: "7.0"
os: ubuntu-latest
cmp: clang
configuration: default
extra: "CMD_CXXFLAGS=-std=c++11"
- name: "7.0 MacOS clang"
base: "7.0"
os: macos-latest
cmp: clang
configuration: default
# Cross builds
- name: "3.15 Ub-22 gcc + MinGW"
base: "3.15"
os: ubuntu-22.04
cmp: gcc
configuration: default
cross: "windows-x64-mingw"
- name: "7.0 Ub gcc + linux-aarch64"
base: "7.0"
os: ubuntu-latest
cmp: gcc
configuration: default
cross: "linux-aarch64"
- name: "7.0 Ub gcc + linux-arm gnueabi"
base: "7.0"
os: ubuntu-latest
cmp: gcc
configuration: default
cross: "linux-arm@arm-linux-gnueabi"
- name: "7.0 Ub gcc + linux-arm gnueabihf"
base: "7.0"
os: ubuntu-latest
cmp: gcc
configuration: default
cross: "linux-arm@arm-linux-gnueabihf"
- name: "7.0 Ub gcc + MinGW"
base: "7.0"
os: ubuntu-latest
cmp: gcc
configuration: default
cross: "windows-x64-mingw"
- name: "7.0 Ub gcc + MinGW, static"
base: "7.0"
os: ubuntu-latest
cmp: gcc
configuration: static
cross: "windows-x64-mingw"
- name: "7.0 Ub-22 gcc + RT-4.9 pc386"
base: "7.0"
os: ubuntu-22.04
cmp: gcc
configuration: default
cross: "RTEMS-pc386-qemu@4.9"
- name: "7.0 Ub-22 gcc + RT-4.10 pc386"
base: "7.0"
os: ubuntu-22.04
cmp: gcc
configuration: default
cross: "RTEMS-pc386-qemu@4.10"
test: NO
- name: "7.0 Ub-22 gcc + RT-5.1 pc686"
base: "7.0"
os: ubuntu-22.04
cmp: gcc
configuration: default
cross: "RTEMS-pc686-qemu@5"
- name: "7.0 Ub-22 gcc + RT-5.1 beatnik,zynq_a9,uC5282"
base: "7.0"
os: ubuntu-22.04
cmp: gcc
configuration: default
cross: "RTEMS-beatnik@5:RTEMS-xilinx_zynq_a9_qemu@5:RTEMS-uC5282@5"
test: NO
# Windows builds
- name: "7.0 Win-22 MSC-22"
base: "7.0"
os: windows-2022
cmp: vs2022
configuration: default
- name: "7.0 Win-22 MSC-22 static"
base: "7.0"
os: windows-2022
cmp: vs2022
configuration: static
- name: "7.0 Win-22 MSC-22 debug"
base: "7.0"
os: windows-2022
cmp: vs2022
configuration: debug
extra: "CMD_CXXFLAGS=-analyze"
- name: "7.0 Win-22 MinGW"
base: "7.0"
os: windows-2022
cmp: gcc
configuration: default
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Automatic core dumper analysis
uses: mdavidsaver/ci-core-dumper@master
- name: "apt-get install"
run: |
sudo apt-get update
sudo apt-get -y install qemu-system-x86 g++-mingw-w64-x86-64 gdb
if: runner.os == 'Linux'
- name: Prepare and compile dependencies
run: python .ci/cue.py prepare
- name: Build main module
run: python .ci/cue.py build
- name: Run main module tests
run: python .ci/cue.py -T 60M test
- name: Upload tapfiles Artifact
if: ${{ always() }}
uses: actions/upload-artifact@v4
with:
name: tapfiles ${{ matrix.name }}
path: '**/O.*/*.tap'
if-no-files-found: ignore
- name: Collect and show test results
if: ${{ always() }}
run: python .ci/cue.py -T 5M test-results
docker:
name: ${{ matrix.name }}
runs-on: ubuntu-latest
container:
image: ${{ matrix.image }}
# Set environment variables from matrix parameters
env:
BASE: ${{ matrix.base }}
CMP: ${{ matrix.cmp }}
BCFG: ${{ matrix.configuration }}
EXTRA: ${{ matrix.extra }}
TEST: ${{ matrix.test }}
strategy:
fail-fast: false
matrix:
# Job names also name artifacts, character limitations apply
include:
- name: "7.0 CentOS-8 gcc"
base: "7.0"
image: centos:8
cmp: gcc
configuration: default
- name: "7.0 Rocky-9 gcc"
base: "7.0"
image: rockylinux:9
cmp: gcc
configuration: default
- name: "7.0 Fedora-33 gcc"
base: "7.0"
image: fedora:33
cmp: gcc
configuration: default
- name: "7.0 Fedora gcc"
base: "7.0"
image: fedora:latest
cmp: gcc
configuration: default
steps:
- name: "Fix repo URLs on CentOS-8"
# centos:8 is frozen, repos are in the vault
if: matrix.image=='centos:8'
run: |
sed -i -e "s|mirrorlist=|#mirrorlist=|" \
-e "s|#baseurl=http://mirror|baseurl=http://vault|" \
/etc/yum.repos.d/CentOS-Linux-{BaseOS,AppStream,Extras,Plus}.repo
- name: "Redhat setup"
run: |
dnf -y install python3 gdb make perl gcc-c++ glibc-devel readline-devel ncurses-devel perl-devel perl-Test-Simple
git --version || dnf -y install git
python3 --version
- uses: actions/checkout@v4
with:
submodules: true
- name: Automatic core dumper analysis
uses: mdavidsaver/ci-core-dumper@master
- name: Prepare and compile dependencies
run: python3 .ci/cue.py prepare
- name: Build main module
run: python3 .ci/cue.py build
- name: Run main module tests
run: python3 .ci/cue.py -T 20M test
- name: Upload tapfiles Artifact
if: ${{ always() }}
uses: actions/upload-artifact@v4
with:
name: tapfiles ${{ matrix.name }}
path: '**/O.*/*.tap'
if-no-files-found: ignore
- name: Collect and show test results
if: ${{ always() }}
run: python3 .ci/cue.py -T 5M test-results