summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Grande2020-05-11 13:45:42 -0400
committerVincent Grande2020-05-11 13:45:42 -0400
commit6269707d77ee37d76ca3bc2269e5e722fe9a2956 (patch)
tree971f73a7210d8cc53252e53f837ea8c2f39fe558
parent3f3c15a5e6088a8a6c16fcc7bb4d44b7746299d1 (diff)
downloadaur-6269707d77ee37d76ca3bc2269e5e722fe9a2956.tar.gz
terminfo updates
-rw-r--r--.SRCINFO16
-rwxr-xr-xPKGBUILD90
-rwxr-xr-xREADME.terminfo.rst90
-rwxr-xr-xterminfo.patch10
4 files changed, 170 insertions, 36 deletions
diff --git a/.SRCINFO b/.SRCINFO
index c8e63fe12386..529adcff36d1 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,19 +1,21 @@
pkgbase = st-git
- pkgdesc = Simple virtual terminal emulator for X
- pkgver = 0.8.2.r20.g8386642
+ pkgdesc = A simple virtual terminal emulator for X.
+ pkgver = 0.8.3.r6.g914fb82
pkgrel = 1
- url = https://st.suckless.org/
+ url = https://st.suckless.org
arch = i686
arch = x86_64
+ arch = armv7h
license = MIT
- makedepends = ncurses
- makedepends = libxext
- makedepends = git
depends = libxft
provides = st
conflicts = st
source = git://git.suckless.org/st
- sha1sums = SKIP
+ source = terminfo.patch
+ source = README.terminfo.rst
+ sha256sums = SKIP
+ sha256sums = SKIP
+ sha256sums = SKIP
pkgname = st-git
diff --git a/PKGBUILD b/PKGBUILD
index 7dc15bfe7388..9a0b7b2f6431 100755
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,22 +1,28 @@
-# Maintainer: Tarmo Heiskanen <turskii@gmail.com>
-# Contributor: mar77i <mar77i at mar77i dot ch>
-# Contributor: Gaetan Bisson <bisson@archlinux.org>
-# Contributor: Scytrin dai Kinthra <scytrin@gmail.com>
+# Maintainer: Vincent Grande <shoober420@gmail.com>
+# Contributor: Jose Riha <jose1711 gmail com>
+# Contributor: Sebastian J. Bronner <waschtl@sbronner.com>
+# Contributor: Patrick Jackson <PatrickSJackson gmail com>
+# Contributor: Christoph Vigano <mail@cvigano.de>
pkgname=st-git
-pkgver=0.8.2.r20.g8386642
+pkgver=0.8.3.r6.g914fb82
pkgrel=1
-pkgdesc='Simple virtual terminal emulator for X'
-url='https://st.suckless.org/'
-arch=('i686' 'x86_64')
+pkgdesc='A simple virtual terminal emulator for X.'
+arch=('i686' 'x86_64' 'armv7h')
license=('MIT')
-depends=('libxft')
-makedepends=('ncurses' 'libxext' 'git')
-source=('git://git.suckless.org/st')
-sha1sums=('SKIP')
-provides=("st")
-conflicts=("st")
-
+depends=(libxft)
+provides=(st)
+conflicts=(st)
+url=https://st.suckless.org
+source=(git://git.suckless.org/st
+ terminfo.patch
+ README.terminfo.rst)
+sha256sums=(SKIP
+ SKIP
+ SKIP)
+_gitname="st"
+_sourcedir="$_gitname"
+_makeopts="--directory=$_sourcedir"
pkgver() {
cd "${srcdir}/st"
@@ -24,25 +30,51 @@ pkgver() {
}
prepare() {
- cd "${srcdir}/st"
- echo 'Copying config.def.h to $startdir...'
- cp config.def.h "${startdir}/"
-
- echo 'Copying config.h from $startdir if it exists...'
- [ -f "${startdir}/config.h" ] && cp "${startdir}/config.h" . || true
+ # This package provides a mechanism to provide a custom config.h. Multiple
+ # configuration states are determined by the presence of two files in
+ # $BUILDDIR:
+ #
+ # config.h config.def.h state
+ # ======== ============ =====
+ # absent absent Initial state. The user receives a message on how
+ # to configure this package.
+ # absent present The user was previously made aware of the
+ # configuration options and has not made any
+ # configuration changes. The package is built using
+ # default values.
+ # present The user has supplied his or her configuration. The
+ # file will be copied to $srcdir and used during
+ # build.
+ #
+ # After this test, config.def.h is copied from $srcdir to $BUILDDIR to
+ # provide an up to date template for the user.
+ if [ -e "$BUILDDIR/config.h" ]
+ then
+ cp "$BUILDDIR/config.h" "$_sourcedir"
+ elif [ ! -e "$BUILDDIR/config.def.h" ]
+ then
+ msg='This package can be configured in config.h. Copy the config.def.h '
+ msg+='that was just placed into the package directory to config.h and '
+ msg+='modify it to change the configuration. Or just leave it alone to '
+ msg+='continue to use default values.'
+ warning "$msg"
+ fi
+ cp "$_sourcedir/config.def.h" "$BUILDDIR"
}
build() {
- cd "${srcdir}/st"
-
- make X11INC=/usr/include/X11 X11LIB=/usr/lib/X11
+ make $_makeopts X11INC=/usr/include/X11 X11LIB=/usr/lib/X11
}
package() {
- cd "${srcdir}/st"
-
- make PREFIX=/usr DESTDIR="${pkgdir}" TERMINFO="/dev/null" install
- install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
- install -Dm644 README "${pkgdir}/usr/share/doc/${pkgname}/README"
+ local installopts='--mode 0644 -D --target-directory'
+ local shrdir="$pkgdir/usr/share"
+ local licdir="$shrdir/licenses/$pkgname"
+ local docdir="$shrdir/doc/$pkgname"
+ make $_makeopts PREFIX=/usr DESTDIR="$pkgdir" install
+ install $installopts "$licdir" "$_sourcedir/LICENSE"
+ install $installopts "$docdir" "$_sourcedir/README"
+ install $installopts "$docdir" README.terminfo.rst
+ install $installopts "$shrdir/$pkgname" "$_sourcedir/st.info"
}
diff --git a/README.terminfo.rst b/README.terminfo.rst
new file mode 100755
index 000000000000..cd724d0d4cd6
--- /dev/null
+++ b/README.terminfo.rst
@@ -0,0 +1,90 @@
+Terminfo Entries
+================
+
+:Author: Sebastian J. Bronner <waschtl@sbronner.com>
+:Date: 2019-11-06
+:URL: https://aur.archlinux.org/packages/st
+
+The Problem
+-----------
+
+Most Linux-based distributions will have their terminfo entries in the
+``ncurses`` package. These live in ``/usr/share/terminfo``. There you will find
+several entries for ``st``. As of ``ncurses-6.1`` as packaged in ArchLinux,
+these, do not work well with current versions of ``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.
+
+A couple of issues have been filed against ``tmux`` for this. Although it is
+not a problem with ``tmux`` the issues remain for reference:
+
+| https://github.com/tmux/tmux/issues/1264
+| https://github.com/tmux/tmux/issues/1593
+
+Complications
+-------------
+
+While it may be tempting to use the terminfo files shipped with ``st``, that
+would be a bad idea from a packaging standpoint. There are two reasons for
+this: (1) As of ``st-0.8.2`` they have errors in them. This has been fixed and
+will roll out in the next release, though.
+
+| https://lists.gnu.org/archive/html/bug-ncurses/2019-10/msg00071.html
+| https://lists.suckless.org/hackers/1911/17006.html
+
+(2) It is vital that remote terminals connecting via ``ssh`` are known. That is
+accomplished by having all terminfo files in one package (like ``ncurses``).
+
+``ncurses`` has released updated terminfo entries. The problem as described
+above is fixed. However, the updated terminfo entries are not installed on
+ArchLinux because they were released as a standalone file without a new release
+of the rest of ``ncurses``.
+
+The Solution
+------------
+
+The solution must be to get the updated terminfo entries packaged for
+ArchLinux. I believe that the ``ncurses`` package should be updated to that
+effect.
+
+https://bugs.archlinux.org/task/57596
+
+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 populate a user-level terminfo database from the terminfo entries
+supplied by ``st``. The following command will do this:
+
+.. code:: shell
+
+ tic -sx /usr/share/st/st.info
+
+The generated terminfo database will most likely be placed in ``~/.terminfo``.
+The command will print the actual location used. Unfortunately, these files
+need to be kept up to date by hand. Actually they should probably be removed as
+soon as a new version of ``ncurses`` is released.
diff --git a/terminfo.patch b/terminfo.patch
new file mode 100755
index 000000000000..71dc27047eb0
--- /dev/null
+++ b/terminfo.patch
@@ -0,0 +1,10 @@
+--- Makefile.old 2019-02-09 12:50:41.000000000 +0100
++++ Makefile 2019-11-07 00:00:24.487953923 +0100
+@@ -47,7 +47,6 @@
+ 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
+ @echo Please see the README file regarding the terminfo entry of st.
+
+ uninstall: