Merge 3.16 into core/master and related master branches

This commit is contained in:
Andrew Johnson
2018-02-05 13:59:12 -06:00
11 changed files with 93 additions and 24 deletions

2
README
View File

@ -20,7 +20,7 @@ Additional information about EPICS including mailing list
archives and subscription instructions, documentation and
training materials, additional components, links to other
websites etc. is available on the EPICS home page at
http://www.aps.anl.gov/epics/
https://epics.anl.gov/
$Format:%cD$
$Format:%H$

View File

@ -170,6 +170,10 @@ COMPILE.ctdt = $(CC) -c $(CPPFLAGS) $(CFLAGS_ctdt) $(INCLUDES) $(SOURCE_FLAG)
VXCPPFLAGS = $(filter-out $(OP_SYS_INCLUDE_CPPFLAGS),$(CPPFLAGS))
PREPROCESS.cpp = $(CPP) $(VXCPPFLAGS) $(INCLUDES) $< > $@
#--------------------------------------------------
# Use LEDLIB for command-line editing
COMMANDLINE_LIBRARY = LEDLIB
#--------------------------------------------------
# Allow site overrides
-include $(CONFIG)/os/CONFIG_SITE.Common.vxWorksCommon

View File

@ -136,6 +136,16 @@ STATIC_LDLIBS_NO=
STATIC_LDFLAGS=
RANLIB=
#
# option needed for parallel builds with Visual Studio 2015 onward
#
# -FS Force Synchronous PDB Writes
ifneq ($(VisualStudioVersion),)
OPT_CXXFLAGS_NO += -FS
OPT_CFLAGS_NO += -FS
endif
#
# add -profile here to run the ms profiler
# -LTCG whole program optimization

View File

@ -98,7 +98,7 @@
base/configure/os/CONFIG_SITE.Common.vxWorksCommon file or in one of its
target-specific overrides.</P>
<P>Consult the <a href="http://www.aps.anl.gov/epics/base/vxWorks6.php">vxWorks
<P>Consult the <a href="https://epics.anl.gov/base/vxWorks6.php">vxWorks
6.x</a> EPICS web pages and the vxWorks documentation for information
about configuring your vxWorks operating system for use with EPICS.</P>
@ -128,7 +128,7 @@
<H3><A NAME="0_0_8"> Documentation</A></H3>
<BLOCKQUOTE>EPICS documentation is available through the
<a href="http://www.aps.anl.gov/epics/">EPICS website</a> at Argonne.
<a href="https://epics.anl.gov/">EPICS website</a> at Argonne.
<P>Release specific documentation can also be found in the base/documentation
directory of the distribution.</BLOCKQUOTE>

View File

@ -7,7 +7,8 @@
</head>
<body lang="en">
<h1 align="center">EPICS Release 7.0.1.1</h1>
<h1 align="center">EPICS Release 7.0.2.x</h1>
<!-- Insert new items immediately below this template ...
@ -17,6 +18,8 @@
-->
<h1 align="center">EPICS Release 7.0.1.1</h1>
<h3>Changed SIML failure behavior</h3>
<p>A failure when fetching the simulation mode through <tt>SIML</tt> will not
@ -83,6 +86,61 @@ be happy to try and answer them!</p>
<!-- Insert inherited items immediately below here ... -->
<h3>Restore use of ledlib for VxWorks command editing</h3>
<p>The epicsReadline refactoring work described below unfortunately disabled the
VxWorks implementation of the osdReadline.c API that uses ledlib for command
editing and history. This functionality has now been restored, see Launchpad
<a href="https://bugs.launchpad.net/bugs/1741578">bug #1741578</a>.</p>
<h3>Constant link types</h3>
<p>Constant links can now hold 64-bit integer values, either as scalars or
arrays. Only base 10 is supported by the JSON parser though, the JSON standard
doesn't allow for hexadecimal numbers.</p>
<h3>Upgraded the YAJL JSON Library</h3>
<p>The third-party YAJL library that has been included in libCom for several
years has been upgraded to version 2.1.0 and several bugs fixed. This has an
updated API, requiring any code that uses it to parse its own JSON files to be
modified to match. The changes are mainly that it uses <tt>size_t</tt> instead
<tt>unsigned int</tt> for string lengths, but it also uses <tt>long long</tt>
instead of <tt>long</tt> for JSON integer values, which was the main motivation
for the upgrade.</p>
<p>The self-tests that YAJL comes with have been imported and are now run as an
EPICS Unit Test program, and the JSON syntax accepted by the parser was extended
to permit trailing commas in both arrays and maps. The difference between the
old and new YAJL APIs can be detected at compile time by looking for the macro
<tt>EPICS_YAJL_VERSION</tt> which is defined in the yajl_common.h header file
along with a brief description of the API changes.</p>
<h3>Timestamp support for the calc link type</h3>
<p>A new optional parameter can be given when specifying a calc JSON link. The
<tt>time</tt> parameter is a string containing a single letter <tt>A..L</tt>
that selects one of the input links to be used for the timestamp of calculation
if requested. The timestamp will be fetched atomically with the value from the
chosen input link (providing that input link type supports the readLocked()
method).</p>
<h3>Silence errors from puts to constant link types</h3>
<p>A soft channel output record with the OUT link unset uses the CONSTANT link
type. The new link type code was causing some soft channel device supports to
return an error status from the write method of that link type, which would
cause a ca_put() operation to such a record to generate an exception. This has
been silenced by giving the constant link types a dummy putValue method. A new
test program has been added to prevent regressions of this behaviour.</p>
<h3>RSRV expanding large buffer causes crash</h3>
<p>In the 3.16.1 release a crash can occur in the IOC's RSRV server when a large
array is made even larger; the previous array buffer was not being released
correctly. See Launchpad
<a href="https://bugs.launchpad.net/epics-base/+bug/1706703">bug
#1706703</a>.</p>
<h2 align="center">Changes made between 3.16.0.1 and 3.16.1</h2>

View File

@ -5,8 +5,6 @@
# in file LICENSE that is included with this distribution.
#*************************************************************************
use Carp;
# Copy directories and files from a template
sub copyTree {
@ -15,7 +13,7 @@ sub copyTree {
# $Rtextsubs contains substitutions for file content.
opendir my $FILES, $src
or croak "opendir failed while copying $src: $!\n";
or die "opendir failed while copying $src: $!\n";
my @entries = readdir $FILES;
closedir $FILES;
@ -36,9 +34,9 @@ sub copyTree {
print "." unless $opt_d;
copyFile($srcName, $dstName, $Rtextsubs);
} elsif (-l $srcName) {
carp "\nSoft link in template, ignored:\n\t$srcName\n";
warn "\nSoft link in template, ignored:\n\t$srcName\n";
} else {
carp "\nUnknown file type in template, ignored:\n\t$srcName\n";
warn "\nUnknown file type in template, ignored:\n\t$srcName\n";
}
}
}
@ -46,11 +44,11 @@ sub copyTree {
sub copyDir {
my ($src, $dst, $Rnamesubs, $Rtextsubs) = @_;
if (-e $dst && ! -d $dst) {
carp "\nTarget exists but is not a directory, skipping:\n\t$dst\n";
warn "\nTarget exists but is not a directory, skipping:\n\t$dst\n";
return;
}
print "Creating directory '$dst'\n" if $opt_d;
mkdir $dst, 0777 or croak "Can't create $dst: $!\n"
mkdir $dst, 0777 or die "Can't create $dst: $!\n"
unless -d $dst;
copyTree($src, $dst, $Rnamesubs, $Rtextsubs);
}
@ -61,7 +59,7 @@ sub copyFile {
print "Creating file '$dst'\n" if $opt_d;
open(my $SRC, '<', $src)
and open(my $DST, '>', $dst)
or croak "$! copying $src to $dst\n";
or die "$! copying $src to $dst\n";
while (<$SRC>) {
# Substitute any @VARS@ in the text
s{@(\w+?)@}

View File

@ -5,8 +5,6 @@
# in file LICENSE that is included with this distribution.
#*************************************************************************
use Carp;
#
# Parse all relevent configure/RELEASE* files and includes
#
@ -51,7 +49,7 @@ sub readRelease {
"discovered in $file\n";
}
open(my $IN, '<', $file) or croak "Can't open $file: $!\n";
open(my $IN, '<', $file) or die "Can't open $file: $!\n";
$Ractive->{$file}++;
while (<$IN>) {
chomp;
@ -79,7 +77,7 @@ sub readRelease {
if (-e $path) {
&readRelease($path, $Rmacros, $Rapps, $Ractive);
} elsif ($op eq "include") {
carp "EPICS/Release.pm: Include file '$path' not found\n";
warn "EPICS/Release.pm: Include file '$path' not found\n";
}
}
$Ractive->{$file}--;
@ -101,17 +99,18 @@ sub expandMacros {
}
#
# Expand all (possibly nested) macros in dictionary
# Expand all (possibly nested) macros in a dictionary
#
sub expandRelease {
my ($Rmacros) = @_;
my ($Rmacros, $warn) = @_;
# $Rmacros is a reference to a hash
$warn = '' unless defined $warn;
while (my ($macro, $val) = each %$Rmacros) {
while (my ($pre,$var,$post) = $val =~ m/ (.*) \$\( (\w+) \) (.*) /x) {
carp "EPICS/Release.pm: Undefined macro \$($var) used\n"
warn "EPICS/Release.pm: Undefined macro \$($var) used $warn\n"
unless exists $Rmacros->{$var};
croak "EPICS/Release.pm: Circular definition of macro $macro\n"
die "EPICS/Release.pm: Circular definition of macro $var $warn\n"
if $macro eq $var;
$val = $pre . $Rmacros->{$var} . $post;
$Rmacros->{$macro} = $val;

View File

@ -237,7 +237,7 @@ sub checkRelease {
my @order = ();
my $relfile = "$path/configure/RELEASE";
readReleaseFiles($relfile, \%check, \@order, $arch);
expandRelease(\%check);
expandRelease(\%check, "while checking module\n\t$app = $path");
delete $check{TOP};
delete $check{EPICS_HOST_ARCH};