tech-pkg archive

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

Transitive ncurses bl3 sabotaging ncursesw



Hi,

devel/ncurses/buildlink3.mk has this bit:

  25 # Many packages will prefer ncursesw over ncurses if its available (say as
  26 # a native library), so unless this file is being included by ncursesw
  27 # don't allow ncursesw to be used by causing linkagefailure.
  28 #
  29 .include "../../mk/bsd.fast.prefs.mk"
  30 .if !empty(PKGPATH:Mdevel/ncursesw)
  31 BUILDLINK_TRANSFORM+=           l:curses:${BUILDLINK_LIBNAME.ncurses}
  32 .elif empty(BUILDLINK_TREE:Mncursesw)
  33 BUILDLINK_TRANSFORM+=           l:ncursesw:__nonexistent__
  34 BUILDLINK_TRANSFORM+=           l:curses:${BUILDLINK_LIBNAME.ncurses}
  35 .else
  36 BUILDLINK_TRANSFORM+=           l:curses:${BUILDLINK_LIBNAME.ncursesw}
  37 .endif

This behaviour is prone to breaking in a hard to debug way (at least
for me) when the bl3 include order is 'wrong'. Case in point, math/sc-im
did the following:

  .include "options.mk"
  .include "../../devel/ncursesw/buildlink3.mk"

options.mk includes lua51, includes readline, includes ncurses. Because
ncurses there is not included through ncursesw the above logic kicks in
to sabotage ncursesw. The fix was to include ncursesw before options.mk.

Any ideas on how to make this a bit more robust?

Sijmen


Home | Main Index | Thread Index | Old Index