1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 <2019> 2020 2021 2022 2023 2024 2025 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 <2019> 2020 2021 2022 2023 2024 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: building synApps from Git |
From: | "Siddons, David via Tech-talk" <[email protected]> |
To: | Mark Rivers <[email protected]> |
Cc: | 'tech-talk' <[email protected]> |
Date: | Wed, 30 Oct 2019 11:39:42 +0000 |
Hi Mark,
OK, so I'm not crazy :) Moving areaDetector down the list in the makefile fixed it for me. I guess it's not too hard to fix the script to achieve that, but it's beyond my Bash knowledge to do it.
Pete.
From: Mark Rivers <[email protected]>
Sent: Monday, October 28, 2019 12:44 PM To: Siddons, David <[email protected]> Cc: 'tech-talk' <[email protected]> Subject: RE: building synApps from Git 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
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
From: Siddons, David <[email protected]>
Hi 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. Pete.
From: Mark Rivers <[email protected]>
Hi Pete, |