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: readline in base 7.0.7 |
From: | Mark Rivers via Core-talk <core-talk at aps.anl.gov> |
To: | Michael Davidsaver <mdavidsaver at gmail.com> |
Cc: | "core-talk at aps.anl.gov" <core-talk at aps.anl.gov> |
Date: | Fri, 30 Sep 2022 22:43:57 +0000 |
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. This is the diff: corvette:epics-devel/base-7.0.7/configure>git diff toolchain.c diff --git a/configure/toolchain.c b/configure/toolchain.c index 2f76b47..da4e8bb 100644 --- a/configure/toolchain.c +++ b/configure/toolchain.c @@ -45,5 +45,5 @@ 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 This is make output on Centos 7. 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----- 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 > 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> > Sent: Friday, September 9, 2022 6:28 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/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> > > 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> > > 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>> > > > Sent: Thursday, September 8, 2022 1:29 PM > > > To: Mark Rivers <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> > > > 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 > > > > > > > > > > > |