Improve availability of functional terminfo entries
This commit is contained in:
6
.SRCINFO
6
.SRCINFO
@@ -1,7 +1,7 @@
|
|||||||
pkgbase = st
|
pkgbase = st
|
||||||
pkgdesc = A simple virtual terminal emulator for X.
|
pkgdesc = A simple virtual terminal emulator for X.
|
||||||
pkgver = 0.8.2
|
pkgver = 0.8.2
|
||||||
pkgrel = 7
|
pkgrel = 8
|
||||||
url = https://st.suckless.org
|
url = https://st.suckless.org
|
||||||
arch = i686
|
arch = i686
|
||||||
arch = x86_64
|
arch = x86_64
|
||||||
@@ -11,7 +11,11 @@ pkgbase = st
|
|||||||
makedepends = ncurses
|
makedepends = ncurses
|
||||||
depends = libxft
|
depends = libxft
|
||||||
source = https://dl.suckless.org/st/st-0.8.2.tar.gz
|
source = https://dl.suckless.org/st/st-0.8.2.tar.gz
|
||||||
|
source = terminfo.patch
|
||||||
|
source = README.terminfo.rst
|
||||||
sha256sums = aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35
|
sha256sums = aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35
|
||||||
|
sha256sums = b282c0b963a24299d02e485af30260d237ca2e8e6b06282d385022c9c10a0950
|
||||||
|
sha256sums = 9a1b764cedd3a6288cc6601a3cdce06f4ab993f44de7aea5afd69511c13df7c0
|
||||||
|
|
||||||
pkgname = st
|
pkgname = st
|
||||||
|
|
||||||
|
|||||||
29
PKGBUILD
29
PKGBUILD
@@ -5,24 +5,24 @@
|
|||||||
|
|
||||||
pkgname=st
|
pkgname=st
|
||||||
pkgver=0.8.2
|
pkgver=0.8.2
|
||||||
pkgrel=7
|
pkgrel=8
|
||||||
pkgdesc='A simple virtual terminal emulator for X.'
|
pkgdesc='A simple virtual terminal emulator for X.'
|
||||||
arch=('i686' 'x86_64' 'armv7h')
|
arch=('i686' 'x86_64' 'armv7h')
|
||||||
license=('MIT')
|
license=('MIT')
|
||||||
depends=(libxft)
|
depends=(libxft)
|
||||||
makedepends=(libxext ncurses)
|
makedepends=(libxext ncurses)
|
||||||
url=https://st.suckless.org
|
url=https://st.suckless.org
|
||||||
source=(https://dl.suckless.org/$pkgname/$pkgname-$pkgver.tar.gz)
|
source=(https://dl.suckless.org/$pkgname/$pkgname-$pkgver.tar.gz
|
||||||
sha256sums=('aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35')
|
terminfo.patch
|
||||||
_makedir=$pkgname-$pkgver
|
README.terminfo.rst)
|
||||||
_makeopts="--directory=$_makedir"
|
sha256sums=(aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35
|
||||||
|
b282c0b963a24299d02e485af30260d237ca2e8e6b06282d385022c9c10a0950
|
||||||
|
9a1b764cedd3a6288cc6601a3cdce06f4ab993f44de7aea5afd69511c13df7c0)
|
||||||
|
_sourcedir=$pkgname-$pkgver
|
||||||
|
_makeopts="--directory=$_sourcedir"
|
||||||
|
|
||||||
prepare() {
|
prepare() {
|
||||||
# Do not install terminfo files, as they conflict with ncurses.
|
patch --directory="$_sourcedir" --strip=0 < terminfo.patch
|
||||||
sed -r \
|
|
||||||
-e '/^[[:space:]]+tic\>/d' \
|
|
||||||
-e '/^[[:space:]]+@echo .* terminfo/d' \
|
|
||||||
-i $_makedir/Makefile
|
|
||||||
|
|
||||||
# This package provides a mechanism to provide a custom config.h. Multiple
|
# This package provides a mechanism to provide a custom config.h. Multiple
|
||||||
# configuration states are determined by the presence of two files in
|
# configuration states are determined by the presence of two files in
|
||||||
@@ -45,7 +45,7 @@ prepare() {
|
|||||||
abort=
|
abort=
|
||||||
if [ -e "$BUILDDIR/config.h" ]
|
if [ -e "$BUILDDIR/config.h" ]
|
||||||
then
|
then
|
||||||
cp "$BUILDDIR/config.h" "$_makedir"
|
cp "$BUILDDIR/config.h" "$_sourcedir"
|
||||||
elif [ ! -e "$BUILDDIR/config.def.h" ]
|
elif [ ! -e "$BUILDDIR/config.def.h" ]
|
||||||
then
|
then
|
||||||
abort=1
|
abort=1
|
||||||
@@ -55,7 +55,7 @@ prepare() {
|
|||||||
msg+='values. Then restart the build process.'
|
msg+='values. Then restart the build process.'
|
||||||
error "$msg"
|
error "$msg"
|
||||||
fi
|
fi
|
||||||
cp "$_makedir/config.def.h" "$BUILDDIR"
|
cp "$_sourcedir/config.def.h" "$BUILDDIR"
|
||||||
test -z "$abort"
|
test -z "$abort"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -69,6 +69,7 @@ package() {
|
|||||||
local licdir="$shrdir/licenses/$pkgname"
|
local licdir="$shrdir/licenses/$pkgname"
|
||||||
local docdir="$shrdir/doc/$pkgname"
|
local docdir="$shrdir/doc/$pkgname"
|
||||||
make $_makeopts PREFIX=/usr DESTDIR="$pkgdir" install
|
make $_makeopts PREFIX=/usr DESTDIR="$pkgdir" install
|
||||||
install $installopts "$licdir" "$_makedir/LICENSE"
|
install $installopts "$licdir" "$_sourcedir/LICENSE"
|
||||||
install $installopts "$docdir" "$_makedir/README"
|
install $installopts "$docdir" "$_sourcedir/README"
|
||||||
|
install $installopts "$docdir" README.terminfo.rst
|
||||||
}
|
}
|
||||||
|
|||||||
77
README.terminfo.rst
Normal file
77
README.terminfo.rst
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
Terminfo Entries
|
||||||
|
================
|
||||||
|
|
||||||
|
:Author: Sebastian J. Bronner <waschtl@sbronner.com>
|
||||||
|
:Date: 2019-10-30
|
||||||
|
:URL: https://aur.archlinux.org/packages/st
|
||||||
|
|
||||||
|
The Problem
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Most Linux-based distributions will have the bulk of their terminfo entries in
|
||||||
|
the ``ncurses`` package. These live in ``/usr/share/terminfo``. There you will
|
||||||
|
find several entries for ``st``. These, however, do not work well with current
|
||||||
|
versions of ``st``. You need the terminfo entries supplied with ``st``.
|
||||||
|
|
||||||
|
Specifically, I have observed the following issues when using the terminfo
|
||||||
|
entries supplied with ``ncurses``:
|
||||||
|
|
||||||
|
* Start ``st``.
|
||||||
|
* Run ``tmux`` in the ``st`` window.
|
||||||
|
* Run ``nvim`` in ``tmux``.
|
||||||
|
|
||||||
|
* ``tmux`` will crash immediately with the following message:
|
||||||
|
|
||||||
|
.. code:: console
|
||||||
|
|
||||||
|
[lost server]
|
||||||
|
%
|
||||||
|
|
||||||
|
* Run ``w3m`` with any URL in ``tmux``.
|
||||||
|
|
||||||
|
* ``w3m`` will not react to any key presses (most notably the arrow keys and
|
||||||
|
``q``) and must be terminated with ``killall w3m``.
|
||||||
|
* The command line returned where ``w3m`` was running will show all the
|
||||||
|
missing keypresses.
|
||||||
|
|
||||||
|
For reference, I performed these tests using the following software versions:
|
||||||
|
``st`` 0.8.2, ``tmux`` 2.9_a, ``neovim`` 0.4.2, and ``w3m``
|
||||||
|
0.5.3.git20190105-1.
|
||||||
|
|
||||||
|
The Solution
|
||||||
|
------------
|
||||||
|
|
||||||
|
The ``ncurses`` package should stop shipping terminfo entries for ``st``. These
|
||||||
|
should then be provided in ``/usr/share/terminfo`` by this (and other) ``st``
|
||||||
|
packages. The conflicting terminfo entries are
|
||||||
|
|
||||||
|
* ``st`` and
|
||||||
|
* ``st-256color``.
|
||||||
|
|
||||||
|
Additional entries that could be considered for removal from ``ncurses`` are
|
||||||
|
|
||||||
|
* ``st-0.6``,
|
||||||
|
* ``st-0.7``,
|
||||||
|
* ``st-16color``,
|
||||||
|
* ``st-direct``,
|
||||||
|
* ``stterm`` (for distributions that rename ``st`` to ``stterm``),
|
||||||
|
* ``stterm-16color``, and
|
||||||
|
* ``stterm-256color``.
|
||||||
|
|
||||||
|
This solution cannot be implemented without the cooperation of ``ncurses``
|
||||||
|
since many distributions (including Arch Linux) do not allow for two packages
|
||||||
|
that provide files with identical paths to be installed side-by-side.
|
||||||
|
Therefore, I am bringing this to the attention of the ``ncurses`` team.
|
||||||
|
|
||||||
|
The Workaround
|
||||||
|
--------------
|
||||||
|
|
||||||
|
A somewhat painful, albeit pragmatic, workaround is as follows: A user that
|
||||||
|
encounters issues that are due to mismatched terminfo entries, such as those
|
||||||
|
above, can symlink the terminfo entries included in this package into her
|
||||||
|
user-level terminfo database using the following commands:
|
||||||
|
|
||||||
|
.. code:: shell
|
||||||
|
|
||||||
|
mkdir ~/.terminfo/s
|
||||||
|
ln -s /usr/share/st/terminfo/s/* ~/.terminfo/s
|
||||||
12
terminfo.patch
Normal file
12
terminfo.patch
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
--- Makefile 2019-02-09 12:50:41.000000000 +0100
|
||||||
|
+++ Makefile 2019-10-30 23:39:55.775193275 +0100
|
||||||
|
@@ -47,7 +47,8 @@
|
||||||
|
mkdir -p $(DESTDIR)$(MANPREFIX)/man1
|
||||||
|
sed "s/VERSION/$(VERSION)/g" < st.1 > $(DESTDIR)$(MANPREFIX)/man1/st.1
|
||||||
|
chmod 644 $(DESTDIR)$(MANPREFIX)/man1/st.1
|
||||||
|
- tic -sx st.info
|
||||||
|
+ mkdir -p $(DESTDIR)$(PREFIX)/share/st/terminfo
|
||||||
|
+ tic -sx -o $(DESTDIR)$(PREFIX)/share/st/terminfo st.info
|
||||||
|
@echo Please see the README file regarding the terminfo entry of st.
|
||||||
|
|
||||||
|
uninstall:
|
||||||
Reference in New Issue
Block a user