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 | 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 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: building synApps from Git |
From: | "Lang, Keenan C. via Tech-talk" <[email protected]> |
To: | "'Siddons, David'" <[email protected]>, "Rivers, Mark L." <[email protected]> |
Cc: | 'tech-talk' <[email protected]> |
Date: | Wed, 30 Oct 2019 19:18:52 +0000 |
Double-checked and looks like my previous comment was incorrect, BUILD_IOCS being disabled wasn't masking any issue. Using the tagged R6_1 assemble_synapps script and checking the dependencies of the areaDetector module that the makefile generates, it correctly
determines that the areaDetector module requires asyn, autosave, busy, calc, seq, sscan, and iocStats. This is because the script used to generate the RELEASE.local file with the line
-include $(TOP)/configure/RELEASE_PRODS.local
which brought in the dependencies for the iocs. The current RELEASE* files are now just copied from the EXAMPLE_RELEASE* which don't contain any link to the RELEASE_PRODS.local file (it's only ever included in the ioc's configure/RELEASE file). Without that
top-level link to RELEASE_PRODS.local, synApp's makefile no longer sees the modules in that file as dependencies.
Keenan
From: Tech-talk <[email protected]> on behalf of Mark Rivers via Tech-talk <[email protected]>
Sent: Wednesday, October 30, 2019 7:09 AM To: 'Siddons, David' <[email protected]> Cc: 'tech-talk' <[email protected]> Subject: RE: building synApps from Git Hi Pete,
The current situation is not acceptable. In older versions of synApps the top-level Makefile had the correct dependencies.
In the new version one cannot run the following at the top-level of synApps/support if building areaDetector IOCs is enabled: make clean make
But this is something I need to do very frequently. We need to get the areaDetector dependencies correct.
install_synApps.sh in the master branch worked around this by explicitly disabling building the areaDetector IOCs by creating new files in areaDetector/configure. This was very non-standard and Pete Jemian and I recently spent a long time trying to figure out why the IOCs were not being built.
My fix_areaDetector branch fixes this, but uncovered the issue that the dependencies are wrong.
Mark
From: Siddons, David <[email protected]>
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]>
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, |