Closed orsenthil closed 3 years ago
I verified that ncurses-devel is installed.
./configure is able to verify ncurses
checking curses.h usability... yes checking curses.h presence... yes checking for curses.h... yes checking ncurses.h usability... yes checking ncurses.h presence... yes checking for ncurses.h... yes checking for term.h... yes
But _curses fails to build, this is the output message from make
gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -DHAVE_NCURSESW=1 -I/usr/include/ncursesw -I./Include -I. -I/usr/local/include -I/local/home/senthilx/cpython/Include -I/local/home/senthilx/cpython -c /local/home/senthilx/cpython/Modules/_curses_panel.c -o build/temp.linux-x86_64-3.11/local/home/senthilx/cpython/Modules/_curses_panel.o gcc -pthread -shared build/temp.linux-x86_64-3.11/local/home/senthilx/cpython/Modules/_curses_panel.o -L/usr/local/lib -lpanelw -lncursesw -o build/lib.linux-x86_64-3.11/_curses_panel.cpython-311-x86_64-linux-gnu.so *** WARNING: renaming "_curses_panel" since importing it failed: No module named '_curses'
The following modules found by detect_modules() in setup.py, have been built by the Makefile instead, as configured by the Setup files: _abc pwd time
Failed to build these modules: _curses
Following modules built successfully but were removed because they could not be imported: _curses_panel
You stripped too much output from the build, in particular you removed the part where _curses failed to build. The output you show only says that _cursus_panel failed verification because _cursus could not be imported.
Could you add the build failure for the _cursus module as well? Rerunning make should give a more manageable output.
Here is the output of make with relevant lines.
CC='gcc -pthread' LDSHARED='gcc -pthread -shared ' OPT='-DNDEBUG -g -fwrapv -O3 -Wall' _TCLTK_INCLUDES='' _TCLTK_LIBS='' ./python -E ./setup.py build
running build
running build_ext
building '_curses' extension
gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -DHAVE_NCURSESW=1 -I/usr/include/ncursesw -I./Include -I. -I/usr/local/include -I/local/home/senthilx/cpython/Include -I/local/home/senthilx/cpython -c /local/home/senthilx/cpython/Modules/_cursesmodule.c -o build/temp.linux-x86_64-3.11/local/home/senthilx/cpython/Modules/_cursesmodule.o -DPy_BUILD_CORE_MODULE
/local/home/senthilx/cpython/Modules/_cursesmodule.c: In function ‘_curses_color_content_impl’:
/local/home/senthilx/cpython/Modules/_cursesmodule.c:149:41: error: implicit declaration of function ‘extended_color_content’; did you mean ‘_curses_color_content’? [-Werror=implicit-function-declaration]
#define _COLOR_CONTENT_FUNC extended_color_content
^
/local/home/senthilx/cpython/Modules/_cursesmodule.c:2746:9: note: in expansion of macro ‘_COLOR_CONTENT_FUNC’
if (_COLOR_CONTENT_FUNC(color_number, &r, &g, &b) == ERR) {
^~~~~~~~~~~~~~~~~~~
/local/home/senthilx/cpython/Modules/_cursesmodule.c: In function ‘_curses_init_color_impl’:
/local/home/senthilx/cpython/Modules/_cursesmodule.c:147:41: error: implicit declaration of function ‘init_extended_color’; did you mean ‘initialize_color’? [-Werror=implicit-function-declaration]
#define _CURSES_INIT_COLOR_FUNC init_extended_color
^
/local/home/senthilx/cpython/Modules/_cursesmodule.c:3194:29: note: in expansion of macro ‘_CURSES_INIT_COLOR_FUNC’
return PyCursesCheckERR(_CURSES_INIT_COLOR_FUNC(color_number, r, g, b),
^~~~~~~~~~~~~~~~~~~~~~~
/local/home/senthilx/cpython/Modules/_cursesmodule.c: In function ‘_curses_init_pair_impl’:
/local/home/senthilx/cpython/Modules/_cursesmodule.c:148:41: error: implicit declaration of function ‘init_extended_pair’; did you mean ‘use_extended_names’? [-Werror=implicit-function-declaration]
#define _CURSES_INIT_PAIR_FUNC init_extended_pair
^
/local/home/senthilx/cpython/Modules/_cursesmodule.c:3222:9: note: in expansion of macro ‘_CURSES_INIT_PAIR_FUNC’
if (_CURSES_INIT_PAIR_FUNC(pair_number, fg, bg) == ERR) {
^~~~~~~~~~~~~~~~~~~~~~
/local/home/senthilx/cpython/Modules/_cursesmodule.c: In function ‘_curses_pair_content_impl’:
/local/home/senthilx/cpython/Modules/_cursesmodule.c:150:41: error: implicit declaration of function ‘extended_pair_content’; did you mean ‘_curses_pair_content’? [-Werror=implicit-function-declaration]
#define _CURSES_PAIR_CONTENT_FUNC extended_pair_content
^
/local/home/senthilx/cpython/Modules/_cursesmodule.c:3868:9: note: in expansion of macro ‘_CURSES_PAIR_CONTENT_FUNC’
if (_CURSES_PAIR_CONTENT_FUNC(pair_number, &f, &b) == ERR) {
^~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
building '_curses_panel' extension
gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fvisibility=hidden -I./Include/internal -DHAVE_NCURSESW=1 -I/usr/include/ncursesw -I./Include -I. -I/usr/local/include -I/local/home/senthilx/cpython/Include -I/local/home/senthilx/cpython -c /local/home/senthilx/cpython/Modules/_curses_panel.c -o build/temp.linux-x86_64-3.11/local/home/senthilx/cpython/Modules/_curses_panel.o
gcc -pthread -shared build/temp.linux-x86_64-3.11/local/home/senthilx/cpython/Modules/_curses_panel.o -L/usr/local/lib -lpanelw -lncursesw -o build/lib.linux-x86_64-3.11/_curses_panel.cpython-311-x86_64-linux-gnu.so
*** WARNING: renaming "_curses_panel" since importing it failed: No module named '_curses'
The following modules found by detect_modules() in setup.py, have been built by the Makefile instead, as configured by the Setup files: _abc pwd time
Failed to build these modules: _curses
Following modules built successfully but were removed because they could not be imported: _curses_panel
running build_scripts copying and adjusting /local/home/senthilx/cpython/Tools/scripts/pydoc3 -> build/scripts-3.11 copying and adjusting /local/home/senthilx/cpython/Tools/scripts/idle3 -> build/scripts-3.11 copying and adjusting /local/home/senthilx/cpython/Tools/scripts/2to3 -> build/scripts-3.11 changing mode of build/scripts-3.11/pydoc3 from 644 to 755 changing mode of build/scripts-3.11/idle3 from 644 to 755 changing mode of build/scripts-3.11/2to3 from 644 to 755 renaming build/scripts-3.11/pydoc3 to build/scripts-3.11/pydoc3.11 renaming build/scripts-3.11/idle3 to build/scripts-3.11/idle3.11 renaming build/scripts-3.11/2to3 to build/scripts-3.11/2to3-3.11
You should use -lpaneltw instead of -lpanelw.
See also: https://bugs.python.org/issue41981
According to https://invisible-island.net/ncurses/NEWS.html#index-t20170401 the function extended_color_content was introduced in 2017, maybe the detection of support for this function doesn't work properly for some reason (although the preprocessor logic in Modules/_cursesmodule.c looks sane).
That said, I don't have a CentOS VM at the moment so cannot debug this myself.
A change like this will be required since these funcs were introduced only recently and nurses shipped with centos was older.
% git diff
diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c
index 61aaf85522..6fb6c490e6 100644
--- a/Modules/_cursesmodule.c
+++ b/Modules/_cursesmodule.c
@@ -135,7 +135,7 @@ typedef chtype attr_t; /* No attr_t type is available */
#define STRICT_SYSV_CURSES
#endif
-#if NCURSES_EXT_COLORS+0 && NCURSES_EXT_FUNCS+0
+#if (defined(NCURSES_EXT_FUNCS) && NCURSES_EXT_FUNCS >= 20170401) && (defined(NCURSES_EXT_COLORS) && NCURSES_EXT_COLORS >= 20170401)
#define _NCURSES_EXTENDED_COLOR_FUNCS 1
#else
#define _NCURSES_EXTENDED_COLOR_FUNCS 0
I have created a pull request - https://github.com/python/cpython/pull/28260
Please review this.
New changeset 794430700defb913512f871b701a888aa730de81 by Senthil Kumaran in branch 'main': bpo-45067 - Verify the version of ncurses for extended color support feature usage. (GH-28260) https://github.com/python/cpython/commit/794430700defb913512f871b701a888aa730de81
New changeset b86437bb15fbaba55f9e56661598b4d5a3db86bb by Miss Islington (bot) in branch '3.10': bpo-45067 - Verify the version of ncurses for extended color support feature usage. (GH-28260) https://github.com/python/cpython/commit/b86437bb15fbaba55f9e56661598b4d5a3db86bb
New changeset dfccba47339722ff082a05a190593be9e443cb0e by Pablo Galindo (Miss Islington (bot)) in branch '3.10': bpo-45067 - Verify the version of ncurses for extended color support feature usage. (GH-28260) https://github.com/python/cpython/commit/dfccba47339722ff082a05a190593be9e443cb0e
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields: ```python assignee = 'https://github.com/orsenthil' closed_at =
created_at =
labels = ['build', '3.10', '3.11']
title = 'Failed to build _curses on CentOS 7'
updated_at =
user = 'https://github.com/orsenthil'
```
bugs.python.org fields:
```python
activity =
actor = 'pablogsal'
assignee = 'orsenthil'
closed = True
closed_date =
closer = 'orsenthil'
components = []
creation =
creator = 'orsenthil'
dependencies = []
files = []
hgrepos = []
issue_num = 45067
keywords = ['patch']
message_count = 10.0
messages = ['400795', '400819', '400894', '400919', '401125', '401479', '401496', '401509', '401515', '403169']
nosy_count = 5.0
nosy_names = ['ronaldoussoren', 'orsenthil', 'cstratak', 'pablogsal', 'miss-islington']
pr_nums = ['28260', '28263']
priority = 'normal'
resolution = 'fixed'
stage = 'resolved'
status = 'closed'
superseder = None
type = 'compile error'
url = 'https://bugs.python.org/issue45067'
versions = ['Python 3.10', 'Python 3.11']
```