On Wed, Apr 19, 2023 at 08:20:40PM +0200, Sven Joachim wrote:
> On 2023-04-17 17:09 -0700, Steve Langasek wrote:
> 
> > Package: libncurses-dev
> > Version: 6.4-2
> > Severity: normal
> >
> > The libncurses-dev package ships several header files that can't be
> > compiled, because they depend on ncurses_cfg.h which is not available.
> >
> > $ grep -rl ncurses_cfg /usr/include/
> > /usr/include/tic.h
> > /usr/include/curses.h
> > /usr/include/nc_tparm.h
> > $
> 
> The curses.h file is a false positive, as ncurses_cfg.h is only
> mentioned inside a comment:
> 
> ,----
> | $  grep -A2 -B1 ncurses_cfg /usr/include/curses.h
> | /*
> |  * We cannot define these in ncurses_cfg.h, since they require parameters 
> to be
> |  * passed (that is non-portable).
> |  */
> `----
> 
> The other two files indeed #include the non-existent ncurses_cfg.h file.
> Perhaps surprisingly, this is actually done on purpose, as mentioned in
> the upstream NEWS file:
> 
> ,----
> | 20170722
> |     + add dependency upon ncurses_cfg.h to tic's header-files; any program
> |       using tic-library will have to supply this file.  Legacy tack
> |       versions supply this file; ongoing tack development has dropped the
> |       dependency upon tic-library and new releases will not be affected.
> `----

yes... before I revised it in 2017 -

https://invisible-island.net/ncurses/tack/CHANGES.html#t20170318

tack used internal entrypoints of ncurses, which I eliminated.
Version 1.07 and earlier do that, and could be built within
ncurses' source-tree (to get at those headers).  The current
versions of tack use only term_entry.h, which is needed to
provide its editable-terminfo feature.

While repology lists some older versions, I don't see a need to continue
the support for those.

https://repology.org/project/tack/versions

Those headers would be needed if there were some application using "ticlib",
but that doesn't build if we have ncurses+tinfo, so there aren't any users.

> Supplying an empty ncurses_cfg.h file might be sufficient for your
> purposes, but I don't know what these are.

It would supply values for the #if statements:

tic.h

#if NCURSES_EXT_COLORS && HAVE_INIT_EXTENDED_COLOR
#if HAVE_LONG_FILE_NAMES
#ifdef TRACE
#ifndef TERMINFO
#ifdef NCURSES_INTERNALS
#if     BROKEN_LINKER

nc_tparm.h

#ifndef NC_TPARM_included
#ifndef TPARM_ARG
#ifdef NCURSES_TPARM_ARG
#if NCURSES_TPARM_VARARGS
#ifdef NCURSES_INTERNALS

term_entry.h has a few (and tack's configure-script sets them as needed):

#ifdef NCURSES_INTERNALS
#if NCURSES_USE_DATABASE
#if NCURSES_USE_TERMCAP
#if NCURSES_XNAMES

-- 
Thomas E. Dickey <dic...@invisible-island.net>
https://invisible-island.net

Attachment: signature.asc
Description: PGP signature

Reply via email to