summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2013-04-30 15:33:51 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-05-02 17:40:51 +0100
commitcd89a71d0c3dce14d59134667bc47fa8210cfa7a (patch)
tree7925fcf17649f75ad7e6f8155986ff193c8b414a
parent013a1e304e6845eda97b94d133ad75bbccff0b9a (diff)
downloadopenembedded-core-cd89a71d0c3dce14d59134667bc47fa8210cfa7a.tar.gz
openembedded-core-cd89a71d0c3dce14d59134667bc47fa8210cfa7a.tar.bz2
openembedded-core-cd89a71d0c3dce14d59134667bc47fa8210cfa7a.zip
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). Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com>
-rw-r--r--meta/recipes-core/systemd/systemd-serialgetty.bb45
1 files changed, 23 insertions, 22 deletions
diff --git a/meta/recipes-core/systemd/systemd-serialgetty.bb b/meta/recipes-core/systemd/systemd-serialgetty.bb
index 96cbf31470..37c49b12d7 100644
--- a/meta/recipes-core/systemd/systemd-serialgetty.bb
+++ b/meta/recipes-core/systemd/systemd-serialgetty.bb
@@ -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/
-
- # enable the service
- ln -sf ${systemd_unitdir}/system/serial-getty@.service \
- ${D}${sysconfdir}/systemd/system/getty.target.wants/serial-getty@${@get_console(d)}.service
+ 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
+
+ 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.