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: 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 21:50:09 +0000

Hi Michael,

 

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

 

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

 

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

 

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>

> Sent: Thursday, September 8, 2022 1:29 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 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

>

>  >

>

 


Replies:
Re: readline in base 7.0.7 Michael Davidsaver via Core-talk
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

Navigate by Date:
Prev: Build failed: EPICS Base 7 base-7.0-693 AppVeyor via Core-talk
Next: Re: readline in base 7.0.7 Michael Davidsaver 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: Re: readline in base 7.0.7 Michael Davidsaver 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