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.

@@ -128,7 +128,7 @@

Documentation

EPICS documentation is available through the - EPICS website at Argonne. + EPICS website at Argonne.

Release specific documentation can also be found in the base/documentation directory of the distribution.

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

A failure when fetching the simulation mode through SIML will not @@ -83,6 +86,61 @@ be happy to try and answer them!

+

Restore use of ledlib for VxWorks command editing

+ +

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 link types

+ +

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.

+ +

Upgraded the YAJL JSON Library

+ +

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.

+ +

Timestamp support for the calc link type

+ +

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).

+ +

Silence errors from puts to constant link types

+ +

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.

+ +

RSRV expanding large buffer causes crash

+ +

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.

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};