nyx
nyx copied to clipboard
[Bug] readline build failure
What happens?
When trying to build the linuxPackages_cachyos
kernel for znver4
, the readline
package fails to build.
What is expected to happen?
Build should succeed.
If possible, please attach logs
gcc -c -DHAVE_CONFIG_H -I. -I. -DRL_LIBRARY_VERSION='"8.2"' -DBRACKETED_PASTE_DEFAULT=1 -g -O2 -Wno-parentheses -Wno-format-security -Wno-tautological-constant-out-of-range-compare readline.c
gcc -c -DHAVE_CONFIG_H -I. -I. -DRL_LIBRARY_VERSION='"8.2"' -DBRACKETED_PASTE_DEFAULT=1 -g -O2 -Wno-parentheses -Wno-format-security -Wno-tautological-constant-out-of-range-compare vi_mode.c
gcc -c -DHAVE_CONFIG_H -I. -I. -DRL_LIBRARY_VERSION='"8.2"' -DBRACKETED_PASTE_DEFAULT=1 -g -O2 -Wno-parentheses -Wno-format-security -Wno-tautological-constant-out-of-range-compare funmap.c
gcc -c -DHAVE_CONFIG_H -I. -I. -DRL_LIBRARY_VERSION='"8.2"' -DBRACKETED_PASTE_DEFAULT=1 -g -O2 -Wno-parentheses -Wno-format-security -Wno-tautological-constant-out-of-range-compare keymaps.c
gcc -c -DHAVE_CONFIG_H -I. -I. -DRL_LIBRARY_VERSION='"8.2"' -DBRACKETED_PASTE_DEFAULT=1 -g -O2 -Wno-parentheses -Wno-format-security -Wno-tautological-constant-out-of-range-compare parens.c
gcc -c -DHAVE_CONFIG_H -I. -I. -DRL_LIBRARY_VERSION='"8.2"' -DBRACKETED_PASTE_DEFAULT=1 -g -O2 -Wno-parentheses -Wno-format-security -Wno-tautological-constant-out-of-range-compare search.c
gcc -c -DHAVE_CONFIG_H -I. -I. -DRL_LIBRARY_VERSION='"8.2"' -DBRACKETED_PASTE_DEFAULT=1 -g -O2 -Wno-parentheses -Wno-format-security -Wno-tautological-constant-out-of-range-compare rltty.c
gcc -c -DHAVE_CONFIG_H -I. -I. -DRL_LIBRARY_VERSION='"8.2"' -DBRACKETED_PASTE_DEFAULT=1 -g -O2 -Wno-parentheses -Wno-format-security -Wno-tautological-constant-out-of-range-compare complete.c
gcc -c -DHAVE_CONFIG_H -I. -I. -DRL_LIBRARY_VERSION='"8.2"' -DBRACKETED_PASTE_DEFAULT=1 -g -O2 -Wno-parentheses -Wno-format-security -Wno-tautological-constant-out-of-range-compare bind.c
gcc -c -DHAVE_CONFIG_H -I. -I. -DRL_LIBRARY_VERSION='"8.2"' -DBRACKETED_PASTE_DEFAULT=1 -g -O2 -Wno-parentheses -Wno-format-security -Wno-tautological-constant-out-of-range-compare isearch.c
gcc -c -DHAVE_CONFIG_H -I. -I. -DRL_LIBRARY_VERSION='"8.2"' -DBRACKETED_PASTE_DEFAULT=1 -g -O2 -Wno-parentheses -Wno-format-security -Wno-tautological-constant-out-of-range-compare display.c
display.c: In function ‘_rl_move_cursor_relative’:
display.c:2839:17: warning: implicit declaration of function ‘tputs’; did you mean ‘puts’? [-Wimplicit-function-declaration]
2839 | tputs (_rl_term_forward_char, 1, _rl_output_character_function);
| ^~~~~
| puts
display.c: In function ‘open_some_spaces’:
display.c:3255:16: warning: implicit declaration of function ‘tgoto’ [-Wimplicit-function-declaration]
3255 | buffer = tgoto (_rl_term_IC, 0, col);
| ^~~~~
display.c:3255:14: warning: assignment to ‘char *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
3255 | buffer = tgoto (_rl_term_IC, 0, col);
| ^
display.c: In function ‘delete_chars’:
display.c:3291:14: warning: assignment to ‘char *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
3291 | buffer = tgoto (_rl_term_DC, count, count);
| ^
At top level:
cc1: note: unrecognized command-line option ‘-Wno-tautological-constant-out-of-range-compare’ may have been intended to silence earlier diagnostics
gcc -c -DHAVE_CONFIG_H -I. -I. -DRL_LIBRARY_VERSION='"8.2"' -DBRACKETED_PASTE_DEFAULT=1 -g -O2 -Wno-parentheses -Wno-format-security -Wno-tautological-constant-out-of-range-compare signals.c
gcc -c -DHAVE_CONFIG_H -I. -I. -DRL_LIBRARY_VERSION='"8.2"' -DBRACKETED_PASTE_DEFAULT=1 -g -O2 -Wno-parentheses -Wno-format-security -Wno-tautological-constant-out-of-range-compare util.c
gcc -c -DHAVE_CONFIG_H -I. -I. -DRL_LIBRARY_VERSION='"8.2"' -DBRACKETED_PASTE_DEFAULT=1 -g -O2 -Wno-parentheses -Wno-format-security -Wno-tautological-constant-out-of-range-compare kill.c
gcc -c -DHAVE_CONFIG_H -I. -I. -DRL_LIBRARY_VERSION='"8.2"' -DBRACKETED_PASTE_DEFAULT=1 -g -O2 -Wno-parentheses -Wno-format-security -Wno-tautological-constant-out-of-range-compare undo.c
gcc -c -DHAVE_CONFIG_H -I. -I. -DRL_LIBRARY_VERSION='"8.2"' -DBRACKETED_PASTE_DEFAULT=1 -g -O2 -Wno-parentheses -Wno-format-security -Wno-tautological-constant-out-of-range-compare macro.c
gcc -c -DHAVE_CONFIG_H -I. -I. -DRL_LIBRARY_VERSION='"8.2"' -DBRACKETED_PASTE_DEFAULT=1 -g -O2 -Wno-parentheses -Wno-format-security -Wno-tautological-constant-out-of-range-compare input.c
gcc -c -DHAVE_CONFIG_H -I. -I. -DRL_LIBRARY_VERSION='"8.2"' -DBRACKETED_PASTE_DEFAULT=1 -g -O2 -Wno-parentheses -Wno-format-security -Wno-tautological-constant-out-of-range-compare callback.c
gcc -c -DHAVE_CONFIG_H -I. -I. -DRL_LIBRARY_VERSION='"8.2"' -DBRACKETED_PASTE_DEFAULT=1 -g -O2 -Wno-parentheses -Wno-format-security -Wno-tautological-constant-out-of-range-compare terminal.c
terminal.c: In function ‘_rl_get_screen_size’:
terminal.c:303:27: warning: implicit declaration of function ‘tgetnum’ [-Wimplicit-function-declaration]
303 | _rl_screenwidth = tgetnum ("co");
| ^~~~~~~
terminal.c: In function ‘get_term_capabilities’:
terminal.c:464:33: warning: implicit declaration of function ‘tgetstr’ [-Wimplicit-function-declaration]
464 | *(tc_strings[i].tc_value) = tgetstr ((char *)tc_strings[i].tc_var, bp);
| ^~~~~~~
terminal.c:464:31: warning: assignment to ‘char *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
464 | *(tc_strings[i].tc_value) = tgetstr ((char *)tc_strings[i].tc_var, bp);
| ^
terminal.c: In function ‘_rl_init_terminal_io’:
terminal.c:523:21: warning: implicit declaration of function ‘tgetent’; did you mean ‘getenv’? [-Wimplicit-function-declaration]
523 | tgetent_ret = tgetent (term_buffer, term);
| ^~~~~~~
| getenv
terminal.c:580:7: error: ‘PC’ undeclared (first use in this function)
580 | PC = '\0';
| ^~
terminal.c:580:7: note: each undeclared identifier is reported only once for each function it appears in
terminal.c:581:7: error: ‘BC’ undeclared (first use in this function); did you mean ‘B0’?
581 | BC = _rl_term_backspace = "\b";
| ^~
| B0
terminal.c:582:7: error: ‘UP’ undeclared (first use in this function)
582 | UP = _rl_term_up;
| ^~
terminal.c:204:26: warning: implicit declaration of function ‘tgetflag’ [-Wimplicit-function-declaration]
204 | #define TGETFLAG(cap) (tgetflag (cap) == TGETFLAG_SUCCESS)
| ^~~~~~~~
terminal.c:598:23: note: in expansion of macro ‘TGETFLAG’
598 | _rl_term_autowrap = TGETFLAG ("am") && TGETFLAG ("xn");
| ^~~~~~~~
terminal.c: In function ‘_rl_backspace’:
terminal.c:724:7: warning: implicit declaration of function ‘tputs’; did you mean ‘puts’? [-Wimplicit-function-declaration]
724 | tputs (_rl_term_backspace, 1, _rl_output_character_function);
| ^~~~~
| puts
At top level:
cc1: note: unrecognized command-line option ‘-Wno-tautological-constant-out-of-range-compare’ may have been intended to silence earlier diagnostics
make: *** [Makefile:105: terminal.o] Error 1
More information
If you look up the error in the log, the issue is in the tcap.h
file, specifically this part:
#if defined(HAVE_TERMCAP_H)
#if defined(__linux__) && !defined(SPEED_T_IN_SYS_TYPES)
#include "rltty.h"
#endif
#include <termcap.h>
#elif defined(HAVE_NCURSES_TERMCAP_H)
#include <ncurses/termcap.h>
#else
/* On Solaris2, sys/types.h #includes sys/reg.h, which #defines PC.
Unfortunately, PC is a global variable used by the termcap library. */
#ifdef PC
#undef PC
#endif
extern char PC;
extern char *UP, *BC;
If you comment out this part:
// #if defined(HAVE_TERMCAP_H)
// #if defined(__linux__) && !defined(SPEED_T_IN_SYS_TYPES)
// #include "rltty.h"
// #endif
// #include <termcap.h>
// #elif defined(HAVE_NCURSES_TERMCAP_H)
// #include <ncurses/termcap.h>
// #else
/* On Solaris2, sys/types.h #includes sys/reg.h, which #defines PC.
Unfortunately, PC is a global variable used by the termcap library. */
#ifdef PC
#undef PC
#endif
extern char PC;
extern char *UP, *BC;
extern short ospeed;
extern int tgetent();
extern int tgetflag();
extern int tgetnum();
extern char *tgetstr();
extern int tputs();
extern char *tgoto();
// #endif /* HAVE_TERMCAP_H */
The compilation continues but ultimately linking fails with an error saying -lncurses
not found.
So somehow the configuration for readline
is incorrect.
I'm not sure why this happens though because if I try to build readline separately with nix-shell -p readline
it works (even with those modified CFLAGS
for znver4
, although as you can see from the logs they shouldn't affect the build here anyway).
Any idea what could be causing this?