Anders Johansson <andjoh@rydsbo.net> [Mon, 12 Sep 2005 19:33:18 +0200]:
I would prefer to know why it can't be built with both on x86_64 when it can on x86. It seems like a bug to me.
You could say it is! The problem is, that ncurses defines its chtype like so: #ifdef _LP64 /* long int and pointer are 64bit (e.g. axp or x86-64) */ typedef unsigned int chtype; #else typedef unsigned long chtype; #endif And then has extern chtype acs_map[]; Now slang 1.4.9 has in slang.h: typedef unsigned long SLtt_Char_Type; extern SLtt_Char_Type SLcurses_Acs_Map [128]; #define acs_map SLcurses_Acs_Map So SLtt_Char_Type is 32 bit on i386 but 64 bit on x86-64, whereas in ncurses it's always 32 bit. That's why it works on i386 but not on x86-64. The fix is simple, just declare SLtt_Char_type like ncurses does, i.e.: #ifdef _LP64 typedef unsigned int SLtt_Char_Type; #else typedef unsigned long SLtt_Char_Type; #endif Of cause you'll have to rebuild the slang package and all those packages depending on slang, as the ABI changes. That's basically the same change I've proposed for our slang package (I'll be away long holiday). Philipp