Skip to content

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

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

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

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    Done
    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions