Hi William,
Your post perfectly illustrates why we at ESS put the effort to create our “e3” environment
😉
I have not done plain builds for a while…it has started to annoy me that I have to scramble together all the drivers whereas with e3 I have all I need, already
figured out.
However, to check, I just downloaded the latest release and compiled, and then created a base app, more or less following the steps as defined
here.
Pretty much the same steps you have followed, as far as I can tell. (I think the same procedure has worked since EPICS 7 was released…not sure though.)
With makeBaseApp, I got an IOC with PVA server, without doing anything extra. Also, the IOC directory is ready to start integrating your drivers.
If you run the IOC you created, try the command “pvasr” in the shell (after iocInit). If the command is recognized, you have PVA server enabled.
I am not sure what exactly Andrew meant with softIocPVA executable, but I assume that if you just run an IOC without connecting to any particular hardware (thus
“soft”), you can use the ready-made softIocPVA without doing anything extra.
Best regards,
Timo
From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of William Kirstaedter via Tech-talk <tech-talk at aps.anl.gov>
Reply to: William Kirstaedter <kirstaedter at fhi-berlin.mpg.de>
Date: Tuesday, 2 April 2024 at 21:50
To: "Johnson, Andrew N." <anj at anl.gov>, "tech-talk at aps.anl.gov" <Tech-talk at aps.anl.gov>
Subject: Re: enable pvAccess by default
Hi Andrew,
I'm not too deep into the EPICS (core) "game".
so please elaborate what you mean with "softIOCPVA" executable...
let me explain what I do:
Up until now, I create new IOCs via the "makeBaseApp.pl" script.
mkdir myIOC
cd myIOC
makeBaseApp.pl -t ioc myIOC
makeBaseApp.pl -i -t ioc myIOC
after that, I have a "barebone" IOC which can be compiled but does nothing.
then, I can start integrating my devices.
Im doing this by, for example,
loading the async and streamdevice modules via the *App/src/Makefile and a $(TOP)/../RELEASE.local file,
then creating streamdevice proto files and a *db file for the records.
"make" the IOC.
Finally, I setup and load everything via the st.cmd and have a running system that can control my device.
this is where my idea came from:
right now, the *App/src/Makefile lacks statements to load the PVAserver (whatever it is called now, I always thought theres only one that got developed in EPICS4 and is now mostly done and always included in EPICS 7)
So, if I'd like to switch over from CA to PVA, or at least also enable PVA for all my IOCs, I'd have to add the QSRV library loading to every Makefile of every IOC that I maintain, and, more importantly, recall to add them everytime I create a new IOC for
a new Lab or Device or whatever constellation...
Idk, my assumption as a user would have been that PVAserver is always available since I use EPICS 7 which combines "old-world" EPICS 3 and "new-world" EPICS 4 ?
also I wonder how big the ressources impact might be to run an additional PVAserver by default...
I'd assume modern low end hardware can handle that easily.
anyways, thanks for your reply :)
PS: also @Erico, thanks for your answer aswell, I see there might be quite a rabbithole regarding PVA stuff inside of EPICS 7 that I totally wasnt aware of...
William Kirstaedter
PP&B Computer Support Group
Fritz-Haber-Institut Berlin
Am 01.04.24 um 18:17 schrieb Johnson, Andrew N.:
Hi William,
On 3/31/24, 3:53 PM, "Tech-talk"
tech-talk-bounces at aps.anl.gov wrote:
I would like to know if you have already considered activating pvAccess
for softIOCs by default.
How is what you're asking for different than the softiocPVA executable that we already build in the pva2pva module?
I would probably adapt the Makefile template and simply copy the section
from the example IOC:
# Link QSRV (pvAccess Server) if available
ifdef EPICS_QSRV_MAJOR_VERSION
_APPNAME__LIBS += qsrv
_APPNAME__LIBS += $(EPICS_BASE_PVA_CORE_LIBS)
_APPNAME__DBD += PVAServerRegister.dbd
_APPNAME__DBD += qsrv.dbd
endif
Ultimately, this should not affect any old system, as pvAccess is only
loaded if it is also present in base?
PV Access has been part of Base since the first EPICS 7.0.1 release, but many sites aren't building it into all their IOCs — at the APS we use it in AreaDetector camera IOCs and our DAQ systems, but don't
build it into our regular EPICS 7 IOCs yet. The extra libraries and threads that it starts would take up resources on our systems.
HTH,
- Andrew
Complexity comes for free, Simplicity you have to work for.
PP&B Computer Support Group
Fritz-Haber-Institut Berlin