On Wed, Sep 02, 2020 at 02:07:54PM +0200, Michal Privoznik wrote:
As it turns out, one of my previous commits in which I removed
checking for stdarg.h was too aggressive. Long story short, the
readline public headers rely on stdarg.h and what is worse, they
expect us to declare the autotools style of macro (HAVE_STDARG_H)
if the header file exists. If we don't do it then compiling virsh
on macos fails.
See 9ea3424a178 for more info.
Ewww....
Deprecated in 2000, removed in 2013, then immediately readded to
"fix" apps which still relied on K&R C with no function prototypes.
The readline maintainer is more forgiving of ancient application code
than I would be :-) 30 years since arrival of ANSI C is enough time
to update code to use function prototypes, especially if you want to
build against a readline library released in 2020, as opposed to the
old version released years ago.
Fixes: 85808b73846f93d656b4c81b6ebddd2dc3881bf6
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
meson.build | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/meson.build b/meson.build
index 1aad385ad1..98f7545495 100644
--- a/meson.build
+++ b/meson.build
@@ -1333,8 +1333,12 @@ if readline_dep.found()
endif
endif
- # We need this to avoid compilation issues with modern compilers.
- # See 9ea3424a178 for a more detailed explanation
+ # We need both of these hacks to avoid compilation issues with modern
+ # compilers. See 9ea3424a178 for a more detailed explanation.
+ if cc.has_header('stdarg.h')
+ conf.set('HAVE_STDARG_H', 1)
+ endif
Do we have any platforms which lack stdarg.h ? eg can be just add
"#define HAVE_STDARG_H 1" unconditionally in the virsh code before
it includes the readline headers ?
Regards,
Daniel
--
|:
https://berrange.com -o-
https://www.flickr.com/photos/dberrange :|
|:
https://libvirt.org -o-
https://fstop138.berrange.com :|
|:
https://entangle-photo.org -o-
https://www.instagram.com/dberrange :|