git: 2a50a9de8340 - main - terminfo: add terminfo database

Cy Schubert Cy.Schubert at cschubert.com
Fri Feb 26 14:48:22 UTC 2021


In message <20210226143714.k24aacsrjnnhkktc at aniel.nours.eu>, Baptiste 
Daroussin
 writes:
> 
> --dqdw63fwvislrgvy
> Content-Type: text/plain; charset=us-ascii
> Content-Disposition: inline
> Content-Transfer-Encoding: quoted-printable
>
> On Fri, Feb 26, 2021 at 06:20:19AM -0800, Cy Schubert wrote:
> > In message <202102251327.11PDR4eC083842 at gitrepo.freebsd.org>, Baptiste=20
> > Daroussi
> > n writes:
> > > The branch main has been updated by bapt:
> > >
> > > URL: https://cgit.FreeBSD.org/src/commit/?id=3D2a50a9de8340f08bd876e9e5=
> 993332ae
> > > 14376f80
> > >
> > > commit 2a50a9de8340f08bd876e9e5993332ae14376f80
> > > Author:     Baptiste Daroussin <bapt at FreeBSD.org>
> > > AuthorDate: 2021-02-23 16:17:32 +0000
> > > Commit:     Baptiste Daroussin <bapt at FreeBSD.org>
> > > CommitDate: 2021-02-25 13:25:32 +0000
> > >
> > >     terminfo: add terminfo database
> > >    =20
> > >     Tested by:      manu, jbeich
> > > ---
> > >  share/Makefile          |  1 +
> > >  share/terminfo/Makefile | 34 ++++++++++++++++++++++++++++++++++
> > >  2 files changed, 35 insertions(+)
> > >
> > > diff --git a/share/Makefile b/share/Makefile
> > > index c4e12b05f7db..d6854b230ae5 100644
> > > --- a/share/Makefile
> > > +++ b/share/Makefile
> > > @@ -26,6 +26,7 @@ SUBDIR=3D	${_colldef} \
> > >  	${_syscons} \
> > >  	tabset \
> > >  	termcap \
> > > +	terminfo \
> > >  	${_timedef} \
> > >  	${_vt} \
> > >  	${_zoneinfo}
> > > diff --git a/share/terminfo/Makefile b/share/terminfo/Makefile
> > > new file mode 100644
> > > index 000000000000..7bb11f3fdf24
> > > --- /dev/null
> > > +++ b/share/terminfo/Makefile
> > > @@ -0,0 +1,34 @@
> > > +PACKAGE=3D	runtime
> > > +
> > > +.PATH: ${SRCTOP}/contrib/ncurses/misc
> > > +TINFOBUILDDIR=3D	${.OBJDIR}/builddir
> > > +CLEANDIRS+=3D	builddir
> > > +
> > > +.include <src.tools.mk>
> > > +
> > > +.if !defined(_SKIP_BUILD)
> > > +all: terminfo
> > > +.endif
> > > +META_TARGETS+=3D	terminfo install-terminfo
> > > +
> > > +terminfo: terminfo.src
> > > +	mkdir -p ${TINFOBUILDDIR}
> > > +	${TIC_CMD} -x -o ${TINFOBUILDDIR} ${.ALLSRC}
> > > +
> > > +.if make(*install*)
> > > +TINFOS!=3D	 cd ${TINFOBUILDDIR} && find * -type f | LC_ALL=3DC sor
> t
> > > +TINFOSDIRS=3D	${TINFOS:C/(.).*/\1/g:O:u}
> > > +.endif
> > > +
> > > +beforeinstall: install-terminfo
> > > +install-terminfo:
> > > +	mkdir -p ${DESTDIR}/usr/share/terminfo
> > > +	cd ${DESTDIR}/usr/share/terminfo; mkdir -p ${TINFOSDIRS}
> > > +.for f in ${TINFOS}
> > > +	${INSTALL} ${TAG_ARGS} \
> > > +	    -o ${BINOWN} -g ${BINGRP} -m ${NOBINMODE} \
> > > +	    ${TINFOBUILDDIR}/${f} ${DESTDIR}/usr/share/terminfo/${f}
> > > +.endfor
> > > +
> > > +.include <bsd.prog.mk>
> > > +
> > >
> >=20
> > I think this had some unintended consequences, a POLA violation that shou=
> ld=20
> > be documented. Our termcap didn't support alternate screen buffers while=
> =20
> > terminfo does. Termcap did through t_te and t_ti but we didn't use them.=
> =20
> > Terminfo as delivered from the ncurses factory does supply rmcup and smcu=
> p;=20
> > our fullscreen apps such as nvi and top see them and use the alternate=20
> > screen buffer.
> >=20
> > The use of the alternate screen buffer is one of the things I hate about=
> =20
> > Linux. After running vi or top I expect the output to remain on the scree=
> n=20
> > so I can use some bit of information in my next command. We now have this=
> =20
> > behaviour too.
> >=20
> > The alternate screen buffer was added to xterm an ice age ago. Most moder=
> n=20
> > terminal emulators support it. As much as I feel the need to yank out rmc=
> up=20
> > an smcup from our terminfo database, we are using a feature, as distastef=
> ul=20
> > as it may feel. This change probably needs a relnotes=3Dyes and an UPDATI=
> NG=20
> > entry advising users that they can either change $TERM to xterm1, vt100, =
> or=20
> > some other terminal definition that doesn't support rmcup and smcup, or=
> =20
> > learn to like it.
> >=20
> > OTOH, maybe this is something we as a community don't really want and we=
> =20
> > remove the rmcup and smcup definitions from our terminfo database.=20
> > Personally, I believe this is progress -- progress I'm not particularly=
> =20
> > enamoured with but progress nonetheless. But I think we need to discuss,=
> =20
> > come to some sort of decision and document it.
> >=20
> > Thoughts?
>
> I agree about UPDATING and RELNOTES. I planned to do it in a couple of days=
>  for
> UPDATING, as for rmcup/smcup there have been so many people asking for it, =
> that
> I didn't think people will hate it, so yes we could/should add en entry in
> UPDATING.

UPDATING, yes, but also handbook documentation. Setting $TERM to xterm1 or 
vt100 reverts to the old behaviour but at the cost of any new functionality 
the current xterm or xterm-256color provides. I do think this needs a 
handbook page that discusses the old behaviour and how to get it back. 
Maybe how to set up one's own terminfo using $TERMINFO or one of the other 
environment variables. I say maybe because people setting up their own will 
screw themselves resulting in more PRs. I view this as an exercise of 
reducing PRs and tickets. Useless tickets waste everyone's time.

>
> I was planning to MFC it to 13.1, I don't know how much this change is a PO=
> LA
> violation or not, imho all the other benefice of terminfo over termcap for =
> end
> users are worth the MFC, but if most people vote against, I won't MFC it.

I think this is big enough not to MFC to 13.1.


-- 
Cheers,
Cy Schubert <Cy.Schubert at cschubert.com>
FreeBSD UNIX:  <cy at FreeBSD.org>   Web:  https://FreeBSD.org
NTP:           <cy at nwtime.org>    Web:  https://nwtime.org

	The need of the many outweighs the greed of the few.




More information about the dev-commits-src-main mailing list