Bug#1034549: libncurses-dev: ships header files that can't be compiled (ncurses_cfg.h)

2023-04-30 Thread Sven Joachim
Control: tags -1 fixed-upstream

On 2023-04-19 17:02 -0400, Thomas Dickey wrote:

> 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.

For the record, in the 20230423 patchlevel you dropped the support for
these old tack versions, and the tic.h and nc_tparm.h header files are
no longer installed.  Thanks! :-)

Cheers,
   Sven



Bug#1034549: libncurses-dev: ships header files that can't be compiled (ncurses_cfg.h)

2023-04-19 Thread Thomas Dickey
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 
https://invisible-island.net


signature.asc
Description: PGP signature


Bug#1034549: libncurses-dev: ships header files that can't be compiled (ncurses_cfg.h)

2023-04-19 Thread Sven Joachim
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.
`

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

Cheers,
   Sven



Bug#1034549: libncurses-dev: ships header files that can't be compiled (ncurses_cfg.h)

2023-04-17 Thread Steve Langasek
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
$

-- 
Steve Langasek   Give me a lever long enough and a Free OS
Debian Developer   to set it on, and I can move the world.
Ubuntu Developer   https://www.debian.org/
slanga...@ubuntu.com vor...@debian.org