From: doko@ubuntu.com Date: Thu, 17 Apr 2014 18:11:19 +0000 (+0200) Subject: - Issue #21285: Refactor and fix curses configure check to always search X-Git-Tag: v2.7.7rc1~50 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f27ec3e5515115080b270c5530929d365791c2c1;p=python - Issue #21285: Refactor and fix curses configure check to always search in a ncursesw directory. --- diff --git a/Misc/NEWS b/Misc/NEWS index 94d363807e..4c0c3a67fa 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -367,6 +367,12 @@ Tests - Issue #21093: Prevent failures of ctypes test_macholib on OS X if a copy of libz exists in $HOME/lib or /usr/local/lib. +Build +----- + +- Issue #21285: Refactor and fix curses configure check to always search + in a ncursesw directory. + Documentation ------------- diff --git a/configure b/configure index 4bceec6a2a..15ecda5b25 100755 --- a/configure +++ b/configure @@ -6651,9 +6651,9 @@ $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi -for ac_header in asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \ +for ac_header in asm/types.h conio.h direct.h dlfcn.h errno.h \ fcntl.h grp.h \ -ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \ +ieeefp.h io.h langinfo.h libintl.h poll.h process.h pthread.h \ shadow.h signal.h stdint.h stropts.h termios.h thread.h \ unistd.h utime.h \ sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \ @@ -6884,25 +6884,6 @@ fi fi -# On Solaris, term.h requires curses.h -for ac_header in term.h -do : - ac_fn_c_check_header_compile "$LINENO" "term.h" "ac_cv_header_term_h" " -#ifdef HAVE_CURSES_H -#include -#endif - -" -if test "x$ac_cv_header_term_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_TERM_H 1 -_ACEOF - -fi - -done - - # On Linux, netlink.h requires asm/types.h for ac_header in linux/netlink.h do : @@ -14132,6 +14113,43 @@ $as_echo "#define HAVE_STAT_TV_NSEC2 1" >>confdefs.h fi +# first curses configure check +ac_save_cppflags="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw" + +for ac_header in curses.h ncurses.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +# On Solaris, term.h requires curses.h +for ac_header in term.h +do : + ac_fn_c_check_header_compile "$LINENO" "term.h" "ac_cv_header_term_h" " +#ifdef HAVE_CURSES_H +#include +#endif + +" +if test "x$ac_cv_header_term_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_TERM_H 1 +_ACEOF + +fi + +done + + # On HP/UX 11.0, mvwdelch is a block with a return statement { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mvwdelch is an expression" >&5 $as_echo_n "checking whether mvwdelch is an expression... " >&6; } @@ -14285,6 +14303,8 @@ $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +# last curses configure check +CPPFLAGS=$ac_save_cppflags { $as_echo "$as_me:${as_lineno-$LINENO}: checking for device files" >&5 $as_echo "$as_me: checking for device files" >&6;} diff --git a/configure.ac b/configure.ac index e341667d94..f4e93472de 100644 --- a/configure.ac +++ b/configure.ac @@ -1508,9 +1508,9 @@ dnl AC_MSG_RESULT($cpp_type) # checks for header files AC_HEADER_STDC -AC_CHECK_HEADERS(asm/types.h conio.h curses.h direct.h dlfcn.h errno.h \ +AC_CHECK_HEADERS(asm/types.h conio.h direct.h dlfcn.h errno.h \ fcntl.h grp.h \ -ieeefp.h io.h langinfo.h libintl.h ncurses.h poll.h process.h pthread.h \ +ieeefp.h io.h langinfo.h libintl.h poll.h process.h pthread.h \ shadow.h signal.h stdint.h stropts.h termios.h thread.h \ unistd.h utime.h \ sys/audioio.h sys/bsdtty.h sys/epoll.h sys/event.h sys/file.h sys/loadavg.h \ @@ -1523,13 +1523,6 @@ bluetooth/bluetooth.h linux/tipc.h spawn.h util.h alloca.h) AC_HEADER_DIRENT AC_HEADER_MAJOR -# On Solaris, term.h requires curses.h -AC_CHECK_HEADERS(term.h,,,[ -#ifdef HAVE_CURSES_H -#include -#endif -]) - # On Linux, netlink.h requires asm/types.h AC_CHECK_HEADERS(linux/netlink.h,,,[ #ifdef HAVE_ASM_TYPES_H @@ -4296,6 +4289,19 @@ then [Define if you have struct stat.st_mtimensec]) fi +# first curses configure check +ac_save_cppflags="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS -I/usr/include/ncursesw" + +AC_CHECK_HEADERS(curses.h ncurses.h) + +# On Solaris, term.h requires curses.h +AC_CHECK_HEADERS(term.h,,,[ +#ifdef HAVE_CURSES_H +#include +#endif +]) + # On HP/UX 11.0, mvwdelch is a block with a return statement AC_MSG_CHECKING(whether mvwdelch is an expression) AC_CACHE_VAL(ac_cv_mvwdelch_is_expression, @@ -4350,6 +4356,8 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[void *x=resizeterm AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)] ) +# last curses configure check +CPPFLAGS=$ac_save_cppflags AC_MSG_NOTICE([checking for device files]) diff --git a/setup.py b/setup.py index 0822f0f57c..2b4119a413 100644 --- a/setup.py +++ b/setup.py @@ -1339,13 +1339,17 @@ class PyBuildExt(build_ext): # Curses support, requiring the System V version of curses, often # provided by the ncurses library. panel_library = 'panel' + curses_incs = None if curses_library.startswith('ncurses'): if curses_library == 'ncursesw': # Bug 1464056: If _curses.so links with ncursesw, # _curses_panel.so must link with panelw. panel_library = 'panelw' curses_libs = [curses_library] + curses_incs = find_file('curses.h', inc_dirs, + [os.path.join(d, 'ncursesw') for d in inc_dirs]) exts.append( Extension('_curses', ['_cursesmodule.c'], + include_dirs = curses_incs, libraries = curses_libs) ) elif curses_library == 'curses' and host_platform != 'darwin': # OSX has an old Berkeley curses, not good enough for @@ -1366,6 +1370,7 @@ class PyBuildExt(build_ext): if (module_enabled(exts, '_curses') and self.compiler.find_library_file(lib_dirs, panel_library)): exts.append( Extension('_curses_panel', ['_curses_panel.c'], + include_dirs = curses_incs, libraries = [panel_library] + curses_libs) ) else: missing.append('_curses_panel')