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: | Mark Rivers via Tech-talk <[email protected]> |
To: | "'Lang, Keenan C.'" <[email protected]>, "'Siddons, David'" <[email protected]> |
Cc: | 'tech-talk' <[email protected]> |
Date: | Fri, 1 Nov 2019 16:33:11 +0000 |
Apologies, I forgot that the fix_areaDetector branch had been merged into master, so it is quite different from the R6_1 release. Let’s take this discussion back to Github: https://github.com/EPICS-synApps/support/issues/13
I think it can be easily fixed by changing areaDetector/configure/RELEASE to include RELEASE_PRODS.local rather than RELEASE_LIBS.local. Mark From: Lang, Keenan C. <[email protected]>
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]> 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, |