From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:36885) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RXgLf-00045R-LR for qemu-devel@nongnu.org; Mon, 05 Dec 2011 16:45:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RXgLe-0002aB-Dq for qemu-devel@nongnu.org; Mon, 05 Dec 2011 16:45:19 -0500 Received: from v220110690675601.yourvserver.net ([78.47.199.172]:32806) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RXgLe-0002XF-67 for qemu-devel@nongnu.org; Mon, 05 Dec 2011 16:45:18 -0500 Message-ID: <4EDD3B38.8080906@weilnetz.de> Date: Mon, 05 Dec 2011 22:44:24 +0100 From: Stefan Weil MIME-Version: 1.0 References: In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] ncurses 5.3 conflicts with latest qemu List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: andrzej zaborowski Cc: Caraman Mihai Claudiu-B02008 , "qemu-devel@nongnu.org" Am 05.12.2011 20:13, schrieb andrzej zaborowski: > Hi, > > On 17 November 2011 10:06, Caraman Mihai Claudiu-B02008 > 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 >> Wed, 7 Sep 2011 19:44:36 +0000 (15:44 -0400) >> committer Anthony Liguori >> 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 >> --- >> 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 >> #include #include >> +#ifdef CONFIG_CURSES >> +#include >> +#endif >> #include >> #include >> #include >> 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 >> 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 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... Adding include files to qemu-common.h adds a little compile time for a lot of files, therefore I'd not do it here. If you choose to do it nevertheless, a comment in the source which explains the reason for curses.h would be good. Cheers, Stefan