diff --git a/.appveyor.yml b/.appveyor.yml index 7590fb783..d426b0786 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -33,17 +33,7 @@ skip_commits: - 'templates/*' - '**/*.html' - '**/*.md' - - '.travis.yml' - -#---------------------------------# -# additional packages # -#---------------------------------# - -install: -# fetch submodules (like ci-scripts) - - cmd: git submodule update --init --recursive -# for the sequencer - - cinst re2c + - ".github/*" #---------------------------------# # build matrix configuration # @@ -89,33 +79,23 @@ configuration: environment: # common / default variables for all jobs SETUP_PATH: .ci-local:.ci + BASE: "7.0" matrix: + - CMP: gcc - CMP: vs2019 - BASE: "7.0" - SET: "deps2" APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 - - CMP: gcc - BASE: "7.0" - SET: "deps2" - CMP: vs2019 BASE: "3.15" - SET: "deps2" APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 - CMP: vs2019 BASE: "3.14" - SET: "deps1" + SET: "synapps-6.0" APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 - #- CMP: vs2017 - # BASE: "7.0" - # SET: "deps2" - # APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + - CMP: vs2017 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - CMP: vs2015 - BASE: "7.0" - SET: "deps2" - #- CMP: vs2013 - # BASE: "7.0" - # SET: "deps2" + - CMP: vs2013 # Platform: processor architecture platform: @@ -125,28 +105,46 @@ platform: # Matrix configuration: exclude sets of jobs matrix: exclude: + # VS2012 and older installs don't have the 64 bit compiler + - platform: x64 + CMP: vs2012 + - platform: x64 + CMP: vs2010 # Exclude more jobs to reduce build time # E.g., skip 32-bit for newer compilers - platform: x86 CMP: vs2019 - #- platform: x86 - # CMP: vs2015 + # MinGW debug builds use the same libraries, unlike VS + - configuration: dynamic-debug + CMP: gcc + - configuration: static-debug + CMP: gcc #---------------------------------# # building & testing # #---------------------------------# -build_script: +install: + - cmd: git submodule update --init --recursive +# for the sequencer + - choco install re2c + - cmd: pip install git+https://github.com/mdavidsaver/ci-core-dumper#egg=ci-core-dumper - cmd: python .ci/cue.py prepare + +build_script: - cmd: python .ci/cue.py build test_script: + - cmd: python -m ci_core_dumper install - cmd: python .ci/cue.py -T 20M test on_finish: - ps: Get-ChildItem *.tap -Recurse -Force | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name } - cmd: python .ci/cue.py -T 5M test-results +on_failure: + - cmd: python -m ci_core_dumper report + #---------------------------------# # debugging # #---------------------------------# diff --git a/.ci-local/deps-latest.set b/.ci-local/deps-latest.set deleted file mode 100644 index 4a2a26378..000000000 --- a/.ci-local/deps-latest.set +++ /dev/null @@ -1,8 +0,0 @@ -MODULES="sncseq sscan calc ipac" - -BASE_RECURSIVE=no - -SNCSEQ=master -SSCAN=master -CALC=master -IPAC=master diff --git a/.ci-local/deps1.set b/.ci-local/deps1.set deleted file mode 100644 index 34dc30a23..000000000 --- a/.ci-local/deps1.set +++ /dev/null @@ -1,8 +0,0 @@ -MODULES="sncseq sscan calc ipac" - -BASE_RECURSIVE=no - -SNCSEQ=R2-2-8 -SSCAN=R2-11-3 -CALC=R3-7-3 -IPAC=2.15 diff --git a/.ci-local/deps2.set b/.ci-local/deps2.set deleted file mode 100644 index 6f0fcae98..000000000 --- a/.ci-local/deps2.set +++ /dev/null @@ -1,8 +0,0 @@ -MODULES="sncseq sscan calc ipac" - -BASE_RECURSIVE=no - -SNCSEQ=R2-2-8 -SSCAN=R2-11-5 -CALC=R3-7-4 -IPAC=2.16 diff --git a/.ci-local/no-deps.set b/.ci-local/no-deps.set deleted file mode 100644 index 45d901f82..000000000 --- a/.ci-local/no-deps.set +++ /dev/null @@ -1,3 +0,0 @@ -MODULES="" - -BASE_RECURSIVE=no diff --git a/.ci-local/sscan-2.10.1-fix.patch b/.ci-local/sscan-2.10.1-fix.patch new file mode 100644 index 000000000..697c65c28 --- /dev/null +++ b/.ci-local/sscan-2.10.1-fix.patch @@ -0,0 +1,20 @@ +diff --git a/sscanApp/src/Makefile b/sscanApp/src/Makefile +index 7853dcb..012e246 100644 +--- a/sscanApp/src/Makefile ++++ b/sscanApp/src/Makefile +@@ -44,15 +44,7 @@ ifdef SNCSEQ + endif + + # save scan data stuff +-# XDR not available on WIN32 +-ifeq ($(OS_CLASS), WIN32) + sscan_SRCS += saveData_writeXDR.c, writeXDR.c +-else +-sscan_SRCS += xdr_lib.c +-sscan_SRCS += saveData.c +-sscan_SRCS_vxWorks += xdr_stdio.c +-sscan_SYS_LIBS_cygwin32 += $(CYGWIN_RPC_LIB) +-endif + + # for scanProgress + ifdef SNCSEQ diff --git a/.ci-local/synapps-5.8.set b/.ci-local/synapps-5.8.set new file mode 100644 index 000000000..de5ca095c --- /dev/null +++ b/.ci-local/synapps-5.8.set @@ -0,0 +1,8 @@ +SNCSEQ=R2-2-1 +SSCAN=R2-10-1 +CALC=R3-4-2-1 +IPAC=2.12 + +BASE=3.14 + +SSCAN_HOOK=.ci-local/sscan-2.10.1-fix.patch diff --git a/.ci-local/synapps-6.0.set b/.ci-local/synapps-6.0.set new file mode 100644 index 000000000..1d525a6fb --- /dev/null +++ b/.ci-local/synapps-6.0.set @@ -0,0 +1,6 @@ +SNCSEQ=R2-2-5 +SSCAN=R2-11-1 +CALC=R3-7-1 +IPAC=2.15 + +BASE=3.15 diff --git a/.ci-local/synapps-6.3.set b/.ci-local/synapps-6.3.set new file mode 100644 index 000000000..df467a05f --- /dev/null +++ b/.ci-local/synapps-6.3.set @@ -0,0 +1,6 @@ +SNCSEQ=R2-2-9 +SSCAN=R2-11-5 +CALC=R3-7-4 +IPAC=2.16 + +BASE=7.0 diff --git a/.github/workflows/ci-scripts-build.yml b/.github/workflows/ci-scripts-build.yml new file mode 100644 index 000000000..6d4f3949b --- /dev/null +++ b/.github/workflows/ci-scripts-build.yml @@ -0,0 +1,164 @@ +name: Build and Test + +# Trigger on pushes and PRs to any branch +on: + push: + paths-ignore: + - 'documentation/*' + - '.gitattributes' + - '**/*.html' + - '**/*.md' + - '**/*.txt' + pull_request: + paths-ignore: + - 'documentation/*' + - '.gitattributes' + - '**/*.html' + - '**/*.md' + - '**/*.txt' + workflow_dispatch: + +env: + SETUP_PATH: .ci-local:.ci + BASE_RECURSIVE: NO + MODULES: "sncseq sscan calc ipac" + APT: re2c libtirpc-dev libreadline-dev + CHOCO: re2c + BREW: re2c + +jobs: + test: + name: ${{ matrix.name }} + runs-on: ${{ matrix.os }} + env: + CMP: ${{ matrix.cmp }} + BCFG: ${{ matrix.configuration }} + BASE: ${{ matrix.base }} + SET: ${{ matrix.deps }} + CI_CROSS_TARGETS: ${{ matrix.cross }} + TEST: ${{ matrix.test }} + + strategy: + fail-fast: false + matrix: + # Job names also name artifacts, character limitations apply + include: + - name: Linux Base7.0 + os: ubuntu-latest + cmp: gcc + configuration: default + base: "7.0" + + - name: Linux Base7.0 static + os: ubuntu-latest + cmp: gcc + configuration: static + base: "7.0" + + - name: Linux Base3.15 + os: ubuntu-latest + cmp: gcc + configuration: default + base: "3.15" + + - name: Linux Base3.15 static + os: ubuntu-latest + cmp: gcc + configuration: static + base: "3.15" + + - name: Linux Base7.0 synapps-6.3 + os: ubuntu-latest + cmp: gcc + configuration: default + deps: "synapps-6.3" + + - name: Linux Base3.15 synapps-6.0 + os: ubuntu-latest + cmp: gcc + configuration: default + deps: "synapps-6.0" + + - name: Linux Base3.14 synapps-6.0 + os: ubuntu-latest + cmp: gcc + configuration: default + base: "3.14" + deps: "synapps-6.0" + + - name: Linux Base3.14 synapps-5.8 + os: ubuntu-latest + cmp: gcc + configuration: default + deps: "synapps-5.8" + + - name: Linux Base3.15 no-deps + os: ubuntu-latest + cmp: gcc + configuration: default + base: "3.15" + + - name: MacOS Base7.0 + os: macos-latest + cmp: clang + configuration: default + + - name: Win2019 Base7.0 DLL + os: windows-2019 + cmp: vs2019 + configuration: default + base: "7.0" + + - name: Win2019 Base7.0 static + os: windows-2019 + cmp: vs2019 + configuration: static + base: "7.0" + + - name: RTEMS-4.9 Base7.0 + os: ubuntu-latest + cmp: gcc + configuration: default + base: "7.0" + cross: "RTEMS-pc386-qemu@4.9" + + - name: RTEMS-4.10 Base7.0 + os: ubuntu-latest + cmp: gcc + configuration: default + base: "7.0" + cross: "RTEMS-pc386-qemu@4.10" + test: NO + + - name: RTEMS-5 Base7.0 + os: ubuntu-latest + cmp: gcc + configuration: default + base: "7.0" + cross: "RTEMS-pc686-qemu@5" + + steps: + - uses: actions/checkout@v4 + with: + submodules: true + + - name: Prepare and compile EPICS 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 + + - 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: python .ci/cue.py -T 5M test-results diff --git a/.github/workflows/ci-scripts.yml b/.github/workflows/ci-scripts.yml deleted file mode 100644 index fb4356dc1..000000000 --- a/.github/workflows/ci-scripts.yml +++ /dev/null @@ -1,130 +0,0 @@ -name: asyn - -# Trigger on pushes and PRs to any branch -on: - push: - paths-ignore: - - '**/*.md' - - '**/*.txt' - pull_request: - -env: - SETUP_PATH: .ci-local:.ci - -jobs: - test: - name: ${{ matrix.os }}/${{ matrix.deps }}/${{ matrix.base }}/${{ matrix.cmp }}/${{ matrix.configuration }}/${{ matrix.cross }} - runs-on: ${{ matrix.os }} - env: - CMP: ${{ matrix.cmp }} - BCFG: ${{ matrix.configuration }} - BASE: ${{ matrix.base }} - SET: ${{ matrix.deps }} - CI_CROSS_TARGETS: ${{ matrix.cross }} - TEST: ${{ matrix.test }} - APT: re2c - CHOCO: re2c - BREW: re2c - - strategy: - fail-fast: false - matrix: - # Job names also name artifacts, character limitations apply - include: - - os: ubuntu-latest - cmp: gcc - configuration: default - base: "7.0" - deps: "deps2" - - - os: ubuntu-latest - cmp: gcc - configuration: static - base: "7.0" - deps: "deps2" - - - os: ubuntu-latest - cmp: gcc - configuration: static - base: "7.0" - deps: "deps2" - - - os: ubuntu-latest - cmp: gcc - configuration: default - base: "3.15" - deps: "no-deps" - - - os: ubuntu-latest - cmp: gcc - configuration: static - base: "3.15" - deps: "deps2" - -# - os: ubuntu-latest -# cmp: gcc -# configuration: static -# base: "3.14" -# deps: "deps1" - - - os: windows-2019 - cmp: vs2019 - configuration: default - base: "7.0" - deps: "deps2" - - - os: windows-2019 - cmp: vs2019 - configuration: static - base: "7.0" - deps: "deps2" - - - os: ubuntu-latest - cmp: gcc - configuration: default - base: "7.0" - deps: "no-deps" - cross: "RTEMS-pc386-qemu@4.9" - - - os: ubuntu-latest - cmp: gcc - configuration: default - base: "7.0" - deps: "no-deps" - cross: "RTEMS-pc386-qemu@4.10" - test: NO - -# - os: ubuntu-latest -# cmp: gcc -# configuration: default -# base: "7.0" -# deps: "no-deps" -# cross: "RTEMS-pc686-qemu@5" - steps: - - uses: actions/checkout@v3 - with: - submodules: true - - - name: Prepare and compile EPICS dependencies - run: python .ci/cue.py prepare - - - name: TIRPC - run: echo TIRPC=YES > configure/CONFIG_SITE.Common.linux-x86_64 - - - name: Build main module - run: python .ci/cue.py build - - - name: Run main module tests - run: python .ci/cue.py -T 20M test - - - name: Upload tapfiles Artifact - if: ${{ always() }} - uses: actions/upload-artifact@v3 - with: - name: tapfiles ${{ matrix.name }} - path: '**/O.*/*.tap' - if-no-files-found: ignore - - - name: Collect and show test results - if: ${{ always() }} - run: python .ci/cue.py -T 5M test-results diff --git a/RELEASE.md b/RELEASE.md index f56cd741a..3904fd559 100755 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,5 +1,12 @@ # asynDriver: Release Notes +## Release 4-46 (XXX, 2025) +- devVxi11 + - Make VXI11 support (for VISA systems) optional. + VXI11 is broken on RTEMS-5 and rarely required for real-time system IOCs. + By default enabled via setting DRV_VXI11=YES in configure/CONFIG_SITE. (Except RTEMS-5.) + - Thanks to Heinz Junkes for this. + ## Release 4-45 (December 1, 2024) - asynManager, asynPortDriver - Add support for destructable ports. diff --git a/asyn/Makefile b/asyn/Makefile index 3f803f489..608900159 100644 --- a/asyn/Makefile +++ b/asyn/Makefile @@ -215,6 +215,7 @@ ifneq ($(EPICS_LIBCOM_ONLY),YES) DB += asynRecord.db endif +ifeq ($(DRV_VXI11),YES) SRC_DIRS += $(ASYN)/vxi11 ifeq ($(OS_CLASS), WIN32) asyn_SRCS += drvVxi11Win32.c @@ -226,6 +227,7 @@ asyn_SRCS += E5810Reboot.c asyn_SRCS += E2050Reboot.c asyn_SRCS += TDS3000Reboot.c DBD += drvVxi11.dbd +endif SRC_DIRS += $(ASYN)/drvPrologixGPIB asyn_SRCS += drvPrologixGPIB.c @@ -242,9 +244,11 @@ endif ifneq (, $(findstring RTEMS, $(T_A))) DRV_USBTMC = NO + DRV_VXI11 = NO endif ifneq (, $(findstring vxWorks, $(T_A))) DRV_USBTMC = NO + DRV_VXI11 = NO endif ifeq ($(DRV_USBTMC),YES) SRC_DIRS += $(ASYN)/drvAsynUSBTMC diff --git a/configure/CONFIG_SITE b/configure/CONFIG_SITE index 538cd55ce..b6a3bec49 100644 --- a/configure/CONFIG_SITE +++ b/configure/CONFIG_SITE @@ -36,6 +36,9 @@ CHECK_RELEASE = YES # then set LINUX_GPIB=YES LINUX_GPIB=NO +# If you have rpc-lib installed and want to have support for VISA devices (VXI11) set DRV_VXI11=YES +#DRV_VXI11=YES + # If you have libusb-1.0 revision 16 or newer and want the USB TMC support set DRV_USBTMC=YES #DRV_USBTMC=YES diff --git a/configure/CONFIG_SITE.Common.linux-x86_64 b/configure/CONFIG_SITE.Common.linux-x86_64 index d500d713c..a7cbc8f41 100644 --- a/configure/CONFIG_SITE.Common.linux-x86_64 +++ b/configure/CONFIG_SITE.Common.linux-x86_64 @@ -4,6 +4,5 @@ # If your system has libftdi1, set the following to YES. If it has libftdi, set it to NO #DRV_FTDI_USE_LIBFTDI1=YES -# If your system has tirpc, set the following to YES. +# If your system has tirpc (Linux does), set the following to YES. TIRPC=YES - diff --git a/configure/CONFIG_SITE.Common.linux-x86_64-centos8 b/configure/CONFIG_SITE.Common.linux-x86_64-centos8 deleted file mode 100644 index 28e1e7827..000000000 --- a/configure/CONFIG_SITE.Common.linux-x86_64-centos8 +++ /dev/null @@ -1,2 +0,0 @@ -TIRPC=YES - diff --git a/configure/CONFIG_SITE.Common.linux-x86_64-ub22 b/configure/CONFIG_SITE.Common.linux-x86_64-ub22 deleted file mode 100644 index 28e1e7827..000000000 --- a/configure/CONFIG_SITE.Common.linux-x86_64-ub22 +++ /dev/null @@ -1,2 +0,0 @@ -TIRPC=YES - diff --git a/testGpibApp/src/Makefile b/testGpibApp/src/Makefile index 20957003d..27c13fdb6 100644 --- a/testGpibApp/src/Makefile +++ b/testGpibApp/src/Makefile @@ -10,7 +10,7 @@ ASYN_LIB = $(TOP)/lib/$(T_A) ASYN_BIN = $(TOP)/bin/$(T_A) USR_CFLAGS += -DUSE_TYPED_RSET -DUSE_TYPED_DSET -DUSE_TYPED_DRVET - +ifeq ($(DRV_VXI11),YES) DBD += devTestGpib.dbd DBD += testGpib.dbd @@ -61,7 +61,7 @@ testGpibVx_LIBS += $(EPICS_BASE_IOC_LIBS) #=========================== - +endif include $(TOP)/configure/RULES #---------------------------------------- # ADD RULES AFTER THIS LINE