2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 <2020> 2021 2022 2023 2024 | Index | 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: Possible bug in convertRelease.pl |
From: | Florian Feldbauer via Core-talk <core-talk at aps.anl.gov> |
To: | "Johnson, Andrew N." <anj at anl.gov> |
Cc: | EPICS core-talk <core-talk at aps.anl.gov>, Peter Zumbruch <P.Zumbruch at gsi.de> |
Date: | Wed, 19 Aug 2020 10:10:41 +0200 |
Hey again Andrew,
I tried your suggestion, but it does not work:
perl -CSD /opt/epics/base/bin/linux-x86_64/convertRelease.pl checkRelease
This application's RELEASE file(s) define
IPAC =
after but not adjacent to
SNCSEQ =
both of which resolve to /opt/epics/modules/iocStats/configure/O.linux-x86_64
Module definitions that share paths must be grouped together.
Either remove a definition, or move it to a line immediately
above or below the other(s).
Any non-module definitions belong in configure/CONFIG_SITE.
Having multiple Variables point to the same value (nothing) seems not allowed by convertRelease.pl.
Cheers,
Florian
Hi Florian,
On Aug 18, 2020, at 3:32 AM, Florian Feldbauer via Core-talk <core-talk at aps.anl.gov> wrote:
I'm using Base 7.0.3.1 and have noticed a small Problem.
I tried building calc, asyn, stream and iocStats modules (in this order) using a `$(TOP)/../RELEASE.local` file, so I do not have to make site specific modifications to any of the git repos.
My RELEASE.local looks like this:
## Module directory SUPPORT = /opt/epics/modules ## unused "optional" dependencies undefine IPAC undefine SNCSEQ undefine SSCAN undefine PCRE ## Modules ASYN = $(SUPPORT)/asyn CALC = $(SUPPORT)/calc IOCSTATS = $(SUPPORT)/iocStats STREAM = $(SUPPORT)/stream ## EPICS BASE EPICS_BASE = /opt/epics/baseNow building calc, asyn, and stream works just fine, but building iocStats failed with
perl -CSD /opt/epics/base/bin/linux-x86_64/convertRelease.pl checkRelease
Definition of SNCSEQ conflicts with ASYN support.
In this application or module, a RELEASE file
conflicts with ASYN at /opt/epics/modules/asyn
Here: SNCSEQ = /opt/epics/modules/seq-2-0-12
ASYN: SNCSEQ = /opt/epics/modules/seq-2-2-5
Looking at ${BASE}/lib/perl/EPICS/Release.pm, the script looks only for definitions like "<macro> = <path>", but is ignoring "undefine" statements which leads to above error.
The version of GNUmake we were using when I wrote the original EPICS::Release Perl module didn’t have an undefine statement at all, it got added fairly recently. Just setting a variable to nothing is usually sufficient to resolve the above issue, so instead of your block of undefine statements above you should be able to do this:## unused "optional" dependencies IPAC= SNCSEQ= SSCAN= PCRE=We don’t normally use the GNUmake ‘flavor’ or ‘origin’ functions which can tell the difference, and the above approach will work with any EPICS release.Attached is a small patch to also handle those undefine statements.
I don’t see any problem with adding support for that syntax. I see that this was discussed on tech-talk in June last year, but as you discovered that only works with one of the two RELEASE file parsers that the EPICS build system relies on. I am using a different implementation than your patch and optimizing the other code in that routine slightly at the same time, so this should appear in 7.0.4.2 or 7.0.5, whichever comes next.
Thanks,
- Andrew
--Complexity comes for free, simplicity you have to work for.
-- Ruhr-Universität Bochum AG der Experimentalphysik I Dr. Florian Feldbauer NB 2/131 / Fach 125 Universitätsstr. 150 D-44801 Bochum Office: NB 2/134 Phone: (+49)234 / 32-23563 Fax: (+49)234 / 32-14170 https://paluma.ruhr-uni-bochum.de