Hi Pete,
My apologies, in fact you are correct. Even with the fix_areaDetector branch the support/Makefile does not correctly handle the dependencies of areaDetector.
It was working for me because I used “make –j”. The timing of that worked out so that all of the areaDetector dependencies were in fact built before areaDetector needed them. However, that was just “luck”, and when I test without –j I
see the error you describe.
It does not build the modules in alphabetical order, it builds them in the following order:
allenBradley-2-3
alive-R1-1-1
ipac-2-15
seq-2-2-6
asyn-R4-36
areaDetector-R3-7
areaDetector-R3-7/ADSupport
areaDetector-R3-7/ADCore
areaDetector-R3-7/ADSimDetector
ADSimDetector requires lots of other modules to be built first and that is not happening in a build without –j. I see the following error:
make[7]: *** No rule to make target `../../../lib/linux-x86_64/libautosave.a', needed by `simDetectorNoIOCApp'. Stop.
make[7]: Leaving directory `/home/epics/scratch/support/synApps/support/areaDetector-R3-7/ADSimDetector/iocs/simDetectorNoIOC/simDetectorNoIOCApp/src/O.linux-x86_64'
make[6]: *** [install.linux-x86_64] Error 2
make[6]: Leaving directory `/home/epics/scratch/support/synApps/support/areaDetector-R3-7/ADSimDetector/iocs/simDetectorNoIOC/simDetectorNoIOCApp/src'
make[5]: *** [src.install] Error 2
Mark
From: Mark Rivers
Sent: Sunday, October 27, 2019 2:27 PM
To: 'Siddons, David' <[email protected]>
Cc: tech-talk <[email protected]>
Subject: RE: building synApps from Git
Hi Pete,
The assemble_synApps.sh script in the fix_areaDetector branch of epics-synApps/support definitely works OK, I just tested it:
I just executed the following commands (recalled from “history”, removing commands that were not needed).
1240 14:12 git clone
https://github.com/epics-synApps/support
1242 14:12 cd support/
1244 14:12 git checkout fix_areaDetector
1247 14:14 ./assemble_synApps.sh
1248 14:15 cd synApps/support/
1249 14:15 vi configure/RELEASE (I edited configure/RELEASE to set EPICS_BASE correctly)
1250 14:16 make release
1251 14:16 make -sj
1252 14:19 ls -l areaDetector-R3-7/ADSimDetector/iocs/simDetectorIOC/bin/linux-x86/
The build took under 3 minutes.
The last command shows that ADSimDetector was built correctly.
corvette:support/synApps/support>ls -l areaDetector-R3-7/ADSimDetector/iocs/simDetectorIOC/bin/linux-x86/
total 76
-r-xr-xr-x 1 epics domain users 75944 Oct 27 14:19 simDetectorApp
The xxx module was also built correctly:
corvette:support/synApps/support>ls -l xxx-R6-1/bin/linux-x86/
total 136
-r-xr-xr-x 1 epics domain users 137556 Oct 27 14:19 xxx
Mark
The assemble_synApps script itself calls "make release" as its final command. So the make knows where to look, but there's nothing there to find because that module hasn't yet
been built. For example, areaDetector depends on busy and calc, but the makefile tries to build them in alphabetical order. The script needs to know about dependencies, or at least take them into account when it creates the makefile.
Hi Pete,
You should not need to edit the Makefile.
After you ran assemble_synApps.sh and edited support/configure/RELEASE did you run this command:
make release
You need to do that before then running
make
Mark
________________________________
From: Tech-talk <[email protected]> on behalf of Siddons, David via Tech-talk <[email protected]>
Sent: Saturday, October 26, 2019 1:20 PM
To: EPICS Tech Talk
Subject: building synApps from Git
I just downloaded the latest synApps collection according to the instructions on its site, using the command:
bash ./assemble_synApps.sh
followed, after setting some variables, "make".
It seems that the build works through the modules in alphabetical order, without regard to dependencies. In particular, it tries to build areaDetector very early, which fails because a bunch of libraries from other modules don't exist yet. I edited the Makefile
to move the areaDetector reference later in the list, and everything built OK.
Is this how it's supposed to be? Did I do something wrong?
Pete.