From patchwork Mon Nov 28 12:52:39 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [meta-oe, 1/1] systemd-serialgetty: use a wrapper script to find getty Date: Mon, 28 Nov 2011 12:52:39 -0000 From: Otavio Salvador X-Patchwork-Id: 15469 Message-Id: To: openembedded-devel@lists.openembedded.org The following binaries are checked: /sbin/agetty /sbin/mingetty /sbin/getty So this works out of box in most cases and doesn't enforce one getty as dependency. Signed-off-by: Otavio Salvador --- .../recipes-core/systemd/systemd-serialgetty.bb | 13 ++++++++++--- .../systemd-serialgetty/serial-getty@.service | 2 +- .../systemd-serialgetty/systemd-serialgetty | 13 +++++++++++++ 3 files changed, 24 insertions(+), 4 deletions(-) create mode 100755 meta-oe/recipes-core/systemd/systemd-serialgetty/systemd-serialgetty diff --git a/meta-oe/recipes-core/systemd/systemd-serialgetty.bb b/meta-oe/recipes-core/systemd/systemd-serialgetty.bb index 2b88d0c..c79ae84 100644 --- a/meta-oe/recipes-core/systemd/systemd-serialgetty.bb +++ b/meta-oe/recipes-core/systemd/systemd-serialgetty.bb @@ -2,12 +2,13 @@ DESCRIPTION = "Systemd serial config" LICENSE = "GPLv2+" LIC_FILES_CHKSUM = "file://${WORKDIR}/LICENSE;md5=751419260aa954499f7abaabaa882bbe" -PR = "r1" +PR = "r2" SERIAL_CONSOLE ?= "115200 ttyS0" SRC_URI = "file://LICENSE \ - file://serial-getty@.service" + file://serial-getty@.service \ + file://systemd-serialgetty" def get_baudrate(bb, d): return bb.data.getVar('SERIAL_CONSOLE', d, 1).split()[0] @@ -22,6 +23,9 @@ do_install() { install -d ${D}${sysconfdir}/systemd/system/getty.target.wants/ install ${WORKDIR}/serial-getty@.service ${D}${base_libdir}/systemd/system/ + # Install wrapper that looks for available getty binary + install -m 755 ${WORKDIR}/systemd-serialgetty ${D}${base_libdir}/systemd/ + # enable the service ln -sf ${base_libdir}/systemd/system/serial-getty@.service \ ${D}${sysconfdir}/systemd/system/getty.target.wants/serial-getty@${@get_console(bb, d)}.service @@ -34,5 +38,8 @@ RRECOMMENDS_${PN} = "" RDEPENDS_${PN} = "systemd" # This is a machine specific file -FILES_${PN} = "${base_libdir}/systemd/system/serial-getty@.service ${sysconfdir}" +FILES_${PN} = "${base_libdir}/systemd/systemd-serialgetty \ + ${base_libdir}/systemd/system/serial-getty@.service \ + ${sysconfdir} \ + " PACKAGE_ARCH = "${MACHINE_ARCH}" diff --git a/meta-oe/recipes-core/systemd/systemd-serialgetty/serial-getty@.service b/meta-oe/recipes-core/systemd/systemd-serialgetty/serial-getty@.service index daf0dac..ee60a37 100644 --- a/meta-oe/recipes-core/systemd/systemd-serialgetty/serial-getty@.service +++ b/meta-oe/recipes-core/systemd/systemd-serialgetty/serial-getty@.service @@ -17,7 +17,7 @@ Before=getty.target [Service] Environment=TERM=vt100 -ExecStart=-/sbin/getty @BAUDRATE@ %I +ExecStart=-/lib/systemd/systemd-serialgetty @BAUDRATE@ %I Restart=always RestartSec=0 UtmpIdentifier=%I diff --git a/meta-oe/recipes-core/systemd/systemd-serialgetty/systemd-serialgetty b/meta-oe/recipes-core/systemd/systemd-serialgetty/systemd-serialgetty new file mode 100755 index 0000000..688b4b4 --- /dev/null +++ b/meta-oe/recipes-core/systemd/systemd-serialgetty/systemd-serialgetty @@ -0,0 +1,13 @@ +#!/bin/sh + +for g in /sbin/agetty \ + /sbin/mingetty \ + /sbin/getty; do + if [ -x "$g" ]; then + $g $@ + exit 0 + fi +done + +echo "Failed to find the getty binary to use." +exit 1