On 5 December 2011 22:44, Stefan Weil <s...@weilnetz.de> wrote: > Am 05.12.2011 20:13, schrieb andrzej zaborowski: > >> Hi, >> >> On 17 November 2011 10:06, Caraman Mihai Claudiu-B02008 >> <b02...@freescale.com> wrote: >>> >>> A recent patch in qemu conflicts with old ncurses libraries (version >>> 5.3). You will see this error cause by bool type redefinition in curses.h >>> (with CONFIG_CURSES configured by default): >>> >>> console.c: In function 'text_console_init': >>> console.c:1550:23: error: assignment from incompatible pointer type >>> >>> the qemu patch exposing this problem is: >>> >>> curses: fix garbling when chtype != long >>> author Devin J. Pohly <djpohly+launch...@gmail.com> >>> Wed, 7 Sep 2011 19:44:36 +0000 (15:44 -0400) >>> committer Anthony Liguori <aligu...@us.ibm.com> >>> Fri, 9 Sep 2011 17:58:16 +0000 (12:58 -0500) >>> commit df00bed0fa30a6f5712456e7add783e470c534c9 >>> >>> The problem seems to be fixed in newer versions of ncurses (5.7 and >>> above). I just looked over the sources, so better if someone can confirm >>> this. >>> Here is a qemu patch that solve the conflict with old ncurses: >>> >>> >>> Signed-off-by: Mihai Caraman <address@hidden> >>> --- >>> Fix compile errors with old ncurses libraries (version 5.3) caused by >>> bool type redefinition. >>> >>> qemu-common.h | 3 +++ >>> console.h | 1 - >>> >>> 2 files changed, 3 insertions(+), 1 deletions(-) >>> >>> diff --git a/qemu-common.h b/qemu-common.h index 5e87bdf..9ac15ba 100644 >>> --- a/qemu-common.h >>> +++ b/qemu-common.h >>> @@ -23,6 +23,9 @@ typedef struct Monitor Monitor; #include <stdlib.h> >>> #include <stdio.h> #include <stdarg.h> >>> +#ifdef CONFIG_CURSES >>> +#include <curses.h> >>> +#endif >>> #include <stdbool.h> >>> #include <string.h> >>> #include <strings.h> >>> diff --git a/console.h b/console.h >>> index 9c1487e..3327c43 100644 >>> --- a/console.h >>> +++ b/console.h >>> @@ -329,7 +329,6 @@ static inline int ds_get_bytes_per_pixel(DisplayState >>> *ds) } >>> >>> #ifdef CONFIG_CURSES >>> -#include <curses.h> >>> typedef chtype console_ch_t; >>> #else >>> typedef unsigned long console_ch_t; >> >> >> While very fragile it looks like the easiest fix, so I'd like to push >> this if there's no objection. It builds fine for me. >> >> The solution would probably be to include <curses.h> only from inside >> ui/curses.c, and define chtype at configure time, or guess it. >> >> Cheers > > > Even Debian Lenny already has ncurses 5.7 and does not > need this patch. > > Is there a good reason why very old buggy versions of ncurses > should be supported? Redefining bool is a bug! > > When I had the same problem some time ago, I fixed my local > installation...
Makes sense. Turns out that 5.3 was released in 2002 and from the changelog it looks like the problem was fixed on 2004-01-17 or earlier. I'll send a patch for configure to refuse ncurses versions older than that. Cheers