mirror of
https://git.yoctoproject.org/poky
synced 2026-02-26 19:39:40 +01:00
Long ago in commit 473ff65c2f69de4ece3204fadfae7c5cb992149a
(serial-getty service: Add xterm as default TERM), the xterm
became the default for the serial port terminal.
Using the version of vim.tiny in oe-core master with the
serial port connected in xterm version 322 (which is one
of the most widely deployed versions at the current time)
causes artifacts and missed characters.
The example sequence is the following:
* Start vim
* Press "i" to enter input mode
* Type "123"
* Press Escape to enter command mode
* Press "a" to enter append mode
* Type "456"
At this point if you are using xterm less than version 535 you will
see on your screen "12456" instead of "123456".
Changing the TERM variable to "linux" will still allow you to have all
the same functionality with colorization, ansi character escapes
etc..., but will avoid the extra xterm specific escape sequence that
only exists in the most recent versions of xterm.
This patch allows the end user to set the serial terminal type to
something other than the new default of "linux" by changing the
SERIAL_TERM variable in local.conf. For example:
SERIAL_TERM = "xterm"
(From OE-Core rev: 3de72f45135d7c79b43ad25b539f117d040aa246)
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
53 lines
2.0 KiB
BlitzBasic
53 lines
2.0 KiB
BlitzBasic
SUMMARY = "Serial terminal support for systemd"
|
|
HOMEPAGE = "https://www.freedesktop.org/wiki/Software/systemd/"
|
|
LICENSE = "GPLv2+"
|
|
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
|
|
|
|
PR = "r5"
|
|
|
|
SERIAL_CONSOLES ?= "115200;ttyS0"
|
|
SERIAL_TERM ?= "linux"
|
|
|
|
SRC_URI = "file://serial-getty@.service"
|
|
|
|
S = "${WORKDIR}"
|
|
|
|
# As this package is tied to systemd, only build it when we're also building systemd.
|
|
inherit features_check
|
|
REQUIRED_DISTRO_FEATURES = "systemd"
|
|
|
|
do_install() {
|
|
if [ ! -z "${SERIAL_CONSOLES}" ] ; then
|
|
default_baudrate=`echo "${SERIAL_CONSOLES}" | sed 's/\;.*//'`
|
|
install -d ${D}${systemd_unitdir}/system/
|
|
install -d ${D}${sysconfdir}/systemd/system/getty.target.wants/
|
|
install -m 0644 ${WORKDIR}/serial-getty@.service ${D}${systemd_unitdir}/system/
|
|
sed -i -e "s/\@BAUDRATE\@/$default_baudrate/g" ${D}${systemd_unitdir}/system/serial-getty@.service
|
|
sed -i -e "s/\@TERM\@/${SERIAL_TERM}/g" ${D}${systemd_unitdir}/system/serial-getty@.service
|
|
|
|
tmp="${SERIAL_CONSOLES}"
|
|
for entry in $tmp ; do
|
|
baudrate=`echo $entry | sed 's/\;.*//'`
|
|
ttydev=`echo $entry | sed -e 's/^[0-9]*\;//' -e 's/\;.*//'`
|
|
if [ "$baudrate" = "$default_baudrate" ] ; then
|
|
# enable the service
|
|
ln -sf ${systemd_unitdir}/system/serial-getty@.service \
|
|
${D}${sysconfdir}/systemd/system/getty.target.wants/serial-getty@$ttydev.service
|
|
else
|
|
# install custom service file for the non-default baudrate
|
|
install -m 0644 ${WORKDIR}/serial-getty@.service ${D}${systemd_unitdir}/system/serial-getty$baudrate@.service
|
|
sed -i -e "s/\@BAUDRATE\@/$baudrate/g" ${D}${systemd_unitdir}/system/serial-getty$baudrate@.service
|
|
# enable the service
|
|
ln -sf ${systemd_unitdir}/system/serial-getty$baudrate@.service \
|
|
${D}${sysconfdir}/systemd/system/getty.target.wants/serial-getty$baudrate@$ttydev.service
|
|
fi
|
|
done
|
|
fi
|
|
}
|
|
|
|
# This is a machine specific file
|
|
FILES_${PN} = "${systemd_unitdir}/system/*.service ${sysconfdir}"
|
|
PACKAGE_ARCH = "${MACHINE_ARCH}"
|
|
|
|
ALLOW_EMPTY_${PN} = "1"
|