diff --git a/README b/README index 5985e79a5..942d00cb3 100644 --- a/README +++ b/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$ diff --git a/configure/os/CONFIG.Common.vxWorksCommon b/configure/os/CONFIG.Common.vxWorksCommon index e7be9fae0..50f626959 100644 --- a/configure/os/CONFIG.Common.vxWorksCommon +++ b/configure/os/CONFIG.Common.vxWorksCommon @@ -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 diff --git a/configure/os/CONFIG.win32-x86.win32-x86 b/configure/os/CONFIG.win32-x86.win32-x86 index 29c15d3be..615332f19 100644 --- a/configure/os/CONFIG.win32-x86.win32-x86 +++ b/configure/os/CONFIG.win32-x86.win32-x86 @@ -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 diff --git a/documentation/README.html b/documentation/README.html index e793ce75d..d14124a7d 100644 --- a/documentation/README.html +++ b/documentation/README.html @@ -98,7 +98,7 @@ base/configure/os/CONFIG_SITE.Common.vxWorksCommon file or in one of its target-specific overrides.
-Consult the vxWorks
+ Consult the vxWorks
6.x EPICS web pages and the vxWorks documentation for information
about configuring your vxWorks operating system for use with EPICS. Release specific documentation can also be found in the base/documentation
directory of the distribution. A failure when fetching the simulation mode through SIML will not
@@ -83,6 +86,61 @@ be happy to try and answer them! 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
+bug #1741578. 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. 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 size_t instead
+unsigned int for string lengths, but it also uses long long
+instead of long for JSON integer values, which was the main motivation
+for the upgrade. 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
+EPICS_YAJL_VERSION which is defined in the yajl_common.h header file
+along with a brief description of the API changes. A new optional parameter can be given when specifying a calc JSON link. The
+time parameter is a string containing a single letter A..L
+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). 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. 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
+bug
+#1706703. Documentation
EPICS documentation is available through the
- EPICS website at Argonne.
+ EPICS website at Argonne.
diff --git a/documentation/RELEASE_NOTES.html b/documentation/RELEASE_NOTES.html
index 3f84f3019..d798b50b8 100644
--- a/documentation/RELEASE_NOTES.html
+++ b/documentation/RELEASE_NOTES.html
@@ -7,7 +7,8 @@
-EPICS Release 7.0.1.1
+
+EPICS Release 7.0.2.x
+EPICS Release 7.0.1.1
+
Changed SIML failure behavior
Restore use of ledlib for VxWorks command editing
+
+Constant link types
+
+Upgraded the YAJL JSON Library
+
+Timestamp support for the calc link type
+
+Silence errors from puts to constant link types
+
+RSRV expanding large buffer causes crash
+
+Changes made between 3.16.0.1 and 3.16.1
diff --git a/modules/ca b/modules/ca
index 524ceee2c..eb683aa8a 160000
--- a/modules/ca
+++ b/modules/ca
@@ -1 +1 @@
-Subproject commit 524ceee2c8ce8f8446c46d93b5a467edd14b8cc5
+Subproject commit eb683aa8ad09715b21c2f07dcd029ae652f64496
diff --git a/modules/database b/modules/database
index 610f00852..a4f072238 160000
--- a/modules/database
+++ b/modules/database
@@ -1 +1 @@
-Subproject commit 610f008529059c7fc1e35896ff0f678b7adcfa6d
+Subproject commit a4f072238a8124aed987a2d9d74909a15bf7a064
diff --git a/modules/libcom b/modules/libcom
index 8ce980f66..dd15a270b 160000
--- a/modules/libcom
+++ b/modules/libcom
@@ -1 +1 @@
-Subproject commit 8ce980f6637d85fb1f5a139bab404269734b31bc
+Subproject commit dd15a270bc61d847c37a52c73c720d9a1584c570
diff --git a/src/tools/EPICS/Copy.pm b/src/tools/EPICS/Copy.pm
index d61800e0e..e1ef2a54e 100644
--- a/src/tools/EPICS/Copy.pm
+++ b/src/tools/EPICS/Copy.pm
@@ -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+?)@}
diff --git a/src/tools/EPICS/Release.pm b/src/tools/EPICS/Release.pm
index 98f18514b..6ae0dbd9a 100644
--- a/src/tools/EPICS/Release.pm
+++ b/src/tools/EPICS/Release.pm
@@ -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;
diff --git a/src/tools/convertRelease.pl b/src/tools/convertRelease.pl
index 556abd826..50ab5d17b 100644
--- a/src/tools/convertRelease.pl
+++ b/src/tools/convertRelease.pl
@@ -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};