bug-ncurses
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Bug#868609: le FTBFS with latest ncurses


From: Alexander V. Lukyanov
Subject: Re: Bug#868609: le FTBFS with latest ncurses
Date: Mon, 17 Jul 2017 14:51:22 +0300
User-agent: Mutt/1.8.0 (2017-02-23)

On Mon, Jul 17, 2017 at 05:28:09AM -0400, Thomas Dickey wrote:
> On Mon, Jul 17, 2017 at 11:43:35AM +0300, Alexander V. Lukyanov wrote:
> > On Mon, Jul 17, 2017 at 02:48:27AM +0300, Adrian Bunk wrote:
> > > Source: le
> > > Version: 1.16.3-1
> > > Severity: serious
> > > Tags: buster sid
> > >
> > > https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/le.html
> > >
> > > ...
> > > gcc -DHAVE_CONFIG_H -I. -I../lib  -I../lib -I../lib 
> > > -I/usr/include/ncursesw -Wdate-time -D_FORTIFY_SOURCE=2  -g -O2 
> > > -fstack-protector-strong -Wformat -Werror=format-security -Wall 
> > > -Wwrite-strings -Woverloaded-virtual -fno-exceptions -fno-rtti 
> > > -fno-implement-inlines -c -o color.o color.cc
> > > color.cc: In function 'int find_pair(int, int)':
> > > color.cc:36:12: error: 'int find_pair(int, int)' was declared 'extern' 
> > > and later 'static' [-fpermissive]
> > >  static int find_pair(int fg,int bg)
> > >             ^~~~~~~~~
> > > In file included from edit.h:36:0,
> > >                  from color.cc:27:
> > > /usr/include/ncursesw/curses.h:924:28: note: previous declaration of 'int 
> > > find_pair(int, int)'
> > >  extern NCURSES_EXPORT(int) find_pair (int, int);
> > >                             ^~~~~~~~~
> > > Makefile:1299: recipe for target 'color.o' failed
> > > make[3]: *** [color.o] Error 1
> >
> > ncurses was extended with new symbols, some of which conflict with "le"
> > internal names. So either ncurses should be fixed not to export these
> > symbols by default or le should be fixed to rename its identifiers.
>
> hmm - not that I'm oblivious to the problem, but (for example) a quick
> check on an alternate name "find_color_pair" finds existing usage too.
> This problem will come up since there's no namespaces in C (not that
> C++ is free from the problem).
>
> So... I could look for a rarely-used name (which still gives the same
> connotations), or the couple of applications using ncurses could be
> modified.

What about a separate include file for curses extensions, somthing like
ncurses_ext.h? This way any new identifiers won't conflict with legacy code.

Other common way to avoid conflicts is prefixing the identifiers.
nc_find_pair is much less likely to conflict.

--
   Alexander.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]