[oe] [meta-oe][PATCH 1/1] systemd-serialgetty: use a wrapper script to find getty

Otavio Salvador otavio at ossystems.com.br
Mon Nov 28 12:52:39 UTC 2011


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 <otavio at ossystems.com.br>
---
 .../recipes-core/systemd/systemd-serialgetty.bb    |   13 ++++++++++---
 .../systemd-serialgetty/serial-getty at .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 at .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 at .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 at .service ${sysconfdir}"
+FILES_${PN} = "${base_libdir}/systemd/systemd-serialgetty \
+               ${base_libdir}/systemd/system/serial-getty at .service \
+               ${sysconfdir} \
+               "
 PACKAGE_ARCH = "${MACHINE_ARCH}"
diff --git a/meta-oe/recipes-core/systemd/systemd-serialgetty/serial-getty at .service b/meta-oe/recipes-core/systemd/systemd-serialgetty/serial-getty at .service
index daf0dac..ee60a37 100644
--- a/meta-oe/recipes-core/systemd/systemd-serialgetty/serial-getty at .service
+++ b/meta-oe/recipes-core/systemd/systemd-serialgetty/serial-getty at .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
-- 
1.7.2.5





More information about the Openembedded-devel mailing list