Compare commits
15 Commits
v2.3.2-old
...
v2.3.4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
98bc1d8f1f | ||
|
|
4484a9c302 | ||
|
|
ebc4b5ca2a | ||
|
|
26c268eb28 | ||
|
|
02c1c016c4 | ||
|
|
27a1224d6d | ||
|
|
157a7af098 | ||
|
|
3c1e223dc7 | ||
|
|
4f4f76a5db | ||
|
|
e91a588370 | ||
|
|
29e657d585 | ||
|
|
4413c7d75e | ||
|
|
48b15417a6 | ||
|
|
1ac8bf7479 | ||
|
|
d0f93f1920 |
@@ -42,12 +42,15 @@ skip_commits:
|
||||
- 'templates/*'
|
||||
- '**/*.html'
|
||||
- '**/*.md'
|
||||
|
||||
- '.travis.yml'
|
||||
|
||||
#---------------------------------#
|
||||
# build matrix configuration #
|
||||
#---------------------------------#
|
||||
|
||||
# Default build worker image
|
||||
image: Visual Studio 2015
|
||||
|
||||
# Build Configurations: dll/static, regular/debug
|
||||
configuration:
|
||||
- dynamic
|
||||
@@ -65,12 +68,12 @@ environment:
|
||||
|
||||
matrix:
|
||||
- CMP: vs2019
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||
SET: test00
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||
- CMP: mingw
|
||||
- CMP: vs2019
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||
VV: 0
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||
- CMP: vs2019
|
||||
BASE: 3.15
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||
|
||||
40
README.md
40
README.md
@@ -49,20 +49,24 @@ example.
|
||||
|
||||
## Supported CI Services
|
||||
|
||||
### Travis-CI
|
||||
### [Travis-CI](https://travis-ci.org/)
|
||||
- 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.16.2)
|
||||
- Compile on MacOS
|
||||
- Built dependencies are cached (for faster builds)
|
||||
|
||||
See specific **[ci-scripts on Travis-CI README](travis/README.md)** for more details.
|
||||
|
||||
### AppVeyor
|
||||
### [AppVeyor](https://www.appveyor.com/)
|
||||
- Use different compilers (Visual Studio, MinGW)
|
||||
- Use different Visual Studio versions: \
|
||||
2008, 2010, 2012, 2013, 2015, 2017, 2019
|
||||
- Compile for Windows 32bit and 64bit
|
||||
|
||||
See specific **[ci-scripts on AppVeyor README](appveyor/README.md)** for more details.
|
||||
|
||||
## How to Use the CI-Scripts
|
||||
|
||||
1. Get an account on a supported CI service provider platform.
|
||||
@@ -199,14 +203,25 @@ dependency builds. [default is `$HOME/.cache`]
|
||||
|
||||
## References: EPICS Modules Using ci-scripts
|
||||
|
||||
EPICS Base: [pvData](https://github.com/epics-base/pvDataCPP),
|
||||
[EPICS Base](https://github.com/epics-base/epics-base) and its submodules
|
||||
[pvData](https://github.com/epics-base/pvDataCPP),
|
||||
[pvAccess](https://github.com/epics-base/pvAccessCPP),
|
||||
[pva2pva](https://github.com/epics-base/pva2pva)
|
||||
|
||||
EPICS Modules: [PCAS](https://github.com/epics-modules/pcas),
|
||||
[ASYN](https://github.com/epics-modules/asyn)
|
||||
EPICS Modules:
|
||||
[ASYN](https://github.com/epics-modules/asyn),
|
||||
[devlib2](https://github.com/epics-modules/devlib2),
|
||||
[ecmc](https://github.com/epics-modules/ecmc),
|
||||
[ip](https://github.com/epics-modules/ip),
|
||||
[lua](https://github.com/epics-modules/lua),
|
||||
[MCoreUtils](https://github.com/epics-modules/MCoreUtils),
|
||||
[modbus](https://github.com/epics-modules/modbus),
|
||||
[motor](https://github.com/epics-modules/motor),
|
||||
[PCAS](https://github.com/epics-modules/pcas),
|
||||
[sscan](https://github.com/epics-modules/sscan),
|
||||
[vac](https://github.com/epics-modules/vac)
|
||||
|
||||
ESS: [Motor driver (model 3) for EtherCAT Motion Controller][ref.ethercatmc]
|
||||
ESS: [EtherCAT MC Motor Driver][ref.ethercatmc]
|
||||
|
||||
ITER: [OPC UA Device Support](https://github.com/ralphlange/opcua)
|
||||
|
||||
@@ -221,22 +236,27 @@ 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 2.2.1 of ci-scripts:
|
||||
setup to release 2.3.4 of ci-scripts:
|
||||
```bash
|
||||
cd .ci
|
||||
git pull origin v2.2.1
|
||||
git pull origin v2.3.4
|
||||
cd -
|
||||
git add .ci
|
||||
# if needed:
|
||||
edit .travis.yml
|
||||
git add .travis.yml
|
||||
git commit -m "Update ci-scripts submodule to v2.2.1"
|
||||
git commit -m "Update ci-scripts submodule to v2.3.4"
|
||||
```
|
||||
|
||||
Check the example configuration files inside ci-scripts (and their
|
||||
changes) to see what might be needed and/or interesting to change
|
||||
in your configuration.
|
||||
|
||||
Depending on the changes contained in the ci-scripts update, it might
|
||||
be advisable to clear the CI caches after updating ci-scripts. E.g.,
|
||||
a change in setting up EPICS Base will not be applied if Base is found
|
||||
in the cache.
|
||||
|
||||
**Why does running the scripts locally on my MacOS machine fail?**
|
||||
|
||||
The ci-scripts for Travis-CI require Bash version 4.
|
||||
@@ -273,7 +293,7 @@ in file LICENSE that is included with this distribution.
|
||||
<!-- Links -->
|
||||
[badge.version]: https://badge.fury.io/gh/epics-base%2Fci-scripts.svg
|
||||
[badge.travis]: https://travis-ci.org/epics-base/ci-scripts.svg?branch=master
|
||||
[badge.appveyor]: https://ci.appveyor.com/api/projects/status/xwdv8fpxu0byp3hn?svg=true
|
||||
[badge.appveyor]: https://ci.appveyor.com/api/projects/status/8b578alg974axvux?svg=true
|
||||
|
||||
[reddit.bash]: https://www.reddit.com/r/bash/comments/393oqv/why_is_the_version_of_bash_included_in_os_x_so_old/
|
||||
|
||||
|
||||
@@ -1,7 +1,39 @@
|
||||
diff -ruN ../3.14/src/dbtools/Makefile ./src/dbtools/Makefile
|
||||
--- ../3.14/src/dbtools/Makefile 2017-03-16 21:37:51.278140900 +0100
|
||||
+++ ./src/dbtools/Makefile 2020-04-06 12:40:51.723550846 +0200
|
||||
@@ -11,6 +11,11 @@
|
||||
diff --git a/config/RULES.Db b/config/RULES.Db
|
||||
index b4946c7aa..90b76ed08 100644
|
||||
--- a/config/RULES.Db
|
||||
+++ b/config/RULES.Db
|
||||
@@ -12,11 +12,7 @@
|
||||
#
|
||||
MAKEBPT = $(EPICS_BASE_HOST_BIN)/makeBpt$(EXE)
|
||||
|
||||
-ifndef MSI
|
||||
-# Tool from R3.14 extensions bin, R3.13 extensions bin, or user path
|
||||
-MSI = $(firstword $(wildcard $(EPICS_EXTENSIONS_HOST_BIN)/msi$(HOSTEXE) \
|
||||
- $(EPICS_EXTENSIONS)/bin/$(HOST_ARCH)/msi$(HOSTEXE)) msi$(HOSTEXE))
|
||||
-endif
|
||||
+MSI = $(EPICS_BASE_HOST_BIN)/msi$(HOSTEXE)
|
||||
|
||||
DBEXPAND = $(EPICS_BASE_HOST_BIN)/dbExpand$(EXE)
|
||||
DBST = dbst
|
||||
diff --git a/configure/CONFIG_BASE b/configure/CONFIG_BASE
|
||||
index 7ee5a5b89..9a9793093 100644
|
||||
--- a/configure/CONFIG_BASE
|
||||
+++ b/configure/CONFIG_BASE
|
||||
@@ -112,8 +112,5 @@ ifndef DBST
|
||||
DBST = dbst
|
||||
endif
|
||||
|
||||
-ifndef MSI
|
||||
-MSI = msi
|
||||
-endif
|
||||
-
|
||||
+MSI = $(EPICS_BASE_HOST_BIN)/msi$(HOSTEXE)
|
||||
|
||||
diff --git a/src/dbtools/Makefile b/src/dbtools/Makefile
|
||||
index 38ed52c9e..8655a5337 100644
|
||||
--- a/src/dbtools/Makefile
|
||||
+++ b/src/dbtools/Makefile
|
||||
@@ -11,6 +11,11 @@ TOP=../..
|
||||
|
||||
include $(TOP)/configure/CONFIG
|
||||
|
||||
@@ -13,9 +45,11 @@ diff -ruN ../3.14/src/dbtools/Makefile ./src/dbtools/Makefile
|
||||
INC += dbLoadTemplate.h
|
||||
INC += dbtoolsIocRegister.h
|
||||
|
||||
diff -ruN ../3.14/src/dbtools/msi.c ./src/dbtools/msi.c
|
||||
--- ../3.14/src/dbtools/msi.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ ./src/dbtools/msi.c 2013-05-13 19:00:43.000000000 +0200
|
||||
diff --git a/src/dbtools/msi.c b/src/dbtools/msi.c
|
||||
new file mode 100644
|
||||
index 000000000..525d4f25b
|
||||
--- /dev/null
|
||||
+++ b/src/dbtools/msi.c
|
||||
@@ -0,0 +1,798 @@
|
||||
+/*************************************************************************\
|
||||
+* Copyright (c) 2002 The University of Chicago, as Operator of Argonne
|
||||
|
||||
@@ -28,6 +28,8 @@ install:
|
||||
init:
|
||||
# Set autocrlf to make batch files work
|
||||
- git config --global core.autocrlf true
|
||||
# print the connection info for RDP connections (see 'debugging' below)
|
||||
#- ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
||||
|
||||
# Set clone depth (do not fetch complete history)
|
||||
clone_depth: 50
|
||||
@@ -39,6 +41,7 @@ skip_commits:
|
||||
- 'templates/*'
|
||||
- '**/*.html'
|
||||
- '**/*.md'
|
||||
- '.travis.yml'
|
||||
|
||||
#---------------------------------#
|
||||
# build matrix configuration #
|
||||
@@ -48,6 +51,9 @@ skip_commits:
|
||||
# are executed sequentially, each one taking 10-15 minutes.
|
||||
# Consider this when defining your build matrix. (A full matrix build takes more than 8 hours.)
|
||||
|
||||
# Default build worker image
|
||||
image: Visual Studio 2015
|
||||
|
||||
# Build Configurations: dll/static, regular/debug
|
||||
configuration:
|
||||
- dynamic
|
||||
@@ -62,8 +68,8 @@ environment:
|
||||
|
||||
matrix:
|
||||
- CMP: vs2019
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||
SET: test00
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||
- CMP: mingw
|
||||
- CMP: vs2019
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||
@@ -129,9 +135,8 @@ on_finish:
|
||||
## note that you will need to connect within the usual build timeout limit (60 minutes)
|
||||
## so you may want to adjust the build matrix above to just build the one of interest
|
||||
|
||||
# print the connection info
|
||||
#init:
|
||||
# - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
||||
# to print the RDP connection info
|
||||
# uncomment the appropriate line in the init: section above
|
||||
|
||||
# block a failed build (until the watchdog barks)
|
||||
#on_failure:
|
||||
|
||||
@@ -17,6 +17,9 @@ skip_commits:
|
||||
- 'templates/*'
|
||||
- '**/*.html'
|
||||
- '**/*.md'
|
||||
- '.travis.yml'
|
||||
|
||||
image: Visual Studio 2019
|
||||
|
||||
# Build Configurations: dll/static, regular/debug
|
||||
configuration:
|
||||
@@ -32,10 +35,8 @@ environment:
|
||||
matrix:
|
||||
- CMP: vs2019
|
||||
BASE: 7.0
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||
- CMP: vs2019
|
||||
BASE: 3.15
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||
|
||||
# Platform: processor architecture
|
||||
platform:
|
||||
|
||||
@@ -53,3 +53,16 @@
|
||||
|
||||
6. Push your changes and check
|
||||
[ci.appveyor.com](https://ci.appveyor.com/) for your build results.
|
||||
|
||||
## Known Issues
|
||||
|
||||
#### Build Worker Images
|
||||
The AppVeyor documentation on build worker images doesn't seem to fully
|
||||
describe the way things are handled internally.
|
||||
|
||||
The tested and suggested reproducible way of defining the build worker image
|
||||
is shown in the example configuration files:
|
||||
|
||||
- Set the default image using the `image:` tag.
|
||||
- Override the image for specific jobs by setting the
|
||||
`APPVEYOR_BUILD_WORKER_IMAGE` environment variable.
|
||||
|
||||
@@ -56,7 +56,7 @@ ciscriptsdir = os.path.abspath(os.path.dirname(sys.argv[0]))
|
||||
if os.path.basename(ciscriptsdir) == 'appveyor':
|
||||
ciscriptsdir = ciscriptsdir.rstrip(os.pathsep+'appveyor')
|
||||
|
||||
if 'BASE' not in os.environ or os.environ['BASE'] == 'SELF':
|
||||
if 'BASE' in os.environ and os.environ['BASE'] == 'SELF':
|
||||
building_base = True
|
||||
places['EPICS_BASE'] = '.'
|
||||
else:
|
||||
@@ -81,6 +81,9 @@ isbase314 = False
|
||||
silent_dep_builds = True
|
||||
|
||||
def host_info():
|
||||
print('{0}AppVeyor Build Worker Image:{1} {2}'
|
||||
.format(ANSI_CYAN, ANSI_RESET, os.environ['APPVEYOR_BUILD_WORKER_IMAGE']))
|
||||
|
||||
print('{0}Python setup{1}'.format(ANSI_CYAN, ANSI_RESET))
|
||||
print(sys.version)
|
||||
print('PYTHONPATH')
|
||||
@@ -327,7 +330,7 @@ def add_dependency(dep):
|
||||
if 'BASE_3_14=YES' in f.read():
|
||||
print('Adding MSI 1.7 to {0}'.format(place))
|
||||
sys.stdout.flush()
|
||||
sp.check_call(['patch', '-p0', '-i', os.path.join(ciscriptsdir, 'add-msi-to-314.patch')],
|
||||
sp.check_call(['patch', '-p1', '-i', os.path.join(ciscriptsdir, 'add-msi-to-314.patch')],
|
||||
cwd=place)
|
||||
else:
|
||||
# force including RELEASE.local for non-base modules by overwriting their configure/RELEASE
|
||||
@@ -537,7 +540,7 @@ def build(args):
|
||||
def test(args):
|
||||
setup_for_build(args)
|
||||
print('{0}Running the main module tests{1}'.format(ANSI_YELLOW, ANSI_RESET))
|
||||
call_make(['tapfiles'], parallel=0)
|
||||
call_make(['tapfiles'])
|
||||
call_make(['test-results'], parallel=0, silent=True)
|
||||
|
||||
def doExec(args):
|
||||
|
||||
@@ -9,6 +9,9 @@ DB += dbExample2.db
|
||||
DB += dbSubExample.db
|
||||
DB += user.substitutions
|
||||
|
||||
# Host-side expansion of substitutions file with MSI
|
||||
DB += dbExample3.db
|
||||
|
||||
# If <anyname>.db template is not named <anyname>*.template add
|
||||
# <anyname>_TEMPLATE = <templatename>
|
||||
|
||||
|
||||
8
exampleApp/Db/dbExample3.substitutions
Normal file
8
exampleApp/Db/dbExample3.substitutions
Normal file
@@ -0,0 +1,8 @@
|
||||
# Example host-side substitutions file
|
||||
|
||||
file dbExample2.db {
|
||||
pattern { user, no, scan }
|
||||
{ "ralph", 4, "1 second" }
|
||||
{ "ralph", 5, "2 second" }
|
||||
{ "ralph", 6, "5 second" }
|
||||
}
|
||||
@@ -53,6 +53,8 @@ script:
|
||||
# SET source setup file
|
||||
# ADD_MODULES extra modules (for a specific job)
|
||||
# EXTRA content will be added to make command line
|
||||
# EXTRA1..5 additional arguments for the make command
|
||||
# (one argument per variable)
|
||||
# STATIC set to YES for static build (default: NO)
|
||||
# TEST set to NO to skip running the tests (default: YES)
|
||||
# VV set to make build scripts verbose (default: unset)
|
||||
|
||||
@@ -6,22 +6,38 @@ set -e
|
||||
|
||||
CACHEDIR=${CACHEDIR:-${HOME}/.cache}
|
||||
|
||||
eval $(grep "EPICS_BASE=" ${CACHEDIR}/RELEASE.local)
|
||||
if [ "$BASE" = "SELF" ]
|
||||
then
|
||||
EPICS_BASE=$CURDIR
|
||||
else
|
||||
eval $(grep "EPICS_BASE=" ${CACHEDIR}/RELEASE.local)
|
||||
fi
|
||||
export EPICS_BASE
|
||||
|
||||
[ -z "$EPICS_HOST_ARCH" -a -f $EPICS_BASE/src/tools/EpicsHostArch.pl ] && EPICS_HOST_ARCH=$(perl $EPICS_BASE/src/tools/EpicsHostArch.pl)
|
||||
[ -z "$EPICS_HOST_ARCH" -a -f $EPICS_BASE/startup/EpicsHostArch.pl ] && EPICS_HOST_ARCH=$(perl $EPICS_BASE/startup/EpicsHostArch.pl)
|
||||
export EPICS_HOST_ARCH
|
||||
|
||||
make -j2 $EXTRA
|
||||
# Base 3.15 doesn't have -qemu target architecture and needs an extra define
|
||||
[ -e $EPICS_BASE/configure/os/CONFIG.Common.RTEMS-pc386-qemu ] || EXTRA_QEMU=RTEMS_QEMU_FIXUPS=YES
|
||||
|
||||
# use array variable to get the quoting right while using separate words for arguments
|
||||
[ -n "$EXTRA0" ] && EXTRA[0]="$EXTRA0"
|
||||
[ -n "$EXTRA1" ] && EXTRA[1]="$EXTRA1"
|
||||
[ -n "$EXTRA2" ] && EXTRA[2]="$EXTRA2"
|
||||
[ -n "$EXTRA3" ] && EXTRA[3]="$EXTRA3"
|
||||
[ -n "$EXTRA4" ] && EXTRA[4]="$EXTRA4"
|
||||
[ -n "$EXTRA5" ] && EXTRA[5]="$EXTRA5"
|
||||
|
||||
make -j2 $EXTRA_QEMU "${EXTRA[@]}"
|
||||
|
||||
ret=0
|
||||
|
||||
if [ "$TEST" != "NO" ]
|
||||
then
|
||||
make tapfiles || ret=$?
|
||||
make -j2 tapfiles || ret=$?
|
||||
|
||||
make -s test-results
|
||||
make -sk test-results
|
||||
fi
|
||||
|
||||
exit $ret
|
||||
|
||||
@@ -71,7 +71,8 @@ then
|
||||
mod_uc=${mod^^}
|
||||
eval add_dependency $mod_uc \${${mod_uc}:=master}
|
||||
done
|
||||
[ -e ./configure ] && cp ${CACHEDIR}/RELEASE.local ./configure/RELEASE.local
|
||||
[ -d ./configure ] && target=./configure/RELEASE.local || target=./RELEASE.local
|
||||
cp ${CACHEDIR}/RELEASE.local $target
|
||||
|
||||
fold_end check.out.dependencies
|
||||
fi
|
||||
@@ -183,8 +184,10 @@ EOF
|
||||
RTEMS_VERSION=$RTEMS
|
||||
RTEMS_BASE=$HOME/.rtems
|
||||
EOF
|
||||
# Base 3.15 doesn't have -qemu target architecture
|
||||
[ -e $EPICS_BASE/configure/os/CONFIG.Common.RTEMS-pc386-qemu ] && QEMU=-qemu
|
||||
cat << EOF >> $EPICS_BASE/configure/CONFIG_SITE
|
||||
CROSS_COMPILER_TARGET_ARCHS += RTEMS-pc386-qemu
|
||||
CROSS_COMPILER_TARGET_ARCHS += RTEMS-pc386$QEMU
|
||||
EOF
|
||||
fi
|
||||
|
||||
|
||||
@@ -185,7 +185,7 @@ add_dependency() {
|
||||
if [ -e ${versionfile} ] && grep -q "BASE_3_14=YES" ${versionfile}
|
||||
then
|
||||
echo "Adding MSI 1.7 to $CACHEDIR/$dirname-$TAG"
|
||||
( cd $dirname-$TAG; patch -p0 < $SCRIPTDIR/../add-msi-to-314.patch )
|
||||
( cd $dirname-$TAG; patch -p1 < $SCRIPTDIR/../add-msi-to-314.patch )
|
||||
fi
|
||||
else
|
||||
# fix non-base modules that do not include the .local files in configure/RELEASE
|
||||
|
||||
Reference in New Issue
Block a user