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

Cy Schubert Cy.Schubert at cschubert.com
Fri Feb 26 20:26:03 UTC 2021


In message <d0c4f575-9aba-4b04-a0f4-17e1c0fbedfb at FreeBSD.org>, Baptiste 
Darouss
in writes:
> 
>
> 26 févr. 2021 18:36:40 Baptiste Daroussin <bapt at FreeBSD.org>:
>
> > On Fri, Feb 26, 2021 at 09:30:43AM -0800, Rodney W. Grimes wrote:
> >>> In message <202102251327.11PDR4eC083842 at gitrepo.freebsd.org>, Baptiste
> >>> Daroussi
> >>> n writes:
> >>>> The branch main has been updated by bapt:
> >>>>
> >>>> URL: https://cgit.FreeBSD.org/src/commit/?id=2a50a9de8340f08bd876e9e5993
> 332ae
> >>>> 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
> >>>>    
> >>>>     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= ${_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= runtime
> >>>> +
> >>>> +.PATH: ${SRCTOP}/contrib/ncurses/misc
> >>>> +TINFOBUILDDIR= ${.OBJDIR}/builddir
> >>>> +CLEANDIRS+=  builddir
> >>>> +
> >>>> +.include <src.tools.mk>
> >>>> +
> >>>> +.if !defined(_SKIP_BUILD)
> >>>> +all: terminfo
> >>>> +.endif
> >>>> +META_TARGETS+= terminfo install-terminfo
> >>>> +
> >>>> +terminfo: terminfo.src
> >>>> + mkdir -p ${TINFOBUILDDIR}
> >>>> + ${TIC_CMD} -x -o ${TINFOBUILDDIR} ${.ALLSRC}
> >>>> +
> >>>> +.if make(*install*)
> >>>> +TINFOS!=  cd ${TINFOBUILDDIR} && find * -type f | LC_ALL=C sort
> >>>> +TINFOSDIRS=  ${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>
> >>>> +
> >>>>
> >>>
> >>> I think this had some unintended consequences, a POLA violation that shou
> ld
> >>> be documented. Our termcap didn't support alternate screen buffers while
> >>> terminfo does. Termcap did through t_te and t_ti but we didn't use them.
> >>> Terminfo as delivered from the ncurses factory does supply rmcup and smcu
> p;
> >>> our fullscreen apps such as nvi and top see them and use the alternate
> >>> screen buffer.
> >>>
> >>> The use of the alternate screen buffer is one of the things I hate about
> >>> Linux. After running vi or top I expect the output to remain on the scree
> n
> >>> so I can use some bit of information in my next command. We now have this
> >>> behaviour too.
> >>
> >> Oh, I so hate that mis-feature of Linux, please please tell me there is
> >> a simple knob to turn this off?  I believe LESS also does this kind
> >> of stuff, or atleast "man" on linux does, and that pees me off to no
> >> end when I quit the man page and what I wanted is no longer on the screen.
> >>
> >>
> > No this is not and I clear have 0 intention to have a complex patch on top 
> of
> > the linux terminfo which would prefer easy sync in the futur.
> >
> > We can document how to use a definition which does not have the feature you
>  do
> > not like.
> >
> > Best,
> > Bapt
>
> Wow I think that is one of the most terrible mail I have ever written!
>
> Let me rephrase it. I won t patch ncurses terminfo as that would make the mai
> ntenance a huge pain. Ncurses is already not an easy beast to maintain ( shou
> ld be a bit easier now).
>
> The solution is to document how to workaround for the people who dislike the 
> new behaviour

I think this is the best solution.

TERM=xterm1 or TERM=vt100. If we absolutely have to, we could document how 
people can create their own terminfo databases. Simply change rmcup= and 
smcup= to rmcup@ and smcup at . This is what xterm1 does.

xterm1 is already in the upstream and we have it. Having unpacked the RH 
SRPM, I don't see where Red Hat actually removes xterm1, it's in the 
tarball within the SRPM but it doesn't appear in their terminfo database. 
Simply change your TERM to xterm1.

Having said this, one would need to add tset -Q -s -m xterm1:xterm to your 
Red Hat and Fedora machines to make sure your FreeBSD TERM=xterm1 doesn't 
cause any grief. Much of the problem is that the various Linux distros have 
created incompatibilities which affect the traditional UNIX world (I put us 
in the traditional UNIX space) requiring the rest of us to either follow 
suit or break. I can think other changes coming down the turnpike which 
will affect us but that is better left for a freebsd-arch thread.

Documenting how people can create their own terminfo database in say, 
~/.terminfo and point $TERMINFO to it would go a long way. I will try it 
myself over the next week or two when I get some free time.


-- 
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