62 Commits

Author SHA1 Message Date
Ralph Lange
8a2666a9de Update GHA images: remove Ub-16, add Ub-22, macos-12, macos-11
Some checks failed
ci-scripts build/test / Unit tests on macos-10.15 (push) Has been cancelled
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-2016 (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-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 / clang / debug / macos-10.15 (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-10.15 (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-2016 (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-2016 (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-2016 (push) Has been cancelled
ci-scripts build/test / gcc / static / windows-2019 (push) Has been cancelled
ci-scripts build/test / gcc / static-debug / windows-2022 (push) Has been cancelled
ci-scripts build/test / vs2017 / debug / windows-2016 (push) Has been cancelled
ci-scripts build/test / vs2017 / default / windows-2016 (push) Has been cancelled
ci-scripts build/test / vs2017 / static / windows-2016 (push) Has been cancelled
ci-scripts build/test / vs2017 / static-debug / windows-2016 (push) Has been cancelled
ci-scripts build/test / clang / static-debug / ubuntu-18.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 / gcc / static / windows-2022 (push) Has been cancelled
ci-scripts build/test / gcc / static-debug / windows-2016 (push) Has been cancelled
ci-scripts build/test / gcc / static-debug / windows-2019 (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 / RTEMS4.10 / RTEMS-pc386-qemu (push) Has been cancelled
ci-scripts build/test / RTEMS4.9 / RTEMS-pc386-qemu (push) Has been cancelled
ci-scripts build/test / RTEMS5 / RTEMS-pc686-qemu (push) Has been cancelled
ci-scripts build/test / WINE32 / debug / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / WINE64 / debug / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / WINE32 / default / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / WINE64 / default / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / WINE32 / static / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / WINE64 / static / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / WINE32 / static-debug / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / WINE64 / static-debug / ubuntu-18.04 (push) Has been cancelled
2022-07-04 14:14:19 +02:00
Ralph Lange
89a16e4499 Merge pull request #63 from mdavidsaver/vs2022
Add vs2022
2022-07-04 12:22:21 +02: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
Ralph Lange
5764601630 Update README
Some checks failed
ci-scripts build/test / Unit tests on macos-10.15 (push) Has been cancelled
ci-scripts build/test / Unit tests on ubuntu-16.04 (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 windows-2016 (push) Has been cancelled
ci-scripts build/test / Unit tests on windows-2019 (push) Has been cancelled
ci-scripts build/test / clang / debug / ubuntu-16.04 (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 / default / ubuntu-16.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 / static / ubuntu-16.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-debug / ubuntu-16.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 / gcc / debug / ubuntu-16.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 / default / ubuntu-16.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 / static / ubuntu-16.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-debug / ubuntu-16.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-4.8 / default / ubuntu-16.04 (push) Has been cancelled
ci-scripts build/test / gcc-4.8 / static / ubuntu-16.04 (push) Has been cancelled
ci-scripts build/test / gcc-4.9 / default / ubuntu-16.04 (push) Has been cancelled
ci-scripts build/test / gcc-4.9 / static / ubuntu-16.04 (push) Has been cancelled
ci-scripts build/test / clang / debug / macos-10.15 (push) Has been cancelled
ci-scripts build/test / gcc / debug / windows-2016 (push) Has been cancelled
ci-scripts build/test / vs2019 / default / windows-2019 (push) Has been cancelled
ci-scripts build/test / vs2019 / static-debug / windows-2019 (push) Has been cancelled
ci-scripts build/test / RTEMS4.10 / debug / ubuntu-20.04 (push) Has been cancelled
ci-scripts build/test / RTEMS4.9 / debug / ubuntu-20.04 (push) Has been cancelled
ci-scripts build/test / RTEMS5 / debug / ubuntu-20.04 (push) Has been cancelled
ci-scripts build/test / RTEMS4.10 / default / ubuntu-20.04 (push) Has been cancelled
ci-scripts build/test / RTEMS4.9 / default / ubuntu-20.04 (push) Has been cancelled
ci-scripts build/test / RTEMS5 / default / ubuntu-20.04 (push) Has been cancelled
ci-scripts build/test / WINE32 / debug / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / WINE64 / debug / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / WINE32 / default / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / WINE64 / default / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / WINE32 / static / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / WINE64 / static / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / WINE32 / static-debug / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / WINE64 / static-debug / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / clang / default / macos-10.15 (push) Has been cancelled
ci-scripts build/test / gcc / debug / windows-2019 (push) Has been cancelled
ci-scripts build/test / gcc / default / windows-2016 (push) Has been cancelled
ci-scripts build/test / gcc / default / windows-2019 (push) Has been cancelled
ci-scripts build/test / gcc / static / windows-2016 (push) Has been cancelled
ci-scripts build/test / gcc / static / windows-2019 (push) Has been cancelled
ci-scripts build/test / gcc / static-debug / windows-2016 (push) Has been cancelled
ci-scripts build/test / gcc / static-debug / windows-2019 (push) Has been cancelled
ci-scripts build/test / vs2017 / debug / windows-2016 (push) Has been cancelled
ci-scripts build/test / vs2017 / default / windows-2016 (push) Has been cancelled
ci-scripts build/test / vs2017 / static / windows-2016 (push) Has been cancelled
ci-scripts build/test / vs2017 / static-debug / windows-2016 (push) Has been cancelled
ci-scripts build/test / vs2019 / debug / windows-2019 (push) Has been cancelled
ci-scripts build/test / vs2019 / static / windows-2019 (push) Has been cancelled
2021-04-09 18:44:42 +02:00
Ralph Lange
0c2f903516 gitlab: set DEBIAN_FRONTEND="noninteractive"
- fixes hanging apt install tzdata
2021-04-09 18:44:42 +02:00
Ralph Lange
822293de04 Add RTEMS 5 (pc686-qemu) jobs 2021-04-09 18:44:42 +02:00
Ralph Lange
6702a8a19c travis: osx default to 10.14 / xcode 11.3
(also no brew update to speed up builds)
2021-04-09 18:39:44 +02:00
Ralph Lange
7c29683ad5 travis: update README for service changes 2021-04-09 18:39:44 +02:00
Ralph Lange
2bcd84a01c travis: default to bionic, test on focal and trusty 2021-04-09 18:39:44 +02:00
Ralph Lange
c6df7df2bd Install usrmerge on ubuntu (needed for RTEMS builds)
- travis: only do that for RTEMS
  (as precise & trusty don't have usrmerge)
- gitlab: use focal instead
  (apt install usrmerge doesn't work in Docker)
2021-04-09 18:39:44 +02:00
Ralph Lange
8bf77eba0c Update README for RTEMS builds 2021-04-09 18:39:44 +02:00
Ralph Lange
5b123f4e88 Merge pull request #56 from mdavidsaver/rtems5 2021-04-07 16:53:29 +02:00
Ralph Lange
349eb9434d cue: set rtems_target and rtems_bsp if base is not rebuilt
(rtems_bsp is needed when cached Base is used)
2021-04-07 16:47:03 +02:00
Ralph Lange
2464284271 Merge pull request #61 from FreddieAkeroyd/mingw_vs_2019
Use MSYS2 for gcc builds on AppVeyor.
2021-03-22 18:53:03 +01:00
Ralph Lange
13b7f097c1 Merge pull request #60 from mdavidsaver/master
Add timeout for make (intended to catch hanging tests). Default: no timeout.
2021-03-22 09:50:56 +01:00
Freddie Akeroyd
2464f82ce6 Use MSYS2 for gcc builds 2021-03-20 22:02:30 +00:00
Michael Davidsaver
9a94f4712b add timeout for make 2021-03-18 12:22:22 -07:00
Michael Davidsaver
028b752cb2 update RTEMS toolchains
Allow selection of RTEMS target and toolchain build.
Default build requires ubuntu-20.04 (aka. focal).
2021-03-06 13:51:03 -08:00
Ralph Lange
3db08b5977 cue: make cxx work when base is cached 2021-02-15 19:28:49 +01:00
Ralph Lange
99057a5ff6 Merge pull request #59 from mdavidsaver/master
Really Fix qualified GCC version builds
2021-02-15 18:24:03 +01:00
Michael Davidsaver
c734d558c2 print c++ compiler version
also ensures that the separate g++... binary is present.
2021-02-10 09:51:02 -08:00
Michael Davidsaver
b047a6c641 Revert "Add compiler-class and compiler-suffix as config"
This reverts commit 2016cb2ae7.
2021-02-10 09:51:02 -08:00
Michael Davidsaver
9183238f9d Revert "test: fix test_HostArchConfiguration on Windows"
This reverts commit e7b1214d09.
2021-02-10 09:51:02 -08:00
Michael Davidsaver
3ff483a1bb install old g++ 2021-02-10 09:51:02 -08:00
Ralph Lange
495f8622cd Readme: move version badge to shields.io 2021-02-08 18:47:08 +01:00
Ralph Lange
e7b1214d09 test: fix test_HostArchConfiguration on Windows 2021-02-08 18:10:37 +01:00
Ralph Lange
2016cb2ae7 Add compiler-class and compiler-suffix as config 2021-02-08 14:11:52 +01:00
Michael Davidsaver
cef930dd06 test gcc 4.8/4.9 2021-02-07 12:28:34 -08:00
Michael Davidsaver
fa2a1e1d39 log modified config files 2021-02-07 11:35:41 -08:00
Michael Davidsaver
aa25701c58 fix qualified compiler name selection 2021-02-07 11:00:07 -08:00
Michael Davidsaver
5d7e82256c PARALLEL_MAKE is numeric 2020-12-31 20:55:59 -08:00
Ralph Lange
ad8dd4a136 Merge pull request #57 from mdavidsaver/clearenv
Clear empty environment variables
2020-11-16 09:56:52 +01:00
Michael Davidsaver
fe8a9f5953 clear empty environment variables 2020-11-08 09:37:48 -08:00
Michael Davidsaver
7d9d426629 avoid empty EXTRA*
Helpful when the value of EXTRA can be conditionally
computed, but unset is not an easy option.
eg. with github actions
2020-11-07 08:13:47 -08:00
Ralph Lange
2929ee2a03 Readme: add GitLab badge 2020-10-19 09:34:19 +02:00
Ralph Lange
1a227516c5 Update README
Some checks failed
ci-scripts build/test / Unit tests on macos-10.15 (push) Has been cancelled
ci-scripts build/test / Unit tests on ubuntu-16.04 (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 windows-2016 (push) Has been cancelled
ci-scripts build/test / Unit tests on windows-2019 (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-16.04 (push) Has been cancelled
ci-scripts build/test / clang / default / ubuntu-16.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 / static / ubuntu-16.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-debug / ubuntu-16.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 / gcc / debug / ubuntu-16.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 / default / ubuntu-16.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 / static / ubuntu-16.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-debug / ubuntu-16.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 / clang / debug / macos-10.15 (push) Has been cancelled
ci-scripts build/test / clang / default / macos-10.15 (push) Has been cancelled
ci-scripts build/test / gcc / debug / windows-2016 (push) Has been cancelled
ci-scripts build/test / gcc / debug / windows-2019 (push) Has been cancelled
ci-scripts build/test / gcc / default / windows-2016 (push) Has been cancelled
ci-scripts build/test / gcc / default / windows-2019 (push) Has been cancelled
ci-scripts build/test / gcc / static / windows-2016 (push) Has been cancelled
ci-scripts build/test / gcc / static / windows-2019 (push) Has been cancelled
ci-scripts build/test / gcc / static-debug / windows-2016 (push) Has been cancelled
ci-scripts build/test / gcc / static-debug / windows-2019 (push) Has been cancelled
ci-scripts build/test / vs2017 / debug / windows-2016 (push) Has been cancelled
ci-scripts build/test / vs2017 / default / windows-2016 (push) Has been cancelled
ci-scripts build/test / vs2017 / static / windows-2016 (push) Has been cancelled
ci-scripts build/test / vs2017 / static-debug / windows-2016 (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 / RTEMS4.10 / debug / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / RTEMS4.9 / debug / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / RTEMS4.10 / default / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / RTEMS4.9 / default / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / WINE32 / debug / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / WINE64 / debug / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / WINE32 / default / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / WINE64 / default / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / WINE32 / static / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / WINE64 / static / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / WINE32 / static-debug / ubuntu-18.04 (push) Has been cancelled
ci-scripts build/test / WINE64 / static-debug / ubuntu-18.04 (push) Has been cancelled
2020-10-19 08:51:16 +02:00
Michael Davidsaver
bfb9f77db8 fix help formatting 2020-10-17 11:32:00 -07:00
Ralph Lange
12a0656fd2 Merge pull request #55 from ralphlange/devel/gitlab
Support for GitLab CI/CD
(closes #51)
2020-09-14 10:32:40 +02:00
Ralph Lange
984fa5e355 Examples: improve job names in example-mini 2020-09-14 09:36:37 +02:00
Ralph Lange
43e52b5f6f Readme: add remark on CI service free tier vs. "Enterprise" installation 2020-09-14 09:30:32 +02:00
Ralph Lange
3c1cf15dac Readme: add remarks on CI services free tier vs. "Enterprise" installation 2020-09-14 09:29:02 +02:00
Ralph Lange
506af3932d gitlab: add examples and README 2020-09-07 14:55:10 +02:00
Ralph Lange
85a34ceefb gitlab: add p7zip-full to pre-installed packages 2020-09-07 13:44:19 +02:00
Ralph Lange
705f50449e cue: cachedir -> ci[]; move cache inside project on GitLab 2020-09-07 13:44:19 +02:00
Ralph Lange
d6136de065 gitlab: add jobs for WINE32/64 and RTEMS4.9/4.10 2020-09-07 13:42:57 +02:00
Ralph Lange
33cac7c965 cue: make 'sudo' use for apt-get configurable 2020-09-07 13:42:57 +02:00
Ralph Lange
1c748ae291 gitlab: install python and essential packages before calling cue.py 2020-09-07 13:40:12 +02:00
Ralph Lange
7744772be6 gitlab: add .gitlab-ci.yml to run gcc & clang jobs on GitLab-CI 2020-09-07 13:40:12 +02:00
Ralph Lange
682f92941d cue: add GitLab to service detection 2020-09-07 13:40:12 +02:00
Ralph Lange
032ef83502 cue: run apt-get 'update' before 'install' 2020-09-07 11:45:30 +02:00
Ralph Lange
cfd8a88488 cue-test: don't install Strawberry Perl on AppVeyor
(on AppVeyor / VS2019, Strawberry is installed)
2020-09-07 11:11:47 +02:00
Ralph Lange
54a104e0a6 Remove explicitly 'static' builds for RTEMS
(as all RTEMS builds are static by definition)
2020-09-06 19:14:26 +02:00
Ralph Lange
884d017650 cue: fix warning (default argument mutable) 2020-09-06 19:08:34 +02:00
Ralph Lange
fd71e94dd4 Revert "Use patch to add RTEMS-pc386-qemu target to older base"
Patching is not flexible enough
to cover the full range of Base 3.15 source versions.

(This reverts commit 59304f83.)
2020-09-06 16:12:49 +02:00
Ralph Lange
eb5edd3055 cue: fix regex matching for patch and archive HOOKs 2020-07-30 14:14:20 +02:00
21 changed files with 1032 additions and 281 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:
@@ -148,7 +147,7 @@ build_script:
- cmd: python cue.py build
test_script:
- cmd: python cue.py test
- cmd: python cue.py -T 15M test
- cmd: python cue.py test-results
#---------------------------------#

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, windows-2016, macos-12, macos-11, macos-10.15]
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:
@@ -46,7 +46,7 @@ jobs:
- name: Build main module (example app)
run: python cue.py build
- name: Run main module tests
run: python cue.py test
run: python cue.py -T 15M test
- name: Collect and show test results
run: python cue.py test-results
@@ -59,7 +59,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [macos-10.15]
os: [macos-12, macos-11, macos-10.15]
cmp: [clang]
configuration: [default, debug]
steps:
@@ -69,7 +69,7 @@ jobs:
- name: Build main module (example app)
run: python cue.py build
- name: Run main module tests
run: python cue.py test
run: python cue.py -T 15M test
- name: Collect and show test results
run: python cue.py test-results
@@ -82,12 +82,22 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [windows-2019, windows-2016]
cmp: [gcc, vs2019, vs2017]
os: [windows-2022, windows-2019, windows-2016]
cmp: [gcc, vs2022, vs2019, vs2017]
configuration: [default, static, debug, static-debug]
exclude:
- os: windows-2022
cmp: vs2019
- os: windows-2022
cmp: vs2017
- os: windows-2019
cmp: vs2022
- os: windows-2019
cmp: vs2017
- os: windows-2016
cmp: vs2022
- os: windows-2016
cmp: vs2019
steps:
@@ -97,25 +107,31 @@ jobs:
- name: Build main module (example app)
run: python cue.py build
- name: Run main module tests
run: python cue.py test
run: python cue.py -T 15M test
- 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 }}
name: RTEMS${{ matrix.rtems }} / ${{ matrix.rtems_target }}
runs-on: ubuntu-20.04
env:
CMP: ${{ matrix.cmp }}
BCFG: ${{ matrix.configuration }}
CMP: gcc
BCFG: default
RTEMS: ${{ matrix.rtems }}
RTEMS_TARGET: ${{ matrix.rtems_target }}
APT: re2c g++-mingw-w64-i686 g++-mingw-w64-x86-64 qemu-system-x86
strategy:
fail-fast: false
matrix:
os: [ubuntu-18.04]
cmp: [gcc]
configuration: [default, static, debug, static-debug]
rtems: ["4.9", "4.10"]
include:
- rtems: "4.9"
rtems_target: RTEMS-pc386-qemu
- rtems: "4.10"
rtems_target: RTEMS-pc386-qemu
- rtems: "5"
rtems_target: RTEMS-pc686-qemu
steps:
- uses: actions/checkout@v2
- name: Prepare and compile dependencies
@@ -123,7 +139,7 @@ jobs:
- name: Build main module (example app)
run: python cue.py build
- name: Run main module tests
run: python cue.py test
run: python cue.py -T 15M test
- name: Collect and show test results
run: python cue.py test-results
@@ -149,6 +165,6 @@ jobs:
- name: Build main module (example app)
run: python cue.py build
- name: Run main module tests
run: python cue.py test
run: python cue.py -T 15M test
- name: Collect and show test results
run: python cue.py test-results

180
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,180 @@
# .gitlab-ci.yml for testing EPICS Base ci-scripts
# (see: https://github.com/epics-base/ci-scripts)
# Note:
# Paths to scripts are different in this test configuration
# (your module has one more directory level: .ci)
image: ubuntu:bionic
cache:
key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
paths:
- .cache/
variables:
GIT_SUBMODULE_STRATEGY: "recursive"
SETUP_PATH: ".:.ci"
BASE_RECURSIVE: "NO"
APT: "libreadline6-dev libncurses5-dev perl clang g++-mingw-w64-i686 g++-mingw-w64-x86-64 qemu-system-x86 re2c"
DEBIAN_FRONTEND: "noninteractive"
CMP: "gcc"
BGFC: "default"
VV: "1"
SET: test01
# Unit tests
unit_test:
stage: build
variables:
SET: test00
before_script:
- apt-get update -qq && apt-get install -y -qq make git python curl p7zip-full
- python cue-test.py env
script:
- python cue-test.py
# Template job for test builds (hidden)
.build:
stage: build
before_script:
- apt-get update -qq && apt-get install -y -qq build-essential git python curl p7zip-full
- python cue.py prepare
script:
- python cue.py build
- python cue.py test
- python cue.py test-results
# gcc builds using four configurations (shared/static, optimized/debug)
gcc_default:
extends: .build
gcc_static:
extends: .build
variables:
BCFG: "static"
gcc_debug:
extends: .build
variables:
BCFG: "debug"
gcc_static_debug:
extends: .build
variables:
BCFG: "static-debug"
# clang builds using four configurations (shared/static, optimized/debug)
clang_default:
extends: .build
variables:
CMP: "clang"
clang_static:
extends: .build
variables:
CMP: "clang"
BCFG: "static"
clang_debug:
extends: .build
variables:
CMP: "clang"
BCFG: "debug"
clang_static_debug:
extends: .build
variables:
CMP: "clang"
BCFG: "static-debug"
# WINE based cross-builds to Windows 32bit and 64bit
wine32_default:
extends: .build
variables:
WINE: "32"
wine32_static:
extends: .build
variables:
WINE: "32"
BCFG: "static"
wine32_debug:
extends: .build
variables:
WINE: "32"
BCFG: "debug"
wine32_static_debug:
extends: .build
variables:
WINE: "32"
BCFG: "static-debug"
wine64_default:
extends: .build
variables:
WINE: "64"
wine64_static:
extends: .build
variables:
WINE: "64"
BCFG: "static"
wine64_debug:
extends: .build
variables:
WINE: "64"
BCFG: "debug"
wine64_static_debug:
extends: .build
variables:
WINE: "64"
BCFG: "static-debug"
# Cross-builds to RTEMS 4.9 and 4.10
rtems4.9_default:
extends: .build
image: ubuntu:focal
variables:
RTEMS: "4.9"
BASE: "3.15"
rtems4.9_debug:
extends: .build
image: ubuntu:focal
variables:
RTEMS: "4.9"
BASE: "3.15"
BCFG: "debug"
rtems4.10_default:
extends: .build
image: ubuntu:focal
variables:
RTEMS: "4.10"
rtems4.10_debug:
extends: .build
image: ubuntu:focal
variables:
RTEMS: "4.10"
BCFG: "debug"
rtems5_default:
extends: .build
image: ubuntu:focal
variables:
RTEMS: "5"
RTEMS_TARGET: "RTEMS-pc686-qemu"
rtems5_debug:
extends: .build
image: ubuntu:focal
variables:
RTEMS: "5"
RTEMS_TARGET: "RTEMS-pc686-qemu"
BCFG: "debug"

View File

@@ -7,7 +7,7 @@
language: cpp
compiler: gcc
dist: xenial
dist: bionic
cache:
directories:
@@ -35,7 +35,6 @@ addons:
packages:
- re2c
- p7zip
update: true
install:
- python cue.py prepare
@@ -84,6 +83,7 @@ jobs:
- env: SET=test00
os: osx
osx_image: xcode11.3
install: python cue-test.py env
script: python cue-test.py
@@ -95,10 +95,10 @@ jobs:
# Compile example
- env: SET=test01
dist: bionic
dist: focal
- env: SET=test01 BCFG=static-debug
dist: bionic
dist: focal
- env: SET=test01 CLEAN_DEPS=NO
dist: trusty
@@ -122,6 +122,7 @@ jobs:
compiler: clang
- os: osx
osx_image: xcode11.3
env:
- SET=test01
- EXTRA=CMD_CFLAGS="-mmacosx-version-min=10.7"
@@ -131,6 +132,7 @@ jobs:
- env: SET=test01 BCFG=debug
os: osx
osx_image: xcode11.3
compiler: clang
- env: SET=test01 WINE=32 TEST=NO
@@ -143,15 +145,16 @@ jobs:
- env: SET=test01 WINE=64 TEST=NO BCFG=debug
- env: SET=test01 WINE=64 TEST=NO BCFG=static-debug
- env: SET=test01 RTEMS=4.9 BASE=3.15 TEST=NO
- env: SET=test01 RTEMS=4.9 BASE=3.15 TEST=NO BCFG=static
- env: SET=test01 RTEMS=4.9 BASE=3.15 TEST=NO BCFG=debug
- env: SET=test01 RTEMS=4.9 BASE=3.15 TEST=NO BCFG=static-debug
- env: SET=test01 RTEMS=4.9 BASE=3.15 TEST=NO APT=usrmerge
- env: SET=test01 RTEMS=4.9 BASE=3.15 TEST=NO BCFG=debug APT=usrmerge
- env: SET=test01 RTEMS=4.10
- env: SET=test01 RTEMS=4.10 BCFG=static
- env: SET=test01 RTEMS=4.10 BCFG=debug
- env: SET=test01 RTEMS=4.10 BCFG=static-debug
- env: SET=test01 RTEMS=4.10 APT=usrmerge
- env: SET=test01 RTEMS=4.10 BCFG=debug APT=usrmerge
- env: SET=test01 RTEMS=5 RTEMS_TARGET=RTEMS-pc686-qemu
dist: focal
- env: SET=test01 RTEMS=5 RTEMS_TARGET=RTEMS-pc686-qemu BCFG=debug
dist: focal
- env: SET=test01
os: windows

View File

@@ -2,6 +2,7 @@
<a target="_blank" href="https://travis-ci.org/epics-base/ci-scripts">![Travis status][badge.travis]</a>
<a target="_blank" href="https://ci.appveyor.com/project/epics-base/ci-scripts">![AppVeyor status][badge.appveyor]</a>
<a target="_blank" href="https://github.com/epics-base/ci-scripts/actions">![GitHub Actions status][badge.gh-actions]</a>
<a target="_blank" href="https://gitlab.com/epics-base/ci-scripts/-/pipelines">![GitLab CI/CD status][badge.gitlab]</a>
# Continuous Integration for EPICS Modules
@@ -49,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`
@@ -57,16 +58,25 @@ levels as the example files.
## Supported CI Services
The listed properties and instructions for the CI services apply to
their free tiers for open source projects, hosted in the cloud on
their infrastructure.
The companies behind these services also offer "enterprise" installations
on customer infrastructure, which will have different performance
and limitations.
### [Travis-CI](https://travis-ci.org/)
- Five parallel runners on Linux/Windows (one runner on MacOS)
- Ubuntu 12/14/16/18, MacOS 10.13, Windows Server v1809
- Two parallel runners on Linux/Windows (two runners on MacOS)
- Ubuntu 14/16/18/20, MacOS 10.13/14/15, Windows Server v1809
- Compile natively on Linux (different versions of gcc, clang)
- Compile natively on MacOS (clang)
- Compile natively on Windows (gcc/MinGW, Visual Studio 2017)
- Cross-compile for Windows 32bit and 64bit using MinGW and WINE
- Cross-compile for RTEMS 4.9 and 4.10 (Base >= 3.15)
- 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.
@@ -75,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.
@@ -85,18 +95,34 @@ 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 16/18/20, MacOS 10.15, Windows Server 2016/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 2017/2019/2022)
- Cross-compile for Windows 32bit and 64bit using MinGW and WINE
- Cross-compile for RTEMS 4.9 and 4.10 (Base >= 3.15)
- 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)
- Caching not supported by ci-scripts yet.
See specific
**[ci-scripts on GitHub Actions README](github-actions/README.md)**
for more details.
### [GitLab CI/CD](https://gitlab.com/)
- Docker-based runners on Linux (one VM instance per job)
- Can use any Docker image from Dockerhub (the examples use
`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)
- Cross-compile for RTEMS 5 (10 BSPs, Base >= 7.0.5.1)
- Built dependencies are cached (for faster builds).
See specific
**[ci-scripts on GitLab CI/CD README](gitlab/README.md)**
for more details.
## How to Use the CI-Scripts
1. Get an account on a supported CI service provider platform
@@ -255,6 +281,35 @@ that usually it is sufficient to set `FOO=<version>`.
You can find the list of supported (and tested) modules in `defaults.set`.
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.
Tests can also be run cross-platform, using `qemu`.
The RTEMS 5 builds now include most of the BSPs with configuration in Base:
- beatnik
- gen68360
- mcp750
- mvme167
- mvme2100
- mvme3100
- pc686 w/ libbsd
- qoriq_e500 w/ libbsd
- uC5282
- 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
https://github.com/mdavidsaver/rsb/releases.
RTEMS 5 builds need to be switched to a newer ubuntu version
(aka. **os: ubuntu-20.04** with GitHub Actions,
**dist: focal** with Travis-CI or
**image: ubuntu:focal** with GitLab CI/CD).
## Debugging
Setting `VV=1` in your service configuration (e.g., `.travis.yml`) for a
@@ -277,6 +332,8 @@ in the service specific subdirectories:
- [Travis-CI README](travis/README.md)
- [AppVeyor README](appveyor/README.md)
- [GitHub Actions README](github-actions/README.md)
- [GitLab README](gitlab/README.md)
## References: EPICS Modules Using ci-scripts
@@ -365,16 +422,16 @@ This will make all builds (not just for your module) verbose.
Update the submodule in `.ci` first, then change your CI configuration
(if needed) and commit both to your module. E.g., to update your Travis
setup to release 3.1.1 of ci-scripts:
setup to release 3.3.0 of ci-scripts:
```bash
cd .ci
git pull origin v3.1.1
git pull origin v3.3.0
cd -
git add .ci
# if needed:
edit .travis.yml # and/or AppVeyor/GitHub Actions configuration
edit .travis.yml # and/or other CI service configurations
git add .travis.yml
git commit -m "Update ci-scripts submodule to v3.1.1"
git commit -m "Update ci-scripts submodule to v3.3.0"
```
Check the example configuration files inside ci-scripts (and their
@@ -425,11 +482,13 @@ This module is distributed subject to a Software License Agreement found
in file LICENSE that is included with this distribution.
<!-- Links -->
[badge.version]: https://badge.fury.io/gh/epics-base%2Fci-scripts.svg
[badge.version]: https://img.shields.io/github/v/release/epics-base/ci-scripts?sort=semver
[badge.travis]: https://travis-ci.org/epics-base/ci-scripts.svg?branch=master
[badge.appveyor]: https://ci.appveyor.com/api/projects/status/8b578alg974axvux?svg=true
[badge.gh-actions]: https://github.com/epics-base/ci-scripts/workflows/ci-scripts%20build/test/badge.svg
[badge.gitlab]: https://gitlab.com/epics-base/ci-scripts/badges/master/pipeline.svg
[reddit.bash]: https://www.reddit.com/r/bash/comments/393oqv/why_is_the_version_of_bash_included_in_os_x_so_old/
[ref.ethercatmc]: https://github.com/EuropeanSpallationSource/m-epics-ethercatmc
[ref.rtems5build]: https://github.com/mdavidsaver/rsb/blob/3911854462e74838e3e5f33a9e8f936fd0f1d95d/.github/workflows/build-5.yml#L98-L137

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.
@@ -15,6 +15,10 @@
it to your GitHub account and activate your support module's
repository. For more details, please see below and refer to the
[AppVeyor documentation](https://www.appveyor.com/docs/).
(This applies when using the free tier offered to open source
projects. Things will be different using an "Enterprise"
installation on customer hardware.)
2. Add the ci-scripts respository as a Git Submodule
(see [README](../README.md) one level above).
@@ -42,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

@@ -22,6 +22,10 @@ if 'TRAVIS' in os.environ:
ci_service = 'travis'
ci_os = os.environ['TRAVIS_OS_NAME']
if 'GITLAB_CI' in os.environ:
ci_service = 'gitlab'
ci_os = 'linux'
if 'APPVEYOR' in os.environ:
ci_service = 'appveyor'
if re.match(r'^Visual', os.environ['APPVEYOR_BUILD_WORKER_IMAGE']):
@@ -107,7 +111,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()
@@ -118,7 +122,7 @@ class TestSourceSet(unittest.TestCase):
class TestUpdateReleaseLocal(unittest.TestCase):
release_local = os.path.join(cue.cachedir, 'RELEASE.local')
release_local = os.path.join(cue.ci['cachedir'], 'RELEASE.local')
def setUp(self):
if os.path.exists(self.release_local):
@@ -186,16 +190,21 @@ class TestUpdateReleaseLocal(unittest.TestCase):
class TestAddDependencyUpToDateCheck(unittest.TestCase):
hash_3_15_6 = "ce7943fb44beb22b453ddcc0bda5398fadf72096"
location = os.path.join(cue.cachedir, 'base-R3.15.6')
licensefile = os.path.join(location, 'LICENSE')
checked_file = os.path.join(location, 'checked_out')
release_file = os.path.join(location, 'configure', 'RELEASE')
location = ''
licensefile = ''
checked_file = ''
release_file = ''
def setUp(self):
os.environ['SETUP_PATH'] = '.:appveyor'
cue.clear_lists()
cue.detect_context()
self.location = os.path.join(cue.ci['cachedir'], 'base-R3.15.6')
self.licensefile = os.path.join(self.location, 'LICENSE')
self.checked_file = os.path.join(self.location, 'checked_out')
self.release_file = os.path.join(self.location, 'configure', 'RELEASE')
if os.path.exists(self.location):
shutil.rmtree(self.location, onerror=cue.remove_readonly)
cue.clear_lists()
os.chdir(builddir)
cue.source_set('defaults')
cue.complete_setup('BASE')
@@ -249,15 +258,18 @@ def is_shallow_repo(place):
class TestAddDependencyOptions(unittest.TestCase):
location = os.path.join(cue.cachedir, 'mcoreutils-master')
testfile = os.path.join(location, '.ci', 'LICENSE')
location = ''
testfile = ''
def setUp(self):
os.environ['SETUP_PATH'] = '.'
if os.path.exists(cue.cachedir):
shutil.rmtree(cue.cachedir, onerror=cue.remove_readonly)
cue.clear_lists()
cue.detect_context()
if os.path.exists(cue.ci['cachedir']):
shutil.rmtree(cue.ci['cachedir'], onerror=cue.remove_readonly)
self.location = os.path.join(cue.ci['cachedir'], 'mcoreutils-master')
self.testfile = os.path.join(self.location, '.ci', 'LICENSE')
os.path.join(cue.ci['cachedir'], 'mcoreutils-master')
cue.source_set('defaults')
cue.complete_setup('MCoreUtils')
cue.setup['MCoreUtils'] = 'master'
@@ -288,7 +300,7 @@ class TestAddDependencyOptions(unittest.TestCase):
def test_AddMsiTo314(self):
cue.complete_setup('BASE')
cue.setup['BASE'] = 'R3.14.12.1'
msifile = os.path.join(cue.cachedir, 'base-R3.14.12.1', 'src', 'dbtools', 'msi.c')
msifile = os.path.join(cue.ci['cachedir'], 'base-R3.14.12.1', 'src', 'dbtools', 'msi.c')
cue.add_dependency('BASE')
self.assertTrue(os.path.exists(msifile), 'MSI was not added to Base 3.14')
@@ -337,8 +349,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')
@@ -689,7 +703,10 @@ class TestSetupForBuild(unittest.TestCase):
args = Namespace(paths=[])
cue.building_base = True
if ci_os == 'windows':
sp.check_call(['choco', 'install', 'make', 'strawberryperl', '-ry'])
choco_installs = ['make']
if ci_service != 'appveyor':
choco_installs.append('strawberryperl')
sp.check_call(['choco', 'install', '-ry'] + choco_installs)
def setUp(self):
if ci_service == 'appveyor':
@@ -831,7 +848,7 @@ class TestSetupForBuild(unittest.TestCase):
class TestHooks(unittest.TestCase):
location = os.path.join(cue.cachedir, 'hook_test')
location = os.path.join(cue.ci['cachedir'], 'hook_test')
bla_file = os.path.join(location, 'bla.txt')
new_file = os.path.join(location, 'dd', 'new.txt')

239
cue.py
View File

@@ -8,15 +8,49 @@ import sys, os, stat, shutil
import fileinput
import logging
import re
import threading
from glob import glob
import subprocess as sp
import distutils.util
logger = logging.getLogger(__name__)
# Keep track of all files we write/append for later logging
_realopen = open
_modified_files = set()
def open(fname, mode='r'):
F = _realopen(fname, mode)
if 'w' in mode or 'a' in mode:
_modified_files.add(os.path.normpath(os.path.abspath(fname)))
return F
def log_modified():
for fname in _modified_files:
with Folded(os.path.basename(fname), 'Contents of '+fname):
with open(fname, 'r') as F:
sys.stdout.write(F.read())
sys.stdout.write(os.linesep)
def prepare_env():
'''HACK
github actions yaml configuration doesn't allow
conditional (un)setting of environments, only values.
Currently this script treats unset and empty environment
variables differently.
While this is the case, we unset any empty environment variables.
'''
toclear = tuple(k for k,v in os.environ.items() if len(v.strip())==0)
for var in toclear:
print('{0}Clearing empty environment variable {1}{2}'.format(ANSI_CYAN, var, ANSI_RESET))
del os.environ[var]
# Detect the service and set up context hash accordingly
def detect_context():
global homedir
buildconfig = 'default'
ci['cachedir'] = os.path.join(homedir, '.cache')
if 'TRAVIS' in os.environ:
ci['service'] = 'travis'
ci['os'] = os.environ['TRAVIS_OS_NAME']
@@ -29,6 +63,17 @@ def detect_context():
if 'BCFG' in os.environ:
buildconfig = os.environ['BCFG'].lower()
if 'GITLAB_CI' in os.environ:
ci['service'] = 'gitlab'
ci['os'] = 'linux'
ci['platform'] = 'x64'
ci['sudo'] = [] # No sudo in GitLab Docker containers
ci['cachedir'] = os.path.join(curdir, '.cache') # No caches outside project directory
if 'CMP' in os.environ:
ci['compiler'] = os.environ['CMP']
if 'BCFG' in os.environ:
buildconfig = os.environ['BCFG'].lower()
if 'APPVEYOR' in os.environ:
ci['service'] = 'appveyor'
if re.match(r'^Visual', os.environ['APPVEYOR_BUILD_WORKER_IMAGE']):
@@ -80,6 +125,9 @@ def detect_context():
ci['scriptsdir'] = os.path.abspath(os.path.dirname(sys.argv[0]))
if 'CACHEDIR' in os.environ:
ci['cachedir'] = os.environ['CACHEDIR']
if 'CHOCO' in os.environ:
ci['choco'].extend(os.environ['CHOCO'].split())
@@ -95,7 +143,7 @@ def detect_context():
ci['parallel_make'] = 2
if 'PARALLEL_MAKE' in os.environ:
ci['parallel_make'] = os.environ['PARALLEL_MAKE']
ci['parallel_make'] = int(os.environ['PARALLEL_MAKE'])
ci['clean_deps'] = True
if 'CLEAN_DEPS' in os.environ and os.environ['CLEAN_DEPS'].lower() == 'no':
@@ -144,9 +192,11 @@ def clear_lists():
ci['debug'] = False
ci['configuration'] = '<unknown>'
ci['scriptsdir'] = ''
ci['cachedir'] = ''
ci['choco'] = ['make']
ci['apt'] = []
ci['homebrew'] = []
ci['sudo'] = ['sudo']
clear_lists()
@@ -198,22 +248,26 @@ def fold_end(tag, title):
.format(ANSI_YELLOW, title, ANSI_RESET))
sys.stdout.flush()
class Folded(object):
def __init__(self, tag, title):
self.tag, self.title = tag, title
def __enter__(self):
fold_start(self.tag, self.title)
def __exit__(self,A,B,C):
fold_end(self.tag, self.title)
homedir = curdir
if 'HomeDrive' in os.environ:
homedir = os.path.join(os.getenv('HomeDrive'), os.getenv('HomePath'))
elif 'HOME' in os.environ:
homedir = os.getenv('HOME')
cachedir = os.path.join(homedir, '.cache')
toolsdir = os.path.join(homedir, '.tools')
rtemsdir = r'/home/travis/.rtems' # Preliminary, until the next generation of toolchain
if 'CACHEDIR' in os.environ:
cachedir = os.environ['CACHEDIR']
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',
@@ -322,14 +376,14 @@ def source_set(name):
# - otherwise add "$var=$location" line and possibly move EPICS_BASE=... line to the end
# Set places[var] = location
def update_release_local(var, location):
release_local = os.path.join(cachedir, 'RELEASE.local')
release_local = os.path.join(ci['cachedir'], 'RELEASE.local')
updated_line = '{0}={1}'.format(var, location.replace('\\', '/'))
places[var] = location
if not os.path.exists(release_local):
logger.debug('RELEASE.local does not exist, creating it')
try:
os.makedirs(cachedir)
os.makedirs(ci['cachedir'])
except:
pass
touch = open(release_local, 'w')
@@ -380,7 +434,10 @@ def call_git(args, **kws):
return exitcode
def call_make(args=[], **kws):
def call_make(args=None, **kws):
global make_timeout
if args is None:
args = []
place = kws.get('cwd', os.getcwd())
parallel = kws.pop('parallel', ci['parallel_make'])
silent = kws.pop('silent', False)
@@ -398,7 +455,19 @@ def call_make(args=[], **kws):
makeargs += extra_makeargs
logger.debug("EXEC '%s' in %s", ' '.join(['make'] + makeargs + args), place)
sys.stdout.flush()
exitcode = sp.call(['make'] + makeargs + args, **kws)
sys.stderr.flush()
child = sp.Popen(['make'] + makeargs + args, **kws)
if make_timeout:
def expire(child):
logger.error('Timeout')
child.terminate()
timer = threading.Timer(make_timeout, expire, args=(child,))
timer.start()
exitcode = child.wait()
if make_timeout:
timer.cancel()
logger.debug('EXEC DONE')
if exitcode != 0:
sys.exit(exitcode)
@@ -482,7 +551,7 @@ def add_dependency(dep):
.format(ANSI_RED, tag, dep, setup[dep + '_REPOURL'], ANSI_RESET))
dirname = setup[dep + '_DIRNAME'] + '-{0}'.format(tag)
place = os.path.join(cachedir, dirname)
place = os.path.join(ci['cachedir'], dirname)
checked_file = os.path.join(place, "checked_out")
if os.path.isdir(place):
@@ -504,14 +573,14 @@ def add_dependency(dep):
sys.stdout.flush()
if not os.path.isdir(place):
if not os.path.isdir(cachedir):
os.makedirs(cachedir)
if not os.path.isdir(ci['cachedir']):
os.makedirs(ci['cachedir'])
# clone dependency
print('Cloning {0} of dependency {1} into {2}'
.format(tag, dep, place))
sys.stdout.flush()
call_git(['clone', '--quiet'] + deptharg + recursearg + ['--branch', tag, setup[dep + '_REPOURL'], dirname],
cwd=cachedir)
cwd=ci['cachedir'])
sp.check_call(['git', 'log', '-n1'], cwd=place)
logger.debug('Setting do_recompile = True (all following modules will be recompiled')
@@ -539,9 +608,9 @@ def add_dependency(dep):
hook = setup[dep + '_HOOK']
hook_file = os.path.join(curdir, hook)
if os.path.exists(hook_file):
if re.match(r'.+\\.patch$', hook):
if re.match(r'.+\.patch$', hook):
apply_patch(hook_file, cwd=place)
elif re.match(r'.+\\.(zip|7z)$', hook):
elif re.match(r'.+\.(zip|7z)$', hook):
extract_archive(hook_file, cwd=place)
else:
print('Running hook {0} in {1}'.format(hook, place))
@@ -619,20 +688,20 @@ def setup_for_build(args):
os.environ['INCLUDE'] = ''
if ci['platform'] == 'x86':
os.environ['INCLUDE'] = os.pathsep.join(
[r'C:\mingw-w64\i686-6.3.0-posix-dwarf-rt_v5-rev1\mingw32\include',
[r'C:\msys64\mingw32\include',
os.environ['INCLUDE']])
os.environ['PATH'] = os.pathsep.join([r'C:\mingw-w64\i686-6.3.0-posix-dwarf-rt_v5-rev1\mingw32\bin',
os.environ['PATH'] = os.pathsep.join([r'C:\msys64\mingw32\bin',
os.environ['PATH']])
elif ci['platform'] == 'x64':
os.environ['INCLUDE'] = os.pathsep.join(
[r'C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\include',
[r'C:\msys64\mingw64\include',
os.environ['INCLUDE']])
os.environ['PATH'] = os.pathsep.join([r'C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin',
os.environ['PATH'] = os.pathsep.join([r'C:\msys64\mingw64\bin',
os.environ['PATH']])
# Find BASE location
if not building_base:
with open(os.path.join(cachedir, 'RELEASE.local'), 'r') as f:
with open(os.path.join(ci['cachedir'], 'RELEASE.local'), 'r') as f:
lines = f.readlines()
for line in lines:
(mod, place) = line.strip().split('=')
@@ -647,7 +716,7 @@ def setup_for_build(args):
if ci['os'] == 'windows':
if not building_base:
with open(os.path.join(cachedir, 'RELEASE.local'), 'r') as f:
with open(os.path.join(ci['cachedir'], 'RELEASE.local'), 'r') as f:
lines = f.readlines()
for line in lines:
(mod, place) = line.strip().split('=')
@@ -697,8 +766,9 @@ def setup_for_build(args):
# Add EXTRA make arguments
for tag in ['EXTRA', 'EXTRA1', 'EXTRA2', 'EXTRA3', 'EXTRA4', 'EXTRA5']:
if tag in os.environ:
extra_makeargs.append(os.environ[tag])
val = os.environ.get(tag, "")
if len(val)>0:
extra_makeargs.append(val)
def fix_etc_hosts():
@@ -751,10 +821,31 @@ def prepare(args):
targetdir = 'configure'
else:
targetdir = '.'
shutil.copy(os.path.join(cachedir, 'RELEASE.local'), targetdir)
shutil.copy(os.path.join(ci['cachedir'], 'RELEASE.local'), targetdir)
fold_end('check.out.dependencies', 'Checking/cloning dependencies')
cxx = None
if ci['compiler'].startswith('clang'):
cxx = re.sub(r'clang', r'clang++', ci['compiler'])
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 'BASE' in modules_to_compile or building_base:
fold_start('set.up.epics_build', 'Configuring EPICS build system')
@@ -831,53 +922,46 @@ 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} @ pc386',format(os.environ['RTEMS']))
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={1}'''.format(os.environ['RTEMS'], rtemsdir))
RTEMS_BASE=/opt/rtems/{0}'''.format(os.environ['RTEMS']))
# Patch Base 3.15 that doesn't have -qemu target architecture
if not os.path.exists(os.path.join(places['EPICS_BASE'], 'configure', 'os',
'CONFIG.Common.RTEMS-pc386-qemu')):
print('Adding RTEMS-pc386-qemu target to Base in {0}'.format(places['EPICS_BASE']))
sys.stdout.flush()
sp.check_call(['patch', '-p1', '-i',
os.path.join(ci['scriptsdir'], 'add-RTEMS-pc368-qemu-target.patch')],
cwd=places['EPICS_BASE'])
with open(os.path.join(places['EPICS_BASE'], 'configure', 'CONFIG_SITE'), 'a') as f:
f.write('''
CROSS_COMPILER_TARGET_ARCHS += RTEMS-pc386-qemu''')
CROSS_COMPILER_TARGET_ARCHS += {0}
'''.format(rtems_target))
host_ccmplr_name = re.sub(r'^([a-zA-Z][^-]*(-[a-zA-Z][^-]*)*)+(-[0-9.]|)$', r'\1', ci['compiler'])
host_cmplr_ver_suffix = re.sub(r'^([a-zA-Z][^-]*(-[a-zA-Z][^-]*)*)+(-[0-9.]|)$', r'\3', ci['compiler'])
host_cmpl_ver = host_cmplr_ver_suffix[1:]
print('Host compiler', ci['compiler'])
if host_ccmplr_name == 'clang':
print('Host compiler clang')
host_cppcmplr_name = re.sub(r'clang', r'clang++', host_ccmplr_name)
if ci['compiler'].startswith('clang'):
with open(os.path.join(places['EPICS_BASE'], 'configure', 'os',
'CONFIG_SITE.Common.'+os.environ['EPICS_HOST_ARCH']), 'a') as f:
f.write('''
GNU = NO
CMPLR_CLASS = clang
CC = {0}{2}
CCC = {1}{2}'''.format(host_ccmplr_name, host_cppcmplr_name, host_cmplr_ver_suffix))
CC = {0}
CCC = {1}'''.format(ci['compiler'], cxx))
# hack
with open(os.path.join(places['EPICS_BASE'], 'configure', 'CONFIG.gnuCommon'), 'a') as f:
f.write('''
CMPLR_CLASS = clang''')
if host_ccmplr_name == 'gcc':
print('Host compiler gcc')
host_cppcmplr_name = re.sub(r'gcc', r'g++', host_ccmplr_name)
elif ci['compiler'].startswith('gcc'):
with open(os.path.join(places['EPICS_BASE'], 'configure', 'os',
'CONFIG_SITE.Common.' + os.environ['EPICS_HOST_ARCH']), 'a') as f:
f.write('''
CC = {0}{2}
CCC = {1}{2}'''.format(host_ccmplr_name, host_cppcmplr_name, host_cmplr_ver_suffix))
CC = {0}
CCC = {1}'''.format(ci['compiler'], cxx))
elif ci['compiler'].startswith('vs'):
pass # nothing special
else:
raise ValueError('Unknown compiler name {0}. valid forms include: gcc, gcc-4.8, clang, vs2019'.format(ci['compiler']))
# Add additional settings to CONFIG_SITE
extra_config = ''
@@ -910,7 +994,8 @@ PERL = C:/Strawberry/perl/bin/perl -CSD'''
if ci['os'] == 'linux' and ci['apt']:
fold_start('install.apt', 'Installing APT packages')
sp.check_call(['sudo', 'apt-get', '-y', 'install'] + ci['apt'])
sp.check_call(ci['sudo'] + ['apt-get', '-y', 'update'])
sp.check_call(ci['sudo'] + ['apt-get', 'install', '-y', '-qq'] + ci['apt'])
fold_end('install.apt', 'Installing APT packages')
if ci['os'] == 'osx' and ci['homebrew']:
@@ -919,19 +1004,24 @@ PERL = C:/Strawberry/perl/bin/perl -CSD'''
fold_end('install.homebrew', 'Installing Homebrew packages')
if ci['os'] == 'linux' and 'RTEMS' in os.environ:
tar_name = 'i386-rtems{0}-trusty-20171203-{0}.tar.bz2'.format(os.environ['RTEMS'])
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/20171203-{0}/{1}'
.format(os.environ['RTEMS'], 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)])
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)
@@ -952,6 +1042,13 @@ PERL = C:/Strawberry/perl/bin/perl -CSD'''
print('{0}$ {1} --version{2}'.format(ANSI_CYAN, cc, ANSI_RESET))
sys.stdout.flush()
sp.check_call([cc, '--version'])
if cxx:
print('{0}$ {1} --version{2}'.format(ANSI_CYAN, cxx, ANSI_RESET))
sys.stdout.flush()
sp.check_call([cxx, '--version'])
if logging.getLogger().isEnabledFor(logging.DEBUG):
log_modified()
if not building_base:
fold_start('build.dependencies', 'Build missing/outdated dependencies')
@@ -976,10 +1073,9 @@ PERL = C:/Strawberry/perl/bin/perl -CSD'''
print("%-10s %-12s %-11s %s" % (mod, setup[mod], stat, commit))
print('{0}Contents of RELEASE.local{1}'.format(ANSI_CYAN, ANSI_RESET))
with open(os.path.join(cachedir, 'RELEASE.local'), 'r') as f:
with open(os.path.join(ci['cachedir'], 'RELEASE.local'), 'r') as f:
print(f.read().strip())
def build(args):
setup_for_build(args)
fold_start('build.module', 'Build the main module')
@@ -1020,6 +1116,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))
@@ -1069,12 +1166,30 @@ call "{vcvars}" {arch}
def getargs():
from argparse import ArgumentParser, REMAINDER
from argparse import ArgumentParser, ArgumentError, REMAINDER
def timespec(s):
M = re.match(r'^\s*(\d+)\s*([A-Za-z]*)', s)
if not M:
raise ArgumentError('Expected timespec not {!r}'.format(s))
val = float(M.group(1))
try:
mult = {
'':1.0,
'S':1.0,
'M':60.0,
'H':60.0*60.0,
}[M.group(2).upper()]
except KeyError:
raise ArgumentError('Expect suffix S, M, or H. not {!r}'.format(s))
return val*mult
p = ArgumentParser()
p.add_argument('--no-vcvars', dest='vcvars', default=True, action='store_false',
help='Assume vcvarsall.bat has already been run')
p.add_argument('--add-path', dest='paths', default=[], action='append',
help='Append directory to %PATH%. Expands {ENVVAR}')
help='Append directory to $PATH or %%PATH%%. Expands {ENVVAR}')
p.add_argument('-T', '--timeout', type=timespec, metavar='DLY',
help='Terminate make after delay. DLY interpreted as second, or may be qualified with "S", "M", or "H". (default no timeout)')
subp = p.add_subparsers()
cmd = subp.add_parser('prepare')
@@ -1099,11 +1214,19 @@ def getargs():
def main(raw):
global silent_dep_builds
global make_timeout
args = getargs().parse_args(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:
logger.info('Will timeout after %.1f seconds', make_timeout)
prepare_env()
detect_context()
if args.vcvars and ci['compiler'].startswith('vs'):

View File

@@ -6,9 +6,10 @@
- Ubuntu 16/18/20, MacOS 10.15, Windows Server 2016/2019
- 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 2017/2019/2022)
- Cross-compile for Windows 32bit and 64bit using MinGW and WINE
- Cross-compile for RTEMS 4.9 and 4.10 (Base >= 3.15)
- 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)
- Caching not supported yet.
## How to Use these Scripts

View File

@@ -5,158 +5,193 @@
# Set the 'name:' properties to values that work for you (MYMODULE)
name: MYMODULE ci-scripts build
name: MYMODULE
# Trigger on pushes and PRs to any branch
on: [push, pull_request]
on:
push:
paths-ignore:
- 'documentation/*'
- '**/*.html'
- '**/*.md'
pull_request:
env:
SETUP_PATH: .ci-local:.ci
CMP: gcc
# For the sequencer on Linux/Windows/MacOS
APT: re2c
CHOCO: re2c
BREW: re2c
jobs:
build-linux:
name: ${{ matrix.cmp }} / ${{ matrix.configuration }} / ${{ matrix.os }}
build-base:
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
# Set environment variables from matrix parameters
env:
CMP: ${{ matrix.cmp }}
BCFG: ${{ matrix.configuration }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, ubuntu-18.04, ubuntu-16.04]
cmp: [gcc, clang]
configuration: [default, static, debug, static-debug]
steps:
- uses: actions/checkout@v2
with:
submodules: true
- 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 test
- name: Collect and show test results
run: python .ci/cue.py test-results
build-macos:
name: ${{ matrix.cmp }} / ${{ matrix.configuration }} / ${{ matrix.os }}
runs-on: ${{ matrix.os }}
# Set environment variables from matrix parameters
env:
CMP: ${{ matrix.cmp }}
BCFG: ${{ matrix.configuration }}
strategy:
fail-fast: false
matrix:
os: [macos-10.15]
cmp: [clang]
# No static builds on MacOS
configuration: [default, debug]
steps:
- uses: actions/checkout@v2
- 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 test
- name: Collect and show test results
run: python .ci/cue.py test-results
build-windows:
name: ${{ matrix.cmp }} / ${{ matrix.configuration }} / ${{ matrix.os }}
runs-on: ${{ matrix.os }}
env:
CMP: ${{ matrix.cmp }}
BCFG: ${{ matrix.configuration }}
strategy:
fail-fast: false
matrix:
os: [windows-2019, windows-2016]
cmp: [gcc, vs2019, vs2017]
configuration: [default, static, debug, static-debug]
# Available: vs2017/windows-2016 and vs2019/windows-2019
exclude:
- os: windows-2019
cmp: vs2017
- os: windows-2016
cmp: vs2019
steps:
- uses: actions/checkout@v2
with:
submodules: true
- 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 test
- name: Collect and show test results
run: python .ci/cue.py test-results
# Same setup and toolchain as on Travis.
# Needs Base >= 3.15 to compile, EPICS 7 to also run the tests on qemu
build-rtems:
name: RTEMS${{ matrix.rtems }} / ${{ matrix.configuration }} / ${{ matrix.os }}
runs-on: ${{ matrix.os }}
env:
CMP: ${{ matrix.cmp }}
BCFG: ${{ matrix.configuration }}
RTEMS: ${{ matrix.rtems }}
APT: re2c g++-mingw-w64-i686 g++-mingw-w64-x86-64 qemu-system-x86
strategy:
fail-fast: false
matrix:
os: [ubuntu-18.04]
cmp: [gcc]
configuration: [default]
rtems: ["4.9", "4.10"]
steps:
- uses: actions/checkout@v2
with:
submodules: true
- 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 test
- name: Collect and show test results
run: python .ci/cue.py test-results
# The WINE cross builds are of somewhat limited use,
# as there are native gcc/MinGW builds available on GitHub Actions
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
RTEMS: ${{ matrix.rtems }}
RTEMS_TARGET: ${{ matrix.rtems_target }}
EXTRA: ${{ matrix.extra }}
TEST: ${{ matrix.test }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-18.04]
cmp: [gcc]
configuration: [default, static, debug, static-debug]
wine: [32, 64]
# Job names also name artifacts, character limitations apply
include:
- os: ubuntu-20.04
cmp: gcc
configuration: default
wine: "64"
name: "Ub-20 gcc-9 + MinGW"
- os: ubuntu-20.04
cmp: gcc
configuration: static
wine: "64"
name: "Ub-20 gcc-9 + MinGW, static"
- os: ubuntu-20.04
cmp: gcc
configuration: static
extra: "CMD_CXXFLAGS=-std=c++11"
name: "Ub-20 gcc-9 C++11, static"
- os: ubuntu-18.04
cmp: clang
configuration: default
name: "Ub-18 clang-9"
- os: ubuntu-20.04
cmp: clang
configuration: default
extra: "CMD_CXXFLAGS=-std=c++11"
name: "Ub-20 clang-10 C++11"
- os: ubuntu-20.04
cmp: gcc
configuration: default
rtems: "4.10"
name: "Ub-20 gcc-9 + RT-4.10"
- os: ubuntu-20.04
cmp: gcc
configuration: default
rtems: "4.9"
name: "Ub-20 gcc-9 + RT-4.9"
- os: ubuntu-20.04
cmp: gcc
configuration: default
rtems: "5"
rtems_target: RTEMS-pc686-qemu
name: "Ub-20 gcc-9 + RT-5.1 pc686"
- os: ubuntu-20.04
cmp: gcc
configuration: default
rtems: "5"
rtems_target: RTEMS-beatnik
test: NO
name: "Ub-20 gcc-9 + RT-5.1 beatnik"
- os: ubuntu-18.04
cmp: gcc
configuration: default
name: "Ub-18 gcc-7"
- os: ubuntu-18.04
cmp: gcc-8
utoolchain: true
configuration: default
name: "Ub-18 gcc-8"
- os: ubuntu-20.04
cmp: gcc-8
utoolchain: true
configuration: default
name: "Ub-20 gcc-8"
- os: ubuntu-20.04
cmp: clang
configuration: default
name: "Ub-20 clang-10"
- os: macos-latest
cmp: clang
configuration: default
name: "MacOS clang-12"
- os: windows-2016
cmp: vs2017
configuration: default
name: "Win2016 MSC-17"
- os: windows-2016
cmp: vs2017
configuration: static
name: "Win2016 MSC-17, static"
- os: windows-2019
cmp: gcc
configuration: default
name: "Win2019 MinGW"
- os: windows-2019
cmp: gcc
configuration: static
name: "Win2019 MinGW, static"
- os: windows-2019
cmp: vs2019
configuration: default
name: "Win2019 MSC-19"
- os: windows-2019
cmp: vs2019
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:
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: "apt-get install ${{ matrix.cmp }}"
run: |
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 ${{ matrix.cmp }}
if: matrix.utoolchain
- 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 test
- name: Upload tapfiles Artifact
uses: actions/upload-artifact@v2
with:
name: tapfiles ${{ matrix.name }}
path: '**/O.*/*.tap'
- name: Collect and show test results
run: python .ci/cue.py test-results

View File

@@ -5,18 +5,23 @@
# Set the 'name:' properties to values that work for you
name: MYMODULE ci-scripts build
name: MYMODULE
# Trigger on pushes and PRs to any branch
on: [push, pull_request]
on:
push:
paths-ignore:
- 'documentation/*'
- '**/*.html'
- '**/*.md'
pull_request:
env:
SETUP_PATH: .ci-local:.ci
CMP: gcc
jobs:
build-linux:
name: ${{ matrix.base }} / ${{ matrix.cmp }} / ${{ matrix.configuration }} / ${{ matrix.os }}
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
# Set environment variables from matrix parameters
env:
@@ -26,10 +31,42 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, ubuntu-18.04]
cmp: [gcc]
configuration: [default, static]
base: ["7.0", "3.15"]
- os: ubuntu-18.04
cmp: gcc
configuration: default
base: "7.0"
name: "7.0 Ub-18 gcc-7"
- os: ubuntu-18.04
cmp: gcc
configuration: static
base: "7.0"
name: "7.0 Ub-18 gcc-7 static"
- os: ubuntu-20.04
cmp: gcc
configuration: default
base: "3.15"
name: "3.15 Ub-20 gcc-9"
- os: ubuntu-20.04
cmp: gcc
configuration: static
base: "3.15"
name: "3.15 Ub-20 gcc-9 static"
- os: ubuntu-20.04
cmp: gcc
configuration: debug
base: "3.15"
name: "3.15 Ub-20 gcc-9 debug"
- os: ubuntu-20.04
cmp: clang
configuration: default
base: "3.15"
name: "3.15 Ub-20 clang-10"
steps:
- uses: actions/checkout@v2
with:

View File

@@ -0,0 +1,121 @@
# .gitlab-ci.yml for testing EPICS Base ci-scripts
# (see: https://github.com/epics-base/ci-scripts)
# This is YAML - indentation levels are crucial
# GitLab runner can use any Docker container, we're using this one
# to be comparable with the other CI services
image: ubuntu:bionic
cache:
key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
paths:
- .cache/
variables:
GIT_SUBMODULE_STRATEGY: "recursive"
SETUP_PATH: ".ci-local:.ci"
BASE_RECURSIVE: "NO"
# Additional packages needed for
# | EPICS |clang| Windows cross builds |RTEMS testing |sequencer
APT: "libreadline6-dev libncurses5-dev perl clang g++-mingw-w64-i686 g++-mingw-w64-x86-64 qemu-system-x86 re2c"
CMP: "gcc"
BGFC: "default"
# Template for build jobs (hidden)
.build:
stage: build
before_script:
- apt-get update -qq && apt-get install -y -qq build-essential git python curl p7zip-full
- python .ci/cue.py prepare
script:
- python .ci/cue.py build
- python .ci/cue.py test
- python .ci/cue.py test-results
# If you need to do more during install and build,
# add a local directory to your module and do e.g.
# - ./.ci-local/travis/install-extras.sh
# Define build jobs
# Well-known variables to use
# SET source setup file
# ADD_MODULES extra modules (for a specific job)
# BCFG build configuration (static/debug/static-debug;
# default: shared-optimized)
# TEST set to NO to skip running the tests (default: YES)
# VV set to make build scripts verbose (default: unset)
# EXTRA content will be added to make command line
# EXTRA1..5 more additional arguments for the make command
# (one argument per variable)
# Usually from setup files, but may be specified or overridden
# on a job line
# MODULES list of dependency modules
# BASE branch or release tag name of the EPICS Base to use
# <MODULE> branch or release tag for a specific module
# ... see README for setup file syntax description
# Different configurations of gcc and clang
gcc_default:
extends: .build
variables:
BASE: "7.0"
gcc_static:
extends: .build
variables:
BASE: "7.0"
BCFG: "static"
clang_default:
extends: .build
variables:
BASE: "7.0"
CMP: "clang"
clang_static_c++11:
extends: .build
variables:
BASE: "7.0"
CMP: "clang"
BCFG: "static"
EXTRA: "CMD_CXXFLAGS=-std=c++11"
# Cross-compilations to Windows using gcc/MinGW and WINE
wine32_default:
extends: .build
variables:
BASE: "3.15"
BCFG: "static"
WINE: "32"
TEST: "NO"
wine64_debug:
extends: .build
variables:
BASE: "7.0"
BCFG: "debug"
WINE: "64"
# Cross-builds to RTEMS 4.9, 4.10 and 5
rtems4.9_default:
extends: .build
variables:
RTEMS: "4.9"
BASE: "3.15"
rtems4.10_debug:
extends: .build
variables:
RTEMS: "4.10"
BASE: "7.0"
BCFG: "debug"
rtems5_default:
extends: .build
image: ubuntu:focal
variables:
RTEMS: "5"
RTEMS_TARGET: "RTEMS-pc686-qemu"

View File

@@ -0,0 +1,36 @@
# .gitlab-ci.yml for testing EPICS Base ci-scripts
# (see: https://github.com/epics-base/ci-scripts)
image: ubuntu:bionic
variables:
GIT_SUBMODULE_STRATEGY: "recursive"
SETUP_PATH: ".ci-local:.ci"
BASE_RECURSIVE: "NO"
# Minimal set of packages needed to compile EPICS Base
APT: "libreadline6-dev libncurses5-dev perl"
CMP: "gcc"
BGFC: "default"
# Template for build jobs (hidden)
.build:
stage: build
before_script:
- apt-get update -qq && apt-get install -y -qq build-essential git python curl p7zip-full
- python .ci/cue.py prepare
script:
- python .ci/cue.py build
- python .ci/cue.py test
- python .ci/cue.py test-results
# Build on Linux using default gcc for Base branches 7.0 and 3.15
gcc_base_7_0:
extends: .build
variables:
BASE: "7.0"
gcc_base_3_15:
extends: .build
variables:
BASE: "3.15"

69
gitlab/README.md Normal file
View File

@@ -0,0 +1,69 @@
# GitLab CI/CD Scripts for EPICS Modules
## Features
- Docker-based runners on Linux (one VM instance per job)
- Can use any Docker image from Dockerhub (the examples use
`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)
- Cross-compile for RTEMS 5 (10 BSPs, Base >= 7.0.5.1)
- Built dependencies are cached (for faster builds).
## How to Use these Scripts
1. Get an account on [GitLab](https://gitlab.com/), create a project
for your support module and have it mirror your upstream GitHub
repository. For more details, please refer to the
[GitLab CI/CD documentation](https://docs.gitlab.com/ee/README.html).
(This applies when using the free tier offered to open source
projects. Things will be different using an "Enterprise"
installation on customer hardware.)
2. Add the ci-scripts respository as a Git Submodule
(see [README](../README.md) one level above).
3. Add settings files defining which dependencies in which versions
you want to build against
(see [README](../README.md) one level above).
4. Create a GitLab configuration by copying one of the examples into
the root directory of your module.
```
$ cp .ci/gitlab/.gitlab-ci.yml.example-full .gitlab-ci.yml
```
5. Edit the `.gitlab-ci.yml` configuration to include the jobs you want
GitLab CI/CD to run.
Build jobs are declared in the list at the end of the file.
Each element (starting with the un-indented line) defines the
settings for one build job. `extends:` specifies a template to use as
a default structure, `variables:` controls the setting of environment
variables (overwriting settings from the template).
Also see the comments in the examples for more hints, and the
[GitLab CI/CD documentation](https://docs.gitlab.com/ee/README.html)
for more options and details.
6. Push your changes to GitHub, wait for the synchronization (every 5min)
and check [GitLab](https://gitlab.com/) for your build results.
## Caches
GitLab is configured to keep the caches separate for different jobs.
However, changing the job description (in the `.gitlab-ci.yml`
configuration file) or its environment settings or changing a value
inside a setup file will _not_ invalidate the cache - you will
have to manually delete the caches through the GitLab web interface.
Caches are automatically removed after approx. four weeks.
Your jobs will have to rebuild them once in a while.
## Miscellanea
To use the feature to extract `.zip`/`.7z` archives by setting
`*_HOOK` variables, the Linux and MacOS runners need the APT package
`p7zip-full` resp. the Homebrew package `p7zip` installed.

View File

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

View File

@@ -5,7 +5,7 @@
language: cpp
compiler: gcc
dist: xenial
dist: bionic
cache:
directories:
@@ -39,7 +39,6 @@ addons:
- re2c
# for .zip/.7z archive hooks
- p7zip
update: true
install:
- python .ci/cue.py prepare
@@ -104,9 +103,12 @@ jobs:
# Cross-compilation to RTEMS
- env: BASE=7.0 RTEMS=4.10
- env: BASE=7.0 RTEMS=4.10 APT=usrmerge
- env: BASE=7.0 RTEMS=4.9
- env: BASE=7.0 RTEMS=4.9 APT=usrmerge
- env: BASE=7.0 RTEMS=5 RTEMS_TARGET=RTEMS-pc686-qemu
dist: focal
# Other gcc versions (added as an extra package)
@@ -122,6 +124,7 @@ jobs:
- env: BASE=7.0
os: osx
osx_image: xcode11.3
compiler: clang
# Windows builds

View File

@@ -3,7 +3,7 @@
language: cpp
compiler: gcc
dist: xenial
dist: bionic
# Minimal set of packages needed to compile EPICS Base

View File

@@ -2,11 +2,13 @@
## Features
- Five parallel runners on Linux/Windows (one runner on MacOS)
- Two parallel runners on Linux/Windows (two runners on MacOS)
- Ubuntu 14/16/18/20, MacOS 10.13/14/15, Windows Server v1809
- Use different compilers (gcc, clang)
- Use different gcc versions
- Cross-compile for Windows 32bit and 64bit using MinGW and WINE
- Cross-compile for RTEMS 4.9 and 4.10 (Base >= 3.15)
- 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)
- Compile natively on MacOS (clang)
- Compile natively on Windows (gcc/MinGW, Visual Studio 2017)
- Built dependencies are cached (for faster builds).
@@ -18,6 +20,10 @@
repository. For more details, please refer to the
[Travis-CI Tutorial](https://docs.travis-ci.com/user/tutorial/).
Make sure to use `travis-ci.org` and not their `.com` site.
(This applies when using the free tier offered to open source
projects. Things will be different using an "Enterprise"
installation on customer hardware.)
2. Add the ci-scripts respository as a Git Submodule
(see [README](../README.md) one level above).