Merge remote-tracking branch 'aur/master'
This commit is contained in:
10
.SRCINFO
10
.SRCINFO
@@ -1,25 +1,27 @@
|
|||||||
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 = 10
|
||||||
url = https://st.suckless.org
|
url = https://st.suckless.org
|
||||||
arch = i686
|
arch = i686
|
||||||
arch = x86_64
|
arch = x86_64
|
||||||
arch = armv7h
|
arch = armv7h
|
||||||
license = MIT
|
license = MIT
|
||||||
makedepends = libxext
|
|
||||||
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 = config.h
|
source = config.h
|
||||||
source = https://st.suckless.org/patches/nordtheme/st-nordtheme-0.8.2.diff
|
source = https://st.suckless.org/patches/nordtheme/st-nordtheme-0.8.2.diff
|
||||||
source = https://st.suckless.org/patches/scrollback/st-scrollback-20190331-21367a0.diff
|
source = https://st.suckless.org/patches/scrollback/st-scrollback-20190331-21367a0.diff
|
||||||
source = https://st.suckless.org/patches/scrollback/st-scrollback-mouse-0.8.diff
|
source = https://st.suckless.org/patches/scrollback/st-scrollback-mouse-0.8.diff
|
||||||
|
source = terminfo.patch
|
||||||
|
source = README.terminfo.rst
|
||||||
sha256sums = aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35
|
sha256sums = aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35
|
||||||
sha256sums = 8fc9a87a5bac9e4eebd4f7683e009aa34d74e9e0cbd0f2cc5e60f3fd01d40f3f
|
sha256sums = 8fc9a87a5bac9e4eebd4f7683e009aa34d74e9e0cbd0f2cc5e60f3fd01d40f3f
|
||||||
sha256sums = bd7c467dba6027c156d1bd1f3b65d8666787d3c2ff5c743e54e19c6d79a5ba96
|
sha256sums = 01de8a6d0d855c31496c7963e78edb7565a81b60dcb9e9f00dd3eab1f43b526b
|
||||||
sha256sums = f974bc0e11bda909a6d6d529d28abde4c97e651107b6a6047f2fab8837010b43
|
sha256sums = f974bc0e11bda909a6d6d529d28abde4c97e651107b6a6047f2fab8837010b43
|
||||||
sha256sums = 3fb38940cc3bad3f9cd1e2a0796ebd0e48950a07860ecf8523a5afd0cd1b5a44
|
sha256sums = 3fb38940cc3bad3f9cd1e2a0796ebd0e48950a07860ecf8523a5afd0cd1b5a44
|
||||||
|
sha256sums = bf6c8b73a606a8e513c7919d91f93ed7aeb5f44e80269bb244cc01659145a5ea
|
||||||
|
sha256sums = 0ebcbba881832adf9c98ce9fe7667c851d3cc3345077cb8ebe32702698665be2
|
||||||
|
|
||||||
pkgname = st
|
pkgname = st
|
||||||
|
|
||||||
|
|||||||
72
PKGBUILD
72
PKGBUILD
@@ -5,66 +5,62 @@
|
|||||||
|
|
||||||
pkgname=st
|
pkgname=st
|
||||||
pkgver=0.8.2
|
pkgver=0.8.2
|
||||||
pkgrel=7
|
pkgrel=10
|
||||||
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)
|
|
||||||
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
|
||||||
config.h
|
config.h
|
||||||
https://st.suckless.org/patches/nordtheme/st-nordtheme-0.8.2.diff
|
https://st.suckless.org/patches/nordtheme/st-nordtheme-0.8.2.diff
|
||||||
https://st.suckless.org/patches/scrollback/st-scrollback-20190331-21367a0.diff
|
https://st.suckless.org/patches/scrollback/st-scrollback-20190331-21367a0.diff
|
||||||
https://st.suckless.org/patches/scrollback/st-scrollback-mouse-0.8.diff)
|
https://st.suckless.org/patches/scrollback/st-scrollback-mouse-0.8.diff
|
||||||
|
terminfo.patch
|
||||||
|
README.terminfo.rst)
|
||||||
sha256sums=('aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35'
|
sha256sums=('aeb74e10aa11ed364e1bcc635a81a523119093e63befd2f231f8b0705b15bf35'
|
||||||
'8fc9a87a5bac9e4eebd4f7683e009aa34d74e9e0cbd0f2cc5e60f3fd01d40f3f'
|
'8fc9a87a5bac9e4eebd4f7683e009aa34d74e9e0cbd0f2cc5e60f3fd01d40f3f'
|
||||||
'bd7c467dba6027c156d1bd1f3b65d8666787d3c2ff5c743e54e19c6d79a5ba96'
|
'01de8a6d0d855c31496c7963e78edb7565a81b60dcb9e9f00dd3eab1f43b526b'
|
||||||
'f974bc0e11bda909a6d6d529d28abde4c97e651107b6a6047f2fab8837010b43'
|
'f974bc0e11bda909a6d6d529d28abde4c97e651107b6a6047f2fab8837010b43'
|
||||||
'3fb38940cc3bad3f9cd1e2a0796ebd0e48950a07860ecf8523a5afd0cd1b5a44')
|
'3fb38940cc3bad3f9cd1e2a0796ebd0e48950a07860ecf8523a5afd0cd1b5a44'
|
||||||
_makedir=$pkgname-$pkgver
|
'bf6c8b73a606a8e513c7919d91f93ed7aeb5f44e80269bb244cc01659145a5ea'
|
||||||
_makeopts="--directory=$_makedir"
|
'0ebcbba881832adf9c98ce9fe7667c851d3cc3345077cb8ebe32702698665be2')
|
||||||
|
_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
|
||||||
# $BUILDDIR:
|
# $BUILDDIR:
|
||||||
#
|
#
|
||||||
# * config.h: The user has supplied his or her configuration. The file will
|
# config.h config.def.h state
|
||||||
# be copied to $srcdir and used during build.
|
# ======== ============ =====
|
||||||
# * config.def.h only: The user was previously made aware of the
|
# absent absent Initial state. The user receives a message on how
|
||||||
# configuration options and has opted not to make any configuration
|
# to configure this package.
|
||||||
# changes. The package is built using default values.
|
# absent present The user was previously made aware of the
|
||||||
# * neither file: Initial state. The user receives a message on how to
|
# configuration options and has not made any
|
||||||
# configure this package. The build process is aborted after the copy
|
# configuration changes. The package is built using
|
||||||
# operation below.
|
# 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 provide an up to
|
# After this test, config.def.h is copied from $srcdir to $BUILDDIR to
|
||||||
# date template for the user. If neither file was present initially, further
|
# provide an up to date template for the user.
|
||||||
# build steps are aborted at this point. Even if no config.h is provided,
|
|
||||||
# future runs will proceed with default values due to the presence of
|
|
||||||
# config.def.h.
|
|
||||||
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
|
msg='This package can be configured in config.h. Copy the config.def.h '
|
||||||
msg='This package can be configured in config.h. Copy config.def.h just '
|
msg+='that was just placed into the package directory to config.h and '
|
||||||
msg+='placed into the package directory to config.h and modify it to '
|
msg+='modify it to change the configuration. Or just leave it alone to '
|
||||||
msg+='change the configuration. Or just leave it alone to use default '
|
msg+='continue to use default values.'
|
||||||
msg+='values. Then restart the build process.'
|
warning "$msg"
|
||||||
error "$msg"
|
|
||||||
fi
|
fi
|
||||||
cp "$_makedir/config.def.h" "$BUILDDIR"
|
cp "$_sourcedir/config.def.h" "$BUILDDIR"
|
||||||
test -z "$abort"
|
|
||||||
|
|
||||||
# apply patches
|
# apply patches
|
||||||
cd $srcdir/$pkgname-$pkgver/
|
cd $srcdir/$pkgname-$pkgver/
|
||||||
@@ -83,6 +79,8 @@ 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
|
||||||
|
install $installopts "$shrdir/$pkgname" "$_sourcedir/st.info"
|
||||||
}
|
}
|
||||||
|
|||||||
90
README.terminfo.rst
Normal file
90
README.terminfo.rst
Normal file
@@ -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.
|
||||||
25
terminfo.patch
Normal file
25
terminfo.patch
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
--- 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:
|
||||||
|
--- st.info.old 2019-02-09 12:50:41.000000000 +0100
|
||||||
|
+++ st.info 2019-11-07 00:01:02.605412883 +0100
|
||||||
|
@@ -189,10 +189,10 @@
|
||||||
|
rmxx=\E[29m,
|
||||||
|
smxx=\E[9m,
|
||||||
|
# tmux extensions, see TERMINFO EXTENSIONS in tmux(1)
|
||||||
|
- Se,
|
||||||
|
- Ss,
|
||||||
|
Tc,
|
||||||
|
Ms=\E]52;%p1%s;%p2%s\007,
|
||||||
|
+ Se=\E[2 q,
|
||||||
|
+ Ss=\E[%p1%d q,
|
||||||
|
|
||||||
|
st-256color| simpleterm with 256 colors,
|
||||||
|
use=st,
|
||||||
Reference in New Issue
Block a user