Compare commits
127 Commits
PSI-7.0.9.
...
PSI-7.0
| Author | SHA1 | Date | |
|---|---|---|---|
| fdb0912b1e | |||
| b5f73d8200 | |||
| 1d835c0922 | |||
|
|
d3e414cbec | ||
|
|
84d4627987 | ||
|
|
839e7f4959 | ||
|
|
d724461f1c | ||
|
|
c52800fd4a | ||
|
|
782d6bb441 | ||
| 5f3a4a01cc | |||
| e84a3c203a | |||
| e4c06e9b93 | |||
| 76a89b8cee | |||
| 9748cbd394 | |||
| 422182d672 | |||
| 030973c6e4 | |||
| f08fcfdb39 | |||
|
|
59b595f8cf | ||
| 80c708fdeb | |||
|
|
b2ed8bb98d | ||
| 3d95dece6b | |||
| 7fa82f103b | |||
| 6cd4b24e8a | |||
| f572a0f068 | |||
| 1ebf9ad567 | |||
| 4a5d3ddf85 | |||
| 3a8f5fa9b1 | |||
|
|
71e4635d34 | ||
|
|
bbc4c6358e | ||
| 12c56ffc95 | |||
| 2bd148ab37 | |||
| 209e1f9587 | |||
| 6d85a36397 | |||
| 85347172c6 | |||
| ef2260f433 | |||
| 22347af170 | |||
| c811ce218e | |||
|
|
623409466d | ||
|
|
d31568fe9a | ||
|
|
bf11a0c31c | ||
|
|
24d422e6c3 | ||
|
|
a49df15d0b | ||
|
|
3f24e1800e | ||
|
|
93d6137d23 | ||
|
|
cabbc44bf9 | ||
|
|
7d6ef32502 | ||
|
|
644bf7dfef | ||
|
|
87f5e4b699 | ||
|
|
2e3938da6f | ||
|
|
4b6a6ddc7a | ||
|
|
c2140ad0f3 | ||
|
|
186106cd33 | ||
|
|
baa4cb5495 | ||
|
|
7ae3e4c2df | ||
|
|
01360b2a69 | ||
|
|
491d532170 | ||
|
|
cc98ef8696 | ||
|
|
1910478297 | ||
|
|
214b5d935b | ||
| 90a727c901 | |||
|
|
4f547230c4 | ||
|
|
e5618326c9 | ||
|
|
45e3e58a1f | ||
|
|
1f4b39cd08 | ||
|
|
9b532540bf | ||
|
|
46ecf5d25c | ||
|
|
b893ae080e | ||
|
|
84b4a5f63c | ||
|
|
4acae4c602 | ||
|
|
0916cf985c | ||
|
|
862272d666 | ||
|
|
b308be3273 | ||
| 6c2cbe0101 | |||
| bef86189d5 | |||
| 88bfd6f378 | |||
|
|
e08d7310b9 | ||
|
|
d58d1420b8 | ||
|
|
e12269c302 | ||
|
|
8311a5b360 | ||
|
|
6e6cac09e1 | ||
|
|
3f382f6b68 | ||
|
|
a46bd5ae88 | ||
|
|
098b3968d6 | ||
|
|
0ab956b123 | ||
| 8041c7827e | |||
|
|
a2e01c2929 | ||
|
|
280aa0b399 | ||
|
|
9af7ff3b3f | ||
|
|
aba6309604 | ||
|
|
cb0688c850 | ||
| 54ca2cb595 | |||
| f5a5e7c5f7 | |||
| 47c263112f | |||
| a781896e28 | |||
| 3600924f99 | |||
| 232d9bec10 | |||
|
|
271f20faa0 | ||
|
|
d763541341 | ||
|
|
eff502217c | ||
|
|
bd8c35d8e7 | ||
|
|
acd1aef2a0 | ||
|
|
d00ce1bc0a | ||
|
|
4c4f2f075f | ||
|
|
1cea3f1eed | ||
|
|
7444936a22 | ||
|
|
edd99a903b | ||
|
|
e4fbd83c93 | ||
|
|
2e26ec09a6 | ||
|
|
9ce921f4fd | ||
|
|
187801c2e6 | ||
| c3c492d2cd | |||
| bff913e4d1 | |||
| 4c40b9f4bb | |||
| 640ced41c3 | |||
| 5c77c842a4 | |||
| 79624b72e5 | |||
|
|
15ed1643cd | ||
| 007df69726 | |||
|
|
5ae9cc6536 | ||
|
|
ff1fb82ef2 | ||
|
|
f4e1019ebe | ||
|
|
f29137b985 | ||
|
|
38c11d3afe | ||
|
|
dc776b547a | ||
|
|
4dd01aa9b6 | ||
|
|
d724779abf | ||
|
|
26cb0dcbdc |
@@ -82,8 +82,9 @@ matrix:
|
||||
#---------------------------------#
|
||||
|
||||
install:
|
||||
- cmd: set PATH=C:\Python38-x64;%PATH%
|
||||
- cmd: git submodule update --init --recursive
|
||||
- cmd: pip install git+https://github.com/mdavidsaver/ci-core-dumper#egg=ci-core-dumper
|
||||
- cmd: python -m pip install git+https://github.com/mdavidsaver/ci-core-dumper#egg=ci-core-dumper
|
||||
- cmd: python .ci/cue.py prepare
|
||||
|
||||
build_script:
|
||||
@@ -121,10 +122,4 @@ on_failure:
|
||||
#---------------------------------#
|
||||
|
||||
notifications:
|
||||
|
||||
- provider: Email
|
||||
to:
|
||||
- core-talk@aps.anl.gov
|
||||
on_build_success: false
|
||||
|
||||
- provider: GitHubPullRequest
|
||||
|
||||
@@ -89,8 +89,9 @@ matrix:
|
||||
#---------------------------------#
|
||||
|
||||
install:
|
||||
- cmd: set PATH=C:\Python38-x64;%PATH%
|
||||
- cmd: git submodule update --init --recursive
|
||||
- cmd: pip install git+https://github.com/mdavidsaver/ci-core-dumper#egg=ci-core-dumper
|
||||
- cmd: python -m pip install git+https://github.com/mdavidsaver/ci-core-dumper#egg=ci-core-dumper
|
||||
- cmd: python .ci/cue.py prepare
|
||||
|
||||
build_script:
|
||||
@@ -128,10 +129,4 @@ on_failure:
|
||||
#---------------------------------#
|
||||
|
||||
notifications:
|
||||
|
||||
- provider: Email
|
||||
to:
|
||||
- core-talk@aps.anl.gov
|
||||
on_build_success: false
|
||||
|
||||
- provider: GitHubPullRequest
|
||||
|
||||
2
.ci
2
.ci
Submodule .ci updated: 0e93b70855...261f218e09
168
.github/workflows/ci-scripts-build.yml
vendored
168
.github/workflows/ci-scripts-build.yml
vendored
@@ -50,9 +50,9 @@ jobs:
|
||||
matrix:
|
||||
# Job names also name artifacts, character limitations apply
|
||||
include:
|
||||
- os: ubuntu-24.04
|
||||
- name: "Ub-24 gcc c++20 Werror"
|
||||
os: ubuntu-24.04
|
||||
cmp: gcc
|
||||
name: "Ub-24 gcc-13 c++20 Werror"
|
||||
# Turn all warnings into errors,
|
||||
# except for those we could not fix (yet).
|
||||
# Remove respective -Wno-error=... flag once it is fixed.
|
||||
@@ -73,127 +73,141 @@ jobs:
|
||||
-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3'
|
||||
CMD_LDFLAGS=-Wl,-z,relro"
|
||||
|
||||
- os: ubuntu-22.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
cross: "windows-x64-mingw"
|
||||
name: "Ub-22 gcc + MinGW"
|
||||
|
||||
- os: ubuntu-22.04
|
||||
cmp: gcc
|
||||
configuration: static
|
||||
cross: "windows-x64-mingw"
|
||||
name: "Ub-22 gcc + MinGW, static"
|
||||
|
||||
- os: ubuntu-22.04
|
||||
- name: "Ub-22 gcc C++11, static"
|
||||
os: ubuntu-22.04
|
||||
cmp: gcc
|
||||
configuration: static
|
||||
extra: "CMD_CXXFLAGS=-std=c++11"
|
||||
name: "Ub-22 gcc C++11, static"
|
||||
|
||||
- os: ubuntu-22.04
|
||||
- name: "Ub-22 gcc u-char"
|
||||
os: ubuntu-22.04
|
||||
cmp: gcc
|
||||
configuration: static
|
||||
extra: "CMD_CFLAGS=-funsigned-char CMD_CXXFLAGS=-funsigned-char"
|
||||
name: "Ub-22 gcc unsigned char"
|
||||
|
||||
- os: ubuntu-22.04
|
||||
- name: "Ub-22 clang"
|
||||
os: ubuntu-22.04
|
||||
cmp: clang
|
||||
configuration: default
|
||||
name: "Ub-22 clang"
|
||||
|
||||
- os: ubuntu-22.04
|
||||
- name: "Ub-22 clang C++11"
|
||||
os: ubuntu-22.04
|
||||
cmp: clang
|
||||
configuration: default
|
||||
extra: "CMD_CXXFLAGS=-std=c++11"
|
||||
name: "Ub-22 clang C++11"
|
||||
|
||||
- os: ubuntu-22.04
|
||||
- name: "MacOS clang"
|
||||
os: macos-latest
|
||||
cmp: clang
|
||||
configuration: default
|
||||
|
||||
# Cross builds
|
||||
|
||||
- name: "Ub gcc + linux-aarch64"
|
||||
os: ubuntu-latest
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
cross: "linux-aarch64"
|
||||
|
||||
- name: "Ub gcc + linux-arm gnueabi"
|
||||
os: ubuntu-latest
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
cross: "linux-arm@arm-linux-gnueabi"
|
||||
|
||||
- name: "Ub gcc + linux-arm gnueabihf"
|
||||
os: ubuntu-latest
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
cross: "linux-arm@arm-linux-gnueabihf"
|
||||
|
||||
- name: "Ub-22 gcc + MinGW"
|
||||
os: ubuntu-22.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
cross: "windows-x64-mingw"
|
||||
|
||||
- name: "Ub-22 gcc + MinGW, static"
|
||||
os: ubuntu-22.04
|
||||
cmp: gcc
|
||||
configuration: static
|
||||
cross: "windows-x64-mingw"
|
||||
|
||||
- name: "Ub-22 gcc + RT-4.9 pc386"
|
||||
os: ubuntu-22.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
cross: "RTEMS-pc386-qemu@4.9"
|
||||
|
||||
- name: "Ub-22 gcc + RT-4.10 pc386"
|
||||
os: ubuntu-22.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
cross: "RTEMS-pc386-qemu@4.10"
|
||||
test: NO
|
||||
|
||||
- name: "Ub-22 gcc + RT-5.1 pc686"
|
||||
os: ubuntu-22.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
cross: "RTEMS-pc686-qemu@5"
|
||||
name: "Ub-22 gcc + RT-5.1 pc686"
|
||||
|
||||
- os: ubuntu-22.04
|
||||
- name: "Ub-22 gcc + RT-5.1 beatnik"
|
||||
os: ubuntu-22.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
cross: "RTEMS-beatnik@5"
|
||||
test: NO
|
||||
name: "Ub-22 gcc + RT-5.1 beatnik"
|
||||
|
||||
- os: ubuntu-22.04
|
||||
- name: "Ub-22 gcc + RT-5.1 xilinx_zynq_a9_qemu"
|
||||
os: ubuntu-22.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
cross: "RTEMS-xilinx_zynq_a9_qemu@5"
|
||||
test: NO
|
||||
name: "Ub-22 gcc + RT-5.1 xilinx_zynq_a9_qemu"
|
||||
|
||||
- os: ubuntu-22.04
|
||||
- name: "Ub-22 gcc + RT-5.1 uC5282"
|
||||
os: ubuntu-22.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
cross: "RTEMS-uC5282@5"
|
||||
test: NO
|
||||
name: "Ub-22 gcc + RT-5.1 uC5282"
|
||||
|
||||
- os: ubuntu-22.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
name: "Ub-22 gcc + RT-4.10"
|
||||
cross: "RTEMS-pc386-qemu@4.10"
|
||||
test: NO
|
||||
# Windows builds
|
||||
|
||||
- os: ubuntu-22.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
name: "Ub-22 gcc + RT-4.9"
|
||||
cross: "RTEMS-pc386-qemu@4.9"
|
||||
|
||||
- os: macos-latest
|
||||
cmp: clang
|
||||
configuration: default
|
||||
name: "MacOS clang"
|
||||
|
||||
- os: windows-2022
|
||||
- name: "Win-22 MSC-22"
|
||||
os: windows-2022
|
||||
cmp: vs2022
|
||||
configuration: debug
|
||||
name: "Win-22 MSC-22"
|
||||
extra: "CMD_CXXFLAGS=-analysis"
|
||||
extra: "CMD_CXXFLAGS=-analyze"
|
||||
|
||||
- os: windows-2022
|
||||
- name: "Win-22 MSC-22, static"
|
||||
os: windows-2022
|
||||
cmp: vs2022
|
||||
configuration: static-debug
|
||||
name: "Win-22 MSC-22, static"
|
||||
extra: "CMD_CXXFLAGS=-analysis"
|
||||
extra: "CMD_CXXFLAGS=-analyze"
|
||||
|
||||
- os: windows-2022
|
||||
- name: "Win-22 MSC-22, debug"
|
||||
os: windows-2022
|
||||
cmp: vs2022
|
||||
configuration: debug
|
||||
name: "Win-22 MSC-22, debug"
|
||||
|
||||
- os: windows-2022
|
||||
- name: "Win-22 MSC-22 c++14, debug"
|
||||
os: windows-2022
|
||||
cmp: vs2022
|
||||
configuration: debug
|
||||
extra: "CMD_CXXFLAGS='-analyze -Zc:__cplusplus -std:c++14'"
|
||||
|
||||
- name: "Win-22 MSC-22 c++17, debug"
|
||||
os: windows-2022
|
||||
cmp: vs2022
|
||||
configuration: debug
|
||||
extra: "CMD_CXXFLAGS='-analyze -Zc:__cplusplus -std:c++17'"
|
||||
|
||||
- name: "Win-22 mingw"
|
||||
os: windows-2022
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
name: "Win-22 mingw"
|
||||
|
||||
# Cross builds
|
||||
|
||||
- os: ubuntu-latest
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
name: "Cross linux-aarch64"
|
||||
cross: linux-aarch64
|
||||
|
||||
- os: ubuntu-latest
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
name: "Cross linux-arm gnueabi"
|
||||
cross: linux-arm@arm-linux-gnueabi
|
||||
|
||||
- os: ubuntu-latest
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
name: "Cross linux-arm gnueabihf"
|
||||
cross: linux-arm@arm-linux-gnueabihf
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
13
.gitignore
vendored
13
.gitignore
vendored
@@ -1,3 +1,5 @@
|
||||
# Before adding patterns here, please read the gitignore
|
||||
# documentation at https://git-scm.com/docs/gitignore
|
||||
/cfg/
|
||||
/bin/
|
||||
/lib/
|
||||
@@ -11,14 +13,13 @@
|
||||
/modules/RELEASE.*.local
|
||||
/modules/Makefile.local
|
||||
O.*/
|
||||
/QtC-*
|
||||
/.qtc_*
|
||||
/.vscode/
|
||||
*.orig
|
||||
*.log
|
||||
.*.swp
|
||||
.DS_Store
|
||||
.iocsh_history
|
||||
|
||||
# Common files generated by other tools
|
||||
.DS_Store
|
||||
|
||||
# Files created by rpmbuild
|
||||
RPMS
|
||||
SRPMS
|
||||
BUILDROOT
|
||||
|
||||
17
.gitmodules
vendored
17
.gitmodules
vendored
@@ -1,32 +1,31 @@
|
||||
[submodule "modules/pvData"]
|
||||
path = modules/pvData
|
||||
# url = https://github.com/epics-base/pvDataCPP
|
||||
url = ./pvData.git
|
||||
url = https://gitea.psi.ch/epics/pvData
|
||||
branch = master
|
||||
[submodule "modules/pvAccess"]
|
||||
path = modules/pvAccess
|
||||
url = https://github.com/epics-base/pvAccessCPP
|
||||
url = https://gitea.psi.ch/epics/pvAccess
|
||||
branch = master
|
||||
[submodule "modules/normativeTypes"]
|
||||
path = modules/normativeTypes
|
||||
url = https://github.com/epics-base/normativeTypesCPP
|
||||
url = https://gitea.psi.ch/epics/normativeTypes
|
||||
branch = master
|
||||
[submodule "modules/pvaClient"]
|
||||
path = modules/pvaClient
|
||||
url = https://github.com/epics-base/pvaClientCPP
|
||||
url = https://gitea.psi.ch/epics/pvaClient
|
||||
branch = master
|
||||
[submodule "modules/pvDatabase"]
|
||||
path = modules/pvDatabase
|
||||
url = https://github.com/epics-base/pvDatabaseCPP
|
||||
url = https://gitea.psi.ch/epics/pvDatabase
|
||||
branch = master
|
||||
[submodule "modules/pva2pva"]
|
||||
path = modules/pva2pva
|
||||
url = https://github.com/epics-base/pva2pva
|
||||
url = https://gitea.psi.ch/epics/pva2pva
|
||||
branch = master
|
||||
[submodule ".ci"]
|
||||
path = .ci
|
||||
url = https://github.com/epics-base/ci-scripts
|
||||
url = https://gitea.psi.ch/epics/ci-scripts
|
||||
branch = master
|
||||
[submodule "modules/pcas"]
|
||||
path = modules/pcas
|
||||
url = https://github.com/epics-modules/pcas
|
||||
url = https://gitea.psi.ch/epics/pcas
|
||||
|
||||
10
README
10
README
@@ -13,15 +13,7 @@ this distribution.
|
||||
|
||||
---------------------------------------------------------
|
||||
|
||||
Installation and release information can be found in the
|
||||
various files in the documentation subdirectory.
|
||||
|
||||
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
|
||||
https://epics.anl.gov/
|
||||
For more information, see the README.md file.
|
||||
|
||||
$Format:%cD$
|
||||
$Format:%H$
|
||||
https://code.launchpad.net/epics-base
|
||||
|
||||
64
README.md
Normal file
64
README.md
Normal file
@@ -0,0 +1,64 @@
|
||||
|
||||
# EPICS Base
|
||||
|
||||
EPICS (Experimental Physics and Industrial Control System) is a set of software
|
||||
tools and applications which provide a software infrastructure for use in
|
||||
building distributed control systems to operate devices such as Particle
|
||||
Accelerators, Large Experiments and major Telescopes. EPICS Base is the central
|
||||
core of the control system toolkit. More details can be found at the
|
||||
[About page of the official website](https://epics-controls.org/about-epics/)
|
||||
|
||||
## Links
|
||||
|
||||
- [Official Website](https://epics-controls.org/)
|
||||
- [Original Website](https://epics.anl.gov/)
|
||||
- [Repository](https://github.com/epics-base/epics-base)
|
||||
|
||||
### Documentation
|
||||
|
||||
- [Documentation](https://docs.epics-controls.org/en/latest/)
|
||||
- [Documentation Repository](https://github.com/epics-docs/epics-docs)
|
||||
|
||||
### Community Communication
|
||||
|
||||
- [Tech-Talk Mailing List](https://epics.anl.gov/tech-talk/)
|
||||
- [Matrix Rooms](https://matrix.to/#/#epics:epics-controls.org)
|
||||
- [News](https://epics-controls.org/news-and-events/)
|
||||
|
||||
## Quick Install
|
||||
|
||||
Download a release from the
|
||||
[Downloads page](https://epics-controls.org/resources-and-support/base/downloads)
|
||||
and unpack it. Inside the unpacked folder run:
|
||||
|
||||
```bash
|
||||
make
|
||||
```
|
||||
|
||||
For more information on how to install on your system see the
|
||||
[Installation page](https://docs.epics-controls.org/en/latest/getting-started/installation.html)
|
||||
of the documentation.
|
||||
|
||||
### Quick run a softIOC
|
||||
|
||||
After building, you can run an example soft-IOC (Input/Output Controller)
|
||||
which runs a Channel Access server.
|
||||
|
||||
```bash
|
||||
./bin/*/softIoc -x first
|
||||
```
|
||||
|
||||
Run the `dbl` command to list the records it provides:
|
||||
|
||||
```bash
|
||||
epics> dbl
|
||||
first:BaseVersion
|
||||
first:exit
|
||||
epics>
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
EPICS Base is distributed subject to a Software License
|
||||
Agreement found in the file [LICENSE](./LICENSE) that is included with
|
||||
this distribution.
|
||||
@@ -65,7 +65,7 @@ LOADABLE_SHRLIB_LDFLAGS = -shared -fPIC -Wl,-h$@
|
||||
|
||||
GNU_LDLIBS_YES = -lgcc
|
||||
|
||||
# Use compiler flags to generate header dependancies files
|
||||
# Use compiler flags to generate header dependencies files
|
||||
HDEPENDS_METHOD = COMP
|
||||
HDEPENDS_COMPFLAGS = -MM -MF $@
|
||||
|
||||
|
||||
@@ -17,14 +17,14 @@ ARCMD = $(MSVC_PREFIX)lib$(MSVC_SUFFIX) -nologo -verbose -out:$@ $(LIB_OPT_LDFLA
|
||||
CC = cl
|
||||
|
||||
# OS vendor c preprocessor
|
||||
CPP = $(CC) -nologo -C -E
|
||||
CPP = $(CC) -C -E
|
||||
|
||||
# Configure OS vendor C++ compiler
|
||||
#
|
||||
# -EHsc - generate code for exceptions
|
||||
# -GR - generate code for run time type identification
|
||||
#
|
||||
CCC = $(CC) -EHsc -GR
|
||||
CCC = $(CC) -EHsc -GR -Zc:__cplusplus
|
||||
|
||||
# Override CONFIG.gnuCommon settings for cross builds.
|
||||
GNU = NO
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
# These rules apply to these Makefile-variables:
|
||||
# USR_CFLAGS C flags
|
||||
# USR_CXXFLAGS C++ flags
|
||||
# USR_CPPFLAGS c preprocesser flags
|
||||
# USR_CPPFLAGS c preprocessor flags
|
||||
# SRCS source files for building libraries and prods
|
||||
# USR_SRCS source files for building libraries and prods
|
||||
# PROD_SRCS source files for building prods
|
||||
|
||||
@@ -48,7 +48,7 @@ EPICS_VERSION = 7
|
||||
EPICS_REVISION = 0
|
||||
|
||||
# EPICS_MODIFICATION must be a number >=0 and <256
|
||||
EPICS_MODIFICATION = 9
|
||||
EPICS_MODIFICATION = 10
|
||||
|
||||
# EPICS_PATCH_LEVEL must be a number (win32 resource file requirement)
|
||||
# Not included in the official EPICS version number if zero
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# Version number for the Channel Access API and shared library
|
||||
|
||||
EPICS_CA_MAJOR_VERSION = 4
|
||||
EPICS_CA_MINOR_VERSION = 14
|
||||
EPICS_CA_MAINTENANCE_VERSION = 6
|
||||
EPICS_CA_MINOR_VERSION = 15
|
||||
EPICS_CA_MAINTENANCE_VERSION = 1
|
||||
|
||||
# Development flag, set to zero for release versions
|
||||
|
||||
|
||||
@@ -147,7 +147,7 @@ CMPLR_SRC_DIRS += . $(foreach dir, .. $(SRC_DIRS), \
|
||||
ALL_SRC_DIRS = $(CMPLR_SRC_DIRS) $(OS_SRC_DIRS) $(GENERIC_SRC_DIRS)
|
||||
|
||||
#--------------------------------------------------
|
||||
# Directory for OS independant build created files
|
||||
# Directory for OS independent build created files
|
||||
COMMON_DIR = ../O.Common
|
||||
|
||||
# compile line include directories
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Version number for the database APIs and shared library
|
||||
|
||||
EPICS_DATABASE_MAJOR_VERSION = 3
|
||||
EPICS_DATABASE_MINOR_VERSION = 24
|
||||
EPICS_DATABASE_MINOR_VERSION = 25
|
||||
EPICS_DATABASE_MAINTENANCE_VERSION = 1
|
||||
|
||||
# Development flag, set to zero for release versions
|
||||
|
||||
@@ -53,3 +53,5 @@ EPICS_IOC_IGNORE_SERVERS=""
|
||||
# EPICS_IOC_LOG_PORT Log server port number etc.
|
||||
EPICS_IOC_LOG_PORT=7004
|
||||
|
||||
# Posix priority scheduling
|
||||
EPICS_ALLOW_POSIX_THREAD_PRIORITY_SCHEDULING=YES
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Version number for the libcom APIs and shared library
|
||||
|
||||
EPICS_LIBCOM_MAJOR_VERSION = 3
|
||||
EPICS_LIBCOM_MINOR_VERSION = 24
|
||||
EPICS_LIBCOM_MINOR_VERSION = 25
|
||||
EPICS_LIBCOM_MAINTENANCE_VERSION = 1
|
||||
|
||||
# Development flag, set to zero for release versions
|
||||
|
||||
@@ -55,7 +55,7 @@ DBD += $(foreach type, $(CROSS_TARGET_OS_TYPES), $(DBD_$(type)))
|
||||
# DBD_solaris += abcSolaris.dbd
|
||||
#
|
||||
# ---------------------------------------------------
|
||||
# DBD concatination files
|
||||
# DBD concatenation files
|
||||
|
||||
COMMON_DBDCATS += $(addprefix $(COMMON_DIR)/,$(DBDCAT))
|
||||
DBDCAT_SOURCES += $(foreach file, $($*_DBD), $(DBDCAT_SOURCE) )
|
||||
@@ -194,7 +194,7 @@ ifneq (,$(strip $(DBDDEPENDS_FILES)))
|
||||
endif
|
||||
|
||||
#---------------------------------------------------------------
|
||||
# build dependancies, clean rule
|
||||
# build dependencies, clean rule
|
||||
|
||||
inc: $(COMMON_INC) $(INSTALL_INC) $(COMMON_DBDS) $(COMMON_DBDCATS) \
|
||||
$(INSTALL_DBDS) $(INSTALL_DBD_INSTALLS) $(COMMON_DOCS)
|
||||
|
||||
@@ -32,7 +32,7 @@ ifneq ($(RELEASE_CFG_DIR_RULES),)
|
||||
include $(RELEASE_CFG_DIR_RULES)
|
||||
endif
|
||||
|
||||
# Create EPICS_HOST_ARCH dependancies for GNU make -j option.
|
||||
# Create EPICS_HOST_ARCH dependencies for GNU make -j option.
|
||||
# Needed in dirs where EPICS_HOST_ARCH build creates a tool used in
|
||||
# cross arch builds
|
||||
|
||||
|
||||
@@ -214,7 +214,7 @@ $(sort $(DIRECTORY_TARGETS)):
|
||||
$(MKDIR) $@
|
||||
|
||||
# Install LIB_INSTALLS libraries before linking executables
|
||||
$(TESTPRODNAME) $(PRODNAME): | $(INSTALL_LIB_INSTALLS)
|
||||
$(TESTPRODNAME) $(PRODNAME): | $(INSTALL_LIB_INSTALLS) $(TESTSHRLIBNAME)
|
||||
|
||||
# Install built libraries too, unless Makefile says to wait
|
||||
ifneq ($(DELAY_INSTALL_LIBS),YES)
|
||||
|
||||
@@ -44,7 +44,7 @@ $(foreach dir, $(DIRS), $(dir)$(DIVIDER)install): \
|
||||
rebuild: $(foreach dir, $(DIRS), $(dir)$(DIVIDER)install)
|
||||
endif
|
||||
|
||||
# Create directory dependancies lines for GNU make -j option
|
||||
# Create directory dependencies lines for GNU make -j option
|
||||
# Only works with GNU make 3.81 or later (uses eval function)
|
||||
define DEP_template1
|
||||
$(1): $$($(1)_DEPEND_DIRS)
|
||||
|
||||
@@ -82,7 +82,7 @@ INC = file.h
|
||||
# Platform specific files can also be put in
|
||||
# separate os/OS_CLASS directories!
|
||||
#
|
||||
# For almost every file the seach order is:
|
||||
# For almost every file the search order is:
|
||||
# ./os/OS_CLASS
|
||||
# ./os/generic
|
||||
# .
|
||||
@@ -136,11 +136,11 @@ PROD_SRCS = ppp.c qqq.c
|
||||
a_file_SRCS = aa.c bb.c
|
||||
|
||||
#
|
||||
# EPICS libs needed to link PROD, TESTPROD and sharable library
|
||||
# EPICS libs needed to link PROD, TESTPROD and shareable library
|
||||
#
|
||||
# note that DLL_LIBS (the libraries needed to link a shareable
|
||||
# library) is created by default from the PROD/SYS libraries specified
|
||||
# below minus the name of the sharable library (LIBRARY)
|
||||
# below minus the name of the shareable library (LIBRARY)
|
||||
#
|
||||
#
|
||||
# ---------- libraries for a specific product pppp
|
||||
@@ -169,7 +169,7 @@ USR_LIBS_DEFAULT = foolib
|
||||
USR_LIBS_WIN32 = -nil-
|
||||
foolib_DIR = $(FOO_LIB)
|
||||
|
||||
# system libs needed to link PROD, TESTPROD and sharable library
|
||||
# system libs needed to link PROD, TESTPROD and shareable library
|
||||
#
|
||||
# ---------- system libraries for all products
|
||||
# for all systems:
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
# Include definitions common to linux pentium targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-x86_64
|
||||
|
||||
BUILD_CLASS = HOST
|
||||
|
||||
TOOLSET_LOCATION = /opt/rh
|
||||
TOOLSET = devtoolset-12
|
||||
STD_CXXFLAGS = -std=c++20
|
||||
@@ -1,3 +0,0 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-clang
|
||||
|
||||
BUILD_CLASS = HOST
|
||||
@@ -4,8 +4,9 @@ include $(CONFIG)/os/CONFIG.Common.linux-x86_64
|
||||
BUILD_CLASS = HOST
|
||||
|
||||
TOOLSET_LOCATION = /opt/rh
|
||||
TOOLSET = gcc-toolset-12
|
||||
TOOLSET = gcc-toolset-15
|
||||
STD_CXXFLAGS = -std=c++20
|
||||
STD_CFLAGS = -std=c17
|
||||
|
||||
# Fix bug in gcc-toolset-11 calling the old assembler
|
||||
ifneq ($(filter %-11,$(TOOLSET)),)
|
||||
|
||||
@@ -4,8 +4,9 @@ include $(CONFIG)/os/CONFIG.Common.linux-x86_64
|
||||
BUILD_CLASS = HOST
|
||||
|
||||
TOOLSET_LOCATION = /opt/rh
|
||||
TOOLSET = gcc-toolset-12
|
||||
TOOLSET = gcc-toolset-15
|
||||
STD_CXXFLAGS = -std=c++20
|
||||
STD_CFLAGS = -std=c17
|
||||
|
||||
# Fix bug in gcc-toolset-11 calling the old assembler
|
||||
ifneq ($(filter %-11,$(TOOLSET)),)
|
||||
|
||||
@@ -9,7 +9,7 @@ RTEMS_BSP = beagleboneblack
|
||||
RTEMS_TARGET_CPU = arm
|
||||
GNU_TARGET = arm-rtems
|
||||
|
||||
OP_SYS_LDLIBS += -Wl,--gc-sections
|
||||
OP_SYS_LDFLAGS += -Wl,--gc-sections
|
||||
ARCH_DEP_LDFLAGS = -L$(RTEMS_BASE)/$(GNU_TARGET)$(RTEMS_VERSION)/beagleboneblack/lib/
|
||||
|
||||
include $(CONFIG)/os/CONFIG.Common.RTEMS
|
||||
|
||||
@@ -20,7 +20,6 @@ define MUNCH_CMD
|
||||
$(RTEMS_TOOLS)/bin/$(OBJCOPY_FOR_TARGET) -O binary -R .comment -S $< $@
|
||||
endef
|
||||
|
||||
OP_SYS_LDLIBS += -Wl,--gc-sections
|
||||
ARCH_DEP_LDFLAGS = -L$(RTEMS_BASE)/$(GNU_TARGET)$(RTEMS_VERSION)/pc686/lib/
|
||||
|
||||
include $(CONFIG)/os/CONFIG.Common.RTEMS
|
||||
@@ -28,7 +27,7 @@ include $(CONFIG)/os/CONFIG.Common.RTEMS
|
||||
#
|
||||
# Put text segment where it will work with etherboot
|
||||
#
|
||||
OP_SYS_LDFLAGS += -Wl,-Ttext,0x100000
|
||||
OP_SYS_LDFLAGS += -Wl,-Ttext,0x100000 -Wl,--gc-sections
|
||||
|
||||
|
||||
# This check must appear after the above include
|
||||
|
||||
@@ -20,7 +20,7 @@ ARCH_DEP_CFLAGS += -DRTEMS_HAS_ALTIVEC
|
||||
#ARCH_DEP_CFLAGS += -I$(RTEMS_BASE)/powerpc-rtems5/qoriq_e500/lib/include
|
||||
|
||||
#OP_SYS_LDLIBS += -lbspExt #does not use posix stuff ... want to ignore
|
||||
OP_SYS_LDLIBS += -Wl,--gc-sections
|
||||
OP_SYS_LDFLAGS += -Wl,--gc-sections
|
||||
#ARCH_DEP_LDFLAGS = -mcpu=8540 -meabi -msdata=sysv -mstrict-align -mspe -mabi=spe -mfloat-gprs=double
|
||||
ARCH_DEP_LDFLAGS = -L$(RTEMS_BASE)/$(GNU_TARGET)$(RTEMS_VERSION)/$(RTEMS_BSP)/lib
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ GNU_TARGET = arm-rtems
|
||||
#use dhcp/bootp
|
||||
ARCH_DEP_CFLAGS += -DMY_DO_BOOTP=NULL
|
||||
|
||||
OP_SYS_LDLIBS += -Wl,--gc-sections
|
||||
OP_SYS_LDFLAGS += -Wl,--gc-sections
|
||||
ARCH_DEP_LDFLAGS = -L$(RTEMS_BASE)/$(GNU_TARGET)$(RTEMS_VERSION)/xilinx_zynq_a9_qemu/lib/
|
||||
|
||||
|
||||
|
||||
16
configure/os/CONFIG.Common.RTEMS-xilinx_zynq_microzed
Normal file
16
configure/os/CONFIG.Common.RTEMS-xilinx_zynq_microzed
Normal file
@@ -0,0 +1,16 @@
|
||||
#
|
||||
# CONFIG.Common.RTEMS-xilinx_zynq_microzed
|
||||
# Author: Chris Johns <chris@contemporary.software>
|
||||
#
|
||||
# All RTEMS targets use the same Makefile fragment
|
||||
#
|
||||
#EXE = .elf
|
||||
RTEMS_BSP = xilinx_zynq_microzed
|
||||
RTEMS_TARGET_CPU = arm
|
||||
GNU_TARGET = arm-rtems
|
||||
|
||||
OP_SYS_LDLIBS += -Wl,--gc-sections
|
||||
ARCH_DEP_LDFLAGS = -L$(RTEMS_BASE)/$(GNU_TARGET)$(RTEMS_VERSION)/xilinx_zynq_microzed/lib/
|
||||
|
||||
|
||||
include $(CONFIG)/os/CONFIG.Common.RTEMS
|
||||
@@ -9,7 +9,7 @@ RTEMS_BSP = xilinx_zynq_zedboard
|
||||
RTEMS_TARGET_CPU = arm
|
||||
GNU_TARGET = arm-rtems
|
||||
|
||||
OP_SYS_LDLIBS += -Wl,--gc-sections
|
||||
OP_SYS_LDFLAGS += -Wl,--gc-sections
|
||||
ARCH_DEP_LDFLAGS = -L$(RTEMS_BASE)/$(GNU_TARGET)$(RTEMS_VERSION)/xilinx_zynq_zedboard/lib/
|
||||
|
||||
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc604_long
|
||||
VXWORKS_VERSION = 5.5.1
|
||||
WIND_BASE = /opt/VxWorks/Tornado2.2.1
|
||||
|
||||
#there is a problem with our ccppc and optimization
|
||||
# -O0 works, -O and -O1 and higher are buggy
|
||||
OPT_CFLAGS_YES = -O0
|
||||
OPT_CXXFLAGS_YES = -O0
|
||||
@@ -1,2 +0,0 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc604_long
|
||||
VXWORKS_VERSION = 6.2
|
||||
@@ -1,5 +0,0 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc603_long
|
||||
VXWORKS_VERSION = 6.3
|
||||
|
||||
# Buggy "uninitialized variable" warning produces many false positives
|
||||
ARCH_DEP_CXXFLAGS += -Wno-uninitialized
|
||||
@@ -1,5 +0,0 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc604_long
|
||||
VXWORKS_VERSION = 6.3
|
||||
|
||||
# Buggy "uninitialized variable" warning produces many false positives
|
||||
ARCH_DEP_CXXFLAGS += -Wno-uninitialized
|
||||
@@ -1,5 +0,0 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc604_long
|
||||
VXWORKS_VERSION = 6.4
|
||||
|
||||
# Buggy "uninitialized variable" warning produces many false positives
|
||||
ARCH_DEP_CXXFLAGS += -Wno-uninitialized
|
||||
@@ -1,2 +0,0 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc603_long
|
||||
VXWORKS_VERSION = 6.6
|
||||
@@ -1,2 +0,0 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc604_long
|
||||
VXWORKS_VERSION = 6.6
|
||||
@@ -1,8 +0,0 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc604_long
|
||||
VXWORKS_VERSION = 6.7
|
||||
|
||||
# needed when including memPartLib.h, e.g. through moduleLib.h or loadLib.h
|
||||
ARCH_DEP_CFLAGS += -D_VSB_CONFIG_FILE='<../lib/h/config/vsbConfig.h>'
|
||||
|
||||
# compiler tries to access license server (even though no license isneeded)
|
||||
export LM_LICENSE_FILE=37000@lic-windriver.psi.ch
|
||||
@@ -1,3 +0,0 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc32
|
||||
VXWORKS_VERSION = 6.9
|
||||
#export LD_LIBRARY_PATH=$(LD_LIBRARY_PATH:%=%:)$(WIND_BASE)/lmapi-5.0/$(WIND_HOST_TYPE)/lib
|
||||
@@ -11,13 +11,6 @@ ELDK=/opt/eldk-4.2
|
||||
GNU_TARGET=ppc_4xxFP
|
||||
GNU_DIR=$(ELDK)/usr
|
||||
|
||||
# This cross tool chain is installed in a somehow weired way
|
||||
# Without the following lines it does not work on RHEL7
|
||||
# but it worked on SL6
|
||||
ARCH_DEP_CXXFLAGS += -I $(ELDK)/$(GNU_TARGET)/usr/include/c++/4.2.2
|
||||
ARCH_DEP_CXXFLAGS += -I $(ELDK)/$(GNU_TARGET)/usr/include/c++/4.2.2/powerpc-linux
|
||||
ARCH_DEP_CXXFLAGS += -I $(ELDK)/$(GNU_TARGET)/usr/include/c++/4.2.2/backward
|
||||
|
||||
ARCH_DEP_LDFLAGS += -Wl,-rpath-link,$(ELDK)/$(GNU_TARGET)/lib
|
||||
ARCH_DEP_LDFLAGS += -Wl,-rpath-link,$(ELDK)/$(GNU_TARGET)/usr/lib
|
||||
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
# IOxOS IFC1211 with Freescale QorIQ 2.0 toolchain
|
||||
|
||||
# Include definitions common to all Linux targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linuxCommon
|
||||
|
||||
ARCH_CLASS = ppc
|
||||
|
||||
SDK = fslsdk
|
||||
SDK_DIR = /opt/fsl-qoriq/2.0
|
||||
SDK_HOST_ARCH = $(GNU_HOST_ARCH_64)-$(SDK)-$(GNU_HOST_OS)
|
||||
SDK_TARGET = ppc64e6500-fsl-linux
|
||||
GNU_TARGET = powerpc64-fsl-linux
|
||||
SYSROOT = $(SDK_DIR)/sysroots/$(SDK_TARGET)
|
||||
GNU_DIR = $(SDK_DIR)/sysroots/$(SDK_HOST_ARCH)/usr
|
||||
GNU_BIN = $(GNU_DIR)/bin/$(GNU_TARGET)
|
||||
|
||||
ARCH_DEP_CFLAGS = -mcpu=e6500 -m64 -mhard-float
|
||||
@@ -91,11 +91,6 @@ vpath %.m $(USR_VPATH) $(ALL_SRC_DIRS)
|
||||
%.o: %.m
|
||||
$(COMPILE.c) -c $<
|
||||
|
||||
#--------------------------------------------------
|
||||
# Header dependency file generation
|
||||
#
|
||||
HDEPENDS_METHOD = MKMF
|
||||
|
||||
#--------------------------------------------------
|
||||
# Allow site overrides
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.iosCommon
|
||||
|
||||
@@ -11,6 +11,9 @@ GNU_DIR=/opt/moxa/xscale_be/armv5teb-montavista-linuxeabi
|
||||
|
||||
ARCH_DEP_CFLAGS += -funwind-tables
|
||||
|
||||
# suppress strict alias warnings
|
||||
CODE_CPPFLAGS += -fno-strict-aliasing
|
||||
|
||||
# have no C++11
|
||||
STD_CXXFLAGS =
|
||||
|
||||
|
||||
@@ -9,10 +9,10 @@ ARCH_CLASS = arm
|
||||
GNU_TARGET = arm-linux-gnu
|
||||
|
||||
SYSROOT = /opt/LabVIEW-RT-19.5.1/arm/sysroots/armv7a-vfp-neon-nilrt-linux-gnueabi
|
||||
GNU_BIN = /opt/RHEL7/bin
|
||||
GNU_DIR = /opt/RHEL7
|
||||
|
||||
# Needed on RHEL9:
|
||||
export LD_LIBRARY_PATH := $(LD_LIBRARY_PATH:%=%:)/usr/$$LIB:/opt/RHEL7/$$LIB
|
||||
export LD_LIBRARY_PATH := $(LD_LIBRARY_PATH:%=%:)/usr/$$LIB:$(GNU_DIR)/$$LIB
|
||||
|
||||
ARCH_DEP_CPPFLAGS += -march=armv7-a -mthumb-interwork -mfloat-abi=softfp -mfpu=neon
|
||||
ARCH_DEP_CXXFLAGS += -I=/usr/include/c++/4.7.2/arm-nilrt-linux-gnueabi
|
||||
|
||||
@@ -145,12 +145,6 @@ CODE_CXXFLAGS = $(CODE_CXXFLAGS_$(VXWORKS_MAJOR_VERSION))
|
||||
SHRLIB_CFLAGS =
|
||||
SHRLIB_LDFLAGS =
|
||||
|
||||
#--------------------------------------------------
|
||||
# Don't use gcc 2.x for dependency generation
|
||||
|
||||
HDEPENDS_METHOD_2 = MKMF
|
||||
HDEPENDS_METHOD = $(firstword $(HDEPENDS_METHOD_$(VX_GNU_MAJOR_VERSION)) COMP)
|
||||
|
||||
#--------------------------------------------------
|
||||
# osithead use default stack, YES or NO override
|
||||
OSITHREAD_USE_DEFAULT_STACK = NO
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
# XILINX Zynq with Yocto 2.1 / Petalinux toolchain
|
||||
|
||||
# Include definitions common to all Linux targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linuxCommon
|
||||
|
||||
ARCH_CLASS = arm64
|
||||
|
||||
SDK = petalinux
|
||||
SDK_DIR = /opt/petalinux-gfa/2018.1
|
||||
SDK_HOST_ARCH = $(GNU_HOST_ARCH_64)-$(SDK)-$(GNU_HOST_OS)
|
||||
SDK_TARGET = aarch64-xilinx-linux
|
||||
GNU_TARGET = $(SDK_TARGET)
|
||||
SYSROOT = $(SDK_DIR)/sysroots/$(SDK_TARGET)
|
||||
GNU_DIR = $(SDK_DIR)/sysroots/$(SDK_HOST_ARCH)/usr
|
||||
GNU_BIN = $(GNU_DIR)/bin/$(GNU_TARGET)
|
||||
@@ -1,3 +0,0 @@
|
||||
#CONFIG.$(EPICS_HOST_ARCH).Common is required by build system
|
||||
#Include definitions common to linux hosts
|
||||
include $(CONFIG)/os/CONFIG.linux-x86_64.Common
|
||||
@@ -1,2 +0,0 @@
|
||||
# Include common linux definitions
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
@@ -1,3 +0,0 @@
|
||||
# MSVC_VERSION 2019 in wine 4 for on RHEL7 would require winetricks
|
||||
MSVC_VERSION = 2017
|
||||
include $(CONFIG)/os/CONFIG.Linux.windows-x64
|
||||
@@ -1,28 +0,0 @@
|
||||
# Include common linux definitions
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
|
||||
# "Cross compile" for RHEL7-x86_64
|
||||
# Expects RHEL7 RPMs c++ and readline-devel installed
|
||||
# in $(SYSROOT)
|
||||
# This can be installed on RHEL7 with:
|
||||
# yum install --installroot=$(SYSROOT) <packages>
|
||||
# (Assuming $(SYSROOT) is on a shared network volume.)
|
||||
# Optionally use a newer TOOLSET (installed on $(SYSROOT)).
|
||||
|
||||
SYSROOT = /opt/RHEL7
|
||||
|
||||
# "Cross" TOOLSET progs need to find their libraries
|
||||
export LD_LIBRARY_PATH := $(LD_LIBRARY_PATH:%=%:)$(TOOLSET_DIR:%=$(SYSROOT)%/usr/$$LIB)
|
||||
|
||||
# The linker has problems to find indirectly referenced libraries
|
||||
ARCH_DEP_LDFLAGS+=-Wl,-rpath-link,$(INSTALL_LIB)
|
||||
|
||||
# These programs have library problems when using them
|
||||
# from SYSROOT but without TOOLSET.
|
||||
# But provinding LD_LIBRARY PATH crashes other progams.
|
||||
# Our host versions work just fine.
|
||||
AR = ar -rc
|
||||
RANLIB = ranlib
|
||||
|
||||
# Allow to run cross-tests which expect different lib versions
|
||||
export LD_PRELOAD=$(SYSROOT)/lib64/libreadline.so
|
||||
@@ -1 +0,0 @@
|
||||
include $(CONFIG)/os/CONFIG.linux-x86_64.win32-x86-mingw
|
||||
@@ -1,9 +1,3 @@
|
||||
#CONFIG.$(EPICS_HOST_ARCH).Common is required by build system
|
||||
#Include definitions common to linux hosts
|
||||
include $(CONFIG)/os/CONFIG.linux-x86_64.Common
|
||||
|
||||
# Windows 32 bit cross builds using mingw
|
||||
# (broken on RHEL8)
|
||||
|
||||
CROSS_COMPILER_TARGET_ARCHS += win32-x86-mingw
|
||||
CROSS_COMPILER_RUNTEST_ARHCS += win32-x86-mingw
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
# Include common linux definitions
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
|
||||
# "Cross compile" for RHEL7-x86_64
|
||||
# Expects RHEL7 RPMs c++ and readline-devel installed
|
||||
# in $(SYSROOT)
|
||||
# This can be installed on RHEL7 with:
|
||||
# yum install --installroot=$(SYSROOT) <packages>
|
||||
# (Assuming $(SYSROOT) is on a shared network volume.)
|
||||
# Optionally use a newer TOOLSET (installed on $(SYSROOT)).
|
||||
|
||||
SYSROOT = /opt/RHEL7
|
||||
|
||||
# "Cross" TOOLSET progs need to find their libraries
|
||||
export LD_LIBRARY_PATH := $(LD_LIBRARY_PATH:%=%:)$(TOOLSET_DIR:%=$(SYSROOT)%/usr/$$LIB:)/usr/$$LIB:$(SYSROOT)/usr/$$LIB
|
||||
|
||||
# The linker has problems to find indirectly referenced libraries
|
||||
PROD_LDLIBS += $(LDLIBS)
|
||||
|
||||
# Allow to run cross-tests which expect different lib versions
|
||||
export LD_PRELOAD=$(SYSROOT)/lib64/libreadline.so
|
||||
@@ -1 +0,0 @@
|
||||
include $(CONFIG)/os/CONFIG.linux-x86_64.win32-x86-mingw
|
||||
@@ -82,11 +82,6 @@ vpath %.m $(USR_VPATH) $(ALL_SRC_DIRS)
|
||||
%.o: %.m
|
||||
$(COMPILE.c) -c $<
|
||||
|
||||
#
|
||||
# Header dependency file generation
|
||||
#
|
||||
HDEPENDS_METHOD = MKMF
|
||||
|
||||
#--------------------------------------------------
|
||||
# Allow site overrides
|
||||
-include $(CONFIG)/os/CONFIG_SITE.darwinCommon.darwinCommon
|
||||
|
||||
@@ -12,6 +12,7 @@ COMMANDLINE_LIBRARY = READLINE
|
||||
|
||||
USR_CXXFLAGS += $(STD_CXXFLAGS)
|
||||
STD_CXXFLAGS = -std=c++11
|
||||
USR_CFLAGS += $(STD_CFLAGS)
|
||||
|
||||
TOOLSET_DIR = $(TOOLSET:%=$(TOOLSET_LOCATION)/%/root)
|
||||
GNU_DIR = $(SYSROOT)$(TOOLSET_DIR)
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
include $(CONFIG)/os/CONFIG_SITE.linux-x86_64.Common
|
||||
|
||||
# Improved error checking with clang
|
||||
CROSS_COMPILER_TARGET_ARCHS += RHEL7-x86_64-clang
|
||||
CROSS_COMPILER_RUNTEST_ARCHS += RHEL7-x86_64-clang
|
||||
@@ -3,7 +3,3 @@ include $(CONFIG)/os/CONFIG_SITE.linux-x86_64.Common
|
||||
# Improved error checking with clang
|
||||
CROSS_COMPILER_TARGET_ARCHS += RHEL8-x86_64-clang
|
||||
CROSS_COMPILER_RUNTEST_ARCHS += RHEL8-x86_64-clang
|
||||
|
||||
# Build for old RHEL7 64 bit
|
||||
#CROSS_COMPILER_TARGET_ARCHS += RHEL7-x86_64
|
||||
#CROSS_COMPILER_RUNTEST_ARCHS += RHEL7-x86_64
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
include $(CONFIG)/os/CONFIG_SITE.linux-x86_64.win32-x86-mingw
|
||||
@@ -7,7 +7,3 @@ CROSS_COMPILER_RUNTEST_ARCHS += RHEL9-x86_64-clang
|
||||
# Build for old RHEL8 64 bit
|
||||
CROSS_COMPILER_TARGET_ARCHS += RHEL8-x86_64
|
||||
CROSS_COMPILER_RUNTEST_ARCHS += RHEL8-x86_64
|
||||
|
||||
# Build for even older RHEL7 64 bit
|
||||
#CROSS_COMPILER_TARGET_ARCHS += RHEL7-x86_64
|
||||
#CROSS_COMPILER_RUNTEST_ARCHS += RHEL7-x86_64
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
include $(CONFIG)/os/CONFIG_SITE.linux-x86_64.win32-x86-mingw
|
||||
@@ -12,13 +12,7 @@ GNU_HOST_ARCH=i686
|
||||
GNU_HOST_OS=linux
|
||||
|
||||
# vxWorks for MVxxxx boards
|
||||
#CROSS_COMPILER_TARGET_ARCHS += T2-ppc604
|
||||
#CROSS_COMPILER_TARGET_ARCHS += V67-ppc604
|
||||
CROSS_COMPILER_TARGET_ARCHS += V69-ppc604
|
||||
#CROSS_COMPILER_TARGET_ARCHS += V69-ppc32
|
||||
|
||||
# NI compact RIO
|
||||
#CROSS_COMPILER_TARGET_ARCHS += V63-ppc603
|
||||
|
||||
# MOXA montavista linux (No PVA because of missing boost support)
|
||||
CROSS_COMPILER_TARGET_ARCHS += mvl40-xscale_be
|
||||
@@ -36,14 +30,6 @@ CROSS_COMPILER_TARGET_ARCHS += eldk52-e500v2
|
||||
CROSS_COMPILER_TARGET_ARCHS += eldk42-ppc4xxFP
|
||||
CROSS_COMPILER_TARGET_ARCHS += eldk53-ppc4xxFP
|
||||
|
||||
# Test other vxWorks versions
|
||||
#CROSS_COMPILER_TARGET_ARCHS += V66-ppc603
|
||||
#CROSS_COMPILER_TARGET_ARCHS += V66-ppc604
|
||||
#CROSS_COMPILER_TARGET_ARCHS += V63-ppc604
|
||||
#CROSS_COMPILER_TARGET_ARCHS += V64-ppc604
|
||||
# (No PVA because of old compiler)
|
||||
#CROSS_COMPILER_TARGET_ARCHS += V62-ppc604
|
||||
|
||||
# RTEMS (Can only have 1 RTEMS major version in 1 EPICS installation
|
||||
# because they overwrite their header files.)
|
||||
#CROSS_COMPILER_TARGET_ARCHS += RTEMS49-pc386
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Site specific definitions for linux-x86 host - linux-x86 target builds
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Uncomment the followings lines to build with CLANG instead of GCC.
|
||||
# Uncomment the following lines to build with CLANG instead of GCC.
|
||||
#
|
||||
#GNU = NO
|
||||
#CMPLR_CLASS = clang
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#GNU_DIR = /usr/local
|
||||
|
||||
# Different distribution cross-build packages use different prefixes:
|
||||
# Ubuntu, RHEL7:
|
||||
# Ubuntu, RHEL:
|
||||
CMPLR_PREFIX = i686-w64-mingw32-
|
||||
# RHEL6:
|
||||
#CMPLR_PREFIX = i686-pc-mingw32-
|
||||
|
||||
@@ -19,11 +19,7 @@ CROSS_COMPILER_RUNTEST_ARCHS += windows-x64
|
||||
CROSS_COMPILER_TARGET_ARCHS += windows-x64-mingw
|
||||
CROSS_COMPILER_RUNTEST_ARCHS += windows-x64-mingw
|
||||
|
||||
# IOxOS IFC1211
|
||||
#CROSS_COMPILER_TARGET_ARCHS += fslqoriq20-e6500_64
|
||||
|
||||
# Zynq
|
||||
#CROSS_COMPILER_TARGET_ARCHS += yocto21-aarch64
|
||||
CROSS_COMPILER_TARGET_ARCHS += yocto40-aarch64
|
||||
|
||||
# Debian
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
# Site specific definitions for linux-x86_64 host - linux-x86_64 target builds
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Uncomment the followings lines to build with CLANG instead of GCC.
|
||||
# Uncomment the following lines to build with CLANG instead of GCC.
|
||||
#
|
||||
#GNU = NO
|
||||
#CMPLR_CLASS = clang
|
||||
|
||||
@@ -1105,7 +1105,7 @@ HTML_STYLESHEET =
|
||||
# cascading style sheets that are included after the standard style sheets
|
||||
# created by doxygen. Using this option one can overrule certain style aspects.
|
||||
# This is preferred over using HTML_STYLESHEET since it does not replace the
|
||||
# standard style sheet and is therefor more robust against future updates.
|
||||
# standard style sheet and is therefore more robust against future updates.
|
||||
# Doxygen will copy the style sheet files to the output directory.
|
||||
# Note: The order of the extra stylesheet files is of importance (e.g. the last
|
||||
# stylesheet in the list overrules the setting of the previous ones in the
|
||||
@@ -1648,8 +1648,8 @@ EXTRA_PACKAGES =
|
||||
# Note: Only use a user-defined header if you know what you are doing! The
|
||||
# following commands have a special meaning inside the header: $title,
|
||||
# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
|
||||
# $projectbrief, $projectlogo. Doxygen will replace $title with the empy string,
|
||||
# for the replacement values of the other commands the user is refered to
|
||||
# $projectbrief, $projectlogo. Doxygen will replace $title with the empty string,
|
||||
# for the replacement values of the other commands the user is referred to
|
||||
# HTML_HEADER.
|
||||
# This tag requires that the tag GENERATE_LATEX is set to YES.
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ RTD_SRC = $(COMMON_DIR)/rtd-src
|
||||
|
||||
DOCS += README.md
|
||||
DOCS += ca-cli.md
|
||||
DOCS += ReleaseChecklist.md
|
||||
|
||||
OLD_NOTES = $(wildcard ../RELEASE-*.md)
|
||||
DOCS += $(OLD_NOTES:../%=%)
|
||||
|
||||
@@ -64,10 +64,12 @@ ca_HEADERS += caerr
|
||||
ca_HEADERS += caeventmask
|
||||
ca_HEADERS += db_access
|
||||
|
||||
database_HEADERS += callback
|
||||
database_HEADERS += chfPlugin
|
||||
database_HEADERS += dbChannel
|
||||
database_HEADERS += dbCommon
|
||||
database_HEADERS += dbDefs
|
||||
database_HEADERS += dbEvent
|
||||
database_HEADERS += dbExtractArray
|
||||
database_HEADERS += dbLink
|
||||
database_HEADERS += dbServer
|
||||
|
||||
@@ -191,7 +191,7 @@ parameter with one called `EPICS_TZ` and a routine for VxWorks that calculates
|
||||
the `TIMEZONE` environment variable from the current `TZ` value. This routine
|
||||
will be run once at start-up, when the EPICS clock has synchronized to its NTP
|
||||
server. The calculations it contains were worked out and donated to EPICS by
|
||||
Larry Hoff in 2009; it is unforunate that it has taken 10 years for them to be
|
||||
Larry Hoff in 2009; it is unfortunate that it has taken 10 years for them to be
|
||||
integrated into Base.
|
||||
|
||||
The default value for the `EPICS_TZ` environment parameter is set in the Base
|
||||
@@ -521,7 +521,7 @@ a Windows system and an IOC or PCAS server is started, the IOC's attempt to
|
||||
bind a TCP socket to the CA server port number fails, but Windows returns a
|
||||
different error status value than the IOC is expecting in that circumstance
|
||||
(because the National Instruments code requests exclusive use of that port,
|
||||
unlike the EPICS code) so the IOC fails to start properly. The relevent EPICS
|
||||
unlike the EPICS code) so the IOC fails to start properly. The relevant EPICS
|
||||
bind() checks have now been updated so the IOC will request that a dynamic port
|
||||
number be allocated for this TCP socket instead when this happens.
|
||||
|
||||
@@ -619,7 +619,7 @@ static versions of the compiler support libraries have now been moved into the
|
||||
The `iocInit` code now performs a sanity check of the current time
|
||||
returned by the generalTime subsystem and will print a warning if the wall-clock
|
||||
time returned has not been initialized yet. This is just a warning message; when
|
||||
a time provider does synchonize the IOC will subsequently pick up and use the
|
||||
a time provider does synchronize the IOC will subsequently pick up and use the
|
||||
correct time. This check code also primes the registered event system provider
|
||||
if there is one so the `epicsTimeGetEventInt()` routine will work on IOCs
|
||||
that ask for event time within an interrupt service routine.
|
||||
@@ -642,7 +642,7 @@ change will not cause the IOC to see time going backwards.
|
||||
### Microsoft Visual Studio builds
|
||||
|
||||
The build configuration files for builds using the Microsoft compilers have been
|
||||
updated, although there should be no noticable difference at most sites. One
|
||||
updated, although there should be no noticeable difference at most sites. One
|
||||
extra compiler warning is now being suppressed for C++ code, `C4344: behavior
|
||||
change: use of explicit template arguments results in ...` which is gratuitous
|
||||
and was appearing frequently in builds of the EPICS V4 modules.
|
||||
|
||||
@@ -661,7 +661,7 @@ the `DB_OPT` build configuration variable.
|
||||
|
||||
The compressRecord has a new field `BALG` which can select between FIFO
|
||||
(append) and LIFO (prepend) ordering for insertion of new elements. FIFO
|
||||
ordering is the default, matching the behviour of previous versions.
|
||||
ordering is the default, matching the behaviour of previous versions.
|
||||
|
||||
### Valgrind Instrumentation
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ been split into 4 separate Git repositories. External modules should build
|
||||
against this new structure with little or no changes needed, except that some
|
||||
allowance may be needed for the merging of the V4 modules.
|
||||
|
||||
There should be rather more description and documantation of these changes
|
||||
There should be rather more description and documentation of these changes
|
||||
than is currently available, but as developers we generally much prefer to
|
||||
write code than documentation. Send questions to the tech-talk mailing list
|
||||
and we'll be happy to try and answer them!
|
||||
|
||||
431
documentation/RELEASE-7.0.10.md
Normal file
431
documentation/RELEASE-7.0.10.md
Normal file
@@ -0,0 +1,431 @@
|
||||
# Release Notes
|
||||
|
||||
This document describes the changes that were included in the release of EPICS
|
||||
noted below. Release entries are now provided in a separate document for each
|
||||
version in the EPICS 7 series, but all are combined into a single page for
|
||||
publishing on the EPICS website. Separate release documents are also included
|
||||
from the older Base 3.15 and 3.16 series.
|
||||
|
||||
The external PVA submodules continue to maintain their own release notes files
|
||||
as before, but the entries describing changes in those submodules since version
|
||||
7.0.5 have been copied into the associated EPICS Release Notes files; they will
|
||||
also be manually added to new EPICS Release Notes published in the future.
|
||||
|
||||
|
||||
## EPICS Release 7.0.10
|
||||
|
||||
### Reduce symbol and macro pollution from epicsAtomic.h on WIN32
|
||||
|
||||
`epicsAtomic.h` no longer pulls in as many unneeded declarations and macros from
|
||||
`windows.h`. Prior to this change, including `epicsAtomic.h` at the wrong time
|
||||
could result in unexpected compiler errors. Due to the nature of `windows.h`,
|
||||
some unneeded declarations are still pulled in, however the number is greatly reduced.
|
||||
Code that needs these declarations should explicitly include `windows.h` before `epicsAtomic.h`.
|
||||
|
||||
### New `afterIocRunning` IOC Shell Command Added
|
||||
|
||||
This release incorporates [PR #558](https://github.com/epics-base/epics-base/pull/558) which added a new IOC shell command `afterIocRunning`. This command allows startup scripts to schedule arbitrary commands to be executed automatically after the IOC initialization phase (`iocInit`).
|
||||
|
||||
`afterIocRunning` allows you to write better-structured IOC shell files to include in your startup scripts without tracking where `iocInit` is located (and how IOC is deployed) e.g.:
|
||||
- to achieve the best maintainability (e.g. encapsulation of the context into one file),
|
||||
- to improve writing boot sequences,
|
||||
- to improve IOC startup flexibility and scripting capabilities,
|
||||
- it replaces the community [`afterInit`](https://github.com/paulscherrerinstitute/iocsh_utilities/blob/master/afterInit.c) and [`doAfterIocInit`](https://github.com/epics-modules/std/blob/master/stdApp/src/delayCmd.cpp) IOC shell commands,
|
||||
- community usage examples:
|
||||
- [`pf4filters.iocsh`](https://github.com/epics-modules/optics/blob/master/opticsApp/iocsh/pf4filters.iocsh) - enable/disable with a single comment ([full description](https://github.com/epics-base/epics-base/pull/558#issuecomment-2430057167))
|
||||
- [ALS-U autosave management](https://github.com/epics-base/epics-base/pull/558#issuecomment-2430447220)
|
||||
|
||||
#### Features
|
||||
|
||||
- Define commands that run after IOC initialization completes.
|
||||
- Executes following `iocInit` and `autosave` initialization (important for proper PV configuration).
|
||||
- Supports any valid IOC shell command as an argument.
|
||||
- Example usages:
|
||||
- `afterIocRunning "dbpf <PV> <VAL>"`
|
||||
- `afterIocRunning "date"`
|
||||
- `afterIocRunning "dbpf $(P)EvtClkSource-Sel 'Upstream (fanout)'"`
|
||||
- `afterIocRunning "dbpf $(P)Enable-Sel Enabled"`
|
||||
|
||||
### fdManager file descriptor limit removed
|
||||
|
||||
In order to support file descriptors above 1023, fdManager now uses
|
||||
`poll()` instead of `select()` on all architectures that support it
|
||||
(Linux, MacOS, Windows, newer RTEMS).
|
||||
|
||||
### New `dbServerStats()` API for iocStats
|
||||
|
||||
A new routine provides the ability to request channel and client counts from
|
||||
named server layers that implement the `stats()` method, or to get a summary
|
||||
of the counts from all registered server layers. A preprocessor macro
|
||||
`HAS_DBSERVER_STATS` macro is defined in the `dbServer.h` header file to
|
||||
simplify code that needs to support older versions of Base as well.
|
||||
|
||||
### epicsExport simplifications
|
||||
|
||||
`epicsExportAddress()`, `epicsExportRegistrar()` and `epicsRegisterFunction()`
|
||||
no longer require to be wrapped in `extern "C" { }` in C++ code.
|
||||
|
||||
### Support for multiline strings in iocsh files
|
||||
|
||||
GitHub [PR #603](https://github.com/epics-base/epics-base/pull/603)
|
||||
|
||||
This update introduces support for multiline strings in IOC shell (iocsh) files.
|
||||
Previously, string values in iocsh files were limited to a single line, making
|
||||
it difficult to include longer or formatted text. With this change, users can
|
||||
now define strings that span multiple lines, improving readability and
|
||||
flexibility when configuring IOC shell scripts.
|
||||
|
||||
To create a multiline string, end a line with a backslash (`\`). The following
|
||||
line, including any leading whitespace, will be joined to the previous line.
|
||||
If the backslash is immediately followed by any character other than a newline,
|
||||
it will not be treated as a multiline continuation.
|
||||
|
||||
### Enhancement to IOC `dbgrep` command
|
||||
|
||||
`dbgrep` now takes an optional second string argument consisting of a list of field names
|
||||
separated by spaces, e.g. `dbgrep "*PRESSURE*", "VAL DESC"`
|
||||
|
||||
### ACF Syntax Forward Compatibility
|
||||
|
||||
This release modifies the Access Security Configuration File (ACF) parser to
|
||||
**standardize the ACF grammar for forward compatibility**.
|
||||
It does not change the syntax that was accepted by earlier versions of the parser,
|
||||
so **existing access security configuration files will not need to be modified.**
|
||||
All ACF definitions will adhere to a consistent syntax format,
|
||||
which will allow future additions to the access security language
|
||||
without breaking existing configurations.
|
||||
In practice, this means the structure of ACF files is now formally defined
|
||||
and will remain stable going forward,
|
||||
so any new grammar features will fit into the same pattern.
|
||||
(Existing ACF files continue to work as-is under the new parser,
|
||||
so no changes are required for legacy configurations or tools.).
|
||||
|
||||
**Generic ACF Syntax:**
|
||||
The ACF file consists of definitions for User Access Groups (UAG),
|
||||
Host Access Groups (HAG),
|
||||
and Access Security Groups (ASG),
|
||||
using the following general format
|
||||
(angle brackets below denote placeholders):
|
||||
|
||||
```text
|
||||
|
||||
UAG(<name>) [{ <user> [, <user> ...] }]
|
||||
...
|
||||
|
||||
HAG(<name>) [{ <host> [, <host> ...] }]
|
||||
...
|
||||
|
||||
ASG(<name>) [{
|
||||
[INP<index>(<pvname>)
|
||||
...]
|
||||
|
||||
RULE(<level>, NONE | READ | WRITE [, NOTRAPWRITE | TRAPWRITE]) {
|
||||
[UAG(<name> [, <name> ...])]
|
||||
[HAG(<name> [, <name> ...])]
|
||||
[CALC(<calculation>)]
|
||||
}
|
||||
...
|
||||
}]
|
||||
...
|
||||
|
||||
```
|
||||
|
||||
Under this schema each definition comprises a keyword,
|
||||
a name in parentheses,
|
||||
and (optionally) a braced block of contents.
|
||||
This uniform structure ensures that
|
||||
**future keywords or sections**
|
||||
can be introduced in the same form,
|
||||
maintaining compatibility with the parser.
|
||||
For example, if a new type of condition or group is added in a later release,
|
||||
it would follow the `KEYWORD(name) { ... }` pattern,
|
||||
so 7.0.10-era parsers can handle or ignore it gracefully
|
||||
instead of failing on unknown syntax.
|
||||
|
||||
**Supported Syntax in EPICS 7.0.10:**
|
||||
The current release defines the following specific elements
|
||||
within the above generic format:
|
||||
|
||||
- **UAG** -- *User Access Group*.
|
||||
Defines a group of user names.
|
||||
- **HAG** -- *Host Access Group*.
|
||||
Defines a group of host names
|
||||
(or IP addresses) that clients can connect from.
|
||||
- **ASG** -- *Access Security Group*.
|
||||
Defines a security group which records can be assigned to.
|
||||
An ASG entry may contain a block with input definitions and access rules.
|
||||
For example:
|
||||
|
||||
```text
|
||||
ASG(MyGroup) {
|
||||
INPA(myPV1)
|
||||
INPB(myPV2)
|
||||
RULE(1, WRITE) { ... }
|
||||
RULE(1, READ) { ... }
|
||||
}
|
||||
```
|
||||
|
||||
If no rules are defined for an ASG,
|
||||
the access permissions default to always allowed.
|
||||
|
||||
- **INP<index>(<pvname>)** -- *Input link*.
|
||||
Declares an input process variable whose value can be used in a CALC condition.
|
||||
- **RULE(<level>, <permission> [, <logOption>]) { ... }** --
|
||||
Defines an access rule for the ASG.
|
||||
|
||||
Inside the curly braces of a RULE,
|
||||
**optional conditions** can restrict when that rule applies.
|
||||
All conditions that are present must be satisfied
|
||||
(they function as a logical AND):
|
||||
|
||||
- **UAG(<name>, ...)** -- User-group condition.
|
||||
The rule only applies if the Channel Access client's user
|
||||
is a member of one of the listed UAGs.
|
||||
- **HAG(<name>, ...)** -- Host-group condition.
|
||||
The rule only applies if the client's host
|
||||
(as determined by its IP or hostname) is in one of the listed HAGs
|
||||
- **CALC("<expression>")** -- Calculation condition.
|
||||
The rule only applies if the given expression evaluates to true (non-zero).
|
||||
|
||||
**Special Semantics for RULEs:**
|
||||
Rules will continue to allow the prescribed access if and only if
|
||||
all the predicates the rule contains are satisfied.
|
||||
- If the rule contains predicates that are unknown to the parser
|
||||
(indicating future functionality),
|
||||
then the rule will NOT not match,
|
||||
but no syntax error will be reported as long as the syntax is correct.
|
||||
- If the rule contains predicates that the parser does not recognise
|
||||
which are malformed (e.g. missing parentheses),
|
||||
then the rule will not match and the parser will report a syntax error.
|
||||
- In this way rules can be extended with new predicates
|
||||
without breaking older clients or giving those older clients elevated privileges.
|
||||
|
||||
**Special Semantics for unrecognised ACF file elements:**
|
||||
Any elements that are included in an ACF file will be ignored silently
|
||||
by a parser that does not understand them.
|
||||
- If an element is seen in an ACF file that is not understood by the parser,
|
||||
the parser will simply ignore it silently,
|
||||
without reporting an error,
|
||||
as long as its syntax is correct.
|
||||
- If elements are added to the ACF file that are malformed
|
||||
(e.g. missing parentheses),
|
||||
the parser will report a syntax error.
|
||||
- Thus new elements can be added to ACF files in new EPICS releases
|
||||
without breaking older clients that loads those files.
|
||||
|
||||
In summary, **ACF forward compatibility**
|
||||
means that from EPICS 7.0.10 onward,
|
||||
any new access security features will use this established syntax.
|
||||
The parser will recognize new group types or rule options using the same
|
||||
`<KEYWORD>(...) { ... }` convention,
|
||||
ensuring they can be used in files loaded by IOCs running EPICS 7.0.10 or later
|
||||
without breaking those IOCs or requiring their parser to be modified.
|
||||
This change **does not require any modifications to existing ACF files
|
||||
or downstream tools** -- all legacy syntax remains valid,
|
||||
and the new standardized grammar provides a robust foundation for future extensions.
|
||||
|
||||
A full EBNF grammar for the new syntax can be found in the
|
||||
[IOC Access Security](ACF-Language.md) document added to this release.
|
||||
|
||||
### Add `dbglob` to replace `dbgrep`
|
||||
|
||||
A new IOC shell command, `dbglob` has been added, with `dbgrep` becoming
|
||||
an alias of this new function, with the intent of deprecating it in a
|
||||
future release.
|
||||
|
||||
### Conflict-free release note entries for GitHub pull requests
|
||||
|
||||
GitHub [PR #628](https://github.com/epics-base/epics-base/pull/628)
|
||||
|
||||
This release replaces the developer-edited `documentation/RELEASE_NOTES.md`
|
||||
source file in the EPICS tree with a process which generates that file from a
|
||||
series of individual files added for each changeset in the release, thus
|
||||
preventing merge conflicts when entries are added by many different pull
|
||||
requests.
|
||||
|
||||
For this new approach each pull request must add its own Markdown file to the
|
||||
`documentation/new-notes` directory, using a unique filename.
|
||||
When a release is made, all these files will be combined into a single
|
||||
`RELEASE-<version>.md` file and the `new-notes` directory emptied to prepare
|
||||
for development of the next release.
|
||||
|
||||
Developers can generate the `RELEASE_NOTES.md` file by running `make` in the
|
||||
`documentation` directory, which will install the result in the `doc` top-level
|
||||
directory along with the `RELEASE-<version>.md` files describing older EPICS
|
||||
releases going back to 3.15.
|
||||
The `documentation/Makefile` provides some other targets which can also be
|
||||
requested, but they require additional non-EPICS software such as Doxygen and
|
||||
Sphinx to have been installed first.
|
||||
|
||||
Between releases the generated `RELEASE_NOTES.md` file contains the text from
|
||||
any `new-notes` files added to document changes already merged.
|
||||
It also provides links to the older `RELEASE-<version>.md` files, so it remains
|
||||
the starting point for documentation on all release changes.
|
||||
|
||||
Detailed instructions on creating new entries are provided in a `README.txt`
|
||||
file in the `documentation/new-notes` directory.
|
||||
The release-time process that generates a new `RELEASE-<version>.md` file is
|
||||
described in the developers' [Release Checklist](ReleaseChecklist.md).
|
||||
|
||||
### Add support for `EPICS_DB_INCLUDE_PATH` to `dbLoadTemplate`
|
||||
|
||||
GitHub [PR #636](https://github.com/epics-base/epics-base/pull/636)
|
||||
|
||||
Allow finding the substitution file through a path in `EPICS_DB_INCLUDE_PATH` or
|
||||
an additional parameter to the iocsh `dbLoadTemplate` command.
|
||||
|
||||
### Expand the use of colour in the IOCs output
|
||||
|
||||
This release includes various changes to iocsh.cpp and elsewhere to add and
|
||||
expand the use of color:
|
||||
|
||||
- When loading a startup script, the IOC Shell now displays comment lines in
|
||||
blue, and uses bold to make command lines stand out from other text.
|
||||
|
||||
- The `softIoc -v` output also uses the above color scheme for the commands it
|
||||
prints.
|
||||
|
||||
- The default IOC Shell prompt is now displayed in green; this color can be
|
||||
modified in the `configure/CONFIG_SITE_ENV` file for all targets, or set for
|
||||
a specific target by adding a `configure/os/CONFIG_SITE_ENV.<arch>` file.
|
||||
The value of the `IOCSH_PS1` environment parameter in those files can use the
|
||||
`ANSI_ENV_*` and `ANSI_*()` color macros found in errlog.h to configure the
|
||||
appearance of the prompt. The C string literal concatenation syntax can be
|
||||
used to construct the prompt string:
|
||||
|
||||
```Makefile
|
||||
IOCSH_PS1 = ANSI_ESC_RED "e" ANSI_ESC_YELLOW "p" ANSI_ESC_GREEN "i" \
|
||||
ANSI_ESC_CYAN "c" ANSI_BLUE("s") "> "
|
||||
```
|
||||
|
||||
- More error messages printed by IOC Shell commands now appear in red, or use
|
||||
the red `ERROR` prefix that was introduced in previous releases.
|
||||
|
||||
- The word "Illegal" has been replaced with "Invalid" in several Shell error
|
||||
messages.
|
||||
|
||||
- The iocsh `var` command now shows the data type of the registered variables
|
||||
as well as their values.
|
||||
|
||||
### Documentation Updates
|
||||
|
||||
The reference documentation for the [event](eventRecord.md) record type
|
||||
has been updated to cover the use of named events which were added in Base
|
||||
3.14.12.3 and 3.15.1.
|
||||
|
||||
Documentation for CALC expression evaluation has been updated for format
|
||||
enhancements and to add some missing operators.
|
||||
The best documentation for these expressions can be found in the
|
||||
[postfix.h](postfix_h.md) header in libCom, but both the
|
||||
[calc](calcRecord.md) and [calcout](calcoutRecord.md) record reference
|
||||
pages also cover the infix expressions supported.
|
||||
|
||||
### Records calc, calcout and sub extended
|
||||
|
||||
The record types calc, calcout and sub have been extended from 12 inputs
|
||||
A - L to 21 inputs A - U.
|
||||
The macro `CALCPERFORM_NARGS` reflects this change.
|
||||
The new inputs can be used in calc links and access security as well.
|
||||
The size of CALC and OCAL fields has been doubled to 160 chars.
|
||||
|
||||
### Allow hex and octal strings in dbPut and dbGet
|
||||
|
||||
It is now possible to convert hex and octal strings to integer fields
|
||||
with `dbPut()`, `dbGet()` and related functions like the iocsh command
|
||||
`dbpf` or through database links.
|
||||
|
||||
Possible incompatibility: Up to now, leading `0`s have been ignored,
|
||||
now they switch to octal mode.
|
||||
|
||||
For backward compatibility, this behavior can be switched off, returning
|
||||
to the old decimal only conversions, by setting the environment variable
|
||||
`EPICS_DB_CONVERT_DECIMAL_ONLY` to `YES` (case insensitive) before `iocInit`.
|
||||
|
||||
### `dfanout` improvements
|
||||
|
||||
The [dfanout](dfanoutRecord.md) record now has invalid output handling with the usual fields
|
||||
`IVOA` and `IVOV` just like many other output record types.
|
||||
|
||||
The number of output links has also been increased from 8 to 16.
|
||||
|
||||
### CA Client Library Enhancement
|
||||
|
||||
GitHub [PR #711](https://github.com/epics-base/epics-base/pull/711)
|
||||
|
||||
* Allow CA clients to determine a server's protocol version.
|
||||
|
||||
Adds a call to the CA client API that allows a client to determine the
|
||||
server's protocol minor version number.
|
||||
This is needed to allow the ca-nameserver to report a server's protocol
|
||||
version correctly to a client.
|
||||
|
||||
* `ca_host_minor_protocol()` return for disconnected channels
|
||||
|
||||
`ca_host_minor_protocol()` now explicitly returns `CA_UKN_MINOR_VERSION`
|
||||
for a disconnected channel.
|
||||
|
||||
### Add environment variable to opt out of POSIX Real-Time scheduling
|
||||
|
||||
On POSIX systems, processes with real-time capabilities can opt out of using
|
||||
Posix thread priority scheduling and memory locking.
|
||||
Set `EPICS_ALLOW_POSIX_THREAD_PRIORITY_SCHEDULING=NO` to achieve this.
|
||||
|
||||
### Avoid early expiration of timers on non-RTOS IOCs
|
||||
|
||||
Previously the epicsTimer code rounded down user requested delays
|
||||
by subtracting one half of the sleep "quantum".
|
||||
On RTEMS and vxWorks,
|
||||
this allowed periodic timers which expired on every tick.
|
||||
However this also resulted in timers expiring slightly
|
||||
[earlier than requested](https://github.com/epics-base/epics-base/issues/106).
|
||||
|
||||
With [PR 744](https://github.com/epics-base/epics-base/pull/744)
|
||||
rounding is only done for RTEMS and vxWorks, which still have tick timers.
|
||||
|
||||
This affects several facilities which use epicsTimer,
|
||||
including record delays.
|
||||
For example, `calcout.ODLY` becomes more
|
||||
[accurate](https://github.com/epics-base/epics-base/issues/106#issuecomment-1260232765)
|
||||
on non-RTOS IOCs.
|
||||
|
||||
### normativeTypes Module
|
||||
|
||||
Changes to this module since the previous release:
|
||||
|
||||
#### Release 6.0.2
|
||||
|
||||
- Fix potential NULL pointer dereference in `NTNDArray::getValueSize()`
|
||||
|
||||
### pvAccess Module
|
||||
|
||||
Changes to this module since the previous release:
|
||||
|
||||
#### Release 7.1.8
|
||||
|
||||
- Compatible changes
|
||||
- Capped the number and age of PVA beacons to avoid a resource leak. Beacons
|
||||
older than 360 seconds will be destroyed automatically, new beacons will be
|
||||
ignored if >=2048 exist already.
|
||||
- Various Clang, MSVC and GCC compiler warnings cleaned up.
|
||||
|
||||
### pvData Module
|
||||
|
||||
Changes to this module since the previous release:
|
||||
|
||||
#### Release 8.0.7
|
||||
|
||||
- Compatible changes
|
||||
- Allow epics::pvData::Timer to be cancelled during callback execution.
|
||||
- Clang compiler warnings cleaned up.
|
||||
- Limit periodic timers to one catch-up after missing many events.
|
||||
|
||||
|
||||
### pvaClient Module
|
||||
|
||||
Changes to this module since the previous release:
|
||||
|
||||
## Release 4.8.1
|
||||
|
||||
* Fix error message generation code.
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ A suggested form for IOC shell commands is:
|
||||
|
||||
### Relocatable Builds
|
||||
|
||||
Allows built trees to be copied or moved without invalidating RPATH entires.
|
||||
Allows built trees to be copied or moved without invalidating RPATH entries.
|
||||
|
||||
The `LINKER_USE_RPATH` Makefile variable (see `configure/CONFIG_SITE`) may be
|
||||
set to `YES`, `NO`, and a new third option `ORIGIN`. This is limited to
|
||||
|
||||
@@ -147,7 +147,7 @@ This also fixes [lauchpad bug #1714455](https://bugs.launchpad.net/bugs/1714455)
|
||||
declared in epicsString.h no longer accept octal escaped characters such as
|
||||
`\123` or `\41`.
|
||||
- The routine `epicsStrnEscapedFromRaw()` now generates hex
|
||||
excaped characters for unprintable characters such as `\x1f`.
|
||||
escaped characters for unprintable characters such as `\x1f`.
|
||||
- Hex escape character sequences `\xXX` must now contain exactly 2 hex digits.
|
||||
- An escape sequence `\0` now generates a zero byte in the raw string, but the
|
||||
other digits `1-9` should not appear after a back-slash.
|
||||
|
||||
@@ -117,7 +117,7 @@ with the TCP port number selected.
|
||||
|
||||
DBD files generated by the `dbdExpand.pl` script are now sorted within each
|
||||
item type by the primary name of the item. The result should resolve any
|
||||
issues with reproducable builds. No option is provided to prevent the sorting,
|
||||
issues with reproducible builds. No option is provided to prevent the sorting,
|
||||
previously the order was essentially random and varied each time.
|
||||
|
||||
### `dbExpand.pl` sorts records by name
|
||||
|
||||
@@ -35,7 +35,7 @@ record(bi, "bit1") {
|
||||
|
||||
### ANSI escapes in stderr
|
||||
|
||||
ANSI escape charactor sequences may now be printed to the stderr stream.
|
||||
ANSI escape character sequences may now be printed to the stderr stream.
|
||||
These escapes will appear in logs captured from that stream.
|
||||
Tools which parse and/or render these logs may need to be adjusted to
|
||||
either strip out the escapes, or to translate them into markup.
|
||||
@@ -227,7 +227,7 @@ The pvDatabase module was updated to version 4.7.1:
|
||||
|
||||
`_[distributor=group:<group id>;set:<set_id>;trigger:<field_name>;updates:<n_updates>;mode:<update_mode>]`
|
||||
|
||||
The plugin parameters are optional and are described bellow:
|
||||
The plugin parameters are optional and are described below:
|
||||
|
||||
- group: this parameter indicates a group that client application belongs to (default value: "default"); groups of clients are completely independent of each other
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ although it doesn't currently cover the new processes added to epics-base.
|
||||
Much of the documentation generated from .dbd.pod files at build time is now
|
||||
also being converted into MarkDown (.md) files and installed into the top-level
|
||||
`doc` directory. Some users might find it quicker to look up information about a
|
||||
record type by opening these files in a text editor intead of opening a browser
|
||||
record type by opening these files in a text editor instead of opening a browser
|
||||
and loading the HTML versions or finding and opening the files from the EPICS
|
||||
Documentation site.
|
||||
|
||||
@@ -97,7 +97,7 @@ record("#", "unwanted") {}
|
||||
|
||||
### Only keep readline history for interactive sessions
|
||||
|
||||
Previously, all IOCsh commands were persisited in the libreadline history
|
||||
Previously, all IOCsh commands were persisted in the libreadline history
|
||||
(when readline support is included).
|
||||
Going forward, only interactive commands are saved.
|
||||
|
||||
@@ -111,7 +111,7 @@ already be conditionally casting to/from the appropriate type.
|
||||
|
||||
### Fix issues with `_FORTIFY_SOURCE=3`
|
||||
|
||||
This release fixes the false positives failures whhen building with `_FORTIFY_SOURCE` level 3.
|
||||
This release fixes the false positives failures when building with `_FORTIFY_SOURCE` level 3.
|
||||
The override introduced in 7.0.8.1 has been removed.
|
||||
|
||||
### Other
|
||||
|
||||
@@ -1,492 +0,0 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
||||
<title>EPICS Release Procedures & Checklist</title>
|
||||
<style type="text/css" media="print">
|
||||
<!--
|
||||
body {
|
||||
font: 10.5pt/12pt Arial, Helvetica, sans-serif;
|
||||
}
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border: thin solid black;
|
||||
}
|
||||
tt {
|
||||
font: 9pt/11pt "Courier New", fixed;
|
||||
}
|
||||
td,th {
|
||||
padding: 2pt 4pt;
|
||||
vertical-align: top
|
||||
}
|
||||
td blockquote {
|
||||
page-break-inside: avoid;
|
||||
margin-right: 0;
|
||||
}
|
||||
-->
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>EPICS Base Release Procedures & Checklist</h1>
|
||||
|
||||
<p>This document describes the procedures and provides a checklist of tasks
|
||||
that should be performed when creating production releases of EPICS Base.</p>
|
||||
|
||||
<h3>The Release Process</h3>
|
||||
|
||||
<p>We used to have one written down here, but we weren't following it very
|
||||
closely so now the decision to make a new release is taken during the Core
|
||||
Developers bi-weekly meetings in an informal manner. The steps detailed below
|
||||
were written to remind Andrew (or anyone else who does the release) about
|
||||
everything that has to be done since it's so easy to miss steps.</p>
|
||||
|
||||
<h3>Roles</h3>
|
||||
|
||||
<p>The following roles are used below:</p>
|
||||
|
||||
<dl>
|
||||
<dt><strong>Release Manager</strong></dt>
|
||||
<dd>Responsible for managing and tagging the release</dd>
|
||||
<dt><strong>Core Developers</strong></dt>
|
||||
<dd>Responsible for maintaining the EPICS software</dd>
|
||||
<dt><strong>Website Editors</strong></dt>
|
||||
<dd>Responsible for the EPICS websites</dd>
|
||||
</dl>
|
||||
|
||||
<form>
|
||||
<table border="1" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>Check</th>
|
||||
<th>Who</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="3">Preparing for a release</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>Release Manager</td>
|
||||
<td>Notify core developers about the upcoming release and ask about any
|
||||
remaining tasks that must be finished.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>All developers</td>
|
||||
<td>Check the bug tracker for any outstanding items and handle
|
||||
appropriately.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>Release Manager</td>
|
||||
<td>Set a Feature Freeze date, by which time all Git branches for
|
||||
enhancements and new functionality should have been merged. After this
|
||||
date, commits and merges should only be made to fix problems that show
|
||||
up during testing.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>Release Manager<br>
|
||||
& all developers</td>
|
||||
<td>Request that documentation be updated and information about new
|
||||
features be added before the release date:
|
||||
<ul>
|
||||
<li>Release Notes</li>
|
||||
<li>Doxygen annotations</li>
|
||||
<li>Other documents on
|
||||
<a href="https://docs.epics-controls.org/en/latest/">
|
||||
docs.epics-controls.org</a></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>Release Manager</td>
|
||||
<td>Review and update this checklist for the upcoming release.
|
||||
Update the release version number in the tags and messages below.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="3">Testing</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>Platform Developers</td>
|
||||
<td>Run the internal test programs on all appropriate platforms.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>Platform Developers</td>
|
||||
<td>Check that all makeBaseApp templates build and run properly, all
|
||||
<i>xxxApp</i> and <i>xxxBoot</i> types and any internal options, e.g.
|
||||
setting <tt>STATIC_BUILD=YES</tt> or using a different
|
||||
<tt>INSTALL_LOCATION</tt> in configure/CONFIG_SITE.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>Release Manager</td>
|
||||
<td>Check that documentation has been updated:
|
||||
<ul>
|
||||
<li>Release Notes</li>
|
||||
<li>Doxygen annotations</li>
|
||||
<li>Other documents on
|
||||
<a href="https://docs.epics-controls.org/en/latest/">
|
||||
docs.epics-controls.org</a></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th colspan="3" id="ReleaseApproval">
|
||||
Release Approval</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Core Developers</td>
|
||||
<td>Reach a consensus that the software is ready to release.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="3">Creating the final release version</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Release Manager</td>
|
||||
<td>
|
||||
<h4>For each external submodule to be tagged</h4>
|
||||
<ol>
|
||||
<li><tt>cd base-7.0/modules/<module>; git grep UNRELEASED</tt>
|
||||
and insert the submodule's version number into any doxygen
|
||||
annotations that have a <tt>@since UNRELEASED</tt> comment.
|
||||
Commit (don't push yet).</li>
|
||||
|
||||
<li>Check that the submodule's Release Notes have been updated to
|
||||
cover all changes; add missing items as necessary, and set the
|
||||
module version number and release date if appropriate.<br>
|
||||
Commit the changes to the submodule's Notes file (don't push).</li>
|
||||
|
||||
<li>Copy the new submodule version number and Release Notes entries
|
||||
into a new file named <tt><i>module</i>-<i>release</i></tt> in the
|
||||
<tt>base-7.0/documentation/new-notes</tt> directory.</li>
|
||||
|
||||
<li>Edit the module's release version file
|
||||
<tt>configure/CONFIG_<i>module</i>_VERSION</tt> and the
|
||||
<tt>Doxyfile</tt>s in the top-level and/or documentation
|
||||
directories. In these, set <tt>DEVELOPMENT_FLAG=0</tt> and remove
|
||||
<tt>-dev</tt> from the <tt>PROJECT_NUMBER</tt> string. Commit these
|
||||
changes (don't push):
|
||||
<blockquote><tt>
|
||||
git commit -m 'Final commit for <submodule-version>'
|
||||
</tt></blockquote>
|
||||
</li>
|
||||
|
||||
<li>Tag the submodule:
|
||||
<blockquote><tt>
|
||||
git tag -m 'ANJ: Tag for EPICS 7.0.9.1' <submodule-version>
|
||||
</tt></blockquote>
|
||||
</li>
|
||||
|
||||
<li>Generate documentation for modules with <tt>release_notes.dox</tt>
|
||||
files. Prepare to update the github-pages website as follows:
|
||||
<blockquote><tt>
|
||||
cd base-7.0/modules/<module>/documentation<br>
|
||||
make commit<br>
|
||||
git push --force upstream gh-pages
|
||||
</tt></blockquote>
|
||||
<i>Q: Delay this <tt>git push</tt> until later?</i></li>
|
||||
|
||||
<li>Update the Git submodule on the Base-7.0 branch to the
|
||||
newly-tagged version, check the module's status matches the tag:
|
||||
<blockquote><tt>
|
||||
cd base-7.0/modules<br>
|
||||
git add <module><br>
|
||||
git submodule status --cached
|
||||
</tt></blockquote>
|
||||
Don't commit the submodule updates yet.
|
||||
</li>
|
||||
|
||||
<li>Edit the module's release version file
|
||||
<tt>configure/CONFIG_<i>module</i>_VERSION</tt> and its top-level
|
||||
<tt>Doxyfile</tt>; increment the <tt>MAINTENANCE_VERSION</tt>, set
|
||||
the <tt>DEVELOPMENT_FLAG</tt> value to 1, and update the
|
||||
<tt>PROJECT_NUMBER</tt> string, appending <tt>-dev</tt> to the new
|
||||
module version number. Commit changes.</li>
|
||||
|
||||
<li>Push commits and the new tag to the submodule's GitHub repository
|
||||
(assumed to be the <tt>upstream</tt> remote):
|
||||
<blockquote><tt>
|
||||
cd base-7.0/modules/<module><br>
|
||||
git push --follow-tags upstream master
|
||||
</tt></blockquote>
|
||||
</li>
|
||||
|
||||
</ol></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Release Manager</td>
|
||||
<td>
|
||||
<h4>After all submodules have been updated:</h4>
|
||||
<ol>
|
||||
|
||||
<li> Commit the submodule updates which were added for each submodule
|
||||
in step 7 above to the 7.0 branch (don't push):
|
||||
<blockquote><tt>
|
||||
cd base-7.0/modules<br>
|
||||
git commit -m "Update git submodules for release"
|
||||
</tt></blockquote></li>
|
||||
|
||||
<li>Make sure that the output from
|
||||
<tt>git submodule status --cached</tt> only shows the appropriate
|
||||
version tags in the right-most parenthesized column with no
|
||||
<tt>-<i>n</i>-g<i>xxxxxxx</i></tt> suffix.</li>
|
||||
|
||||
<li>Add and commit the new Release Note entry files that were created
|
||||
for each submodule in step 3 above (don't push):
|
||||
<blockquote><tt>
|
||||
cd base-7.0/documentation<br>
|
||||
git add new-notes<br>
|
||||
git commit -m "Add submodule release note entries"
|
||||
</tt></blockquote></li>
|
||||
|
||||
</ol>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Release Manager</td>
|
||||
|
||||
<td>
|
||||
<h4>In the main epics-base repository</h4>
|
||||
<ol>
|
||||
<li><tt>cd base-7.0; git grep UNRELEASED</tt> and insert the release
|
||||
version to any doxygen annotations that have a
|
||||
<tt>@since UNRELEASED</tt> comment. Commit (don't push).</li>
|
||||
|
||||
<li>Edit the main EPICS Base version file and the built-in module
|
||||
version files:
|
||||
<ul>
|
||||
<li><tt>configure/CONFIG_BASE_VERSION</tt></li>
|
||||
<li><tt>configure/CONFIG_LIBCOM_VERSION</tt></li>
|
||||
<li><tt>configure/CONFIG_CA_VERSION</tt></li>
|
||||
<li><tt>configure/CONFIG_DATABASE_VERSION</tt></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li>Version numbers should be set according to the level of changes
|
||||
made since the last release. Note that the
|
||||
<tt>MAINTENANCE_VERSION</tt> or <tt>PATCH_LEVEL</tt> value will have
|
||||
been incremented immediately after the previous release tag was
|
||||
applied, so don't double-increment them. Set all
|
||||
<tt>DEVELOPMENT_FLAG</tt> values to 0 and set the
|
||||
<tt>EPICS_DEV_SNAPSHOT</tt> to an empty string (no quotes).</li>
|
||||
|
||||
<li>Commit the above changes (don't push):
|
||||
<blockquote><tt>
|
||||
cd base-7.0<br>
|
||||
git add configure/CONFIG_*_VERSION<br>
|
||||
git commit -m "Set core version numbers for release"
|
||||
</tt></blockquote></li>
|
||||
|
||||
<li><p>When <tt>EPICS_DEV_SNAPSHOT</tt> is empty because a release is
|
||||
being created, the <tt>documentation/Makefile</tt> supports a build
|
||||
target <tt>release</tt> for creating a new release notes file
|
||||
<tt>documentation/RELEASE-<i>version</i>.md</tt> from the Markdown
|
||||
files in the <tt>documentation/new-notes</tt> directory. When run,
|
||||
it copies the notes entries from all the <tt>new-notes/*.md</tt>
|
||||
files, then deletes the files and prepares a Git commit to apply
|
||||
those changes permanently to the repository.</p>
|
||||
|
||||
<p>Run these commands to generate the <tt>RELEASE-7.0.9.1.md</tt>
|
||||
file and remove the individual release note entry files:</p>
|
||||
|
||||
<blockquote><tt>
|
||||
cd base-7.0/documentation<br>
|
||||
make
|
||||
</tt></blockquote></li>
|
||||
|
||||
<li>The <tt>make release</tt> command add some changes into the Git
|
||||
index but didn't commit them. These commands let you check what
|
||||
was done and commit the result (don't push yet!):
|
||||
|
||||
<blockquote><tt>
|
||||
git status<br>
|
||||
git diff --staged<br>
|
||||
git commit -m "Generate RELEASE-7.0.9.1.md notes file"
|
||||
</tt></blockquote>
|
||||
|
||||
To undo those Git actions and confirm that happened, run these:
|
||||
|
||||
<blockquote><tt>
|
||||
make unrelease<br>
|
||||
git status
|
||||
</tt></blockquote></li>
|
||||
</ol>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Release Manager</td>
|
||||
<td>Tag the epics-base module in Git:
|
||||
<blockquote><tt>
|
||||
cd base-7.0<br>
|
||||
git tag -m 'ANJ: Tagged for release' R7.0.9.1
|
||||
</tt></blockquote>
|
||||
<p>Don't push to GitHub yet.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Release Manager</td>
|
||||
<td><h4>After tagging the release</h4>
|
||||
Edit the main EPICS Base version file and the built-in module version
|
||||
files:
|
||||
<ul>
|
||||
<li><tt>configure/CONFIG_BASE_VERSION</tt></li>
|
||||
<li><tt>configure/CONFIG_LIBCOM_VERSION</tt></li>
|
||||
<li><tt>configure/CONFIG_CA_VERSION</tt></li>
|
||||
<li><tt>configure/CONFIG_DATABASE_VERSION</tt></li>
|
||||
</ul>
|
||||
<p>Version numbers should be set for the next expected patch/maintenance
|
||||
release by incrementing the MAINTENANCE_VERSION or PATCH_LEVEL value
|
||||
in each file. Set all <tt>DEVELOPMENT_FLAG</tt> values to 1 and
|
||||
<tt>EPICS_DEV_SNAPSHOT</tt> to "-DEV".</p>
|
||||
<p>Set up the headings in the Release Notes for the next release
|
||||
version number and restore the warning about this being an unreleased
|
||||
version of EPICS.</p>
|
||||
<p>Commit these changes (don't push).</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Release Manager</td>
|
||||
<td>Export the tagged version into a tarfile. The <tt>make-tar.sh</tt>
|
||||
script generates a gzipped tarfile directly from the tag, excluding the
|
||||
files and directories that are only used for continuous integration:
|
||||
<blockquote><tt>
|
||||
cd base-7.0<br>
|
||||
./.tools/make-tar.sh R7.0.9.1 ../base-7.0.9.1.tar.gz base-7.0.9.1/
|
||||
</tt></blockquote>
|
||||
Create a GPG signature file of the tarfile as follows:
|
||||
<blockquote><tt>
|
||||
cd ..<br>
|
||||
gpg --armor --sign --detach-sig base-7.0.9.1.tar.gz
|
||||
</tt></blockquote>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Release Manager</td>
|
||||
<td>Test the tar file by extracting its contents and building it on at
|
||||
least one supported platform. If this succeeds the commits and new git
|
||||
tag can be pushed to the GitHub repository's 7.0 branch (assumed to be
|
||||
the <tt>upstream</tt> remote):
|
||||
<blockquote><tt>
|
||||
git push --follow-tags upstream 7.0
|
||||
</tt></blockquote>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="3">Publish to epics.anl.gov</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Website Editor</td>
|
||||
<td>Copy the tarfile and its signature to the Base download area of the
|
||||
website.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Website Editor</td>
|
||||
<td>Add the new release tar file to the website Base download index
|
||||
page.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Website Editor</td>
|
||||
<td>Create or update the website subdirectory that holds the release
|
||||
documentation, and copy in the files to be published with this
|
||||
release version.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Website Editor</td>
|
||||
<td>Update the webpage for the new release with links to the release
|
||||
documents and tar file.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Website Editor</td>
|
||||
<td>Link to the release webpage from other relevent areas of the
|
||||
website - update front page and sidebars.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Website Editor</td>
|
||||
<td>Add an entry to the website News page, linking to the new version
|
||||
webpage.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th colspan="3">Publish to epics-controls.org</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Website Editor</td>
|
||||
<td>Upload the tar file and its <tt>.asc</tt> signature file to the
|
||||
epics-controls web-server.
|
||||
<blockquote><tt>
|
||||
scp base-7.0.9.1.tar.gz base-7.0.9.1.tar.gz.asc epics-controls:download/base<br>
|
||||
</tt></blockquote>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Website Editor</td>
|
||||
<td><p>Follow instructions on
|
||||
<a href="https://epics-controls.org/resources-and-support/documents/epics-website-documentation/adding-a-page-for-a-new-release/">
|
||||
Add a page for a new release</a> to create a new release webpage (not
|
||||
required for a patch release, just edit the existing page). Update the
|
||||
TablePress "Point Releases" table and add the new download, and adjust
|
||||
the Html Snippet for the series download.</p>
|
||||
<p>Not covered in those instructions: Go to Posts, find a previous
|
||||
release and use "Duplicate Post", then edit the result and publish it.
|
||||
This generates the News item.
|
||||
</p></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th colspan="3">Publish to GitHub</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Release Manager</td>
|
||||
<td>Go to the GitHub
|
||||
<a href="https://github.com/epics-base/epics-base/releases/new?tag=R7.0.9.1">
|
||||
Create release from tag R7.0.9.1</a> page.
|
||||
Upload the tar file and its <tt>.asc</tt> signature file to the new
|
||||
GitHub release page, or just drag-n-drop them into the page.
|
||||
Copy/paste the text from the previous release and edit. Submit.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Release Manager</td>
|
||||
<td>We used to close out bug reports in Launchpad at release-time, this
|
||||
would be the time to do that if we have an equivalent on GitHub.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th colspan="3">Make Announcement</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Release Manager</td>
|
||||
<td>Announce the release on the tech-talk mailing list.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
390
documentation/ReleaseChecklist.md
Normal file
390
documentation/ReleaseChecklist.md
Normal file
@@ -0,0 +1,390 @@
|
||||
# EPICS Base Release Procedures & Checklist
|
||||
|
||||
This document describes the procedures and provides a checklist of tasks
|
||||
that should be performed when creating production releases of EPICS
|
||||
Base.
|
||||
|
||||
## The Release Process
|
||||
|
||||
The decision to make a new release is taken during the
|
||||
Core Developers bi-weekly meetings in an informal manner. The steps
|
||||
detailed below were written to remind Andrew (or whoever does
|
||||
the release) exactly what has to be done, since it's so easy to
|
||||
miss steps.
|
||||
|
||||
### Roles
|
||||
|
||||
The following roles are used below:
|
||||
|
||||
**Release Manager**
|
||||
Responsible for managing and tagging the release
|
||||
|
||||
**Core Developers**
|
||||
Responsible for maintaining the EPICS software
|
||||
|
||||
**Website Editors**
|
||||
Responsible for the EPICS websites
|
||||
|
||||
<table data-border="1" width="100%">
|
||||
<colgroup>
|
||||
<col style="width: 20%" />
|
||||
<col style="width: 80%" />
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>Who</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="3">Preparing for a release</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Release Manager</td>
|
||||
<td>Notify core developers about the upcoming release and ask about any
|
||||
remaining tasks that must be finished.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>All developers</td>
|
||||
<td>Check the bug tracker for any outstanding items and handle
|
||||
appropriately.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Release Manager</td>
|
||||
<td>Set a Feature Freeze date, by which time all Git branches for
|
||||
enhancements and new functionality should have been merged. After this
|
||||
date, commits and merges should only be made to fix problems that show
|
||||
up during testing.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Release Manager<br />
|
||||
& all developers</td>
|
||||
<td>Request that documentation be updated and information about new
|
||||
features be added before the release date:
|
||||
<ul>
|
||||
<li>Release Notes</li>
|
||||
<li>Doxygen annotations</li>
|
||||
<li>Other documents on
|
||||
<a href="https://docs.epics-controls.org/en/latest/">
|
||||
docs.epics-controls.org</a></li>
|
||||
</ul></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Release Manager</td>
|
||||
<td>Review and update this checklist for the upcoming release. Update
|
||||
the release version number in the tags and messages below.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">Testing</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Platform Developers</td>
|
||||
<td>Run the internal test programs on all appropriate platforms.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Platform Developers</td>
|
||||
<td>Check that all makeBaseApp templates build and run properly, all
|
||||
<em>xxxApp</em> and <em>xxxBoot</em> types and any internal options,
|
||||
e.g. setting <code>STATIC_BUILD=YES</code> or using a different
|
||||
<code>INSTALL_LOCATION</code> in configure/CONFIG_SITE.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Release Manager</td>
|
||||
<td>Check that documentation has been updated:
|
||||
<ul>
|
||||
<li>Release Notes</li>
|
||||
<li>Doxygen annotations</li>
|
||||
<li>Other documents on
|
||||
<a href="https://docs.epics-controls.org/en/latest/">
|
||||
docs.epics-controls.org</a></li>
|
||||
</ul></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" id="ReleaseApproval">Release Approval</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Core Developers</td>
|
||||
<td>Reach a consensus that the software is ready to release.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">Creating the final release version</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Release Manager</td>
|
||||
<td><h4 id="for-each-external-submodule-to-be-tagged">For each external
|
||||
submodule to be tagged</h4>
|
||||
<ol>
|
||||
<li><code>cd base-7.0/modules/<module>; git grep UNRELEASED</code>
|
||||
and insert the submodule's version number into any doxygen annotations
|
||||
that have a <code>@since UNRELEASED</code> comment. Commit (don't push
|
||||
yet).</li>
|
||||
<li>Check that the submodule's Release Notes have been updated to cover
|
||||
all changes; add missing items as necessary, and set the module version
|
||||
number and release date if appropriate.<br />
|
||||
Commit the changes to the submodule's Notes file (don't push).</li>
|
||||
<li>Copy the new submodule version number and Release Notes entries into
|
||||
a new file named
|
||||
<em><code>module</code></em><code>-</code><em><code>release</code></em>
|
||||
in the <code>base-7.0/documentation/new-notes</code> directory.</li>
|
||||
<li><p>Edit the module's release version file
|
||||
<code>configure/CONFIG_</code><em><code>module</code></em><code>_VERSION</code>
|
||||
and the <code>Doxyfile</code>s in the top-level and/or documentation
|
||||
directories. In these, set <code>DEVELOPMENT_FLAG=0</code> and remove
|
||||
<code>-dev</code> from the <code>PROJECT_NUMBER</code> string. Commit
|
||||
these changes (don't push):</p>
|
||||
<blockquote>
|
||||
<code> git commit -m 'Final commit for <submodule-version>' </code>
|
||||
</blockquote></li>
|
||||
<li><p>Tag the submodule:</p>
|
||||
<blockquote>
|
||||
<code> git tag -m 'ANJ: Tag for EPICS 7.0.10' <submodule-version> </code>
|
||||
</blockquote></li>
|
||||
<li><p>Generate documentation for modules with
|
||||
<code>release_notes.dox</code> files. Prepare to update the github-pages
|
||||
website as follows:</p>
|
||||
<blockquote>
|
||||
<code> cd base-7.0/modules/<module>/documentation</code><br />
|
||||
<code>make commit</code><br />
|
||||
<code>git push --force upstream gh-pages </code>
|
||||
</blockquote>
|
||||
<p><em>Q: Delay this <code>git push</code> until later?</em></p></li>
|
||||
<li><p>Update the Git submodule on the Base-7.0 branch to the
|
||||
newly-tagged version, check the module's status matches the tag:</p>
|
||||
<blockquote>
|
||||
<code> cd base-7.0/modules</code><br />
|
||||
<code>git add <module></code><br />
|
||||
<code>git submodule status --cached </code>
|
||||
</blockquote>
|
||||
<p>Don't commit the submodule updates yet.</p></li>
|
||||
<li>Edit the module's release version file
|
||||
<code>configure/CONFIG_</code><em><code>module</code></em><code>_VERSION</code>
|
||||
and its top-level <code>Doxyfile</code>; increment the
|
||||
<code>MAINTENANCE_VERSION</code>, set the <code>DEVELOPMENT_FLAG</code>
|
||||
value to 1, and update the <code>PROJECT_NUMBER</code> string, appending
|
||||
<code>-dev</code> to the new module version number. Commit changes.</li>
|
||||
<li><p>Push commits and the new tag to the submodule's GitHub repository
|
||||
(assumed to be the <code>upstream</code> remote):</p>
|
||||
<blockquote>
|
||||
<code> cd base-7.0/modules/<module></code><br />
|
||||
<code>git push --follow-tags upstream master </code>
|
||||
</blockquote></li>
|
||||
</ol></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Release Manager</td>
|
||||
<td><h4 id="after-all-submodules-have-been-updated">After all submodules
|
||||
have been updated:</h4>
|
||||
<ol>
|
||||
<li><p>Commit the submodule updates which were added for each submodule
|
||||
in step 7 above to the 7.0 branch (don't push):</p>
|
||||
<blockquote>
|
||||
<code> cd base-7.0/modules</code><br />
|
||||
<code>git commit -m "Update git submodules for release" </code>
|
||||
</blockquote></li>
|
||||
<li>Make sure that the output from
|
||||
<code>git submodule status --cached</code> only shows the appropriate
|
||||
version tags in the right-most parenthesized column with no
|
||||
<code>-</code><em><code>n</code></em><code>-g</code><em><code>xxxxxxx</code></em>
|
||||
suffix.</li>
|
||||
<li><p>Add and commit the new Release Note entry files that were created
|
||||
for each submodule in step 3 above (don't push):</p>
|
||||
<blockquote>
|
||||
<code> cd base-7.0/documentation</code><br />
|
||||
<code>git add new-notes</code><br />
|
||||
<code>git commit -m "Add submodule release note entries" </code>
|
||||
</blockquote></li>
|
||||
</ol></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Release Manager</td>
|
||||
<td><h4 id="in-the-main-epics-base-repository">In the main epics-base
|
||||
repository</h4>
|
||||
<ol>
|
||||
<li><code>cd base-7.0; git grep UNRELEASED</code> and insert the release
|
||||
version to any doxygen annotations that have a
|
||||
<code>@since UNRELEASED</code> comment. Commit (don't push).</li>
|
||||
<li>Edit the main EPICS Base version file and the built-in module
|
||||
version files:
|
||||
<ul>
|
||||
<li><code>configure/CONFIG_BASE_VERSION</code></li>
|
||||
<li><code>configure/CONFIG_LIBCOM_VERSION</code></li>
|
||||
<li><code>configure/CONFIG_CA_VERSION</code></li>
|
||||
<li><code>configure/CONFIG_DATABASE_VERSION</code></li>
|
||||
</ul></li>
|
||||
<li>Version numbers should be set according to the level of changes made
|
||||
since the last release. Note that the <code>MAINTENANCE_VERSION</code>
|
||||
or <code>PATCH_LEVEL</code> value will have been incremented immediately
|
||||
after the previous release tag was applied, so don't double-increment
|
||||
them. Set all <code>DEVELOPMENT_FLAG</code> values to 0 and set the
|
||||
<code>EPICS_DEV_SNAPSHOT</code> to an empty string (no quotes).</li>
|
||||
<li><p>Commit the above changes (don't push):</p>
|
||||
<blockquote>
|
||||
<code> cd base-7.0</code><br />
|
||||
<code>git add configure/CONFIG_*_VERSION</code><br />
|
||||
<code>git commit -m "Set core version numbers for release" </code>
|
||||
</blockquote></li>
|
||||
<li><p>When <code>EPICS_DEV_SNAPSHOT</code> is empty because a release
|
||||
is being created, the <code>documentation/Makefile</code> supports a
|
||||
build target <code>release</code> for creating a new release notes file
|
||||
<code>documentation/RELEASE-</code><em><code>version</code></em><code>.md</code>
|
||||
from the Markdown files in the <code>documentation/new-notes</code>
|
||||
directory. When run, it copies the notes entries from all the
|
||||
<code>new-notes/*.md</code> files, then deletes the files and prepares a
|
||||
Git commit to apply those changes permanently to the repository.</p>
|
||||
<p>Run these commands to generate the <code>RELEASE-7.0.10.md</code>
|
||||
file and remove the individual release note entry files:</p>
|
||||
<blockquote>
|
||||
<code> cd base-7.0/documentation</code><br />
|
||||
<code>make release</code>
|
||||
</blockquote></li>
|
||||
<li><p>The <code>make release</code> command add some changes into the
|
||||
Git index but didn't commit them. These commands let you check what was
|
||||
done and commit the result (don't push yet!):</p>
|
||||
<blockquote>
|
||||
<code> git status</code><br />
|
||||
<code>git diff --staged</code><br />
|
||||
<code>git commit -m "Generate RELEASE-7.0.10.md notes file" </code>
|
||||
</blockquote>
|
||||
<p>To undo those Git actions and confirm that happened, run these:</p>
|
||||
<blockquote>
|
||||
<code> make unrelease</code><br />
|
||||
<code>git status </code>
|
||||
</blockquote></li>
|
||||
</ol></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Release Manager</td>
|
||||
<td>Tag the epics-base module in Git:
|
||||
<blockquote>
|
||||
<code> cd base-7.0</code><br />
|
||||
<code>git tag -m 'ANJ: Tagged for release' R7.0.10 </code>
|
||||
</blockquote>
|
||||
<p>Don't push to GitHub yet.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Release Manager</td>
|
||||
<td><h4 id="after-tagging-the-release">After tagging the release</h4>
|
||||
Edit the main EPICS Base version file and the built-in module version
|
||||
files:
|
||||
<ul>
|
||||
<li><code>configure/CONFIG_BASE_VERSION</code></li>
|
||||
<li><code>configure/CONFIG_LIBCOM_VERSION</code></li>
|
||||
<li><code>configure/CONFIG_CA_VERSION</code></li>
|
||||
<li><code>configure/CONFIG_DATABASE_VERSION</code></li>
|
||||
</ul>
|
||||
<p>Version numbers should be set for the next expected patch/maintenance
|
||||
release by incrementing the MAINTENANCE_VERSION or PATCH_LEVEL value in
|
||||
each file. Set all <code>DEVELOPMENT_FLAG</code> values to 1 and
|
||||
<code>EPICS_DEV_SNAPSHOT</code> to "-DEV".</p>
|
||||
<p>Commit these changes (don't push).</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Release Manager</td>
|
||||
<td>Export the tagged version into a tarfile. The
|
||||
<code>make-tar.sh</code> script generates a gzipped tarfile directly
|
||||
from the tag, excluding the files and directories that are only used for
|
||||
continuous integration:
|
||||
<blockquote>
|
||||
<code> cd base-7.0</code><br />
|
||||
<code>./.tools/make-tar.sh R7.0.10 ../base-7.0.10.tar.gz base-7.0.10/ </code>
|
||||
</blockquote>
|
||||
Create a GPG signature file of the tarfile as follows:
|
||||
<blockquote>
|
||||
<code> cd ..</code><br />
|
||||
<code>gpg --armor --sign --detach-sig base-7.0.10.tar.gz </code>
|
||||
</blockquote></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Release Manager</td>
|
||||
<td>Test the tar file by extracting its contents and building it on at
|
||||
least one supported platform. If this succeeds the commits and new git
|
||||
tag can be pushed to the GitHub repository's 7.0 branch (assumed to be
|
||||
the <code>upstream</code> remote):
|
||||
<blockquote>
|
||||
<code> git push --follow-tags upstream 7.0 </code>
|
||||
</blockquote></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">Publish to epics.anl.gov</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Website Editor</td>
|
||||
<td>Copy the tarfile and its signature to the Base download area of the
|
||||
website.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Website Editor</td>
|
||||
<td>Add the new release tar file to the website Base download index
|
||||
page.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Website Editor</td>
|
||||
<td>Create or update the website subdirectory that holds the release
|
||||
documentation, and copy in the files to be published with this release
|
||||
version.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Website Editor</td>
|
||||
<td>Update the webpage for the new release with links to the release
|
||||
documents and tar file.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Website Editor</td>
|
||||
<td>Link to the release webpage from other relevant areas of the website
|
||||
- update front page and sidebars.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Website Editor</td>
|
||||
<td>Add an entry to the website News page, linking to the new version
|
||||
webpage.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">Publish to epics-controls.org</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Website Editor</td>
|
||||
<td>Upload the tar file and its <code>.asc</code> signature file to the
|
||||
epics-controls web-server.
|
||||
<blockquote>
|
||||
<code> scp base-7.0.10.tar.gz base-7.0.10.tar.gz.asc epics-controls:download/base</code><br />
|
||||
</blockquote></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Website Editor</td>
|
||||
<td><p>Follow instructions on
|
||||
<a href="https://epics-controls.org/resources-and-support/documents/epics-website-documentation/adding-a-page-for-a-new-release/">
|
||||
Add a page for a new release</a>
|
||||
to create a new release webpage (not
|
||||
required for a patch release, just edit the existing page). Update the
|
||||
TablePress "Point Releases" table and add the new download, and adjust
|
||||
the Html Snippet for the series download.</p>
|
||||
<p>Not covered in those instructions: Go to Posts, find a previous
|
||||
release and use "Duplicate Post", then edit the result and publish it.
|
||||
This generates the News item.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">Publish to GitHub</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Release Manager</td>
|
||||
<td>Go to the GitHub
|
||||
<a href="https://github.com/epics-base/epics-base/releases/new?tag=R7.0.10">
|
||||
Create
|
||||
release from tag R7.0.10</a> page. Upload the tar file and its
|
||||
<code>.asc</code> signature file to the new GitHub release page, or just
|
||||
drag-n-drop them into the page. Copy/paste the text from the previous
|
||||
release and edit. Submit.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Release Manager</td>
|
||||
<td>We used to close out bug reports in Launchpad at release-time, this
|
||||
would be the time to do that if we have an equivalent on GitHub.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">Make Announcement</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Release Manager</td>
|
||||
<td>Announce the release on the tech-talk mailing list.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -13,6 +13,7 @@ EPICS Base Documentation
|
||||
|
||||
README
|
||||
RELEASE_NOTES
|
||||
ACF-Language
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
### Reduce symbol and macro pollution from epicsAtomic.h on WIN32
|
||||
|
||||
`epicsAtomic.h` no longer pulls in as many unneeded declarations and macros from
|
||||
`windows.h`. Prior to this change, including `epicsAtomic.h` at the wrong time
|
||||
could result in unexpected compiler errors. Due to the nature of `windows.h`,
|
||||
some unneeded declarations are still pulled in, however the number is greatly reduced.
|
||||
Code that needs these declarations should explicitly include `windows.h` before `epicsAtomic.h`.
|
||||
@@ -1,23 +0,0 @@
|
||||
### New `afterIocRunning` IOC Shell Command Added
|
||||
|
||||
This release incorporates [PR #558](https://github.com/epics-base/epics-base/pull/558) which added a new IOC shell command `afterIocRunning`. This command allows startup scripts to schedule arbitrary commands to be executed automatically after the IOC initialization phase (`iocInit`).
|
||||
|
||||
`afterIocRunning` allows you to write better-structured IOC shell files to include in your startup scripts without tracking where `iocInit` is located (and how IOC is deployed) e.g.:
|
||||
- to achieve the best maintainability (e.g. encapsulation of the context into one file),
|
||||
- to improve writing boot sequences,
|
||||
- to improve IOC startup flexibility and scripting capabilities,
|
||||
- it replaces the community [`afterInit`](https://github.com/paulscherrerinstitute/iocsh_utilities/blob/master/afterInit.c) and [`doAfterIocInit`](https://github.com/epics-modules/std/blob/master/stdApp/src/delayCmd.cpp) IOC shell commands,
|
||||
- community usage examples:
|
||||
- [`pf4filters.iocsh`](https://github.com/epics-modules/optics/blob/master/opticsApp/iocsh/pf4filters.iocsh) - enable/disable with a single comment ([full description](https://github.com/epics-base/epics-base/pull/558#issuecomment-2430057167))
|
||||
- [ALS-U autosave managment](https://github.com/epics-base/epics-base/pull/558#issuecomment-2430447220)
|
||||
|
||||
#### Features
|
||||
|
||||
- Define commands that run after IOC initialization completes.
|
||||
- Executes following `iocInit` and `autosave` initialization (important for proper PV configuration).
|
||||
- Supports any valid IOC shell command as an argument.
|
||||
- Example usages:
|
||||
- `afterIocRunning "dbpf <PV> <VAL>"`
|
||||
- `afterIocRunning "date"`
|
||||
- `afterIocRunning "dbpf $(P)EvtClkSource-Sel 'Upstream (fanout)'"`
|
||||
- `afterIocRunning "dbpf $(P)Enable-Sel Enabled"`
|
||||
@@ -1,5 +0,0 @@
|
||||
### fdManager file descriptor limit removed
|
||||
|
||||
In order to support file descriptors above 1023, fdManager now uses
|
||||
`poll()` instead of `select()` on all architectures that support it
|
||||
(Linux, MacOS, Windows, newer RTEMS).
|
||||
@@ -1,7 +0,0 @@
|
||||
### New `dbServerStats()` API for iocStats
|
||||
|
||||
A new routine provides the ability to request channel and client counts from
|
||||
named server layers that implement the `stats()` method, or to get a summary
|
||||
of the counts from all registered server layers. A preprocessor macro
|
||||
`HAS_DBSERVER_STATS` macro is defined in the `dbServer.h` header file to
|
||||
simplify code that needs to support older versions of Base as well.
|
||||
@@ -1,4 +0,0 @@
|
||||
### epicsExport simplifications
|
||||
|
||||
`epicsExportAddress()`, `epicsExportRegistrar()` and `epicsRegisterFunction()`
|
||||
no longer require to be wrapped in `extern "C" { }` in C++ code.
|
||||
@@ -1,14 +0,0 @@
|
||||
### Support for multiline strings in iocsh files
|
||||
|
||||
GitHub [PR #603](https://github.com/epics-base/epics-base/pull/603)
|
||||
|
||||
This update introduces support for multiline strings in IOC shell (iocsh) files.
|
||||
Previously, string values in iocsh files were limited to a single line, making
|
||||
it difficult to include longer or formatted text. With this change, users can
|
||||
now define strings that span multiple lines, improving readability and
|
||||
flexibility when configuring IOC shell scripts.
|
||||
|
||||
To create a multiline string, end a line with a backslash (`\`). The following
|
||||
line, including any leading whitespace, will be joined to the previous line.
|
||||
If the backslash is immediately followed by any character other than a newline,
|
||||
it will not be treated as a multiline continuation.
|
||||
@@ -1,4 +0,0 @@
|
||||
### Enhancement to IOC `dbgrep` command
|
||||
|
||||
`dbgrep` now takes an optional second string argument consisting of a list of field names
|
||||
separated by spaces, e.g. `dbgrep "*PRESSURE*", "VAL DESC"`
|
||||
@@ -1,5 +0,0 @@
|
||||
*** Add `dbglob` to replace `dbgrep`
|
||||
|
||||
A new IOC shell command, `dbglob` has been added, with `dbgrep` becoming
|
||||
an alias of this new function, with the intent of deprecating it in a
|
||||
future release.
|
||||
@@ -1,33 +0,0 @@
|
||||
### Conflict-free release note entries for GitHub pull requests
|
||||
|
||||
GitHub [PR #628](https://github.com/epics-base/epics-base/pull/628)
|
||||
|
||||
This release replaces the developer-edited `documentation/RELEASE_NOTES.md`
|
||||
source file in the EPICS tree with a process which generates that file from a
|
||||
series of individual files added for each changeset in the release, thus
|
||||
preventing merge conflicts when entries are added by many different pull
|
||||
requests.
|
||||
|
||||
For this new approach each pull request must add its own Markdown file to the
|
||||
`documentation/new-notes` directory, using a unique filename.
|
||||
When a release is made, all these files will be combined into a single
|
||||
`RELEASE-<version>.md` file and the `new-notes` directory emptied to prepare
|
||||
for development of the next release.
|
||||
|
||||
Developers can generate the `RELEASE_NOTES.md` file by running `make` in the
|
||||
`documentation` directory, which will install the result in the `doc` top-level
|
||||
directory along with the `RELEASE-<version>.md` files describing older EPICS
|
||||
releases going back to 3.15.
|
||||
The `documentation/Makefile` provides some other targets which can also be
|
||||
requested, but they require additional non-EPICS software such as Doxygen and
|
||||
Sphinx to have been installed first.
|
||||
|
||||
Between releases the generated `RELEASE_NOTES.md` file contains the text from
|
||||
any `new-notes` files added to document changes already merged.
|
||||
It also provides links to the older `RELEASE-<version>.md` files, so it remains
|
||||
the starting point for documentation on all release changes.
|
||||
|
||||
Detailed instructions on creating new entries are provided in a `README.txt`
|
||||
file in the `documentation/new-notes` directory.
|
||||
The release-time process that generates a new `RELEASE-<version>.md` file is
|
||||
described in the `documentation/ReleaseChecklist.html` file.
|
||||
@@ -1,6 +0,0 @@
|
||||
### Add support for EPICS_DB_INCLUDE_PATH to dbLoadTemplate
|
||||
|
||||
GitHub [PR #636](https://github.com/epics-base/epics-base/pull/636)
|
||||
|
||||
Allow finding the substitution file using path in `EPICS_DB_INCLUDE_PATH` or
|
||||
an additional parameter to `dbLoadTemplate`.
|
||||
@@ -1,32 +0,0 @@
|
||||
### Expand the use of colour in the IOCs output
|
||||
|
||||
This release includes various changes to iocsh.cpp and elsewhere to add and
|
||||
expand the use of color:
|
||||
|
||||
- When loading a startup script, the IOC Shell now displays comment lines in
|
||||
blue, and uses bold to make command lines stand out from other text.
|
||||
|
||||
- The `softIoc -v` output also uses the above color scheme for the commands it
|
||||
prints.
|
||||
|
||||
- The default IOC Shell prompt is now displayed in green; this color can be
|
||||
modified in the `configure/CONFIG_SITE_ENV` file for all targets, or set for
|
||||
a specific target by adding a `configure/os/CONFIG_SITE_ENV.<arch>` file.
|
||||
The value of the `IOCSH_PS1` environment paremeter in those files can use the
|
||||
`ANSI_ENV_*` and `ANSI_*()` color macros found in errlog.h to configure the
|
||||
appearance of the prompt. The C string literal concatenation syntax can be
|
||||
used to construct the prompt string:
|
||||
|
||||
```Makefile
|
||||
IOCSH_PS1 = ANSI_ESC_RED "e" ANSI_ESC_YELLOW "p" ANSI_ESC_GREEN "i" \
|
||||
ANSI_ESC_CYAN "c" ANSI_BLUE("s") "> "
|
||||
```
|
||||
|
||||
- More error messages printed by IOC Shell commands now appear in red, or use
|
||||
the red `ERROR` prefix that was introduced in previous releases.
|
||||
|
||||
- The word "Illegal" has been replaced with "Invalid" in several Shell error
|
||||
messages.
|
||||
|
||||
- The iocsh `var` command now shows the data type of the registered variables
|
||||
as well as their values.
|
||||
@@ -34,7 +34,7 @@ where nnn is the number of the pull request. If you haven't created the pull
|
||||
request yet you can use the number from a related GitHub issue, or use some
|
||||
other name, then rename and push it after the PR has been created.
|
||||
|
||||
The file should start with a level-3 Markdown title for the entry, like this:
|
||||
The file *must* start with a level-3 Markdown title for the entry, like this:
|
||||
|
||||
### Conflict-free release note entries for GitHub pull requests
|
||||
|
||||
@@ -46,6 +46,9 @@ The file should start with a level-3 Markdown title for the entry, like this:
|
||||
(followed by a blank line to separate it from the next paragraph), or a
|
||||
link to the PR may be integrated into the text that follows.
|
||||
* Use blank lines between paragraphs of text, and code-blocks for examples.
|
||||
* I recommend using [semantic line-breaks](https://sembr.org/) in Markdown
|
||||
files, it makes editing easier and reduces the number of lines that change
|
||||
in most commits. This README.txt file isn't formatted as Markdown.
|
||||
|
||||
Release note entries are not intended to provide full documentation of major
|
||||
features. For small features or changes though, they may provide all the
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
# Always make sure EpicsVersion.Version-Release matches the git tag!
|
||||
|
||||
%define EpicsVersion 7.0.9
|
||||
%define EpicsVersion 7.0.10
|
||||
|
||||
Name: epics-base-%{EpicsVersion}
|
||||
Summary: EPICS Base %{EpicsVersion}
|
||||
Version: 1
|
||||
Release: 4%{?dist}
|
||||
Release: 1%{?dist}
|
||||
License: EPICS Open License
|
||||
Group: Development/Languages
|
||||
URL: https://git.psi.ch/epics_base/base-7.0
|
||||
@@ -43,20 +43,14 @@ This RPM is a binary-only package.
|
||||
%package host-devel
|
||||
Requires: make >= 3.80
|
||||
BuildRequires: make >= 3.80
|
||||
BuildRequires: gfa-cross-compiler-links
|
||||
%if %{?rhel} >= 9
|
||||
BuildRequires: gfa-wine
|
||||
%else
|
||||
BuildRequires: wine
|
||||
%endif
|
||||
|
||||
Summary: Minimal stuff needed to build EPICS host apps
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
# This EPICS installation uses the toolset 12 compiler
|
||||
# This EPICS installation uses the toolset 15 compiler
|
||||
%if 0%{?rhel} >= 8
|
||||
Requires: gcc-toolset-12-gcc-c++
|
||||
BuildRequires: gcc-toolset-12-gcc-c++
|
||||
Requires: gcc-toolset-15-gcc-c++
|
||||
BuildRequires: gcc-toolset-15-gcc-c++
|
||||
%endif
|
||||
|
||||
# The perl stuff we need
|
||||
@@ -84,7 +78,7 @@ Contains headers etc to build EPICS host applications.
|
||||
|
||||
###########################################
|
||||
|
||||
%if %{?rhel} > 8
|
||||
%if 0%{?rhel} > 8
|
||||
%package compat
|
||||
Summary: EPICS base %{EpicsVersion} for older RHEL versions
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
@@ -99,7 +93,7 @@ Contains EPICS binaries that run on older RHEL versions.
|
||||
%package wine
|
||||
Summary: EPICS base %{EpicsVersion} for wine
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
%if %{?rhel} >= 9
|
||||
%if 0%{?rhel} >= 9
|
||||
Requires: gfa-wine
|
||||
%else
|
||||
Requires: wine
|
||||
@@ -127,9 +121,26 @@ Summary: EPICS base %{EpicsVersion} for development environments
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Requires: %{name}-host-devel = %{version}-%{release}
|
||||
Requires: gfa-cross-compiler-links
|
||||
BuildRequires: gfa-cross-compiler-links
|
||||
Requires: mingw64-gcc-c++
|
||||
BuildRequires: mingw64-gcc-c++
|
||||
BuildArch: noarch
|
||||
AutoReqProv: no
|
||||
|
||||
# For Windows cross build with wine:
|
||||
BuildRequires: gfa-cross-compiler-links
|
||||
%if 0%{?rhel} >= 9
|
||||
BuildRequires: gfa-wine
|
||||
Requires: gfa-wine
|
||||
%else
|
||||
BuildRequires: wine
|
||||
Requires: wine
|
||||
%endif
|
||||
|
||||
# For some 32 bit cross compilers
|
||||
BuildRequires: /lib/libc.so.6
|
||||
Requires: /lib/libc.so.6
|
||||
|
||||
%description devel
|
||||
All what is needed to develop EPICS for different target architectures.
|
||||
|
||||
@@ -187,7 +198,8 @@ git submodule update --init --recursive modules
|
||||
%if %{defined epics_host_arch}
|
||||
export EPICS_HOST_ARCH=%{epics_host_arch}
|
||||
%endif
|
||||
%{__make} INSTALL_LOCATION=%{buildroot}%{prog_folder} FINAL_LOCATION=%{prog_folder}
|
||||
%make_build -s INSTALL_LOCATION=%{buildroot}%{prog_folder} FINAL_LOCATION=%{prog_folder} \
|
||||
TESTS= TESTPROD= TESTLIBRARY= TESTFILES= PROD_RTEMS=-nil- PROD_vxWorks=-nil-
|
||||
%{__make} INSTALL_LOCATION=%{buildroot}%{prog_folder} copysrc
|
||||
|
||||
# remove files we do not need
|
||||
@@ -202,7 +214,7 @@ shopt -s extglob
|
||||
/bin/sed 's!\$EPICS_BASE!%{prog_folder}!' epics-base.sh > %{buildroot}%{prog_folder}/bin/epics-base.sh
|
||||
|
||||
# copy over old libraries for compatibility
|
||||
%if %{?rhel} > 8
|
||||
%if 0%{?rhel} > 8
|
||||
%{__cp} /opt/RHEL8/lib64/libreadline.so.7 %{buildroot}%{prog_folder}/lib/RHEL8-x86_64
|
||||
%endif
|
||||
|
||||
@@ -210,7 +222,7 @@ shopt -s extglob
|
||||
# and install will delete our buildroot!
|
||||
|
||||
%clean
|
||||
%{__make} INSTALL_LOCATION=%{buildroot}%{prog_folder} realclean
|
||||
%make_build INSTALL_LOCATION=%{buildroot}%{prog_folder} realclean
|
||||
%{__rm} -f modules/RELEASE.*.local
|
||||
%{__rm} -rf %{buildroot}
|
||||
%{__cp} %{_rpmdir}/*/%{name}*%{version}-%{release}.*.rpm %{_sourcedir}
|
||||
@@ -290,7 +302,7 @@ fi
|
||||
|
||||
###########################################
|
||||
|
||||
%if %{?rhel} > 8
|
||||
%if 0%{?rhel} > 8
|
||||
|
||||
%files compat
|
||||
%dir %{prog_folder}/bin/RHEL8*
|
||||
@@ -300,7 +312,7 @@ fi
|
||||
%dir %{prog_folder}/lib/RHEL8*
|
||||
%{prog_folder}/lib/RHEL8*/*.so*
|
||||
|
||||
%if %{?rhel} > 9
|
||||
%if 0%{?rhel} > 9
|
||||
%dir %{prog_folder}/bin/RHEL9*
|
||||
%{prog_folder}/bin/RHEL9*/[Scips]*[^.]??
|
||||
%{prog_folder}/bin/RHEL9*/p2p
|
||||
|
||||
@@ -17,7 +17,7 @@ database_DEPEND_DIRS = ca
|
||||
|
||||
# Submodules for bundle build
|
||||
SUBMODULES += pvData
|
||||
pvData_DEPEND_DIRS = libcom
|
||||
pvData_DEPEND_DIRS = libcom database
|
||||
|
||||
SUBMODULES += pvAccess
|
||||
pvAccess_DEPEND_DIRS = pvData database
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
SUBMODULES += pcas
|
||||
pcas_DEPEND_DIRS = ca
|
||||
pcas_DEPEND_DIRS = libcom ca
|
||||
|
||||
@@ -103,7 +103,7 @@ in the file LICENSE that is included with this distribution.</span></p>
|
||||
<ul>
|
||||
<li><a href="#Broadcast">Client and Server Broadcast Addresses Don't
|
||||
Match</a></li>
|
||||
<li><a href="#Client">Client Isnt Configured to Use the Server's
|
||||
<li><a href="#Client">Client Isn't Configured to Use the Server's
|
||||
Port</a></li>
|
||||
<li><a href="#Unicast">Unicast Addresses in the EPICS_CA_ADDR_LIST Does
|
||||
not Reliably Contact Servers Sharing the Same UDP Port on the Same
|
||||
@@ -759,7 +759,7 @@ to respect the EPICS_CA_MAX_ARRAY_BYTES setting as described below instead.</p>
|
||||
<p>Starting with version R3.14 the environment variable
|
||||
EPICS_CA_MAX_ARRAY_BYTES determines the size of the largest array that may pass
|
||||
through CA. Prior to this version only arrays smaller than 16k bytes could be
|
||||
transfered. The CA libraries maintains a free list of 16384 byte network
|
||||
transferred. The CA libraries maintains a free list of 16384 byte network
|
||||
buffers that are used for ordinary communication. If EPICS_CA_MAX_ARRAY_BYTES
|
||||
is larger than 16384 then a second free list of larger data buffers is
|
||||
established and used only after a client send its first large array request.</p>
|
||||
@@ -1085,7 +1085,7 @@ to standard out.</p>
|
||||
|
||||
<p>If a value is specified it is written to the PV. Next, the current value of
|
||||
the PV is converted to each of the many external data type that can be
|
||||
specified at the CA client library interface, and each of these is formated and
|
||||
specified at the CA client library interface, and each of these is formatted and
|
||||
then output to the console.</p>
|
||||
<hr>
|
||||
|
||||
@@ -1631,7 +1631,7 @@ stdout.</p>
|
||||
|
||||
<p>The -s option allows to specify an interest level for calling Channel
|
||||
Access' internal report function <code>ca_client_status()</code>, that prints lots of
|
||||
internal informations on stdout, including environment settings, used CA ports
|
||||
internal information on stdout, including environment settings, used CA ports
|
||||
etc.</p>
|
||||
|
||||
<table border="1">
|
||||
@@ -1969,7 +1969,7 @@ that the request is sent call <code>ca_flush_io()</code> followed by
|
||||
|
||||
<h3><a name="Problems">ENOBUFS Messages</a></h3>
|
||||
|
||||
<p>Many Berkley UNIX derived Internet Protocol (IP) kernels use a memory
|
||||
<p>Many Berkeley UNIX derived Internet Protocol (IP) kernels use a memory
|
||||
management scheme with a fixed sized low level memory allocation quantum called
|
||||
an "mbuf". Messages about "ENOBUFS" are an indication that your IP kernel is
|
||||
running low on mbuf buffers. An IP kernel mbuf starvation situation may lead to
|
||||
|
||||
@@ -65,7 +65,7 @@ const char * ca_message_text []
|
||||
"Sorry, that feature is planned but not supported at this time",
|
||||
"The supplied string is unusually large",
|
||||
"The request was ignored because the specified channel is disconnected",
|
||||
"The data type specifed is invalid",
|
||||
"The data type specified is invalid",
|
||||
|
||||
"Remote Channel not found",
|
||||
"Unable to locate all user specified channels",
|
||||
@@ -94,7 +94,7 @@ const char * ca_message_text []
|
||||
"The supplied string is empty",
|
||||
"Unable to spawn the CA repeater thread- auto reconnect will fail",
|
||||
"No channel id match for search reply- search reply ignored",
|
||||
"Reseting dead connection- will try to reconnect",
|
||||
"Resetting dead connection- will try to reconnect",
|
||||
"Server (IOC) has fallen behind or is not responding- still waiting",
|
||||
|
||||
"No internet interface with broadcast available",
|
||||
@@ -196,7 +196,7 @@ int epicsStdCall ca_context_create (
|
||||
return ECA_ALLOCMEM;
|
||||
}
|
||||
|
||||
epicsThreadPrivateSet ( caClientContextId, (void *) pcac );
|
||||
epicsThreadPrivateSet ( caClientContextId, pcac );
|
||||
}
|
||||
catch ( ... ) {
|
||||
return ECA_ALLOCMEM;
|
||||
@@ -381,11 +381,11 @@ int epicsStdCall ca_clear_channel ( chid pChan )
|
||||
}
|
||||
else {
|
||||
//
|
||||
// we will definately stall out here if all of the
|
||||
// we will definitely stall out here if all of the
|
||||
// following are true
|
||||
//
|
||||
// o user creates non-preemptive mode client library context
|
||||
// o user doesnt periodically call a ca function
|
||||
// o user doesn't periodically call a ca function
|
||||
// o user calls this function from an auxiliary thread
|
||||
//
|
||||
CallbackGuard cbGuard ( cac.cbMutex );
|
||||
@@ -717,6 +717,18 @@ int epicsStdCall ca_context_status ( ca_client_context * pcac, unsigned level )
|
||||
return ECA_NORMAL;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
LIBCA_API
|
||||
void dbCaSyncLocal(void);
|
||||
|
||||
void dbCaSyncLocal(void)
|
||||
{
|
||||
if(struct ca_client_context * ctxt = ca_current_context()) {
|
||||
// bounce for access to private data member
|
||||
ctxt->sync();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* ca_current_context ()
|
||||
*
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user