From a6746f8161f942862f3dc40a0216b31f36568db8 Mon Sep 17 00:00:00 2001 From: Ralph Lange Date: Mon, 16 Dec 2024 12:08:55 +0100 Subject: [PATCH 1/4] GHA: Update actions/upload-artifact to v4 --- .github/workflows/ci-scripts-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-scripts-build.yml b/.github/workflows/ci-scripts-build.yml index 7c65004..141e8ae 100644 --- a/.github/workflows/ci-scripts-build.yml +++ b/.github/workflows/ci-scripts-build.yml @@ -193,7 +193,7 @@ jobs: run: python .ci/cue.py -T 60M test - name: Upload tapfiles Artifact if: ${{ always() }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: tapfiles ${{ matrix.name }} path: '**/O.*/*.tap' @@ -289,7 +289,7 @@ jobs: run: python .ci/cue.py -T 20M test - name: Upload tapfiles Artifact if: ${{ always() }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: tapfiles ${{ matrix.name }} path: '**/O.*/*.tap' From e457b60b301fadcf5e426a740b7c09f4ea057ed3 Mon Sep 17 00:00:00 2001 From: Ralph Lange Date: Wed, 18 Dec 2024 20:15:03 +0100 Subject: [PATCH 2/4] ci: Update GHA workflow from base - Run Fedora in containers - Add Linux cross builds --- .github/workflows/ci-scripts-build.yml | 188 +++++++++++++------------ 1 file changed, 99 insertions(+), 89 deletions(-) diff --git a/.github/workflows/ci-scripts-build.yml b/.github/workflows/ci-scripts-build.yml index 141e8ae..08fa6ee 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" - - - os: windows-2019 - cmp: vs2019 - configuration: default - base: "7.0" - name: "Win2019 MSC-19" - - - os: windows-2019 - cmp: vs2019 - configuration: static - base: "7.0" - name: "Win2019 MSC-19, static" + name: "MacOS clang" + + - os: windows-2019 + cmp: vs2019 + configuration: debug + name: "Win2019 MSC-19" + extra: "CMD_CXXFLAGS=-analysis" + + - os: windows-2019 + cmp: vs2019 + 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 From 0881e0ed86e4f8475894fc8cfed005bcc4927e5e Mon Sep 17 00:00:00 2001 From: Ralph Lange Date: Wed, 18 Dec 2024 21:53:27 +0100 Subject: [PATCH 3/4] ci: update appveyor.yml from base --- .appveyor.yml | 55 +++++++++++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index 0f6b9d7..90a880a 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 # From 245503959405bd9eb31e30c50f960b6e39c87815 Mon Sep 17 00:00:00 2001 From: Ralph Lange Date: Tue, 24 Dec 2024 17:19:59 +0100 Subject: [PATCH 4/4] ci: consistent AppVeyor job config for pvData/pvAccess --- .appveyor.yml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index 90a880a..71e7d0b 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -1,6 +1,8 @@ # .appveyor.yml for use with EPICS Base ci-scripts # (see: https://github.com/epics-base/ci-scripts) +# This is YAML - indentation levels are crucial + cache: - C:\Users\appveyor\.tools @@ -12,13 +14,15 @@ init: # Set autocrlf to make batch files work - git config --global core.autocrlf true -clone_depth: 50 +clone_depth: 5 # Skipping commits affecting only specific files skip_commits: files: - - 'documentation/*' - - '**/*.md' + - 'documentation/*' + - '.github/*' + - '**/*.md' + - '.readthedocs.yml' # Build Configurations: dll/static, regular/debug configuration: @@ -36,6 +40,9 @@ environment: matrix: - CMP: vs2019 APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 + - CMP: vs2019 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 + BASE: 3.15 - CMP: vs2017 APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - CMP: vs2015