11 Commits

Author SHA1 Message Date
8fa17e0f15 Tell C++11 compilers to generate default copy operator
Recent compilers complain about using memcpy on a class with non-trivial
copy-assignment operator. However, this is used in the the impementation
of that operator. Avoid in C++11 in favor of explicitly asking for the default.
2025-09-03 17:50:02 +02:00
ace5da0dfd Fix compiler warning about mismatching signedness 2025-09-03 17:49:47 +02:00
edcbf03505 Address of variable can never be NULL 2025-09-03 17:49:29 +02:00
b1f8777606 Don't unreference pdd with borrowed memory buf
This can lead to memory being deleted twice.
2025-09-03 17:45:32 +02:00
Ralph Lange
e075fd450a ci: update GHA builds (copy from Base)
(closes #13)
2025-09-03 17:32:45 +02:00
Ralph Lange
4f60f2d9a6 Merge pull request #10 from ralphlange/fix-ci
Fix CI builds on GHA
2024-12-18 11:15:18 +01:00
Ralph Lange
2a948ff459 ci: copy GHA builds from base 2024-12-18 10:48:13 +01:00
Ralph Lange
5e228fe15a ci: update .ci submodule to v3.4.1 2024-12-18 08:59:07 +01:00
Ralph Lange
f979b2d162 GHA: Update actions/upload-artifact to v4 2024-12-16 12:41:46 +01:00
Ralph Lange
a8ba939c33 Make EPICS_CAS_BEACON_ADDR_LIST fall back to EPICS_CA_ADDR_LIST
This will allow "simple" configurations that only define
EPICS_CA_ADDR_LIST and EPICS_CA_AUTO_ADDR_LIST=NO to get
beacons sent to that configured audience.
(fixes #7)
2022-05-12 16:07:53 -07:00
Ralph Lange
849e873dd7 Step version to 4.13.4-DEV for development 2021-12-09 18:25:31 +01:00
7 changed files with 256 additions and 62 deletions

2
.ci

Submodule .ci updated: 5764601630...20f8e05393

View File

@@ -25,14 +25,14 @@ env:
BASE_RECURSIVE: NO
jobs:
build-pcas:
native:
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
# Set environment variables from matrix parameters
env:
CMP: ${{ matrix.cmp }}
BCFG: ${{ matrix.configuration }}
WINE: ${{ matrix.wine }}
CI_CROSS_TARGETS: ${{ matrix.cross }}
EXTRA: ${{ matrix.extra }}
TEST: ${{ matrix.test }}
strategy:
@@ -40,81 +40,153 @@ jobs:
matrix:
# Job names also name artifacts, character limitations apply
include:
- os: ubuntu-20.04
- 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.
extra: "CMD_CXXFLAGS=-std=c++20
CMD_CPPFLAGS='-fdiagnostics-color
-fstack-protector-strong
-Wformat
-Werror
-Werror=format-security
-Wno-error=deprecated-declarations
-Wno-error=stringop-truncation
-Wno-error=restrict
-Wno-error=sizeof-pointer-memaccess
-Wno-error=nonnull
-Wno-error=dangling-pointer
-Wno-error=format-overflow
-Wno-error=stringop-overread
-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3'
CMD_LDFLAGS=-Wl,-z,relro"
- os: ubuntu-22.04
cmp: gcc
configuration: default
wine: "64"
name: "Ub-20 gcc-9 + MinGW"
cross: "windows-x64-mingw"
name: "Ub-22 gcc + MinGW"
- os: ubuntu-20.04
- os: ubuntu-22.04
cmp: gcc
configuration: static
wine: "64"
name: "Ub-20 gcc-9 + MinGW, static"
cross: "windows-x64-mingw"
name: "Ub-22 gcc + MinGW, static"
- os: ubuntu-20.04
- os: ubuntu-22.04
cmp: gcc
configuration: static
extra: "CMD_CXXFLAGS=-std=c++11"
name: "Ub-20 gcc-9 C++11, static"
name: "Ub-22 gcc C++11, static"
- os: ubuntu-20.04
- 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
cmp: clang
configuration: default
name: "Ub-20 clang-10"
name: "Ub-22 clang"
- os: ubuntu-20.04
- os: ubuntu-22.04
cmp: clang
configuration: default
extra: "CMD_CXXFLAGS=-std=c++11"
name: "Ub-20 clang-10 C++11"
name: "Ub-22 clang C++11"
- os: ubuntu-18.04
- os: ubuntu-22.04
cmp: gcc
configuration: default
name: "Ub-18 gcc-7"
cross: "RTEMS-pc686-qemu@5"
name: "Ub-22 gcc + RT-5.1 pc686"
- os: ubuntu-18.04
cmp: gcc-8
utoolchain: true
utoolchain-install: "gcc-8 g++-8"
- os: ubuntu-22.04
cmp: gcc
configuration: default
name: "Ub-18 gcc-8"
cross: "RTEMS-beatnik@5"
test: NO
name: "Ub-22 gcc + RT-5.1 beatnik"
- os: ubuntu-20.04
cmp: gcc-8
utoolchain: true
utoolchain-install: "gcc-8 g++-8"
- os: ubuntu-22.04
cmp: gcc
configuration: default
name: "Ub-20 gcc-8"
cross: "RTEMS-xilinx_zynq_a9_qemu@5"
test: NO
name: "Ub-22 gcc + RT-5.1 xilinx_zynq_a9_qemu"
- 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
- 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-12"
name: "MacOS clang"
- os: windows-2019
- os: windows-2022
cmp: vs2022
configuration: debug
name: "Win-22 MSC-22"
extra: "CMD_CXXFLAGS=-analysis"
- os: windows-2022
cmp: vs2022
configuration: static-debug
name: "Win-22 MSC-22, static"
extra: "CMD_CXXFLAGS=-analysis"
- os: windows-2022
cmp: vs2022
configuration: debug
name: "Win-22 MSC-22, debug"
- os: windows-2022
cmp: gcc
configuration: default
name: "Win2019 MinGW"
name: "Win-22 mingw"
- os: windows-2019
cmp: vs2019
# Cross builds
- os: ubuntu-latest
cmp: gcc
configuration: default
name: "Win2019 MSC-19"
name: "Cross linux-aarch64"
cross: linux-aarch64
- os: windows-2019
cmp: vs2019
configuration: static
name: "Win2019 MSC-19, static"
- os: ubuntu-latest
cmp: gcc
configuration: default
name: "Cross linux-arm gnueabi"
cross: linux-arm@arm-linux-gnueabi
- os: windows-2019
cmp: vs2019
configuration: debug
name: "Win2019 MSC-19, debug"
- os: ubuntu-latest
cmp: gcc
configuration: default
name: "Cross linux-arm gnueabihf"
cross: linux-arm@arm-linux-gnueabihf
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
submodules: true
- name: Automatic core dumper analysis
@@ -124,22 +196,15 @@ jobs:
sudo apt-get update
sudo apt-get -y install qemu-system-x86 g++-mingw-w64-x86-64 gdb
if: runner.os == 'Linux'
- name: "apt-get install ${{ matrix.cmp }}"
run: |
sudo apt-get -y install software-properties-common
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get -y install ${{ matrix.utoolchain-install }}
if: matrix.utoolchain
- name: Prepare and compile dependencies
run: python .ci/cue.py prepare
- name: Build main module
run: python .ci/cue.py build
- name: Run main module tests
run: python .ci/cue.py -T 20M test
run: python .ci/cue.py -T 60M test
- name: Upload tapfiles Artifact
if: ${{ always() }}
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: tapfiles ${{ matrix.name }}
path: '**/O.*/*.tap'
@@ -147,3 +212,125 @@ jobs:
- name: Collect and show test results
if: ${{ always() }}
run: python .ci/cue.py -T 5M test-results
docker:
name: ${{ matrix.name }}
runs-on: ubuntu-latest
container:
image: ${{ matrix.image }}
# Set environment variables from matrix parameters
env:
CMP: ${{ matrix.cmp }}
BCFG: ${{ matrix.configuration }}
EXTRA: ${{ matrix.extra }}
TEST: ${{ matrix.test }}
strategy:
fail-fast: false
matrix:
# Job names also name artifacts, character limitations apply
include:
- name: "CentOS-8"
image: centos:8
cmp: gcc
configuration: default
- name: "Rocky-9"
image: rockylinux:9
cmp: gcc
configuration: default
- name: "Fedora-33"
image: fedora:33
cmp: gcc
configuration: default
- name: "Fedora-latest"
image: fedora:latest
cmp: gcc
configuration: default
steps:
- name: "Fix repo URLs on CentOS-8"
# centos:8 is frozen, repos are in the vault
if: matrix.image=='centos:8'
run: |
sed -i -e "s|mirrorlist=|#mirrorlist=|" \
-e "s|#baseurl=http://mirror|baseurl=http://vault|" \
/etc/yum.repos.d/CentOS-Linux-{BaseOS,AppStream,Extras,Plus}.repo
- name: "Redhat setup"
run: |
dnf -y install python3 gdb make perl gcc-c++ glibc-devel readline-devel ncurses-devel perl-devel perl-Test-Simple
git --version || dnf -y install git
python3 --version
- uses: actions/checkout@v4
with:
submodules: true
- name: Automatic core dumper analysis
uses: mdavidsaver/ci-core-dumper@master
- name: Prepare and compile dependencies
run: python3 .ci/cue.py prepare
- name: Build main module
run: python3 .ci/cue.py build
- name: Run main module tests
run: python3 .ci/cue.py -T 20M test
- name: Upload tapfiles Artifact
if: ${{ always() }}
uses: actions/upload-artifact@v4
with:
name: tapfiles ${{ matrix.name }}
path: '**/O.*/*.tap'
if-no-files-found: ignore
- name: Collect and show test results
if: ${{ always() }}
run: python3 .ci/cue.py -T 5M test-results
build-docker:
name: Docker CentOS-7
runs-on: ubuntu-latest
env:
CMP: gcc
BCFG: default
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Run...
run: |
env > env.list
cat <<EOF > runit.sh
#!/bin/sh
set -e -x
cd /io
id
sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo
sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/*.repo
sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/*.repo
yum -y install epel-release
yum -y install \
curl make gcc curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker \
python3 gdb make perl gcc-c++ glibc-devel readline-devel ncurses-devel perl-devel perl-Test-Simple \
libevent-devel sudo re2c perl-version
[ -e /usr/bin/python ] || ln -sf /usr/bin/python3 /usr/bin/python
# fake out cue.py
ln -s /bin/true /usr/bin/apt-get
# quiet warnings spam from perl
export LANG=C
python --version
python .ci/cue.py prepare
python .ci/cue.py build
python .ci/cue.py -T 15M test
python .ci/cue.py test-results
EOF
chmod +x runit.sh
docker run --rm --quiet \
--pull=always \
--env-file env.list \
-v `pwd`:/io \
centos:7 \
/io/runit.sh

View File

@@ -1,7 +1,7 @@
EPICS_PCAS_MAJOR_VERSION = 4
EPICS_PCAS_MINOR_VERSION = 13
EPICS_PCAS_MAINTENANCE_VERSION = 3
EPICS_PCAS_DEVELOPMENT_FLAG = 0
EPICS_PCAS_MAINTENANCE_VERSION = 4
EPICS_PCAS_DEVELOPMENT_FLAG = 1
EXPANDVARS += EPICS_PCAS_MAJOR_VERSION
EXPANDVARS += EPICS_PCAS_MINOR_VERSION

View File

@@ -114,7 +114,11 @@ inline void gdd::setStatSevr(aitInt16 stat, aitInt16 sevr)
{ status.s.aitStat = stat; status.s.aitSevr = sevr; }
inline gdd& gdd::operator=(const gdd& v)
#if __cplusplus >= 201103L
= default;
#else
{ memcpy(this,&v,sizeof(gdd)); return *this; }
#endif
inline int gdd::isScalar(void) const { return dimension()==0?1:0; }
inline int gdd::isContainer(void) const

View File

@@ -307,7 +307,6 @@ void gdd::test()
pdd->convertAddressToOffsets();
pdd->convertOffsetsToAddress();
pdd->dump();
pdd->unreference();
delete [] buf;
}
#endif
@@ -509,7 +508,6 @@ void gddContainer::test(void)
cdd1->dump();
fprintf(stderr,"=====RE-DUMP OF ORIGINAL CONTAINER:\n");
dump();
cdd1->unreference();
delete [] buf;
// test copy(), Dup(), copyInfo()

View File

@@ -24,7 +24,6 @@
casCoreClient::casCoreClient ( caServerI & serverInternal ) :
eventSys ( *this )
{
assert ( & serverInternal );
ctx.setServer ( & serverInternal );
ctx.setClient ( this );
}

View File

@@ -151,12 +151,18 @@ casDGIntfIO::casDGIntfIO ( caServerI & serverIn, clientBufMemoryManager & memMgr
epicsSocketDestroy (this->sock);
throw S_cas_bindFail;
}
if ( addConfigBeaconAddr ) {
addAddrToChannelAccessAddressList (
& BCastAddrList, &EPICS_CAS_BEACON_ADDR_LIST, beaconPort, 0 );
if (addConfigBeaconAddr) {
if (envGetConfigParamPtr ( & EPICS_CAS_BEACON_ADDR_LIST ) ) {
addAddrToChannelAccessAddressList (
& BCastAddrList, & EPICS_CAS_BEACON_ADDR_LIST, beaconPort, 0 );
}
else {
addAddrToChannelAccessAddressList (
& BCastAddrList, & EPICS_CA_ADDR_LIST, beaconPort, 0 );
}
}
removeDuplicateAddresses ( & this->beaconAddrList, & BCastAddrList, 0 );
{
@@ -417,7 +423,7 @@ void casDGIntfIO::sendBeaconIO ( char & msg, unsigned length,
osiSockAddrNode *pAddr = reinterpret_cast<osiSockAddrNode *>(pNode);
ssize_t status = sendto(this->beaconSock, &msg, length, 0, &pAddr->addr.sa, sizeof(pAddr->addr.ia));
if ( status != length ) {
if ( status != static_cast<ssize_t>(length) ) {
char sockErrBuf[64], buf[64];
epicsSocketConvertErrnoToString ( sockErrBuf, sizeof ( sockErrBuf ) );
ipAddrToA ( &pAddr->addr.ia, buf, sizeof(buf) );