Skip to content

The curses module fails to build against the native SVr4 curses (illumos/Solaris) #154055

Closed

Description

@serhiy-storchaka

Building the curses module against the native SVr4 curses — for example on illumos/Solaris with ./configure --with-curses=curses — fails, because Modules/_cursesmodule.c uses several optional functions unconditionally that old SVr4 curses does not provide.

Implicit-declaration errors:

  • wattr_get, wattr_set, wattr_on, wattr_off, wcolor_set — the window.attr_get(), attr_set(), attr_on(), attr_off() and color_set() methods (the X/Open attr_t API).
  • slk_attr_on, slk_attr_off, slk_attr_set, slk_color — the soft-label attribute functions.
  • scr_set — SVr4 has scr_dump()/scr_restore()/scr_init() but not scr_set(), so gating the whole family on scr_dump alone is not enough.

Other optional curses functions (is_pad, resizeterm, …) are already probed and #ifdef-gated; these are not.

Two more problems surface once those are gated:

  • update_lines_cols() is compiled only under HAVE_CURSES_RESIZETERM/HAVE_CURSES_RESIZE_TERM, but it is used unconditionally (e.g. by set_term()), so a curses without resizeterm() fails to link.
  • The SVr4 <curses.h> does typedef char bool;, which clashes with C's bool (a macro for _Bool from <stdbool.h>) and fails to compile.

test.test_curses also needs to tolerate such a curses: skip the tests that use the now-optional functions, and treat the native curses of NetBSD and illumos/Solaris as having a broken newterm() (they crash on repeated newterm()/delscreen(), like ncurses before 6.5).

Linked PRs

Linked PRs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    OS-unsupportedbuildThe build process and cross-buildextension-modulesC modules in the Modules dirtype-bugAn unexpected behavior, bug, or error

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions