Сборка ncurses при помощи gcc 5

Сообщение об ошибке

Deprecated function: The each() function is deprecated. This message will be suppressed on further calls в функции menu_set_active_trail() (строка 2405 в файле /home/ih139182/public_html/includes/menu.inc).

Если волею судьбы Вам понадобилось собрать ncurses при помощи gcc 5 или выше, то скорее всего вы увидите такую ошибку:

ncurses-5.9/ncurses/curses.priv.h:283:0,
                  from ../ncurses/lib_gen.c:19:
 _744.c:835:15: error: expected ')' before 'int'
 ../include/curses.h:1594:56: note: in definition of macro 'mouse_trafo'
  #define mouse_trafo(y,x,to_screen) wmouse_trafo(stdscr,y,x,to_screen)

Бедово конечно, но все довольно просто. В компиляторе что-то изменили и исходники больше не собираются.
Я нашел патч. Пока его не одобрили, но он работает.
Скачать можно тут: http://git.sagemath.org/sage.git/diff/build/pkgs/ncurses/patches/work_ar...
Ну или можно ручками поправить файл ncurses/base/MKlib_gen.sh:

if test "${LC_COLLATE+set}"  = set; then LC_COLLATE=C;  export LC_COLLATE;  fi

# Work around "unexpected" output of GCC 5.1.0's cpp w.r.t. #line directives
# by simply suppressing them:
case `$1 -dumpversion 2>/dev/null` in
    5.[01].*)  # assume a "broken" one
        preprocessor="$1 -P -DNCURSES_INTERNALS -I../include"
        ;;
    *)
        preprocessor="$1 -DNCURSES_INTERNALS -I../include"
esac
AWK="$2"
USE="$3"

Вместо такого:

preprocessor="$1 -DNCURSES_INTERNALS -I../include"

После этого собирается обычным путем.

Просмотров:   6050