New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Failed to build _curses on CentOS 7 #89230
Comments
I verified that ncurses-devel is installed. ./configure is able to verify ncurses checking curses.h usability... yes But _curses fails to build, this is the output message from 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 The following modules found by detect_modules() in setup.py, have been Failed to build these modules: Following modules built successfully but were removed because they could not be imported: |
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 Failed to build these modules: Following modules built successfully but were removed because they could not be imported: running build_scripts |
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 - #28260 Please review this. |
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:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: