A few shared libraries in the base system link against ncurses. An
upgrade from a 12.x host to 13 results in ABI breakage for existing
binaries since the newer versions of these libraries link against the
newer ncurses while the binary itself links against the older ncurses.
For example, dialog4ports built on 12.x sometimes crashes on 13 since
it depends on libdialog which links against ncurses internally.
MFC after: 3 days
Reviewed by: kib, delphij
Differential Revision: https://reviews.freebsd.org/D28448
Only keep the widechar version of ncurses as libncursesw.so.9
Keep the old name to avoid breaking the ABI compatibility (the non
widechar version libncurses.so.9 is not binary compatible with
libncursesw.so.9) since all ports and base are already only linking
against the widechar version we can simply remove libncurses.so.9
Since the .9 version only lived in the dev branch and never ended in a
release, it is simply removed and not added to any binary compat
package.
Add symlinks to keep build time compatibility for anyone linking against
-lncurses
These are no longer needed after the recent 'beforebuild: depend' changes
and hooking DIRDEPS_BUILD into a subset of FAST_DEPEND which supports
skipping 'make depend'.
Sponsored by: EMC / Isilon Storage Division
This both avoids some dependencies on xinstall.host and allows
bootstrapping on older releases to work due to lack of at least 'install -l'
support.
Sponsored by: EMC / Isilon Storage Division
Off by default, build behaves normally.
WITH_META_MODE we get auto objdir creation, the ability to
start build from anywhere in the tree.
Still need to add real targets under targets/ to build packages.
Differential Revision: D2796
Reviewed by: brooks imp
and finish the job. ncurses is now the only Makefile in the tree that
uses it since it wasn't a simple mechanical change, and will be
addressed in a future commit.
are installed twice (once in non-widec version, onec in widec version).
Headers with widec enabled are compatible with non-widec version
for libraries. However, if you do a repeat build/install, the curses.h
is always overwritten. The reason is that headers and statics libraries
are installed with -S option to preserve their mtime if no actual changes,
which saves time when doing incremental builds. The curses.h is installed
by non-widec ncurses first, then by widec ncurses. So next time, it happens
again. You see something like this:
# pwd
/usr/src/lib/ncurses
# make -s installincludes INSTALL="install -v"
===> ncurses (installincludes)
install: curses.h -> /usr/include/curses.h
===> ncursesw (installincludes)
install: curses.h -> /usr/include/curses.h
# make -s installincludes INSTALL="install -v"
===> ncurses (installincludes)
install: curses.h -> /usr/include/curses.h
===> ncursesw (installincludes)
install: curses.h -> /usr/include/curses.h
The solution is to disable installing headers in non-widec version. Now
you see this:
# pwd
/usr/src/lib/ncurses
# make -s installincludes INSTALL="install -v"
===> ncurses (installincludes)
===> ncursesw (installincludes)
# make -s installincludes INSTALL="install -v"
===> ncurses (installincludes)
===> ncursesw (installincludes)
For form/panel/menu libraries, the headers are the same for both version.
To be consistent with ncurses, I also disable the installation in non-widec
version.
Reported by: des
Reviewed by: ru
Thanks to: ru
Approved by: delphij (mentor)
MFC after: 2 weeks
- first line is $FreeBSD$
- Reorder special variables: DPADD, LPADD, CFLAGS
- Use = instead of += for variables that are initially empty
- Use space instead of tab after :
- Use one tab after =
- Use .SUFFIXES for section 3 manual page which simplifies Makefile a lot
- Use SHAREDIR instead of /usr/share
- Remove SRCDIR in INCS since we set .PATH properly
- Use plural in variable name when it stands for more that one source file
Reviewed by: ru
Approved by: delphij (mentor)
cat ${.ALLSRC} > ${.TARGET}
rather than
ln -sf ${.ALLSRC} ${.TARGET}
not to depends on absolute-path of symbolic links.
Commented by: marcel, obrien, bde