tech-pkg archive

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

Re: ncurses/builtin.mk



On 25/11/2018 22:01, David Holland wrote:
On Thu, Nov 22, 2018 at 07:38:13AM -0800, John Nemeth wrote:
  > } I think there are enough ways to specify it doesn't matter which curses
  > } library is used. having ncurses/buildink3.mk possibly mean netbsd curses
  > } is confusing. can we revert that and change any package that doesn't
  > } care about curses library?
  >
  >      This type of stanza is in a number of buildlink3.mk files
  > (i.e. look at databases/openldap-client/buildlink3.mk).  It is
  > completely normal for buildlink3.mk to make the decision whether
  > to use the builtin version of something or to use the pkgsrc version.

openldap-client's bl3.mk is not doing that. grep shows that only four
package bl3 files assign USE_BUILTIN.* and... ncurses is not among
them. I think you (both of you) mean builtin.mk.

But regardless, though making choices in builtin.mk is normal, it's
not desirable when it creates spurious complexity.

There's already some logic in the ncurses builtin.mk that allows
packages to specify what (n)curses features are really required. This
really belongs in mk/curses.bl3.mk: it's about choosing which curses
library to use, not about versions of ncurses. It should be moved
there and renamed.

All the explicit uses of ncurses bl3 that actually admit other curses
implementations should be fixed accordingly.


(at least assuming someone wants to make changes; otherwise, it's not
really that badly broken...)

Frankly, I'd remove all the "which curses" crud that exists in ncurses/buil*.mk

mk/curses.buil*.mk has everything needed and every curses based package should depend on that.

It even sports enough knobs to detect at compile time if the curses headers have the needed features the application needs and can even get the chosen curses to "fake" ncurses in terms of using ncurses headers and linking to ncurses but really use the chosen curses. It works really well and saves a lot of patching. I gave up sending patches to the many upstreams because they just don't care about NetBSD curses - in their view everything is ncurses including headers for no good reason.

A few years ago, I went through every package in pkgsrc and changed everything to mk/curses.bui*.mk (aside from one because it went deep into ncurses internals and did many bad things).

Roy


Home | Main Index | Thread Index | Old Index