Merge 3.16 into core/master and related master branches
This commit is contained in:
2
README
2
README
@ -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$
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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>
|
||||
|
Submodule modules/ca updated: 524ceee2c8...eb683aa8ad
Submodule modules/database updated: 610f008529...a4f072238a
Submodule modules/libcom updated: 8ce980f663...dd15a270bc
@ -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+?)@}
|
||||
|
@ -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;
|
||||
|
@ -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};
|
||||
|
||||
|
Reference in New Issue
Block a user