EPICS Home

Experimental Physics and Industrial Control System


 
2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  <20222023  2024  2025  Index 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  <20222023  2024  2025 
<== Date ==> <== Thread ==>

Subject: Re: readline in base 7.0.7
From: Michael Davidsaver via Core-talk <core-talk at aps.anl.gov>
To: Mark Rivers <rivers at cars.uchicago.edu>
Cc: "core-talk at aps.anl.gov" <core-talk at aps.anl.gov>
Date: Sat, 1 Oct 2022 08:42:06 -0700
On 10/1/22 05:48, Mark Rivers wrote:
Hi Michael,

distclean fixed the problem.  I didn't know I needed to clean since it was a .c file I changed.

I wish this were never necessary.  However, a syntax error
in a generated Makefile snippet is currently a bit of a
special case as it is preventing the rule to regenerated
from running.

While it isn't actually necessary for configure/Makefile
to include the cfg/TOOLCHAIN* files.  We currently don't have
a way to short-circuit the include from configure/CONFIG
which is included by every Makefile.


readline is now used with no change to the configure/os files.

Thanks,
Mark


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
*From:* Michael Davidsaver <mdavidsaver at gmail.com>
*Sent:* Friday, September 30, 2022 6:00 PM
*To:* Mark Rivers <rivers at cars.uchicago.edu>
*Cc:* core-talk at aps.anl.gov <core-talk at aps.anl.gov>
*Subject:* Re: readline in base 7.0.7
On 9/30/22 15:43, Mark Rivers wrote:
Michael,

I had already tried eliminating the continuation lines, but that did not help.

I just copied that new line from your PR and pasted it into toolchain.c.  It still fails.

Can you check if the generated files were actually re-created?

eg.

cfg/TOOLCHAIN.linux-x86_64.linux-x86_64
configure/O.linux-x86_64/TOOLCHAIN.linux-x86_64.linux-x86_64

A "make distclean" should remove them..


...
This is make output on Centos 7.

fyi. The centos-7 CI build for this PR passes:

https://github.com/epics-base/epics-base/actions/runs/3055627011/jobs/4928888222 <https://github.com/epics-base/epics-base/actions/runs/3055627011/jobs/4928888222>


corvette:epics-devel/base-7.0.7/configure>make

make -C O.linux-x86_64 -f ../Makefile TOP=../.. \

      T_A=linux-x86_64 install

make[1]: Entering directory `/usr/local/epics-devel/base-7.0.7/configure/O.linux-x86_64'

../../cfg/TOOLCHAIN.linux-x86_64.linux-x86_64:13: *** missing separator.  Stop.

make[1]: Leaving directory `/usr/local/epics-devel/base-7.0.7/configure/O.linux-x86_64'

make: *** [install.linux-x86_64] Error 2

I then tested on Ubuntu 22, and it worked in the same source directory.

Thanks,

Mark

-----Original Message-----
From: Michael Davidsaver <mdavidsaver at gmail.com>
Sent: Friday, September 30, 2022 5:07 PM
To: Mark Rivers <rivers at cars.uchicago.edu>
Cc: core-talk at aps.anl.gov
Subject: Re: readline in base 7.0.7

On 9/30/22 14:50, Mark Rivers wrote:

  > Hi Michael,

  >

  > I just tried your patch, and it does not build.

Andrew had me turn this into a PR.  What I have there now does build, and is different to what I posted previously.  So I must have hit the same error as you.  I guess I was getting the line continuations wrong somehow?  (then got frustrated and removed them)

https://github.com/epics-base/epics-base/pull/296 <https://github.com/epics-base/epics-base/pull/296> <https://github.com/epics-base/epics-base/pull/296 <https://github.com/epics-base/epics-base/pull/296>>

  > corvette:local/epics-devel/base-7.0.7>patch -p1 < patch1

  >

  > patching file configure/toolchain.c

  >

  > corvette:local/epics-devel/base-7.0.7>git diff configure/toolchain.c

  >

  > diff --git a/configure/toolchain.c b/configure/toolchain.c

  >

  > index 2f76b47..bc37cad 100644

  >

  > --- a/configure/toolchain.c

  >

  > +++ b/configure/toolchain.c

  >

  > @@ -45,5 +45,7 @@ COMMANDLINE_LIBRARY ?= READLINE

  >

  > COMMANDLINE_LIBRARY ?= EPICS

  >

  > #  endif

  >

  > #else

  >

  > -COMMANDLINE_LIBRARY ?= EPICS

  >

  > +COMMANDLINE_LIBRARY ?= $(strip $(if $(wildcard \

  >

  > +    $(if $(GNU_DIR),$(GNU_DIR)/include/readline/readline.h) \

  >

  > +), READLINE, EPICS))

  >

  > #endif

  >

  > My diff looks just like your patch, so I think I did it correctly.

  >

  > However, it fails to build and I can't figure out the problem, since the parentheses do match.

  >

  > corvette:local/epics-devel/base-7.0.7>make

  >

  > make -C ./configure install

  >

  > make[1]: Entering directory `/usr/local/epics-devel/base-7.0.7/configure'

  >

  > make -C O.linux-x86_64 -f ../Makefile TOP=../.. \

  >

  >      T_A=linux-x86_64 install

  >

  > make[2]: Entering directory `/usr/local/epics-devel/base-7.0.7/configure/O.linux-x86_64'

  >

  > ../../cfg/TOOLCHAIN.linux-x86_64.linux-x86_64:13: *** missing separator.  Stop.

  >

  > make[2]: Leaving directory `/usr/local/epics-devel/base-7.0.7/configure/O.linux-x86_64'

  >

  > make[1]: *** [install.linux-x86_64] Error 2

  >

  > make[1]: Leaving directory `/usr/local/epics-devel/base-7.0.7/configure'

  >

  > make: *** [configure.install] Error 2

  >

  > Thanks,

  >

  > Mark

  >

  > -----Original Message-----

  > From: Michael Davidsaver <mdavidsaver at gmail.com <mailto:mdavidsaver at gmail.com <mailto:mdavidsaver at gmail.com>>>

  > Sent: Friday, September 9, 2022 6:28 PM

  > To: Mark Rivers <rivers at cars.uchicago.edu <mailto:rivers at cars.uchicago.edu <mailto:rivers at cars.uchicago.edu>>>

  > Cc: core-talk at aps.anl.gov <mailto:core-talk at aps.anl.gov <mailto:core-talk at aps.anl.gov>>

  > Subject: Re: readline in base 7.0.7

  >

  > On 9/8/22 11:44, Mark Rivers wrote:

  >

  >  >  > You will need to manually specify COMMANDLINE_LIBRARY for the

  > time being.  (and hopefully put an OS upgrade on your roadmap)

  >

  >  >

  >

  >  > This is unfortunate, since the automatic detection worked fine in base 7.0.6.1.

  >

  > fyi. https://github.com/epics-base/epics-base/pull/254 <https://github.com/epics-base/epics-base/pull/254> <https://github.com/epics-base/epics-base/pull/254 <https://github.com/epics-base/epics-base/pull/254>>

  > <https://github.com/epics-base/epics-base/pull/254 <https://github.com/epics-base/epics-base/pull/254 <https://github.com/epics-base/epics-base/pull/254>>>

  >

  > As always, I would encourage those interested to follow PRs.

  >

  > Compatibility doesn't just happen by itself.

  >

  > The following lightly tested patch should restore the previous

  >

  > $(GNU_DIR) automatic detection for older compilers.  (not just

  >

  > linux)

  >

  >  > diff --git a/configure/toolchain.c b/configure/toolchain.c

  >

  >  > index 2f76b475b..bc37cad64 100644

  >

  >  > --- a/configure/toolchain.c

  >

  >  > +++ b/configure/toolchain.c

  >

  >  > @@ -45,5 +45,7 @@ COMMANDLINE_LIBRARY ?= READLINE

  >

  >  >  COMMANDLINE_LIBRARY ?= EPICS

  >

  >  >  #  endif

  >

  >  >  #else

  >

  >  > -COMMANDLINE_LIBRARY ?= EPICS

  >

  >  > +COMMANDLINE_LIBRARY ?= $(strip $(if $(wildcard \

  >

  >  > +    $(if $(GNU_DIR),$(GNU_DIR)/include/readline/readline.h) \

  >

  >  > +), READLINE, EPICS))

  >

  >  >  #endif

  >

  >  > The release notes really should say that manual editing is now required for older compilers, while it previously was not.

  >

  > Specific suggestions on wording are welcomed.  I find it

  >

  > difficult to write succinct documentation which speaks

  >

  > to every user.

  >

  >  >  They should also say which version of gcc is required to have the automatic detection work.

  >

  > GCC >=5.0

  >

  > https://gcc.gnu.org/projects/cxx-status.html#cxx17 <https://gcc.gnu.org/projects/cxx-status.html#cxx17> <https://gcc.gnu.org/projects/cxx-status.html#cxx17 <https://gcc.gnu.org/projects/cxx-status.html#cxx17>>

  > <https://gcc.gnu.org/projects/cxx-status.html#cxx17 <https://gcc.gnu.org/projects/cxx-status.html#cxx17 <https://gcc.gnu.org/projects/cxx-status.html#cxx17>>>

  >

  > I don't know when clang or msvc added support.

  >

  >  >  I now need to spend a few hours rebuilding base and synApps for a bunch of architectures.

  >

  > I'm sorry to have wasted your time.

  >

  >  >  > and hopefully put an OS upgrade on your roadmap)

  >

  >  >

  >

  >  > We have a number of machines where vendor support for kernel drivers limits such upgrades.  RHEL 7 has 2 more years before EOL, and is still used on many APS beamlines.

  >

  >  >

  >

  >  > Mark

  >

  >  >

  >

  >  > -----Original Message-----

  >

  >  > From: Michael Davidsaver <mdavidsaver at gmail.com

  > <mailto:mdavidsaver at gmail.com <mailto:mdavidsaver at gmail.com <mailto:mdavidsaver at gmail.com>>>>

  >

  >  > Sent: Thursday, September 8, 2022 1:29 PM

  >

  >  > To: Mark Rivers <rivers at cars.uchicago.edu

  > <mailto:rivers at cars.uchicago.edu <mailto:rivers at cars.uchicago.edu <mailto:rivers at cars.uchicago.edu>>>>

  >

  >  > Cc: core-talk at aps.anl.gov <mailto:core-talk at aps.anl.gov <mailto:core-talk at aps.anl.gov>> <mailto:core-talk at aps.anl.gov <mailto:core-talk at aps.anl.gov <mailto:core-talk at aps.anl.gov>>>

  >

  >  > Subject: Re: readline in base 7.0.7

  >

  >  >

  >

  >  > On 9/8/22 10:40, Mark Rivers via Core-talk wrote:

  >

  >  >

  >

  >  >  > I just built base 7.0.7 on Centos 7 with no changes to the files in configure/os.

  >

  >  >

  >

  >  > Right, I wasn't paying attention.  Automatic detection now depends on GCC version.  As I recall, centos7 has GCC 4.8, which is too old.

  >

  >  >

  >

  >  > You will need to manually specify COMMANDLINE_LIBRARY for the time

  > being.  (and hopefully put an OS upgrade on your roadmap)

  >

  >  >

  >

  >  >  > My IOCs now are not built with libreadline, while in base 7.0.6.1 they were, again with no changes to the configure/os files.

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > I see this change between base 7.0.6.1 and base 7.0.7

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > corvette:base-7.0.7/configure/os>git diff R7.0.6.1 R7.0.7

  >

  >  >

  >

  >  >  > CONFIG_SITE.Common.linux-x

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > CONFIG_SITE.Common.linux-x86

  > CONFIG_SITE.Common.linux-x86_64

  >

  >  >

  >

  >  >  > CONFIG_SITE.Common.linux-xscale_be

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > corvette:base-7.0.7/configure/os>git diff R7.0.6.1 R7.0.7

  >

  >  >

  >

  >  >  > CONFIG_SITE.Common.linux-x86_64

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > diff --git a/configure/os/CONFIG_SITE.Common.linux-x86_64

  >

  >  >

  >

  >  >  > b/configure/os/CONFIG_SITE.Common.linux-x86_64

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > index e098b76..b98385f 100644

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > --- a/configure/os/CONFIG_SITE.Common.linux-x86_64

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > +++ b/configure/os/CONFIG_SITE.Common.linux-x86_64

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > @@ -15,10 +15,6 @@

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > #    to inform the system of the shared library location.

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > -# Use GNU Readline if the header file is installed

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > -COMMANDLINE_LIBRARY = $(strip $(if $(wildcard \

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > -    $(GNU_DIR)/include/readline/readline.h), READLINE, EPICS))

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > -

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > # If libreadline needs additional libraries to be linked with

  > it, try

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > # uncommenting each of the lines below in turn, starting with

  > the top

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > # one and working downwards, until the build succeeds. Do a 'make rebuild'

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > The release notes say:

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > *Automatic COMMANDLINE_LIBRARY w/ newer compilers*

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > When built with a compiler supporting __has_include<>, the presence of the <readline/readline.h> will be used to automatically determine a default value for COMMANDLINE_LIBRARY.

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > Mingw builds with readline support now link -ltermcap instead of -lcurses.

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > This should not effect sites which set explicitly set COMMANDLINE_LIBRARY as the only definition in Base now has the form COMMANDLINE_LIBRARY ?= ....

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > I interpret the first sentence here to mean that the test for

  >

  >  >

  >

  >  >  > COMMANDLINE_LIBRARY is done in the compiler if possible, but it

  > does

  >

  >  >

  >

  >  >  > not say that the previous way of doing it in the CONFIG_SITE

  > file (for

  >

  >  >

  >

  >  >  > older compilers) has been removed

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > Does this mean that I now need to edit CONFIG_SITE.Common.linux-x86_64 to manually set COMMANDLINE_LIBRARY?

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > Thanks,

  >

  >  >

  >

  >  >  >

  >

  >  >

  >

  >  >  > Mark

  >

  >  >

  >

  >  >  >

  >

  >  >

  >




References:
readline in base 7.0.7 Mark Rivers via Core-talk
Re: readline in base 7.0.7 Michael Davidsaver via Core-talk
RE: readline in base 7.0.7 Mark Rivers via Core-talk
Re: readline in base 7.0.7 Michael Davidsaver via Core-talk
RE: readline in base 7.0.7 Mark Rivers via Core-talk
Re: readline in base 7.0.7 Michael Davidsaver via Core-talk
RE: readline in base 7.0.7 Mark Rivers via Core-talk
Re: readline in base 7.0.7 Michael Davidsaver via Core-talk
Re: readline in base 7.0.7 Mark Rivers via Core-talk

Navigate by Date:
Prev: Re: readline in base 7.0.7 Mark Rivers via Core-talk
Next: [Bug 1991765] [NEW] Problem with ROFF change in ai/ao Dirk Zimoch via Core-talk
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  <20222023  2024  2025 
Navigate by Thread:
Prev: Re: readline in base 7.0.7 Mark Rivers via Core-talk
Next: Build failed: EPICS Base 7 base-R7.0.7-684 AppVeyor via Core-talk
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  <20222023  2024  2025