It doesn’t seem the default rules have one for PRINT., so I added the following line to the Makefile “PRINT.% : ; @echo $* = $($*)”
The output shows:
[master@scwksXX O.linux-x86_64]$ make PRINT.HDEPENDS.c
HDEPENDS.c =
Patrick
From: Barrett (US), Patrick E <>
Sent: Thursday, April 21, 2022 1:41 PM
To: 'anj at anl.gov' <anj at anl.gov>; 'tech-talk at aps.anl.gov' <tech-talk at aps.anl.gov>
Subject: RE: [EXTERNAL] Re: Getting Permission denied messages while building
We are running on a RedHat Linux OS and the
$EPICS_HOST_ARCH is linux-x86_64. The gcc version is 4.8.5, using perl version (v5.16.3)
Each of the error lines comes after it says it is running a RULES_BUILD line and it looks like the HDEPEND… were not set. The output from your requested command is:
[master@scwksXX O.linux-x86_64]$ make PRINT.HDEPENDS.c
make -f ../Makefile TOP=../../../../.. T_A=linux-x86_64 PRINT.HDEPENDS.c
make[1]: Entering directory `/home/master/workspace/egse-gr/sc/EPICS/base/src/ioc/db/test/O.linux-x86_64'
../dbLinkdset.c
make[1]: execvp: ../dbLinkdset.c: Permission denied
../xRecord.c
make[1]: execvp: ../xRecord.c: Permission denied
../arrRecord.c
make[1]: execvp: ../arrRecord.c: Permission denied
dbTestIoc_registerRecordDeviceDriver.cpp
make[1]: execvp: dbTestIoc_registerRecordDeviceDriver.cpp: Permission denied
../dbPutGetTest.c
make[1]: execvp: ../dbPutGetTest.c: Permission denied
../recGblCheckDeadbandTest.c
make[1]: execvp: ../recGblCheckDeadbandTest.c: Permission denied
../benchdbConvert.c
make[1]: execvp: ../benchdbConvert.c: Permission denied
../arrShorthandTest.c
make[1]: execvp: ../arrShorthandTest.c: Permission denied
../chfPluginTest.c
make[1]: execvp: ../chfPluginTest.c: Permission denied
dbChArrTest_registerRecordDeviceDriver.cpp
make[1]: execvp: dbChArrTest_registerRecordDeviceDriver.cpp: Permission denied
../dbChArrTest.cpp
make[1]: execvp: ../dbChArrTest.cpp: Permission denied
../dbChannelTest.c
make[1]: execvp: ../dbChannelTest.c: Permission denied
scanIoTest_registerRecordDeviceDriver.cpp
make[1]: execvp: scanIoTest_registerRecordDeviceDriver.cpp: Permission denied
../scanIoTest.c
make[1]: execvp: ../scanIoTest.c: Permission denied
../dbCaStatsTest.c
make[1]: execvp: ../dbCaStatsTest.c: Permission denied
../dbStateTest.c
make[1]: execvp: ../dbStateTest.c: Permission denied
../callbackParallelTest.c
make[1]: execvp: ../callbackParallelTest.c: Permission denied
../callbackTest.c
make[1]: execvp: ../callbackTest.c: Permission denied
../testdbConvert.c
make[1]: execvp: ../testdbConvert.c: Permission denied
../dbLockTest.c
make[1]: execvp: ../dbLockTest.c: Permission denied
../dbPutLinkTest.c
make[1]: execvp: ../dbPutLinkTest.c: Permission denied
../dbShutdownTest.c
make[1]: execvp: ../dbShutdownTest.c: Permission denied
make[1]: *** No rule to make target `PRINT.HDEPENDS.c'. Stop.
make[1]: Leaving directory `/home/master/workspace/egse-gr/sc/EPICS/base/src/ioc/db/test/O.linux-x86_64'
make: *** [PRINT.HDEPENDS.c] Error 2
thank you,
Patrick
|
EXT email: be mindful of links/attachments.
|
|
Hi Patrick,
On 4/21/22 8:11 AM, Barrett (US), Patrick E via Tech-talk wrote:
I have just upgraded to 3.15.9 and when running the build have started getting messages similar to:
../scanIoTest.c
make[3]: execvp: ../scanIoTest.c: Permission denied
I believe this has to do with determining header dependencies and I believe the “$(HDEPENDS.c)”, in this case, is not getting set. I have the issue with .cpp files as well. What should I check to resolve this?
Can you provide some more information about the system this is running on, (OS, $EPICS_HOST_ARCH value, and your compiler and Perl versions), and include the build output starting from several lines earlier in the build before it fails. The line you quote above
implies that it's trying to execute the .c file, which is weird. Do you have any local modifications to the Base 3.15.9 sources at all?
It would also be helpful if you can do this and send the output:
$ cd src/ioc/db/test/O.<host-arch>
$ make PRINT.HDEPENDS.c
That will show me how it's trying to create the dependency file. The 'make PRINT.<make-variable>' command uses a fairly new pattern target which is very useful for debugging build issues like this, but you do need to be in the right directory when you use it
to get the value that you're actually looking for.
- Andrew
--
Complexity comes for free, Simplicity you have to work for.