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 Mark Rivers via Core-talk
- RE: readline in base 7.0.7 Mark Rivers 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
- Navigate by Date:
- Prev:
Build failed: EPICS Base 7 base-R7.0.7-684 AppVeyor via Core-talk
- Next:
Re: readline in base 7.0.7 Mark Rivers via Core-talk
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
<2022>
2023
2024
- Navigate by Thread:
- Prev:
RE: readline in base 7.0.7 Mark Rivers via Core-talk
- Next:
Re: readline in base 7.0.7 Mark Rivers via Core-talk
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
<2022>
2023
2024
|