Previously, there was no way to clear AMSG when setting a no-alarm
status: it kept the last error message, and it is strange to have a
record that has no alarm while showing an error. With this change, the
NAMSG field is treated the same as NSTA and NSEV: they are cleared when
their content is moved to STAT, SEVR, and AMSG.
RTEMS 6 has moved the legacy network support out of the main repo
to a 3rd party library. This change adds support for using the
legacy networking stack with EPICS in a backwards compatible way.
A BSP can be built with libbsd or the legacy stack and by default
EPICS 7 assumes libbsd.
This patch also fixes the LDFLAGS adding the RTEMS LDFLAGS imported
from Makefile.inc.
Save/restore dbAddr::pfield around callbacks to
avoid corruption if CB forgets to restore.
Need to peak at dbChannel.h during libCom build.
So generate dbCoreAPI.h early, and add extra
-I to source location when compiling dbTrapWrite.c
This enables us to use toctrees, which informs Sphinx on the global
documentation structure, and removes warnings about not-included
documents.
The old ComponentReference.pod was kept, in order to not break the old
HTML output, but the new Markdown file is used as source for the
generated markdown files in doc/
Adds the build target 'sphinx' for manual Sphinx runs, and
installs the output of that under $(INSTALL_HTML)/readthedocs
Adjusted some Sphinx config parameters and titles.
Markdown can be generated from .pod and .dbd.pod files.
Markdown will be generated and installed by "make inc".
Co-authored-by: Timo Korhonen <timo.korhonen@ess.eu>
Co-authored-by: Andrew Johnson <anj@anl.gov>
Besides being deprecated in C++11 and removed in C++17, the intended use
case for this was always wrong, since std::unexpected() is called by the
C++ runtime when a function throws an exception that was not specified
in its "dynamic exception specification", which is different from an
exception thrown by user code which wasn't caught [1,2]. Using abort()
keeps the same behavior, but with the intended semantics.
We don't use std::abort() to simplify backwards compatibility.
[1] https://github.com/epics-base/epics-base/issues/343
[2] https://en.cppreference.com/w/cpp/error/unexpected
When the epics-base directory is used as a git submodule, or checked out
in multiple places as a git worktree, ".git" is not a directory, but a
file which points to the location of the git directory. In that case,
the git tools can still be used to determine the version information.
Without this change, the version string is determined from the build
date/time, which has multiple issues:
- it doesn't include the full information about the build environment
- it is not reproducible
- it leads to unnecessary rebuilds, since a lot of files depend on
"epicsVCS.h"