Closed rerpha closed 1 month ago
We should also allow for using PVXS as an aletrnative as per https://epics.anl.gov/tech-talk/2024/msg00460.php
does that look correct (both branches have it) @FreddieAkeroyd ? it seems to work OK.
If so I might add those lines to every IOC's build.mak then create a ticket to use PVA for the test framework
Given this is a change to every ioc build.mak, I would like to first think if we actually do this change as is or create a fragment to include instead and make that change to build.mak, just on the principle of avoiding duplication and ease of future changes. I know it does potentially make our makefile less portable for others to pick up, but that may be minor. It may be we want to break into several separate .mak and then depending on choices in ioc generator we have a different Makefile at top level etc.
If that now looks OK @FreddieAkeroyd i may start including the pva.mak to every IOC
I've changed to use CONFIG_PVA_ISIS
and also used $(CONFIG)
for the include as $(TOP)
is relative to IOC.
We may need to be a little careful going forwards. We already define WITH_PVA
and WITH_QSRV
within areaDetector
, so any areaDetector based IOC is already PVA capable and we need to check that including a dbd multiple times in not an issue. At the moment PVA is only visible on the instrument as we have no PVA gateways, but i checked a pvget
on ISISDAE PVS when logged onto EMMA-A and that works fine.
Maybe in that case we just don't include it on IOCs that already include areadetector? If so, ones to avoid would be: WEBCAM GENICAM CAENMCA ANDOR ANDOR3 NGEM ISISDAE NCINDG
Any others?
As we always user the AREA_DETECTOR macro to point to areaDetector (and only include it when we use areaDetector) we can probably just test for that macro as per above PR
ok - i guess we could add those lines to every IOC's build.mak then?
Yes - the only minor exception is that the ioc called TEST already explicitly includes V4 so as well as adding this include you should remove its explicit reference to v4 dbd and libraries. To make sure it will work with a static linux link, the new include needs to be added before linking to EPICS_BASE_IOC_LIBS
as is done in template build.mak You could probably use sed
to insert the necessary lines before $(APPNAME)_LIBS += $(EPICS_BASE_IOC_LIBS)
in each file
https://github.com/ISISComputingGroup/EPICS-ioc/pull/848 https://github.com/ISISComputingGroup/IBEX/pull/8328 https://github.com/ISISComputingGroup/EPICS-base/pull/55
The command i used was (by adding the 4 lines to add.txt):
sed -i '/# Finally link to the EPICS Base libraries/r add.txt' ./*/*-IOC-01*/src/build.mak
To review this, check lines have been added to every IOC, and pick some at random and do pvget -p pva xxx
where xxx is a random PV name
@rerpha that has added the line after $(APPNAME)_LIBS += $(EPICS_BASE_IOC_LIBS)
i believe it needs to be before this line or else it will fail with the single pass linux static linker. You could add it after the text "# Finally link to the EPICS Base libraries" which i think is everywhere?
@rerpha that has added the line after
$(APPNAME)_LIBS += $(EPICS_BASE_IOC_LIBS)
i believe it needs to be before this line or else it will fail with the single pass linux static linker. You could add it after the text "# Finally link to the EPICS Base libraries" which i think is everywhere?
cheers, just done that instead
As a developer I would like to utilise pvaccess which can be run in parallel with channel access. This will mean we can use pva-only libraries going forwards.
this is quite easy to do - see https://github.com/ISISComputingGroup/EPICS-ioc/pull/845 for the KEPCO IOC.
also done https://github.com/ISISComputingGroup/EPICS-base/pull/52/files for the template build.mak for future IOCs.
We shoudl also test against this and make the ioc test framework try over pva as well.
Acceptance criteria