Page MenuHomeFreeBSD

ncurses: split libtinfo from libncurses
ClosedPublic

Authored by bapt on Sep 24 2021, 10:12 AM.

Details

Summary

many external program expects libncurses to not be provided as a single
library. Instead of fixing all ports, distribute ncurses the way
upstream distributes it

Turn libncursesw.so into a ldscript which will link automatically as
needed to libtinfow so so this change is seamless at compile time.

ncurses: chase dependency changes in the source tree

bsdinstall: reduce overlinking

both distextract and distfetch does not directly use ncurses,
or figpart, drop their direct link to those libs

Diff Detail

Repository
rG FreeBSD src repository
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

bapt requested review of this revision.Sep 24 2021, 10:12 AM

The message, if it is to become a commit message, could use some word-smithing. Here's my try at improving it:

Many external programs do not expect libncurses to be provided as a single
library. To improve the matters without changing all the relevant ports,
distribute ncurses the way upstream distributes it.

Turn libncursesw.so into an ldscript which will link automatically to
libtinfow as needed. This change is seamless at compile time.

Update the source tree to use the appropriate combination of tinfow and
ncursesw when linking.

Reduce overlinking in bsdinstall and pmc.

usr.bin/clang/lldb/Makefile
43 ↗(On Diff #95623)

Probably showing my ignorance, but is this intentional?

usr.bin/clang/lldb/Makefile
43 ↗(On Diff #95623)

yes, but should be in a separate commit

I don't know the base make stuff well enough to comment on it, but if devel/notcurses builds without ports ncurses with this change then it should be fine.

Looks good.

lib/ncurses/ncurses/Makefile
175

Where did all of the removed logic in this file go? Is it all unneeded?

usr.sbin/bsdinstall/distextract/Makefile
5 ↗(On Diff #95623)

Lost figpar and tinfow I assume. Or is this the overlinking fix?

usr.sbin/bsdinstall/distfetch/Makefile
5 ↗(On Diff #95623)

tinfow? Or is this also overlinking?

usr.sbin/pmc/Makefile
17 ↗(On Diff #95623)

overlink fixes here? I'm starting to think these should be separate.

bapt added inline comments.
lib/ncurses/ncurses/Makefile
175

in the tinfo/makefile

usr.sbin/bsdinstall/distextract/Makefile
5 ↗(On Diff #95623)

This the overlinking fix (in a separate commit)

usr.sbin/bsdinstall/distfetch/Makefile
5 ↗(On Diff #95623)

Also overlinking

usr.sbin/pmc/Makefile
17 ↗(On Diff #95623)

Overlinking fix, this is a separate commit, but phabricator does not help seeing it...

I don't know the base make stuff well enough to comment on it, but if devel/notcurses builds without ports ncurses with this change then it should be fine.

It does buidl fine the 2 ports (notcurses included) which are marked as USES=ncurses:port I checked

In D32098#726166, @bapt wrote:

It does buidl fine the 2 ports (notcurses included) which are marked as USES=ncurses:port I checked

Great, thanks! Then with this, USES=ncurses:port shouldn't be required anywhere. Do you plan a __FreeBSD_version bump with this?

This revision was not accepted when it landed; it landed in state Needs Review.Oct 4 2021, 9:41 AM
This revision was automatically updated to reflect the committed changes.