19 Commits

Author SHA1 Message Date
Ralph Lange
aea7906839 Update README (top, GHA) and GHA example-full
Some checks failed
ci-scripts build/test / Unit tests on macos-11 (push) Has been cancelled
ci-scripts build/test / Unit tests on macos-12 (push) Has been cancelled
ci-scripts build/test / Unit tests on ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / Unit tests on ubuntu-20.04 (push) Has been cancelled
ci-scripts build/test / Unit tests on ubuntu-22.04 (push) Has been cancelled
ci-scripts build/test / Unit tests on windows-2019 (push) Has been cancelled
ci-scripts build/test / Unit tests on windows-2022 (push) Has been cancelled
ci-scripts build/test / clang / debug / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / clang / debug / ubuntu-20.04 (push) Has been cancelled
ci-scripts build/test / clang / debug / ubuntu-22.04 (push) Has been cancelled
ci-scripts build/test / clang / default / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / clang / default / ubuntu-20.04 (push) Has been cancelled
ci-scripts build/test / clang / default / ubuntu-22.04 (push) Has been cancelled
ci-scripts build/test / clang / static / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / clang / static / ubuntu-20.04 (push) Has been cancelled
ci-scripts build/test / clang / static / ubuntu-22.04 (push) Has been cancelled
ci-scripts build/test / clang / static-debug / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / clang / static-debug / ubuntu-20.04 (push) Has been cancelled
ci-scripts build/test / clang / static-debug / ubuntu-22.04 (push) Has been cancelled
ci-scripts build/test / gcc / debug / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / gcc / debug / ubuntu-20.04 (push) Has been cancelled
ci-scripts build/test / gcc / debug / ubuntu-22.04 (push) Has been cancelled
ci-scripts build/test / gcc / default / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / gcc / default / ubuntu-20.04 (push) Has been cancelled
ci-scripts build/test / gcc / default / ubuntu-22.04 (push) Has been cancelled
ci-scripts build/test / gcc / static / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / gcc / static / ubuntu-20.04 (push) Has been cancelled
ci-scripts build/test / gcc / static / ubuntu-22.04 (push) Has been cancelled
ci-scripts build/test / gcc / static-debug / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / gcc / static-debug / ubuntu-20.04 (push) Has been cancelled
ci-scripts build/test / gcc / static-debug / ubuntu-22.04 (push) Has been cancelled
ci-scripts build/test / clang / debug / macos-11 (push) Has been cancelled
ci-scripts build/test / clang / debug / macos-12 (push) Has been cancelled
ci-scripts build/test / clang / default / macos-11 (push) Has been cancelled
ci-scripts build/test / clang / default / macos-12 (push) Has been cancelled
ci-scripts build/test / gcc / debug / windows-2019 (push) Has been cancelled
ci-scripts build/test / gcc / debug / windows-2022 (push) Has been cancelled
ci-scripts build/test / gcc / default / windows-2019 (push) Has been cancelled
ci-scripts build/test / gcc / default / windows-2022 (push) Has been cancelled
ci-scripts build/test / gcc / static / windows-2019 (push) Has been cancelled
ci-scripts build/test / gcc / static / windows-2022 (push) Has been cancelled
ci-scripts build/test / gcc / static-debug / windows-2019 (push) Has been cancelled
ci-scripts build/test / gcc / static-debug / windows-2022 (push) Has been cancelled
ci-scripts build/test / vs2019 / debug / windows-2019 (push) Has been cancelled
ci-scripts build/test / vs2019 / default / windows-2019 (push) Has been cancelled
ci-scripts build/test / vs2019 / static / windows-2019 (push) Has been cancelled
ci-scripts build/test / vs2019 / static-debug / windows-2019 (push) Has been cancelled
ci-scripts build/test / vs2022 / debug / windows-2022 (push) Has been cancelled
ci-scripts build/test / vs2022 / default / windows-2022 (push) Has been cancelled
ci-scripts build/test / vs2022 / static / windows-2022 (push) Has been cancelled
ci-scripts build/test / vs2022 / static-debug / windows-2022 (push) Has been cancelled
ci-scripts build/test / cross RTEMS-pc386-qemu@4.10 / / default (push) Has been cancelled
ci-scripts build/test / cross RTEMS-pc386-qemu@4.9 / / default (push) Has been cancelled
ci-scripts build/test / cross RTEMS-pc686-qemu@5 / / default (push) Has been cancelled
ci-scripts build/test / cross linux-aarch64 / / default (push) Has been cancelled
ci-scripts build/test / cross linux-arm@arm-linux-gnueabi / / default (push) Has been cancelled
ci-scripts build/test / cross linux-arm@arm-linux-gnueabihf / / default (push) Has been cancelled
ci-scripts build/test / cross linux-ppc / / default (push) Has been cancelled
ci-scripts build/test / cross linux-ppc64 / / default (push) Has been cancelled
ci-scripts build/test / cross win32-x86-mingw / / default (push) Has been cancelled
ci-scripts build/test / cross windows-x64-mingw / / default (push) Has been cancelled
2022-07-22 15:33:13 +02:00
Ralph Lange
c6bc90b06a Merge pull request #70 from mdavidsaver/py-hook
(closes #70)
2022-07-22 14:06:02 +02:00
Ralph Lange
af1ecbabae Add skip_dep_builds flag to suppress dependency builds
To allow unit tests suppressing the build of
dependencies when using the prepare() function.
2022-07-22 13:55:00 +02:00
Ralph Lange
22b2e3f796 Fix handling of some global variables and clear them properly
- move make_timeout to global and add it to clear_lists()
- add _modified_files and building_base to clear_lists()

This is needed to run tests that include prepare().
2022-07-22 13:55:00 +02:00
Ralph Lange
d36800b2e0 test: add unit test for RTEMS/WINE compatibility handling
see https://github.com/epics-base/ci-scripts/pull/69
"If we're going to continue to support the old $RTEMS and $WINE,
then they should be covered by the test"
2022-07-22 13:55:00 +02:00
Ralph Lange
b6723d0be4 Fix handle_old_cross_variables()
For cross-builds using deprecated WINE and RTEMS variables:
- add correct entry to CI_CROSS_TARGETS
- print added entry as part of the deprecation warning
- log change in CI_CROSS_TARGETS to debug log

(see review in #69)
2022-07-21 15:23:28 +02:00
Ralph Lange
db7677a48e Merge pull request #69 from minijackson/extra-linux-targets
(closes #69)
2022-07-21 15:23:04 +02:00
Ralph Lange
ee9d6b3497 Update GHA virtual environments
- remove ubuntu-16, windows-2016, macos-10.15
  see https://github.com/actions/virtual-environments/issues/5238
  see https://github.com/actions/virtual-environments/issues/5583
- add ubuntu-22, macos-12, macos-11
2022-07-21 15:21:28 +02:00
Ralph Lange
89a16e4499 Merge pull request #63 from mdavidsaver/vs2022
Add vs2022
2022-07-04 12:22:21 +02:00
Michael Davidsaver
91fb22b79a run .py hooks with same interpreter
Avoids #! and allows .py hook scripts to work on windows
2022-06-30 18:48:04 -07:00
Minijackson
514737a106 cue: move cross compilation spec to new CI_CROSS_TARGETS variable 2022-05-12 09:10:05 -07:00
Ralph Lange
f7e21c7c9d Cover vs2022 in documentation and example files 2022-01-18 08:46:39 -08:00
Michael Davidsaver
e065445f76 Add vs2022 2022-01-18 08:45:16 -08:00
Ralph Lange
93062ba941 test: bump seq version to 2.2.9 in test01.set
attempt to fix a compilation failure on VS2017
(see https://github.com/epics-base/ci-scripts/pull/63#issuecomment-1012611739)
2022-01-17 19:12:38 +01:00
Ralph Lange
75d2911498 Set EPICS_BASE for 'exec' user commands
(fixes #66)
2022-01-02 16:52:55 +01:00
Ralph Lange
3a1d04914f appveyor: drop support for VS2008
- Visual Studio 2008 has been dropped
  by EPICS Base end of 2020
(fixes #64)
2022-01-02 14:00:10 +01:00
Ralph Lange
75bae77c1d Add repo-configuration for CentOS6 (afterlife)
- install as /etc/yum.repos.d/CentOS-Base.repo to use yum
- include the Red Hat Software Collections (scl) repository
2021-05-08 17:44:53 +02:00
Michael Davidsaver
d675de24e6 GHA fix rtems_target 2021-04-21 15:58:19 -07:00
Michael Davidsaver
e703210fad Avoid "No handlers ..." message. 2021-04-21 15:58:16 -07:00
12 changed files with 550 additions and 221 deletions

View File

@@ -72,19 +72,21 @@ environment:
VV: 1
matrix:
- CMP: vs2019
- CMP: vs2022
SET: test00
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
- CMP: gcc
- CMP: vs2019
- CMP: vs2022
VV: 0
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
- CMP: vs2019
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
- CMP: vs2022
BASE: 3.15
CLEAN_DEPS: NO
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
- CMP: vs2019
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
- CMP: vs2022
BASE: 3.14
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
- CMP: vs2019
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
- CMP: vs2017
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
@@ -95,7 +97,6 @@ environment:
- CMP: vs2013
- CMP: vs2012
- CMP: vs2010
- CMP: vs2008
# Platform: architecture
platform:
@@ -125,8 +126,6 @@ matrix:
CMP: vs2012
- platform: x64
CMP: vs2010
- platform: x64
CMP: vs2008
# Run test script for unit tests (SET = test00)
for:

View File

@@ -19,7 +19,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, ubuntu-18.04, ubuntu-16.04, windows-2019, windows-2016, macos-10.15]
os: [ubuntu-22.04, ubuntu-20.04, ubuntu-18.04, windows-2022, windows-2019, macos-12, macos-11]
steps:
- uses: actions/checkout@v2
- name: Show initial environment
@@ -36,7 +36,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, ubuntu-18.04, ubuntu-16.04]
os: [ubuntu-22.04, ubuntu-20.04, ubuntu-18.04]
cmp: [gcc, clang]
configuration: [default, static, debug, static-debug]
steps:
@@ -50,37 +50,6 @@ jobs:
- name: Collect and show test results
run: python cue.py test-results
build-linux-old:
name: ${{ matrix.cmp }} / ${{ matrix.configuration }} / ${{ matrix.os }}
runs-on: ${{ matrix.os }}
env:
CMP: ${{ matrix.cmp }}
BCFG: ${{ matrix.configuration }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-16.04]
cmp: ["gcc-4.8", "gcc-4.9"]
configuration: [default, static]
steps:
- uses: actions/checkout@v2
- name: "apt-get install ${{ matrix.cmp }}"
run: |
export GCC_NAME="${{ matrix.cmp }}"
sudo apt-get update
sudo apt-get -y install software-properties-common
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get -y install g++-${GCC_NAME#gcc-}
- name: Prepare and compile dependencies
run: python cue.py prepare
- name: Build main module (example app)
run: python cue.py build
- name: Run main module tests
run: python cue.py -T 15M test
- name: Collect and show test results
run: python cue.py test-results
build-macos:
name: ${{ matrix.cmp }} / ${{ matrix.configuration }} / ${{ matrix.os }}
runs-on: ${{ matrix.os }}
@@ -90,7 +59,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [macos-10.15]
os: [macos-12, macos-11]
cmp: [clang]
configuration: [default, debug]
steps:
@@ -113,14 +82,16 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [windows-2019, windows-2016]
cmp: [gcc, vs2019, vs2017]
os: [windows-2022, windows-2019]
cmp: [gcc, vs2022, vs2019]
configuration: [default, static, debug, static-debug]
exclude:
- os: windows-2019
cmp: vs2017
- os: windows-2016
- os: windows-2022
cmp: vs2019
- os: windows-2019
cmp: vs2022
steps:
- uses: actions/checkout@v2
- name: Prepare and compile dependencies
@@ -132,48 +103,30 @@ jobs:
- name: Collect and show test results
run: python cue.py test-results
build-rtems:
name: RTEMS${{ matrix.rtems }} / ${{ matrix.configuration }} / ${{ matrix.os }}
runs-on: ${{ matrix.os }}
build-cross:
name: cross ${{ matrix.cross }} / ${{ matrix.cmp }} / ${{ matrix.configuration }}
runs-on: ubuntu-20.04
env:
CMP: ${{ matrix.cmp }}
BCFG: ${{ matrix.configuration }}
RTEMS: ${{ matrix.rtems }}
RTEMS_TARGET: RTEMS-pc686-qemu
APT: re2c g++-mingw-w64-i686 g++-mingw-w64-x86-64 qemu-system-x86
CMP: gcc
BCFG: default
CI_CROSS_TARGETS: ${{ matrix.cross }}
APT: re2c
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04]
cmp: [gcc]
configuration: [default, debug]
rtems: ["4.9", "4.10", "5"]
steps:
- uses: actions/checkout@v2
- name: Prepare and compile dependencies
run: python cue.py prepare
- name: Build main module (example app)
run: python cue.py build
- name: Run main module tests
run: python cue.py -T 15M test
- name: Collect and show test results
run: python cue.py test-results
build-wine:
name: WINE${{ matrix.wine }} / ${{ matrix.configuration }} / ${{ matrix.os }}
runs-on: ${{ matrix.os }}
env:
CMP: ${{ matrix.cmp }}
BCFG: ${{ matrix.configuration }}
WINE: ${{ matrix.wine }}
APT: re2c g++-mingw-w64-i686 g++-mingw-w64-x86-64
strategy:
fail-fast: false
matrix:
os: [ubuntu-18.04]
cmp: [gcc]
configuration: [default, static, debug, static-debug]
wine: [32, 64]
# configuration: [default, static, debug, static-debug]
configuration: [default]
cross:
- linux-aarch64
- linux-arm@arm-linux-gnueabi
- linux-arm@arm-linux-gnueabihf
- linux-ppc
- linux-ppc64
- win32-x86-mingw
- windows-x64-mingw
- RTEMS-pc386-qemu@4.9
- RTEMS-pc386-qemu@4.10
- RTEMS-pc686-qemu@5
steps:
- uses: actions/checkout@v2
- name: Prepare and compile dependencies

View File

@@ -50,7 +50,7 @@ levels as the example files.
the module can be patched or further configured.
- Define shared (default) or static builds (for executables and libraries).
- Define optimized (default) or debug builds.
- Run tests (using the EPICS build system, i.e., `make runtests`
@@ -76,7 +76,7 @@ and limitations.
- Cross-compile for RTEMS 4.9 and 4.10 (pc386, Base >= 3.15)
- Cross-compile for RTEMS 5 (10 BSPs, Base >= 7.0.5.1)
- Built dependencies are cached (for faster builds).
See specific
**[ci-scripts on Travis-CI README](travis/README.md)**
for more details.
@@ -85,7 +85,7 @@ for more details.
- One parallel runner (all builds are sequential)
- Windows Server 2012/2016/2019
- Compile using gcc/MinGW or different Visual Studio versions: \
2008, 2010, 2012, 2013, 2015, 2017, 2019
2010, 2012, 2013, 2015, 2017, 2019, 2022
- Compile for Windows 32bit and 64bit
- No useful caching available.
@@ -95,10 +95,10 @@ for more details.
### [GitHub Actions](https://github.com/)
- 20 parallel runners on Linux/Windows (5 runners on MacOS)
- Ubuntu 16/18/20, MacOS 10.15, Windows Server 2016/2019
- Ubuntu 18/20/22, MacOS 11/12, Windows Server 2019/2022
- Compile natively on Linux (gcc, clang)
- Compile natively on MacOS (clang)
- Compile natively on Windows (gcc/MinGW, Visual Studio 2017 & 2019)
- Compile natively on Windows (gcc/MinGW, Visual Studio 2019/2022)
- Cross-compile for Windows 32bit and 64bit using MinGW and WINE
- Cross-compile for RTEMS 4.9 and 4.10 (pc386, Base >= 3.15)
- Cross-compile for RTEMS 5 (10 BSPs, Base >= 7.0.5.1)
@@ -112,7 +112,7 @@ for more details.
- Docker-based runners on Linux (one VM instance per job)
- Can use any Docker image from Dockerhub (the examples use
`ubuntu:bionic`)
`ubuntu:bionic`)
- Compile natively using different compilers (gcc, clang)
- Cross-compile for Windows 32bit and 64bit using MinGW and WINE
- Cross-compile for RTEMS 4.9 and 4.10 (pc386, Base >= 3.15)
@@ -283,8 +283,8 @@ Feel free to suggest more default settings using a Pull Request.
## RTEMS
Setting `RTEMS` to the RTEMS version number (`4.9`, `4.10` or `5`)
enables cross-compiling to RTEMS on supported CI services.
Cross-compiling to RTEMS versions 4.9, 4.10 or 5 is supported
on supported CI services. For configuration see below.
Tests can also be run cross-platform, using `qemu`.
The RTEMS 5 builds now include most of the BSPs with configuration in Base:
@@ -301,15 +301,38 @@ The RTEMS 5 builds now include most of the BSPs with configuration in Base:
- xilinx_zynq_a9_qemu w/ libbsd
Build configuration [can be found here][ref.rtems5build].
Set `RTEMS_TARGET` to configure the EPICS target architecture and
`RSB_BUILD` to select the RTEMS toolchain release name/data from
Set `RSB_BUILD` to select the RTEMS toolchain release name/data from
https://github.com/mdavidsaver/rsb/releases.
RTEMS 5 builds need to be switched to a newer ubuntu version
RTEMS 5 builds need to be switched to ubuntu version >= 20
(aka. **os: ubuntu-20.04** with GitHub Actions,
**dist: focal** with Travis-CI or
**image: ubuntu:focal** with GitLab CI/CD).
## Cross Compilation
Setting the `CI_CROSS_TARGETS` environment variable enables cross-compiling
from Linux to the provided targets architectures.
The value of the environment variable must contain the EPICS architecture
and - depending on the target - may contain additional information like
the compiler prefix to be used or the version of the target OS.
Multiple cross-targets can be added to the `CI_CROSS_TARGETS` variable
by separating them with a colon (`:`) character.
For example, possible values are:
- linux-aarch64
- linux-arm@arm-linux-gnueabi
- linux-arm@arm-linux-gnueabihf
- linux-ppc
- linux-ppc64
- win32-x86-mingw
- windows-x64-mingw
- RTEMS-pc386-qemu@4.9
- RTEMS-pc386-qemu@4.10
- RTEMS-pc686-qemu@5
## Debugging
Setting `VV=1` in your service configuration (e.g., `.travis.yml`) for a

View File

@@ -92,8 +92,8 @@ environment:
BASE: 7.0
matrix:
- CMP: vs2019
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
- CMP: vs2022
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
- CMP: gcc
- CMP: vs2019
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
@@ -109,7 +109,6 @@ environment:
- CMP: vs2013
- CMP: vs2012
- CMP: vs2010
- CMP: vs2008
# Platform: processor architecture
platform:
@@ -124,8 +123,6 @@ matrix:
CMP: vs2012
- platform: x64
CMP: vs2010
- platform: x64
CMP: vs2008
# Exclude more jobs to reduce build time
# E.g., skip 32-bit for newer compilers
#- platform: x86

View File

@@ -20,7 +20,7 @@ skip_commits:
install:
- cmd: git submodule update --init --recursive
image: Visual Studio 2019
image: Visual Studio 2022
# Build Configurations: shared/static, optimized/debug
configuration:
@@ -34,9 +34,9 @@ environment:
SETUP_PATH: .ci-local:.ci
matrix:
- CMP: vs2019
- CMP: vs2022
BASE: 7.0
- CMP: vs2019
- CMP: vs2022
BASE: 3.15
# Platform: processor architecture
@@ -52,8 +52,6 @@ matrix:
CMP: vs2012
- platform: x64
CMP: vs2010
- platform: x64
CMP: vs2008
build_script:
- cmd: python .ci/cue.py prepare

View File

@@ -5,7 +5,7 @@
- One parallel runner (all builds are sequential)
- Windows Server 2012/2016/2019
- Compile using gcc/MinGW or different Visual Studio versions: \
2008, 2010, 2012, 2013, 2015, 2017, 2019
2010, 2012, 2013, 2015, 2017, 2019, 2022
- Compile for Windows 32bit and 64bit
- No useful caching available.
@@ -46,7 +46,7 @@
List of environment variable settings. Each list element (starting with
a dash) is one step on the axis of the build matrix. \
Set `CMP` to select the compiler: `gcc` for the native
[MinGW](http://mingw-w64.org/) GNU compiler, `vs2008` ...`vs2019`
[MinGW](http://mingw-w64.org/) GNU compiler, `vs2010` ...`vs2022`
(options listed above) for the Microsoft Visual Studio compilers.
Your builds will take long. \

47
centos6-eol.repo Normal file
View File

@@ -0,0 +1,47 @@
[C6.10-base]
name=CentOS-6.10 - Base
baseurl=http://vault.centos.org/6.10/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=1
metadata_expire=never
[C6.10-updates]
name=CentOS-6.10 - Updates
baseurl=http://vault.centos.org/6.10/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=1
metadata_expire=never
[C6.10-extras]
name=CentOS-6.10 - Extras
baseurl=http://vault.centos.org/6.10/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=1
metadata_expire=never
[C6.10-contrib]
name=CentOS-6.10 - Contrib
baseurl=http://vault.centos.org/6.10/contrib/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=0
metadata_expire=never
[C6.10-centosplus]
name=CentOS-6.10 - CentOSPlus
baseurl=http://vault.centos.org/6.10/centosplus/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=0
metadata_expire=never
[centos-sclo-rh]
name=CentOS-6 - SCLo rh
baseurl=http://vault.centos.org/6.10/sclo/$basearch/rh/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
enabled=1
metadata_expire=never

View File

@@ -13,6 +13,7 @@ import re
import subprocess as sp
import unittest
import logging
import fnmatch
from argparse import Namespace
builddir = os.getcwd()
@@ -66,6 +67,8 @@ import cue
# we're working with tags (detached heads) a lot: suppress advice
cue.call_git(['config', '--global', 'advice.detachedHead', 'false'])
# Don't build dependencies when running unit tests
cue.skip_dep_builds = True
class TestSourceSet(unittest.TestCase):
@@ -111,7 +114,7 @@ class TestSourceSet(unittest.TestCase):
self.assertEqual(cue.setup['FOO'], 'bar', 'Setting of single word does not work')
self.assertEqual(cue.setup['FOO2'], 'bar bar2', 'Setting of multiple words does not work')
self.assertEqual(cue.setup['FOO3'], 'bar bar2', 'Indented setting of multiple words does not work')
self.assertEqual(cue.setup['SNCSEQ'], 'R2-2-8', 'Setup test01 was not included')
self.assertEqual(cue.setup['SNCSEQ'], 'R2-2-9', 'Setup test01 was not included')
def test_DoubleIncludeGetsIgnored(self):
capturedOutput = getStringIO()
@@ -349,8 +352,10 @@ class TestVCVars(unittest.TestCase):
os.environ['CONFIGURATION'] = 'default'
if ci_service == 'github-actions' and os.environ['IMAGEOS'] == 'win16':
os.environ['CMP'] = 'vs2017'
else:
elif ci_service == 'github-actions' and os.environ['IMAGEOS'] == 'win19':
os.environ['CMP'] = 'vs2019'
else:
os.environ['CMP'] = 'vs2022'
cue.detect_context()
cue.with_vcvars('env')
@@ -699,7 +704,6 @@ class TestAppveyorDetectContext(unittest.TestCase):
class TestSetupForBuild(unittest.TestCase):
args = Namespace(paths=[])
cue.building_base = True
if ci_os == 'windows':
choco_installs = ['make']
if ci_service != 'appveyor':
@@ -707,6 +711,7 @@ class TestSetupForBuild(unittest.TestCase):
sp.check_call(['choco', 'install', '-ry'] + choco_installs)
def setUp(self):
cue.building_base = True
if ci_service == 'appveyor':
os.environ['CONFIGURATION'] = 'default'
cue.detect_context()
@@ -881,6 +886,77 @@ LINE2=NO''')
cue.extract_archive(hook, cwd=self.location)
self.assertTrue(os.path.exists(self.new_file), "archive extract didn't add new file")
@unittest.skipIf(ci_os != 'linux', 'CrossCompatibilityHandling tests only apply to linux')
class TestCrossCompatibilityHandling(unittest.TestCase):
args = Namespace(paths=[])
def setUp(self):
cue.clear_lists()
os.environ.pop('CI_CROSS_TARGETS', None)
os.environ.pop('RTEMS_TARGET', None)
os.environ.pop('RTEMS', None)
os.environ.pop('WINE', None)
os.environ['MODULES'] = ''
cue.detect_context()
# Make cue.prepare() reconfigure base
for root, dirs, files in os.walk(cue.ci['cachedir']):
if 'checked_out' in files:
if fnmatch.fnmatch(root, '*/base-*'):
os.remove(os.path.join(root, 'checked_out'))
def runtest_rtems(self, arch, ver):
cue.prepare(self.args)
self.assertTrue('CI_CROSS_TARGETS' in os.environ, "CI_CROSS_TARGETS has not been set")
self.assertTrue(os.environ['CI_CROSS_TARGETS'].startswith(':' + arch),
"CI_CROSS_TARGETS is {0} (expected: :{1}...)"
.format(os.environ['CI_CROSS_TARGETS'], arch))
self.assertTrue(os.environ['CI_CROSS_TARGETS'].endswith('@' + ver),
"CI_CROSS_TARGETS is {0} (expected: ...@{1})"
.format(os.environ['CI_CROSS_TARGETS'], ver))
def test_RTEMS49_no_target(self):
os.environ['RTEMS'] = '4.9'
self.runtest_rtems('RTEMS-pc386', '4.9')
def test_RTEMS49_with_target(self):
os.environ['RTEMS'] = '4.9'
os.environ['RTEMS_TARGET'] = 'RTEMS-pc386'
self.runtest_rtems('RTEMS-pc386', '4.9')
def test_RTEMS410_no_target(self):
os.environ['RTEMS'] = '4.10'
self.runtest_rtems('RTEMS-pc386', '4.10')
def test_RTEMS410_with_target(self):
os.environ['RTEMS'] = '4.10'
os.environ['RTEMS_TARGET'] = 'RTEMS-pc386'
self.runtest_rtems('RTEMS-pc386', '4.10')
def test_RTEMS5_no_target(self):
os.environ['RTEMS'] = '5'
self.runtest_rtems('RTEMS-pc686', '5')
def test_RTEMS5_with_target(self):
os.environ['RTEMS'] = '5'
os.environ['RTEMS_TARGET'] = 'RTEMS-pc686'
self.runtest_rtems('RTEMS-pc686', '5')
def test_WINE32(self):
os.environ['WINE'] = '32'
cue.prepare(self.args)
self.assertTrue('CI_CROSS_TARGETS' in os.environ, "CI_CROSS_TARGETS has not been set")
self.assertEqual(os.environ['CI_CROSS_TARGETS'], ':win32-x86-mingw',
"CI_CROSS_TARGETS is {0} (expected: :win32-x86-mingw)"
.format(os.environ['CI_CROSS_TARGETS']))
def test_WINE64(self):
os.environ['WINE'] = '64'
cue.prepare(self.args)
self.assertTrue('CI_CROSS_TARGETS' in os.environ, "CI_CROSS_TARGETS has not been set")
self.assertEqual(os.environ['CI_CROSS_TARGETS'], ':windows-x64-mingw',
"CI_CROSS_TARGETS is {0} (expected: :windows-x64-mingw)"
.format(os.environ['CI_CROSS_TARGETS']))
if __name__ == "__main__":
if 'VV' in os.environ and os.environ['VV'] == '1':

368
cue.py
View File

@@ -1,5 +1,5 @@
#!/usr/bin/env python
"""CI build script for Linux/MacOS/Windows on Travis/AppVeyor/GitHub-Actions
"""EPICS CI build script for Linux/MacOS/Windows on Travis/GitLab/AppVeyor/GitHub-Actions
"""
from __future__ import print_function
@@ -163,17 +163,20 @@ modules_to_compile = []
setup = {}
places = {}
extra_makeargs = []
make_timeout = 0.
is_base314 = False
is_make3 = False
has_test_results = False
silent_dep_builds = True
skip_dep_builds = False
do_recompile = False
installed_7z = False
def clear_lists():
global is_base314, has_test_results, silent_dep_builds, is_make3
global _modified_files, do_recompile, building_base
del seen_setups[:]
del modules_to_compile[:]
del extra_makeargs[:]
@@ -184,6 +187,8 @@ def clear_lists():
has_test_results = False
silent_dep_builds = True
do_recompile = False
building_base = False
_modified_files = set()
ci['service'] = '<none>'
ci['os'] = '<unknown>'
ci['platform'] = '<unknown>'
@@ -203,9 +208,8 @@ clear_lists()
if 'BASE' in os.environ and os.environ['BASE'] == 'SELF':
building_base = True
skip_dep_builds = True
places['EPICS_BASE'] = curdir
else:
building_base = False
# Setup ANSI Colors
ANSI_RED = "\033[31;1m"
@@ -266,6 +270,8 @@ toolsdir = os.path.join(homedir, '.tools')
vcvars_table = {
# https://en.wikipedia.org/wiki/Microsoft_Visual_Studio#History
'vs2022': [r'C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat',
r'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat'],
'vs2019': [r'C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat',
r'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat'],
'vs2017': [r'C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat',
@@ -605,15 +611,21 @@ def add_dependency(dep):
if dep + '_HOOK' in setup:
hook = setup[dep + '_HOOK']
hook_file = os.path.join(curdir, hook)
hook_ext = os.path.splitext(hook_file)[1]
if os.path.exists(hook_file):
if re.match(r'.+\.patch$', hook):
if hook_ext == '.patch':
apply_patch(hook_file, cwd=place)
elif re.match(r'.+\.(zip|7z)$', hook):
elif hook_ext in ('.zip', '.7z'):
extract_archive(hook_file, cwd=place)
elif hook_ext == '.py':
print('Running py hook {0} in {1}'.format(hook, place))
sp.check_call([sys.executable, hook_file], cwd=place)
else:
print('Running hook {0} in {1}'.format(hook, place))
sys.stdout.flush()
sp.check_call(hook_file, shell=True, cwd=place)
else:
print('Skipping invalid hook {0} in {1}'.format(hook, place))
# write checked out commit hash to marker file
head = get_git_hash(place)
@@ -784,6 +796,266 @@ def fix_etc_hosts():
logger.debug('EXEC DONE')
def edit_make_file(mode, path, values):
"""Edit an EPICS Make file.
mode should be either "a" or "w", as for the open function.
path should be a list, e.g. ["configure", "CONFIG_SITE"]
values should be a dictionary of values to edit. If the value starts with
a "+" the value will be appended.
Example usage:
edit_make_file("a", ["configure", "CONFIG_SITE"], {
"VARIABLE": "value",
"APPENDED_VARIABLE": "+value",
})
"""
with open(os.path.join(places["EPICS_BASE"], *path), mode) as f:
for variable, value in values.items():
if value.startswith("+"):
op = "+="
value = value[1:]
else:
op = "="
f.write(variable + op + value + "\n")
def handle_old_cross_variables():
if "CI_CROSS_TARGETS" not in os.environ:
os.environ["CI_CROSS_TARGETS"] = ""
if "RTEMS" in os.environ:
if 'RTEMS_TARGET' in os.environ:
rtems_target = os.environ['RTEMS_TARGET']
else:
if os.environ['RTEMS'] == '5':
rtems_target = 'RTEMS-pc686-qemu'
else:
rtems_target = 'RTEMS-pc386'
if os.path.exists(os.path.join(places['EPICS_BASE'], 'configure', 'os',
'CONFIG.Common.RTEMS-pc386-qemu')):
# Base 3.15 doesn't have -qemu target architecture
rtems_target = 'RTEMS-pc386-qemu'
new_cross_target = ":" + rtems_target + "@" + os.environ["RTEMS"]
os.environ["CI_CROSS_TARGETS"] += new_cross_target
print(
"{0}WARNING: deprecated RTEMS environment variable was specified." \
" Please add '{1}' to CI_CROSS_TARGETS instead.{2}".format(
ANSI_RED, new_cross_target, ANSI_RESET
)
)
logger.debug('Replaced deprecated RTEMS target with new entry in CI_CROSS_TARGETS: %s', new_cross_target)
if "WINE" in os.environ:
if os.environ['WINE'] == '32':
new_cross_target = ":win32-x86-mingw"
else:
new_cross_target = ":windows-x64-mingw"
os.environ["CI_CROSS_TARGETS"] += new_cross_target
print(
"{0}WARNING: deprecated WINE environment variable was specified." \
" Please add '{1}' to CI_CROSS_TARGETS instead.{2}".format(
ANSI_RED, new_cross_target, ANSI_RESET
)
)
logger.debug('Replaced deprecated WINE target with new entry in CI_CROSS_TARGETS: %s', new_cross_target)
def prepare_cross_compilation(cross_target_info):
"""Prepare the configuration for a single value of the CI_CROSS_TARGETS
variable.
See the README.md file for more information on this variable."""
cross_target_info = cross_target_info.split("@")
if len(cross_target_info) == 2:
target_param = cross_target_info[1]
else:
target_param = None
target = cross_target_info[0]
if target.startswith("RTEMS-"):
prepare_rtems_cross(target, target_param)
elif target.endswith("-mingw"):
prepare_wine_cross(target)
elif target.startswith("linux-"):
prepare_linux_cross(target, target_param)
else:
raise ValueError(
"Unknown CI_CROSS_TARGETS {0}. "
"Please see the ci-scripts README for available values.".format(target)
)
def prepare_rtems_cross(epics_arch, version):
"""Prepare the configuration for RTEMS cross-compilation for the given
RTEMS version.
If version is None, it defaults to version 5 for RTEMS-pc686-*, 4.10
otherwise."""
if version is None:
if epics_arch.startswith("RTEMS-pc686"):
version = "5"
else:
version = "4.10"
# eg. "RTEMS-pc386" or "RTEMS-pc386-qemu" -> "pc386"
rtems_bsp = re.match("^RTEMS-([^-]*)(?:-qemu)?$", epics_arch).group(1)
print("Cross compiler RTEMS{0} @ {1}".format(version, epics_arch))
if ci["os"] == "linux":
download_rtems(version, rtems_bsp)
edit_make_file(
"a",
["configure", "os", "CONFIG_SITE.Common.RTEMS"],
{
"RTEMS_VERSION": version,
"RTEMS_BASE": "/opt/rtems/" + version,
},
)
edit_make_file(
"a",
["configure", "CONFIG_SITE"],
{"CROSS_COMPILER_TARGET_ARCHS": epics_arch},
)
ci["apt"].extend(
["re2c", "g++-mingw-w64-i686", "g++-mingw-w64-x86-64", "qemu-system-x86"]
)
def download_rtems(version, rtems_bsp):
rsb_release = os.environ.get("RSB_BUILD", "20210306")
tar_name = "{0}-rtems{1}.tar.xz".format(rtems_bsp, version)
print("Downloading RTEMS {0} cross compiler: {1}".format(version, tar_name))
sys.stdout.flush()
sp.check_call(
[
"curl",
"-fsSL",
"--retry",
"3",
"-o",
tar_name,
"https://github.com/mdavidsaver/rsb/releases/download/{0}%2F{1}/{2}".format(
version, rsb_release, tar_name
),
],
cwd=toolsdir,
)
sudo_prefix = []
if ci["service"] == "github-actions":
sudo_prefix = ["sudo"]
sp.check_call(
sudo_prefix + ["tar", "-C", "/", "-xmJ", "-f", os.path.join(toolsdir, tar_name)]
)
os.remove(os.path.join(toolsdir, tar_name))
for rtems_cc in glob("/opt/rtems/*/bin/*-gcc"):
print("{0}{1} --version{2}".format(ANSI_CYAN, rtems_cc, ANSI_RESET))
sys.stdout.flush()
sp.check_call([rtems_cc, "--version"])
def prepare_wine_cross(epics_arch):
"""Prepare the configuration for Wine cross-compilation for the given mingw
architecture."""
if epics_arch == "win32-x86-mingw":
gnu_arch = "i686-w64-mingw32"
deb_arch = "mingw-w64-i686"
bits = "32"
elif epics_arch == "windows-x64-mingw":
gnu_arch = "x86_64-w64-mingw32"
deb_arch = "mingw-w64-x86-64"
bits = "64"
else:
raise ValueError(
"Unknown architecture '{0}' for WINE target. "
"Please see the ci-scripts README for available values.".format(epics_arch)
)
print("Cross compiler mingw{} / Wine".format(bits))
edit_make_file(
"a",
["configure", "os", "CONFIG.linux-x86." + epics_arch],
{"CMPLR_PREFIX": gnu_arch + "-"},
)
edit_make_file(
"a",
["configure", "CONFIG_SITE"],
{"CROSS_COMPILER_TARGET_ARCHS": "+" + epics_arch},
)
ci['apt'].extend(["re2c", "g++-" + deb_arch])
def prepare_linux_cross(epics_arch, gnu_arch):
"""Prepare the configuration for Linux cross-compilation for the given
architecture.
If gnu_arch is None, this function will try to guess it using the
epics_arch value.
linux-arm architecture defaults to arm-linux-gnueabi (soft floats)."""
# This list is kind of an intersection between the set of cross-compilers
# provided by Ubuntu[1] and the list of architectures found in
# `epics-base/configure/os`
#
# [1]: https://packages.ubuntu.com/source/focal/gcc-10-cross
if gnu_arch is None:
if epics_arch == "linux-x86":
gnu_arch = "i686-linux-gnu"
elif epics_arch == "linux-arm":
gnu_arch = "arm-linux-gnueabi"
elif epics_arch == "linux-aarch64":
gnu_arch = "aarch64-linux-gnu"
elif epics_arch == "linux-ppc":
gnu_arch = "powerpc-linux-gnu"
elif epics_arch == "linux-ppc64":
gnu_arch = "powerpc64le-linux-gnu"
else:
raise ValueError(
"Could not guess the GNU architecture for EPICS arch: {}. "
"Please use the '@' syntax of the 'CI_CROSS_TARGETS' variable".format(
epics_arch
)
)
print(
"Setting up Linux cross-compiling arch {0} with GNU arch {1}".format(
epics_arch, gnu_arch
)
)
edit_make_file(
"w",
["configure", "os", "CONFIG_SITE.linux-x86_64." + epics_arch],
{
"GNU_TARGET": gnu_arch,
"COMMANDLINE_LIBRARY": "EPICS",
},
)
edit_make_file(
"a",
["configure", "CONFIG_SITE"],
{"CROSS_COMPILER_TARGET_ARCHS": "+" + epics_arch},
)
ci["apt"].extend(["re2c", "g++-" + gnu_arch])
def prepare(args):
host_info()
@@ -829,20 +1101,8 @@ def prepare(args):
elif ci['compiler'].startswith('gcc'):
cxx = re.sub(r'gcc', r'g++', ci['compiler'])
# Cross compilation on Linux to RTEMS (set RTEMS to version "4.9", "4.10")
# requires qemu, bison, flex, texinfo, install-info
# rtems_bsp is needed also if Base is from cache
if 'RTEMS' in os.environ:
if 'RTEMS_TARGET' in os.environ:
rtems_target = os.environ['RTEMS_TARGET']
elif os.path.exists(os.path.join(places['EPICS_BASE'], 'configure', 'os',
'CONFIG.Common.RTEMS-pc386-qemu')):
# Base 3.15 doesn't have -qemu target architecture
rtems_target = 'RTEMS-pc386-qemu'
else:
rtems_target = 'RTEMS-pc386'
# eg. "RTEMS-pc386" or "RTEMS-pc386-qemu" -> "pc386"
rtems_bsp = re.match('^RTEMS-([^-]*)(?:-qemu)?$', rtems_target).group(1)
if not os.path.isdir(toolsdir):
os.makedirs(toolsdir)
if 'BASE' in modules_to_compile or building_base:
fold_start('set.up.epics_build', 'Configuring EPICS build system')
@@ -893,44 +1153,12 @@ endif''')
# Cross-compilations from Linux platform
if ci['os'] == 'linux':
handle_old_cross_variables()
# Cross compilation to Windows/Wine (set WINE to architecture "32", "64")
# requires wine and g++-mingw-w64-i686 / g++-mingw-w64-x86-64
if 'WINE' in os.environ:
if os.environ['WINE'] == '32':
print('Cross compiler mingw32 / Wine')
with open(os.path.join(places['EPICS_BASE'], 'configure', 'os',
'CONFIG.linux-x86.win32-x86-mingw'), 'a') as f:
f.write('''
CMPLR_PREFIX=i686-w64-mingw32-''')
with open(os.path.join(places['EPICS_BASE'], 'configure', 'CONFIG_SITE'), 'a') as f:
f.write('''
CROSS_COMPILER_TARGET_ARCHS+=win32-x86-mingw''')
if os.environ['WINE'] == '64':
print('Cross compiler mingw64 / Wine')
with open(os.path.join(places['EPICS_BASE'], 'configure', 'os',
'CONFIG.linux-x86.windows-x64-mingw'), 'a') as f:
f.write('''
CMPLR_PREFIX=x86_64-w64-mingw32-''')
with open(os.path.join(places['EPICS_BASE'], 'configure', 'CONFIG_SITE'), 'a') as f:
f.write('''
CROSS_COMPILER_TARGET_ARCHS += windows-x64-mingw''')
# Cross compilation on Linux to RTEMS (set RTEMS to version "4.9", "4.10")
# requires qemu, bison, flex, texinfo, install-info
if 'RTEMS' in os.environ:
print('Cross compiler RTEMS{0} @ {1}'.format(os.environ['RTEMS'], rtems_target))
with open(os.path.join(places['EPICS_BASE'], 'configure', 'os',
'CONFIG_SITE.Common.RTEMS'), 'a') as f:
f.write('''
RTEMS_VERSION={0}
RTEMS_BASE=/opt/rtems/{0}'''.format(os.environ['RTEMS']))
with open(os.path.join(places['EPICS_BASE'], 'configure', 'CONFIG_SITE'), 'a') as f:
f.write('''
CROSS_COMPILER_TARGET_ARCHS += {0}
'''.format(rtems_target))
for cross_target_info in os.environ.get("CI_CROSS_TARGETS", "").split(":"):
if cross_target_info == "":
continue
prepare_cross_compilation(cross_target_info)
print('Host compiler', ci['compiler'])
@@ -982,9 +1210,6 @@ PERL = C:/Strawberry/perl/bin/perl -CSD'''
fold_end('set.up.epics_build', 'Configuring EPICS build system')
if not os.path.isdir(toolsdir):
os.makedirs(toolsdir)
if ci['os'] == 'windows' and ci['choco']:
fold_start('install.choco', 'Installing CHOCO packages')
sp.check_call(['choco', 'install'] + ci['choco'] + ['-y', '--limitoutput', '--no-progress'])
@@ -1001,26 +1226,6 @@ PERL = C:/Strawberry/perl/bin/perl -CSD'''
sp.check_call(['brew', 'install'] + ci['homebrew'])
fold_end('install.homebrew', 'Installing Homebrew packages')
if ci['os'] == 'linux' and 'RTEMS' in os.environ:
rsb_release = os.environ.get('RSB_BUILD', '20210306')
tar_name = '{0}-rtems{1}.tar.xz'.format(rtems_bsp, os.environ['RTEMS'])
print('Downloading RTEMS {0} cross compiler: {1}'
.format(os.environ['RTEMS'], tar_name))
sys.stdout.flush()
sp.check_call(['curl', '-fsSL', '--retry', '3', '-o', tar_name,
'https://github.com/mdavidsaver/rsb/releases/download/{0}%2F{1}/{2}'
.format(os.environ['RTEMS'], rsb_release, tar_name)],
cwd=toolsdir)
sudo_prefix = []
if ci['service'] == 'github-actions':
sudo_prefix = ['sudo']
sp.check_call(sudo_prefix + ['tar', '-C', '/', '-xmJ', '-f', os.path.join(toolsdir, tar_name)])
os.remove(os.path.join(toolsdir, tar_name))
for rtems_cc in glob('/opt/rtems/*/bin/*-gcc'):
print('{0}{1} --version{2}'.format(ANSI_CYAN, rtems_cc, ANSI_RESET))
sys.stdout.flush()
sp.check_call([rtems_cc, '--version'])
setup_for_build(args)
print('{0}EPICS_HOST_ARCH = {1}{2}'.format(ANSI_CYAN, os.environ['EPICS_HOST_ARCH'], ANSI_RESET))
@@ -1048,7 +1253,7 @@ PERL = C:/Strawberry/perl/bin/perl -CSD'''
if logging.getLogger().isEnabledFor(logging.DEBUG):
log_modified()
if not building_base:
if not skip_dep_builds:
fold_start('build.dependencies', 'Build missing/outdated dependencies')
for mod in modules_to_compile:
place = places[setup[mod + "_VARNAME"]]
@@ -1114,6 +1319,7 @@ def doExec(args):
'exec user command with vcvars'
setup_for_build(args)
os.environ['MAKE'] = 'make'
os.environ['EPICS_BASE'] = places['EPICS_BASE']
fold_start('exec.command', 'Execute command {}'.format(args.cmd))
sp.check_call(' '.join(args.cmd), shell=True)
fold_end('exec.command', 'Execute command {}'.format(args.cmd))
@@ -1216,6 +1422,8 @@ def main(raw):
if 'VV' in os.environ and os.environ['VV'] == '1':
logging.basicConfig(level=logging.DEBUG)
silent_dep_builds = False
else:
logging.basicConfig(level=logging.CRITICAL)
make_timeout = args.timeout
if make_timeout:

View File

@@ -3,10 +3,10 @@
## Features
- 20 parallel runners on Linux/Windows (5 runners on MacOS)
- Ubuntu 16/18/20, MacOS 10.15, Windows Server 2016/2019
- Ubuntu 18/20/22, MacOS 11/12, Windows Server 2019/2022
- Compile natively on Linux (gcc, clang)
- Compile natively on MacOS (clang)
- Compile natively on Windows (gcc/MinGW, Visual Studio 2017 & 2019)
- Compile natively on Windows (gcc/MinGW, Visual Studio 2019/2022)
- Cross-compile for Windows 32bit and 64bit using MinGW and WINE
- Cross-compile for RTEMS 4.9 and 4.10 (pc386, Base >= 3.15)
- Cross-compile for RTEMS 5 (10 BSPs, Base >= 7.0.5.1)

View File

@@ -59,10 +59,10 @@ jobs:
extra: "CMD_CXXFLAGS=-std=c++11"
name: "Ub-20 gcc-9 C++11, static"
- os: ubuntu-16.04
- os: ubuntu-18.04
cmp: clang
configuration: default
name: "Ub-16 clang-9"
name: "Ub-18 clang-9"
- os: ubuntu-20.04
cmp: clang
@@ -97,18 +97,6 @@ jobs:
test: NO
name: "Ub-20 gcc-9 + RT-5.1 beatnik"
- os: ubuntu-16.04
cmp: gcc-4.8
utoolchain: true
configuration: default
name: "Ub-16 gcc-4.8"
- os: ubuntu-16.04
cmp: gcc-4.9
utoolchain: true
configuration: default
name: "Ub-16 gcc-4.9"
- os: ubuntu-18.04
cmp: gcc
configuration: default
@@ -131,20 +119,15 @@ jobs:
configuration: default
name: "Ub-20 clang-10"
- os: macos-latest
- os: macos-11
cmp: clang
configuration: default
name: "MacOS clang-12"
name: "MacOS clang-13"
- os: windows-2016
cmp: vs2017
- os: macos-12
cmp: clang
configuration: default
name: "Win2016 MSC-17"
- os: windows-2016
cmp: vs2017
configuration: static
name: "Win2016 MSC-17, static"
name: "MacOS clang-13"
- os: windows-2019
cmp: gcc
@@ -166,6 +149,16 @@ jobs:
configuration: static
name: "Win2019 MSC-19, static"
- os: windows-2022
cmp: vs2022
configuration: default
name: "Win2022 MSC-22"
- os: windows-2022
cmp: vs2022
configuration: static
name: "Win2022 MSC-22, static"
steps:
- uses: actions/checkout@v2
with:
@@ -189,7 +182,7 @@ jobs:
- name: Build main module
run: python .ci/cue.py build
- name: Run main module tests
run: python .ci/cue.py test
run: python .ci/cue.py -T 15M test
- name: Upload tapfiles Artifact
uses: actions/upload-artifact@v2
with:
@@ -197,3 +190,38 @@ jobs:
path: '**/O.*/*.tap'
- name: Collect and show test results
run: python .ci/cue.py test-results
build-cross:
name: cross ${{ matrix.cross }} / ${{ matrix.cmp }} / ${{ matrix.configuration }}
runs-on: ubuntu-20.04
env:
CMP: gcc
BCFG: default
CI_CROSS_TARGETS: ${{ matrix.cross }}
APT: re2c
strategy:
fail-fast: false
matrix:
# configuration: [default, static, debug, static-debug]
configuration: [default]
cross:
- linux-aarch64
- linux-arm@arm-linux-gnueabi
- linux-arm@arm-linux-gnueabihf
- linux-ppc
- linux-ppc64
- win32-x86-mingw
- windows-x64-mingw
- RTEMS-pc386-qemu@4.9
- RTEMS-pc386-qemu@4.10
- RTEMS-pc686-qemu@5
steps:
- uses: actions/checkout@v2
- name: Prepare and compile dependencies
run: python cue.py prepare
- name: Build main module
run: python cue.py build
- name: Run main module tests
run: python cue.py -T 15M test
- name: Collect and show test results
run: python cue.py test-results

View File

@@ -1,4 +1,4 @@
MODULES="sncseq"
BASE=7.0
SNCSEQ=R2-2-8
SNCSEQ=R2-2-9