On Jul 30, 2021, at 11:57 AM, Francisco Ramos via Tech-talk <
tech-talk at aps.anl.gov> wrote:
I am new to working with EPICS and I don't know if this is the right way to share a bug I am having when compiling the ASYN module, version R4-42 on centos8. If not, I would be grateful if you could tell me how to do the process
correctly.
An email like this is usually an excellent way to start a problem report. The maintainer of the appropriate module may ask you to do something else when they read your message (which may be different for different modules or even different bugs), but this
list exists for exactly this kind of purpose.
I got an error when compiling the testGpibApp. The error obtained is when trying to compile for RTEMS and I get that it does not find the -ltirpc. While for linux x86 it compiles everything correctly and finishes the compilation
of both the library and the tests.
Also, I have uncommented TIRPC=YES because in centos 8 they moved RPC to libtirpc, as is described in the CONFIG_SITE file. Trying to understand why the library is compiled without problems, I have seen that in the ./asyn/Makefile the
library is included in the USR_INCLUDES_Linux += -I/usr/include/tirpc while in the ./testGpibApp/src/Makefile it is USR_INCLUDES += -I/usr/include/tirpc. I changed the ./testGpibApp/src/Makefile following the
same philosophy as in the ./asyn/Makefile and everything compiled perfectly. I'm still wondering if this is correct and I would like to know your point of view. At the end of the post, there is a table describing the change.
...
asyn/Makefile |
Original: testGpibApp/src/Makefile |
Changed: testGpibApp/src/Makefile |
ifeq ($(TIRPC),YES)
USR_INCLUDES_Linux += -I/usr/include/tirpc
asyn_SYS_LIBS_Linux += tirpc
endif |
ifeq ($(TIRPC),YES)
USR_INCLUDES += -I/usr/include/tirpc
testGpib_SYS_LIBS += tirpc
endif |
ifeq ($(TIRPC),YES)
USR_INCLUDES_Linux += -I/usr/include/tirpc
asyn_SYS_LIBS_Linux += tirpc
endif |
The EPICS build system has many different ways to adjust the build configuration of modules. Your changes are almost correct, your line
asyn_SYS_LIBS_Linux += tirpc
should actually be
testGpib_SYS_LIBS_Linux += tirpc
but that error may have been a typo in your email. This change will do the right thing, but there is a simpler way to achieve the same result without having to modify the Makefile at all.
You correctly followed the instructions in the CONFIG_SITE file to set TIRPC=YES as required by CentOS 8 but those were written without considering someone building for multiple targets that have different configuration
requirements. You can achieve the result you need if you move the TIRPC=YES setting to the CONFIG_SITE.Common.linux-x86_64 file instead, since variables set there override the settings in the CONFIG_SITE file only when building
for the linux-x86_64 target.