systemd-serialgetty: change to handle SERIAL_CONSOLES

SERIAL_CONSOLES is now set from SERIAL_CONSOLE if not already set.

This is a little bit gnarly because we have to create a separate service
file for each different baud rate; assume that the first baud rate is
the default, thus preserving the previous behaviour in the event there
is only one baud rate in use.

This change also installs the service file before modifying it in place,
allowing do_install to re-execute properly; additionally the service
file now has the correct permissions (i.e. no execute bit set).

(From OE-Core rev: cd89a71d0c3dce14d59134667bc47fa8210cfa7a)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Paul Eggleton
2013-04-30 15:33:51 +01:00
committed by Richard Purdie
parent 4ea0449039
commit 6809549427

View File

@@ -8,37 +8,38 @@ SERIAL_CONSOLE ?= "115200 ttyS0"
SRC_URI = "file://serial-getty@.service"
def get_serial_console_value(d, index):
c = d.getVar('SERIAL_CONSOLE', True)
if len(c):
return c.split()[index]
return ""
def get_baudrate(d):
return get_serial_console_value(d, 0)
def get_console(d):
return get_serial_console_value(d, 1)
do_install() {
if [ ! ${@get_baudrate(d)} = "" ]; then
sed -i -e s/\@BAUDRATE\@/${@get_baudrate(d)}/g ${WORKDIR}/serial-getty@.service
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 ${WORKDIR}/serial-getty@.service ${D}${systemd_unitdir}/system/
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
# enable the service
ln -sf ${systemd_unitdir}/system/serial-getty@.service \
${D}${sysconfdir}/systemd/system/getty.target.wants/serial-getty@${@get_console(d)}.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
}
RDEPENDS_${PN} = "systemd"
# This is a machine specific file
FILES_${PN} = "${systemd_unitdir}/system/serial-getty@.service ${sysconfdir}"
FILES_${PN} = "${systemd_unitdir}/system/*.service ${sysconfdir}"
PACKAGE_ARCH = "${MACHINE_ARCH}"
# As this package is tied to systemd, only build it when we're also building systemd.