1 Commits

Author SHA1 Message Date
Ralph Lange
ecb7e43660 travis: fix for EXTRA with quotes/spaces 2020-04-23 17:43:21 +02:00
13 changed files with 36 additions and 146 deletions

View File

@@ -42,15 +42,12 @@ skip_commits:
- 'templates/*' - 'templates/*'
- '**/*.html' - '**/*.html'
- '**/*.md' - '**/*.md'
- '.travis.yml'
#---------------------------------# #---------------------------------#
# build matrix configuration # # build matrix configuration #
#---------------------------------# #---------------------------------#
# Default build worker image
image: Visual Studio 2015
# Build Configurations: dll/static, regular/debug # Build Configurations: dll/static, regular/debug
configuration: configuration:
- dynamic - dynamic
@@ -68,12 +65,12 @@ environment:
matrix: matrix:
- CMP: vs2019 - CMP: vs2019
SET: test00
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
SET: test00
- CMP: mingw - CMP: mingw
- CMP: vs2019 - CMP: vs2019
VV: 0
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
VV: 0
- CMP: vs2019 - CMP: vs2019
BASE: 3.15 BASE: 3.15
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019

View File

@@ -49,24 +49,20 @@ example.
## Supported CI Services ## Supported CI Services
### [Travis-CI](https://travis-ci.org/) ### Travis-CI
- Use different compilers (gcc, clang) - Use different compilers (gcc, clang)
- Use different gcc versions - Use different gcc versions
- Cross-compile for Windows 32bit and 64bit using MinGW and WINE - Cross-compile for Windows 32bit and 64bit using MinGW and WINE
- Cross-compile for RTEMS 4.9 and 4.10 (Base >= 3.16.2) - Cross-compile for RTEMS 4.9 and 4.10 (Base >= 3.16.2)
- Compile on MacOS - Compile on MacOS
- Built dependencies are cached (for faster builds) - Built dependencies are cached (for faster builds)
See specific **[ci-scripts on Travis-CI README](travis/README.md)** for more details.
### [AppVeyor](https://www.appveyor.com/) ### AppVeyor
- Use different compilers (Visual Studio, MinGW) - Use different compilers (Visual Studio, MinGW)
- Use different Visual Studio versions: \ - Use different Visual Studio versions: \
2008, 2010, 2012, 2013, 2015, 2017, 2019 2008, 2010, 2012, 2013, 2015, 2017, 2019
- Compile for Windows 32bit and 64bit - 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 ## How to Use the CI-Scripts
1. Get an account on a supported CI service provider platform. 1. Get an account on a supported CI service provider platform.
@@ -203,25 +199,14 @@ dependency builds. [default is `$HOME/.cache`]
## References: EPICS Modules Using ci-scripts ## References: EPICS Modules Using ci-scripts
[EPICS Base](https://github.com/epics-base/epics-base) and its submodules EPICS Base: [pvData](https://github.com/epics-base/pvDataCPP),
[pvData](https://github.com/epics-base/pvDataCPP),
[pvAccess](https://github.com/epics-base/pvAccessCPP), [pvAccess](https://github.com/epics-base/pvAccessCPP),
[pva2pva](https://github.com/epics-base/pva2pva) [pva2pva](https://github.com/epics-base/pva2pva)
EPICS Modules: EPICS Modules: [PCAS](https://github.com/epics-modules/pcas),
[ASYN](https://github.com/epics-modules/asyn), [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: [EtherCAT MC Motor Driver][ref.ethercatmc] ESS: [Motor driver (model 3) for EtherCAT Motion Controller][ref.ethercatmc]
ITER: [OPC UA Device Support](https://github.com/ralphlange/opcua) ITER: [OPC UA Device Support](https://github.com/ralphlange/opcua)
@@ -236,27 +221,22 @@ This will make all builds (not just for your module) verbose.
Update the submodule in `.ci` first, then change your CI configuration 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 (if needed) and commit both to your module. E.g., to update your Travis
setup to release 2.3.4 of ci-scripts: setup to release 2.2.1 of ci-scripts:
```bash ```bash
cd .ci cd .ci
git pull origin v2.3.4 git pull origin v2.2.1
cd - cd -
git add .ci git add .ci
# if needed: # if needed:
edit .travis.yml edit .travis.yml
git add .travis.yml git add .travis.yml
git commit -m "Update ci-scripts submodule to v2.3.4" git commit -m "Update ci-scripts submodule to v2.2.1"
``` ```
Check the example configuration files inside ci-scripts (and their Check the example configuration files inside ci-scripts (and their
changes) to see what might be needed and/or interesting to change changes) to see what might be needed and/or interesting to change
in your configuration. 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?** **Why does running the scripts locally on my MacOS machine fail?**
The ci-scripts for Travis-CI require Bash version 4. The ci-scripts for Travis-CI require Bash version 4.
@@ -293,7 +273,7 @@ in file LICENSE that is included with this distribution.
<!-- Links --> <!-- Links -->
[badge.version]: https://badge.fury.io/gh/epics-base%2Fci-scripts.svg [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.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.appveyor]: https://ci.appveyor.com/api/projects/status/xwdv8fpxu0byp3hn?svg=true
[reddit.bash]: https://www.reddit.com/r/bash/comments/393oqv/why_is_the_version_of_bash_included_in_os_x_so_old/ [reddit.bash]: https://www.reddit.com/r/bash/comments/393oqv/why_is_the_version_of_bash_included_in_os_x_so_old/

View File

@@ -1,39 +1,7 @@
diff --git a/config/RULES.Db b/config/RULES.Db diff -ruN ../3.14/src/dbtools/Makefile ./src/dbtools/Makefile
index b4946c7aa..90b76ed08 100644 --- ../3.14/src/dbtools/Makefile 2017-03-16 21:37:51.278140900 +0100
--- a/config/RULES.Db +++ ./src/dbtools/Makefile 2020-04-06 12:40:51.723550846 +0200
+++ b/config/RULES.Db @@ -11,6 +11,11 @@
@@ -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 include $(TOP)/configure/CONFIG
@@ -45,11 +13,9 @@ index 38ed52c9e..8655a5337 100644
INC += dbLoadTemplate.h INC += dbLoadTemplate.h
INC += dbtoolsIocRegister.h INC += dbtoolsIocRegister.h
diff --git a/src/dbtools/msi.c b/src/dbtools/msi.c diff -ruN ../3.14/src/dbtools/msi.c ./src/dbtools/msi.c
new file mode 100644 --- ../3.14/src/dbtools/msi.c 1970-01-01 01:00:00.000000000 +0100
index 000000000..525d4f25b +++ ./src/dbtools/msi.c 2013-05-13 19:00:43.000000000 +0200
--- /dev/null
+++ b/src/dbtools/msi.c
@@ -0,0 +1,798 @@ @@ -0,0 +1,798 @@
+/*************************************************************************\ +/*************************************************************************\
+* Copyright (c) 2002 The University of Chicago, as Operator of Argonne +* Copyright (c) 2002 The University of Chicago, as Operator of Argonne

View File

@@ -28,8 +28,6 @@ install:
init: init:
# Set autocrlf to make batch files work # Set autocrlf to make batch files work
- git config --global core.autocrlf true - 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) # Set clone depth (do not fetch complete history)
clone_depth: 50 clone_depth: 50
@@ -41,7 +39,6 @@ skip_commits:
- 'templates/*' - 'templates/*'
- '**/*.html' - '**/*.html'
- '**/*.md' - '**/*.md'
- '.travis.yml'
#---------------------------------# #---------------------------------#
# build matrix configuration # # build matrix configuration #
@@ -51,9 +48,6 @@ skip_commits:
# are executed sequentially, each one taking 10-15 minutes. # 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.) # 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 # Build Configurations: dll/static, regular/debug
configuration: configuration:
- dynamic - dynamic
@@ -68,8 +62,8 @@ environment:
matrix: matrix:
- CMP: vs2019 - CMP: vs2019
SET: test00
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
SET: test00
- CMP: mingw - CMP: mingw
- CMP: vs2019 - CMP: vs2019
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
@@ -135,8 +129,9 @@ on_finish:
## note that you will need to connect within the usual build timeout limit (60 minutes) ## 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 ## so you may want to adjust the build matrix above to just build the one of interest
# to print the RDP connection info # print the connection info
# uncomment the appropriate line in the init: section above #init:
# - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
# block a failed build (until the watchdog barks) # block a failed build (until the watchdog barks)
#on_failure: #on_failure:

View File

@@ -17,9 +17,6 @@ skip_commits:
- 'templates/*' - 'templates/*'
- '**/*.html' - '**/*.html'
- '**/*.md' - '**/*.md'
- '.travis.yml'
image: Visual Studio 2019
# Build Configurations: dll/static, regular/debug # Build Configurations: dll/static, regular/debug
configuration: configuration:
@@ -35,8 +32,10 @@ environment:
matrix: matrix:
- CMP: vs2019 - CMP: vs2019
BASE: 7.0 BASE: 7.0
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
- CMP: vs2019 - CMP: vs2019
BASE: 3.15 BASE: 3.15
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
# Platform: processor architecture # Platform: processor architecture
platform: platform:

View File

@@ -53,16 +53,3 @@
6. Push your changes and check 6. Push your changes and check
[ci.appveyor.com](https://ci.appveyor.com/) for your build results. [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.

View File

@@ -56,7 +56,7 @@ ciscriptsdir = os.path.abspath(os.path.dirname(sys.argv[0]))
if os.path.basename(ciscriptsdir) == 'appveyor': if os.path.basename(ciscriptsdir) == 'appveyor':
ciscriptsdir = ciscriptsdir.rstrip(os.pathsep+'appveyor') ciscriptsdir = ciscriptsdir.rstrip(os.pathsep+'appveyor')
if 'BASE' in os.environ and os.environ['BASE'] == 'SELF': if 'BASE' not in os.environ or os.environ['BASE'] == 'SELF':
building_base = True building_base = True
places['EPICS_BASE'] = '.' places['EPICS_BASE'] = '.'
else: else:
@@ -81,9 +81,6 @@ isbase314 = False
silent_dep_builds = True silent_dep_builds = True
def host_info(): 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('{0}Python setup{1}'.format(ANSI_CYAN, ANSI_RESET))
print(sys.version) print(sys.version)
print('PYTHONPATH') print('PYTHONPATH')
@@ -330,7 +327,7 @@ def add_dependency(dep):
if 'BASE_3_14=YES' in f.read(): if 'BASE_3_14=YES' in f.read():
print('Adding MSI 1.7 to {0}'.format(place)) print('Adding MSI 1.7 to {0}'.format(place))
sys.stdout.flush() sys.stdout.flush()
sp.check_call(['patch', '-p1', '-i', os.path.join(ciscriptsdir, 'add-msi-to-314.patch')], sp.check_call(['patch', '-p0', '-i', os.path.join(ciscriptsdir, 'add-msi-to-314.patch')],
cwd=place) cwd=place)
else: else:
# force including RELEASE.local for non-base modules by overwriting their configure/RELEASE # force including RELEASE.local for non-base modules by overwriting their configure/RELEASE
@@ -540,7 +537,7 @@ def build(args):
def test(args): def test(args):
setup_for_build(args) setup_for_build(args)
print('{0}Running the main module tests{1}'.format(ANSI_YELLOW, ANSI_RESET)) print('{0}Running the main module tests{1}'.format(ANSI_YELLOW, ANSI_RESET))
call_make(['tapfiles']) call_make(['tapfiles'], parallel=0)
call_make(['test-results'], parallel=0, silent=True) call_make(['test-results'], parallel=0, silent=True)
def doExec(args): def doExec(args):

View File

@@ -9,9 +9,6 @@ DB += dbExample2.db
DB += dbSubExample.db DB += dbSubExample.db
DB += user.substitutions DB += user.substitutions
# Host-side expansion of substitutions file with MSI
DB += dbExample3.db
# If <anyname>.db template is not named <anyname>*.template add # If <anyname>.db template is not named <anyname>*.template add
# <anyname>_TEMPLATE = <templatename> # <anyname>_TEMPLATE = <templatename>

View File

@@ -1,8 +0,0 @@
# Example host-side substitutions file
file dbExample2.db {
pattern { user, no, scan }
{ "ralph", 4, "1 second" }
{ "ralph", 5, "2 second" }
{ "ralph", 6, "5 second" }
}

View File

@@ -53,8 +53,7 @@ script:
# SET source setup file # SET source setup file
# ADD_MODULES extra modules (for a specific job) # ADD_MODULES extra modules (for a specific job)
# EXTRA content will be added to make command line # EXTRA content will be added to make command line
# EXTRA1..5 additional arguments for the make command # (embedded quotes must be escaped as \\\")
# (one argument per variable)
# STATIC set to YES for static build (default: NO) # STATIC set to YES for static build (default: NO)
# TEST set to NO to skip running the tests (default: YES) # TEST set to NO to skip running the tests (default: YES)
# VV set to make build scripts verbose (default: unset) # VV set to make build scripts verbose (default: unset)

View File

@@ -6,36 +6,20 @@ set -e
CACHEDIR=${CACHEDIR:-${HOME}/.cache} CACHEDIR=${CACHEDIR:-${HOME}/.cache}
if [ "$BASE" = "SELF" ] eval $(grep "EPICS_BASE=" ${CACHEDIR}/RELEASE.local)
then
EPICS_BASE=$CURDIR
else
eval $(grep "EPICS_BASE=" ${CACHEDIR}/RELEASE.local)
fi
export EPICS_BASE 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/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) [ -z "$EPICS_HOST_ARCH" -a -f $EPICS_BASE/startup/EpicsHostArch.pl ] && EPICS_HOST_ARCH=$(perl $EPICS_BASE/startup/EpicsHostArch.pl)
export EPICS_HOST_ARCH export EPICS_HOST_ARCH
# Base 3.15 doesn't have -qemu target architecture and needs an extra define [ -z "$EXTRA" ] && make -j2 || make -j2 "$EXTRA"
[ -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 ret=0
if [ "$TEST" != "NO" ] if [ "$TEST" != "NO" ]
then then
make -j2 tapfiles || ret=$? make tapfiles || ret=$?
make -sk test-results make -sk test-results
fi fi

View File

@@ -71,8 +71,7 @@ then
mod_uc=${mod^^} mod_uc=${mod^^}
eval add_dependency $mod_uc \${${mod_uc}:=master} eval add_dependency $mod_uc \${${mod_uc}:=master}
done done
[ -d ./configure ] && target=./configure/RELEASE.local || target=./RELEASE.local [ -e ./configure ] && cp ${CACHEDIR}/RELEASE.local ./configure/RELEASE.local
cp ${CACHEDIR}/RELEASE.local $target
fold_end check.out.dependencies fold_end check.out.dependencies
fi fi
@@ -184,10 +183,8 @@ EOF
RTEMS_VERSION=$RTEMS RTEMS_VERSION=$RTEMS
RTEMS_BASE=$HOME/.rtems RTEMS_BASE=$HOME/.rtems
EOF 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 cat << EOF >> $EPICS_BASE/configure/CONFIG_SITE
CROSS_COMPILER_TARGET_ARCHS += RTEMS-pc386$QEMU CROSS_COMPILER_TARGET_ARCHS += RTEMS-pc386-qemu
EOF EOF
fi fi

View File

@@ -185,7 +185,7 @@ add_dependency() {
if [ -e ${versionfile} ] && grep -q "BASE_3_14=YES" ${versionfile} if [ -e ${versionfile} ] && grep -q "BASE_3_14=YES" ${versionfile}
then then
echo "Adding MSI 1.7 to $CACHEDIR/$dirname-$TAG" echo "Adding MSI 1.7 to $CACHEDIR/$dirname-$TAG"
( cd $dirname-$TAG; patch -p1 < $SCRIPTDIR/../add-msi-to-314.patch ) ( cd $dirname-$TAG; patch -p0 < $SCRIPTDIR/../add-msi-to-314.patch )
fi fi
else else
# fix non-base modules that do not include the .local files in configure/RELEASE # fix non-base modules that do not include the .local files in configure/RELEASE