Skip to content

Commit

Permalink
Merge pull request #7 from chrschroeder/upstream
Browse files Browse the repository at this point in the history
New upstream version 2.1.1.0
  • Loading branch information
aderbenev authored Nov 8, 2019
2 parents 08d67c4 + 1b90bfc commit 0515567
Show file tree
Hide file tree
Showing 42 changed files with 2,135 additions and 439 deletions.
24 changes: 24 additions & 0 deletions .ci/travis-build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/usr/bin/env sh
set -e -x

[ "$BASE" ] || exit 0

make -j2 $EXTRA

[ "$TEST" = "NO" ] && exit 0

# Configure pyepics and IOC wrapper
eval `grep -m 1 "EPICS_BASE[[:space:]]*=" configure/RELEASE.local`
EPICS_HOST_ARCH=`sh $EPICS_BASE/startup/EpicsHostArch`
export PYEPICS_LIBCA=$EPICS_BASE/lib/$EPICS_HOST_ARCH/libca.so
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$EPICS_BASE/lib/$EPICS_HOST_ARCH
export PATH=$PATH:$EPICS_BASE/bin/$EPICS_HOST_ARCH

ls -al $EPICS_BASE/lib/$EPICS_HOST_ARCH

echo Check pyepics install
python -c "import epics; print(epics.__version__)"
python -c "import epics.ca; print(epics.ca.find_libca())"

make tapfiles
find . -name '*.tap' -print0 | xargs -0 -n1 prove -e cat -f
107 changes: 107 additions & 0 deletions .ci/travis-prepare.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
#!/usr/bin/env sh
set -e -x

# Build Base for use with https://travis-ci.org
#
# Set environment variables
# BASE= 3.14 3.15 3.16 7.0 (VCS branch)
# STATIC= YES / default (shared)

die() {
echo "$1" >&2
exit 1
}

[ "$BASE" ] || exit 0

if [ "$STATIC" = "YES" ]
then
BASEDIR=base-$BASE-static
else
BASEDIR=base-$BASE-shared
fi

CDIR="$HOME/.cache/$BASEDIR"
EPICS_BASE="$CDIR/base"

if [ ! -e "$CDIR/built" ]
then
install -d "$CDIR"
( cd "$CDIR" && git clone --depth 10 --branch $BASE https://github.com/epics-base/epics-base.git base )

EPICS_HOST_ARCH=`sh $EPICS_BASE/startup/EpicsHostArch`

case "$STATIC" in
YES)
cat << EOF >> "$EPICS_BASE/configure/CONFIG_SITE"
STATIC_BUILD=YES
EOF
;;
*) ;;
esac

case "$CMPLR" in
clang)
echo "Host compiler is clang"
cat << EOF >> "$EPICS_BASE/configure/os/CONFIG_SITE.Common.$EPICS_HOST_ARCH"
GNU = NO
CMPLR_CLASS = clang
CC = clang
CCC = clang++
EOF

# hack
sed -i -e 's/CMPLR_CLASS = gcc/CMPLR_CLASS = clang/' "$EPICS_BASE/configure/CONFIG.gnuCommon"

clang --version
;;
*)
echo "Host compiler is default"
gcc --version
;;
esac

make -C "$EPICS_BASE" -j2

cat << EOF > configure/RELEASE.local
EPICS_BASE=$EPICS_BASE
EOF

case "$BASE" in
*3.14*)
( cd "$CDIR" && wget https://www.aps.anl.gov/epics/download/extensions/extensionsTop_20120904.tar.gz && tar -xzf extensionsTop_*.tar.gz)

( cd "$CDIR" && wget https://www.aps.anl.gov/epics/download/extensions/msi1-7.tar.gz && tar -xzf msi1-7.tar.gz && mv msi1-7 extensions/src/msi)

cat << EOF > "$CDIR/extensions/configure/RELEASE"
EPICS_BASE=$EPICS_BASE
EPICS_EXTENSIONS=\$(TOP)
EOF

( cd "$CDIR/extensions" && make )

cp "$CDIR/extensions/bin/$EPICS_HOST_ARCH/msi" "$EPICS_BASE/bin/$EPICS_HOST_ARCH/"

echo 'MSI:=$(EPICS_BASE)/bin/$(EPICS_HOST_ARCH)/msi' >> "$EPICS_BASE/configure/CONFIG_SITE"
;;

*7.*)
( cd "$CDIR" && git clone --depth 10 https://github.com/epics-modules/pcas.git pcas )
cat << EOF > "$CDIR/pcas/configure/RELEASE.local"
EPICS_BASE=$EPICS_BASE
EOF

make -C "$CDIR/pcas" -j2

cat << EOF >> configure/RELEASE.local
PCAS=$CDIR/pcas
EOF
;;

*) ;;
esac

touch "$CDIR/built"
fi

EPICS_HOST_ARCH=`sh $EPICS_BASE/startup/EpicsHostArch`
15 changes: 15 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
bin/
include/
lib/
db/
dbd/
configure/*.local
html/
**/O.*
envPaths
QtC-*
*.orig

# Gateway generated scriptlets
gateway.killer
gateway.restart
26 changes: 26 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
sudo: required
dist: trusty
language: cpp

env:
- BASE=7.0
- BASE=7.0 STATIC=YES
- BASE=3.16
- BASE=3.16 STATIC=YES
- BASE=3.16 STATIC=YES EXTRA=CMD_CXXFLAGS=-std=c++11
- BASE=3.16 CMPLR=clang
- BASE=3.15
- BASE=3.15 STATIC=YES
- BASE=3.14
- BASE=3.14 STATIC=YES

before_install:
- sudo apt-get update -qq
- sudo apt-get install python-nose

install:
- sh .ci/travis-prepare.sh
- sudo pip install pyepics nose-tap

script:
- sh .ci/travis-build.sh
24 changes: 24 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Channel Access PV Gateway
[![Build Status](https://travis-ci.org/epics-extensions/ca-gateway.svg?branch=master)](https://travis-ci.org/epics-extensions/ca-gateway)

The [EPICS](https://epics-controls.org) Channel Access PV Gateway is both a
Channel Access server and Channel Access client.
It provides a means for many clients to access a process variable,
while making only one connection to the server that owns the process variable.

It also provides additional access security beyond that on the server.
It thus protects critical servers while providing possibly restricted access
to needed process variables.

The Gateway typically runs on a machine with multiple network cards,
and the clients and the server may be on different subnets.

## Continuous Integration

The CI jobs for CA Gateway are provided by
[Travis](https://travis-ci.org/epics-extensions/ca-gateway).

## Links

More details are available on the
[CA Gateway main web page](http://www.aps.anl.gov/epics/extensions/gateway/).
158 changes: 158 additions & 0 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
CA Gateway Release Notes
========================

## 2.1.2 (not released yet)
[View diff](https://github.com/epics-extensions/ca-gateway/compare/R2-1-1-0...master)

* Ehhh...

## 2.1.1 (17 Oct 2018)
[View diff](https://github.com/epics-extensions/ca-gateway/compare/R2-1-0-0...R2-1-1-0)

* Clean up release notes (that you are reading right now)
* Improve test readme
* Improve test cleanup on failure (shut down gateway processes)
* Lots of changes and fixing for CI setup
* Build changes necessary for EPICS 7 (unbundled PCAS module)

## 2.1.0 (11 May 2016)
[View diff](https://github.com/epics-extensions/ca-gateway/compare/R2-0-6-0...R2-1-0-0)

* Full support for DBE_PROPERTY event flag.
* Add unit test framework (as embedded TOP).
* Add tests for event flag support, including DBE_PROPERTY.
* Fix many small bugs and compiler warnings.

## 2.0.6.0 (30 Jan 2015)
[View diff](https://github.com/epics-extensions/ca-gateway/compare/R2-0-5-1...R2-0-6-0)

* Changes source structure to be a standard EPICS module.
* Add Jenkins job for CloudBees CI.
* Fix crashes when forwarding empty arrays (bug lp:1415938).
* Use variable length arrays for CAC (IOC side) subscriptions.

## 2.0.5.1 (09 Dec 2014)
[View diff](https://github.com/epics-extensions/ca-gateway/compare/R2-0-5-0...R2-0-5-1)

* Reenabled Windows builds MSVC 32 and 64, MinGW 32 (EPICS 3.15 only).
* Support for PCRE version 3 (API changes).

## 2.0.5.0 (03 Dec 2014)
[View diff](https://github.com/epics-extensions/ca-gateway/compare/R2-0-4-0...R2-0-5-0)

* Merged FRIB branch that adds proper CAPutLog logging.
* Supports building against EPICS Base 3.15.1.
* Windows build has been broken for a long time - without complaints.

## 2.0.4.0 (17 Sep 2009)
[View diff](https://github.com/epics-extensions/ca-gateway/compare/R2-0-3-0...R2-0-4-0)

* Added new writeNotify interface.
I updated the PCAS/casdef.h to add a new backwards compatible virtual
writeNotify interface in casChannel and casPV. This is important
for the GW so that it can execute the proper form of ca_put or
ca_put_callback in its implementation of write, or writeNotify,
and so I did also install the necessary changes in the GW so that
it will benefit from the new writeNotify interface. _- Jeff Hill_
* Added a build optional heartbeat pv, <suffix>:heartbeat, with val 0.

## 2.0.3.0 (14 Jan 2008)
[View diff](https://github.com/epics-extensions/ca-gateway/compare/R2-0-2-1...R2-0-3-0)

* Restored gateway default behavior. Now if "-archive" is not used, Gateway
will post log events along with value change events. _- Gasper Jansa_

## 2.0.2.1 (02 Aug 2007)
[View diff](https://github.com/epics-extensions/ca-gateway/compare/R2-0-2-0...R2-0-2-1)

* Bug fix to the conditional compilation for the "negated regexp" feature.
_- Dirk Zimoch_

## 2.0.2.0 (01 Aug 2007)
[View diff](https://github.com/epics-extensions/ca-gateway/compare/R2-0-1-0...R2-0-2-0)

* New option to use Perl regexp instead of GNU regexp, controlled with a
compiler switch defined in the Makefile. _- Dirk Zimoch_
* New options to use DENY FROM and negated regular expressions to prevent
loops in reverse gateways while allowing access to the internal PVs.
These require USE_NEG_REGEXP=YES and USE_DENY_FROM=YES in Makefile. _- Dirk Zimoch_
* Added docs subdirectory containing all Gateway docs.

## 2.0.1.0 = 2.0.0.3 (10 Jul 2007)
[View diff](https://github.com/epics-extensions/ca-gateway/compare/R2-0-0-2...R2-0-1-0)

Changes from Dirk Zimoch

* The two main changes in behavior ("don't use cached values in caget"
and "create separate archive monitor for archivers") are controlled by
command line switches: -no_cache and -archive.
* The option to use "DENY FROM" in the configuration is chosen by a
compiler switch in the Makefile.
* Other changes fix bugs (enable behavior that matches the documentation
or the expectation) without any switch:
* events are now forwared to alarm handler clients only when STAT or
SEVR changes
* bugfix: beacons were not sent to clients when -cip option was used.
* bugfix: enums appeared frozen and analog values were rounded when
alarm handler client is connected
* bugfix: gateway hung (using 100% CPU time) then arrays >
EPICS_CA_MAX_ARRAY_BYTES were read.

## 2.0.0.2 (22 May 2007)
[View diff](https://github.com/epics-extensions/ca-gateway/compare/R2-0-0-1...R2-0-0-2)

* Removed pre R3.14 Makefiles.

## 2.0.0.1 (28 Feb 2007)
[View diff](https://github.com/epics-extensions/ca-gateway/compare/R2-0-0-0...R2-0-0-1)

* Fixed return code for gddAppType acks.

## Original changelog entries dating back to 1998

Wed Feb 18 09:10:14 CST 1998
Upon USR1 signal gateway now executes commands specified in a
gateway.command file.
Incorporated latest changes to access security in gateAsCa.cc

Tue Apr 21 22:38:59 CDT 1998
Real name is now used for access security pattern matching.
Fixed PV Pattern Report
New gdd api changes

Tue Dec 22 12:53:15 CST 1998
Tagged current CVS version as Gateway0_1 before commit.
Current version has ENUM hack changes.
Fixed bug with removing items from pv_con_list.
Core dumps, but infrequently.
Has been in production use for several weeks.
Will be tagged Gateway0_2 after commit.

Tue Dec 22 13:15:08 CST 1998
This version has much debugging printout (inside #if's).
Changed gateVc::remove -> vcRemove and add -> vcAdd.
Eliminates warnings about hiding private ancestor functions on Unix.
(Warning is invalid.)
Now compiles with no warnings for COMPILR=STRICT on Solaris.
Made changes to speed it up:
Put #if around ca_add_fd_registration.
Also eliminates calls to ca_pend in fdCB.
Put #if DEBUG_PEND around calls to checkEvent, which calls ca_pend.
Changed mainLoop to call fdManager::process with delay=0.
Put explicit ca_poll in the mainLoop.
All these changes eliminate calls to poll() which was predominant
time user. Speed up under load is as much as a factor of 5. Under
no load it runs continuously, however, rather than sleeping in
poll().
Added #if NODEBUG around calls to Gateway debug routines (for speed).
Changed ca_pend(GATE_REALLY_SMALL) to ca_poll for aesthetic reasons.
Added timeStamp routine to gateServer.cc.
Added line with PID and time stamp to log file on startup.
Changed freopen for stderr to use "a" so it doesn't overwrite the log.
Incorporated Ralph Lange changes by hand.
Changed clock_gettime to osiTime to avoid unresolved reference.
Fixed his gateAs::readPvList to eliminate core dump.
Made other minor fixes.
Did minor cleanup as noticed problems.
This version appears to work but has debugging (mostly turned off).
Will be tagged Gateway0_3 after commit.
Loading

0 comments on commit 0515567

Please sign in to comment.