diff --git a/.appveyor.yml b/.appveyor.yml
index 0f6b9d7f..90a880a2 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -4,15 +4,6 @@
cache:
- C:\Users\appveyor\.tools
-#---------------------------------#
-# additional packages #
-#---------------------------------#
-
-install:
-# for the sequencer
- - cinst re2c
- - cmd: git submodule update --init --recursive
-
#---------------------------------#
# repository cloning #
#---------------------------------#
@@ -40,39 +31,55 @@ configuration:
environment:
# common / default variables for all jobs
SETUP_PATH: .ci-local
+ BASE: 7.0
matrix:
- - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
- CMP: vs2019
- BASE: 7.0
- - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
- CMP: gcc
- BASE: 7.0
- - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
- CMP: vs2017
- BASE: 7.0
- - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
- CMP: vs2019
- BASE: 3.15
+ - CMP: vs2019
+ APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
+ - CMP: vs2017
+ APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
+ - CMP: vs2015
+ - CMP: vs2013
+ - CMP: gcc
+ APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
+ # TODO: static linking w/ readline isn't working. Bypass auto-detect
+ COMMANDLINE_LIBRARY: EPICS
# Platform: processor architecture
platform:
- x64
+# Matrix configuration: exclude sets of jobs
+matrix:
+ exclude:
+ # MinGW debug builds use the same libraries, unlike VS
+ - configuration: dynamic-debug
+ CMP: gcc
+ - configuration: static-debug
+ CMP: gcc
+
#---------------------------------#
# building & testing #
#---------------------------------#
-build_script:
+install:
+ - cmd: git submodule update --init --recursive
+ - cmd: pip install git+https://github.com/mdavidsaver/ci-core-dumper#egg=ci-core-dumper
- cmd: python .ci/cue.py prepare
+
+build_script:
- cmd: python .ci/cue.py build
test_script:
- - cmd: python .ci/cue.py test
+ - cmd: python -m ci_core_dumper install
+ - cmd: python .ci/cue.py -T 20M test
on_finish:
- ps: Get-ChildItem *.tap -Recurse -Force | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name }
- - cmd: python .ci/cue.py build test-results -s
+ - cmd: python .ci/cue.py -T 5M test-results
+
+on_failure:
+ - cmd: python -m ci_core_dumper report
#---------------------------------#
# debugging #
diff --git a/.github/workflows/ci-scripts-build.yml b/.github/workflows/ci-scripts-build.yml
index 141e8aeb..08fa6ee0 100644
--- a/.github/workflows/ci-scripts-build.yml
+++ b/.github/workflows/ci-scripts-build.yml
@@ -39,12 +39,10 @@ jobs:
runs-on: ${{ matrix.os }}
# Set environment variables from matrix parameters
env:
+ BASE: "7.0"
CMP: ${{ matrix.cmp }}
BCFG: ${{ matrix.configuration }}
- BASE: ${{ matrix.base }}
- WINE: ${{ matrix.wine }}
- RTEMS: ${{ matrix.rtems }}
- RTEMS_TARGET: ${{ matrix.rtems_target }}
+ CI_CROSS_TARGETS: ${{ matrix.cross }}
EXTRA: ${{ matrix.extra }}
TEST: ${{ matrix.test }}
strategy:
@@ -52,130 +50,153 @@ jobs:
matrix:
# Job names also name artifacts, character limitations apply
include:
- - os: ubuntu-latest
+ - os: ubuntu-22.04
+ cmp: gcc-12
+ name: "Ub-22 gcc-12 c++20 Werror"
+ # 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"
+
+ - os: ubuntu-20.04
cmp: gcc
configuration: default
- base: "7.0"
- wine: "64"
- name: "Ub-20 gcc-9 + MinGW"
+ cross: "windows-x64-mingw"
+ name: "Ub-20 gcc + MinGW"
- - os: ubuntu-latest
+ - os: ubuntu-20.04
cmp: gcc
configuration: static
- base: "7.0"
- wine: "64"
- name: "Ub-20 gcc-9 + MinGW, static"
+ cross: "windows-x64-mingw"
+ name: "Ub-20 gcc + MinGW, static"
- - os: ubuntu-latest
+ - os: ubuntu-20.04
cmp: gcc
configuration: static
- base: "7.0"
extra: "CMD_CXXFLAGS=-std=c++11"
- name: "Ub-20 gcc-9 C++11, static"
+ name: "Ub-20 gcc C++11, static"
- - os: ubuntu-latest
+ - os: ubuntu-20.04
+ cmp: gcc
+ configuration: static
+ extra: "CMD_CFLAGS=-funsigned-char CMD_CXXFLAGS=-funsigned-char"
+ name: "Ub-20 gcc unsigned char"
+
+ - os: ubuntu-20.04
cmp: clang
configuration: default
- base: "7.0"
- name: "Ub-20 clang-10"
+ name: "Ub-20 clang"
- - os: ubuntu-latest
+ - os: ubuntu-20.04
cmp: clang
configuration: default
- base: "7.0"
extra: "CMD_CXXFLAGS=-std=c++11"
- name: "Ub-20 clang-10 C++11"
+ name: "Ub-20 clang C++11"
- os: ubuntu-20.04
cmp: gcc
configuration: default
- base: "7.0"
- rtems: "5"
- rtems_target: RTEMS-pc686-qemu
- name: "Ub-20 gcc-9 + RT-5.1 pc686"
+ cross: "RTEMS-pc686-qemu@5"
+ name: "Ub-20 gcc + RT-5.1 pc686"
- os: ubuntu-20.04
cmp: gcc
configuration: default
- base: "7.0"
- rtems: "5"
- rtems_target: RTEMS-beatnik
+ cross: "RTEMS-beatnik@5"
test: NO
- name: "Ub-20 gcc-9 + RT-5.1 beatnik"
+ name: "Ub-20 gcc + RT-5.1 beatnik"
- os: ubuntu-20.04
cmp: gcc
configuration: default
- base: "7.0"
- rtems: "5"
- rtems_target: RTEMS-xilinx_zynq_a9_qemu
+ cross: "RTEMS-xilinx_zynq_a9_qemu@5"
test: NO
- name: "Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu"
+ name: "Ub-20 gcc + RT-5.1 xilinx_zynq_a9_qemu"
- os: ubuntu-20.04
cmp: gcc
configuration: default
- base: "7.0"
- rtems: "5"
- rtems_target: RTEMS-uC5282
+ cross: "RTEMS-uC5282@5"
test: NO
- name: "Ub-20 gcc-9 + RT-5.1 uC5282"
+ name: "Ub-20 gcc + RT-5.1 uC5282"
- os: ubuntu-20.04
cmp: gcc
configuration: default
- base: "7.0"
- rtems: "4.10"
- name: "Ub-20 gcc-9 + RT-4.10"
- rtems_target: RTEMS-pc386-qemu
+ name: "Ub-20 gcc + RT-4.10"
+ cross: "RTEMS-pc386-qemu@4.10"
test: NO
- os: ubuntu-20.04
cmp: gcc
configuration: default
- base: "7.0"
- rtems: "4.9"
- name: "Ub-20 gcc-9 + RT-4.9"
- rtems_target: RTEMS-pc386-qemu
-
- - os: ubuntu-20.04
- cmp: gcc
- configuration: default
- base: "3.15"
- name: "Ub-20 3.15"
+ name: "Ub-20 gcc + RT-4.9"
+ cross: "RTEMS-pc386-qemu@4.9"
- os: macos-latest
cmp: clang
configuration: default
- base: "7.0"
- name: "MacOS clang-12"
+ name: "MacOS clang"
- os: windows-2019
cmp: vs2019
- configuration: default
- base: "7.0"
+ configuration: debug
name: "Win2019 MSC-19"
+ extra: "CMD_CXXFLAGS=-analysis"
- os: windows-2019
cmp: vs2019
- configuration: static
- base: "7.0"
+ configuration: static-debug
name: "Win2019 MSC-19, static"
+ extra: "CMD_CXXFLAGS=-analysis"
- os: windows-2019
cmp: vs2019
configuration: debug
- base: "7.0"
name: "Win2019 MSC-19, debug"
- os: windows-2019
cmp: gcc
configuration: default
- base: "7.0"
name: "Win2019 mingw"
+ # Linux cross builds
+
+ - os: ubuntu-latest
+ cmp: gcc
+ configuration: default
+ name: "Cross linux-aarch64"
+ cross: linux-aarch64
+
+ - os: ubuntu-latest
+ cmp: gcc
+ configuration: default
+ name: "Cross linux-arm gnueabi"
+ cross: linux-arm@arm-linux-gnueabi
+
+ - os: ubuntu-latest
+ cmp: gcc
+ configuration: default
+ name: "Cross linux-arm gnueabihf"
+ cross: linux-arm@arm-linux-gnueabihf
+
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
submodules: true
- name: Automatic core dumper analysis
@@ -209,9 +230,9 @@ jobs:
image: ${{ matrix.image }}
# Set environment variables from matrix parameters
env:
+ BASE: "7.0"
CMP: ${{ matrix.cmp }}
BCFG: ${{ matrix.configuration }}
- BASE: ${{ matrix.base }}
EXTRA: ${{ matrix.extra }}
TEST: ${{ matrix.test }}
strategy:
@@ -219,35 +240,20 @@ jobs:
matrix:
# Job names also name artifacts, character limitations apply
include:
- - name: "CentOS-7 3.16"
- image: centos:7
- cmp: gcc
- configuration: default
- base: "3.16"
-
- - name: "CentOS-7 3.15"
- image: centos:7
- cmp: gcc
- configuration: default
- base: "3.15"
-
- - name: "CentOS-7"
- image: centos:7
- cmp: gcc
- configuration: default
- base: "7.0"
+ #- name: "CentOS-7"
+ # image: centos:7
+ # cmp: gcc
+ # configuration: default
- name: "Fedora-33"
image: fedora:33
cmp: gcc
configuration: default
- base: "7.0"
- name: "Fedora-latest"
image: fedora:latest
cmp: gcc
configuration: default
- base: "7.0"
steps:
- name: "Build newer Git"
@@ -276,11 +282,15 @@ jobs:
# people would rather just break all existing scripts...
[ -e /usr/bin/python ] || ln -sf python3 /usr/bin/python
python --version
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
submodules: true
- name: Automatic core dumper analysis
uses: mdavidsaver/ci-core-dumper@master
+ if: matrix.image!='centos:7'
+ - name: Automatic core dumper analysis
+ uses: mdavidsaver/ci-core-dumper@node16
+ if: matrix.image=='centos:7'
- name: Prepare and compile dependencies
run: python .ci/cue.py prepare
- name: Build main module