[oe-commits] Andrea Adami : udev: patch init of version 151 and support older kernels

git version control git at git.openembedded.org
Fri May 28 23:40:07 UTC 2010


Module: openembedded.git
Branch: org.openembedded.dev
Commit: 28bc48904e31c3a63cf5a60bc005ed8fb359cc52
URL:    http://gitweb.openembedded.net/?p=openembedded.git&a=commit;h=28bc48904e31c3a63cf5a60bc005ed8fb359cc52

Author: Andrea Adami <andrea.adami at gmail.com>
Date:   Sat May 29 00:23:46 2010 +0200

udev: patch init of version 151 and support older kernels

* Some devices don't function properly when using a recent udev on an old
* kernel, so udev will now try to fall back to an older version is present

Signed-off-by: Koen Kooi <koen at openembedded.org>

---

 recipes/udev/udev-151/udev-compat-static.patch |   97 ++++++++++++++++++++++++
 recipes/udev/udev_151.bb                       |    3 +-
 2 files changed, 99 insertions(+), 1 deletions(-)

diff --git a/recipes/udev/udev-151/udev-compat-static.patch b/recipes/udev/udev-151/udev-compat-static.patch
new file mode 100644
index 0000000..22f1b99
--- /dev/null
+++ b/recipes/udev/udev-151/udev-compat-static.patch
@@ -0,0 +1,97 @@
+--- /dev/null
++++ b/recipes/udev/udev-151/init
+@@ -0,0 +1,91 @@
++#!/bin/sh -e
++
++### BEGIN INIT INFO
++# Provides:          udev
++# Required-Start:    mountvirtfs
++# Required-Stop:
++# Default-Start:     S
++# Default-Stop:
++# Short-Description: Start udevd, populate /dev and load drivers.
++### END INIT INFO
++
++export TZ=/etc/localtime
++
++KERNELMICROVER="$(uname -r | awk -F. '{print $3}')"
++
++DAEMON="/sbin/udevd"
++UDEVADM="/sbin/udevadm"
++
++# If we are running an old kernel and have a static udev present use that instead
++if [ -e /sbin/udevd-124-static ] ; then
++       if [ $KERNELMICROVER -lt 27 ] ; then
++           DAEMON="/sbin/udevd-124-static"
++               UDEVADM="/sbin/udevadm-124-static"
++       fi
++fi
++
++[ -d /sys/class ] || exit 1
++[ -r /proc/mounts ] || exit 1
++[ -x $DAEMON ] || exit 1
++[ -f /etc/default/udev ] && . /etc/default/udev
++[ -f /etc/udev/udev.conf ] && . /etc/udev/udev.conf
++
++kill_udevd() {
++        if [ -x /sbin/pidof ]; then
++                pid=`/sbin/pidof -x udevd`
++                [ -n "$pid" ] && kill $pid
++        fi
++}
++
++export ACTION=add
++# propagate /dev from /sys
++echo "Starting udev"
++
++# mount the tmpfs on /dev, if not already done
++LANG=C awk "\$2 == \"/dev\" && \$4 == \"tmpfs\" { exit 1 }" /proc/mounts && {
++        mount -n -o mode=0755 -t tmpfs none "/dev"
++        mkdir -m 0755 /dev/pts
++        mkdir -m 1777 /dev/shm
++}
++
++if [ "$DEVCACHE" != "" ]; then
++       # Invalidate udev cache if the kernel or its bootargs/cmdline have changed
++       [ -x /bin/uname ] && /bin/uname -mrspv > /tmp/uname || touch /tmp/uname
++       [ -r /proc/cmdline ] && cat /proc/cmdline > /tmp/cmdline || touch /tmp/cmdline
++       [ -r /proc/atags ] && cat /proc/atags > /tmp/atags || touch /tmp/atags
++       if [ -e $DEVCACHE ] && \
++          cmp -s /tmp/uname /etc/udev/saved.uname && \
++          cmp -s /tmp/cmdline /etc/udev/saved.cmdline && \
++          cmp -s /tmp/atags /etc/udev/saved.atags; then
++               (cd /; tar xf $DEVCACHE > /dev/null 2>&1)
++               not_first_boot=1
++       fi
++fi
++
++if [ ! -e "/lib/modules/$(uname -r)"/modules.dep ] ; then
++       mkdir -p /lib/modules/$(uname -r)
++       depmod -ae
++fi
++
++# make_extra_nodes
++kill_udevd > "/dev/null" 2>&1
++
++        # trigger the sorted events
++        echo -e '\000\000\000\000' > /proc/sys/kernel/hotplug
++        $DAEMON -d
++
++        $UDEVADM control --env STARTUP=1
++               if [ "$not_first_boot" != "" ];then
++                       $UDEVADM trigger --subsystem-nomatch=tty --subsystem-nomatch=mem \
++                       --subsystem-nomatch=vc --subsystem-nomatch=vtconsole --subsystem-nomatch=misc \
++                       --subsystem-nomatch=dcon --subsystem-nomatch=pci_bus --subsystem-nomatch=graphics \
++                       --subsystem-nomatch=backlight --subsystem-nomatch=video4linux --subsystem-nomatch=platform
++                       ($UDEVADM settle --timeout=3; $UDEVADM control --env STARTUP=)&
++                       if [ "$DEVCACHE" != "" ]; then
++                               rm -f /tmp/uname
++                               rm -f /tmp/cmdline
++                               rm -f /tmp/atags
++                       fi
++               else
++                       $UDEVADM trigger
++                       $UDEVADM settle
++               fi
++
++exit 0
diff --git a/recipes/udev/udev_151.bb b/recipes/udev/udev_151.bb
index 9bf0872..d4dfc53 100644
--- a/recipes/udev/udev_151.bb
+++ b/recipes/udev/udev_151.bb
@@ -3,7 +3,7 @@ DESCRIPTION = "udev is a daemon which dynamically creates and removes device nod
 the hotplug package and requires a kernel not older than 2.6.12."
 LICENSE = "GPLv2+"
 
-PR = "r11"
+PR = "r12"
 
 # Untested
 DEFAULT_PREFERENCE = "-1"
@@ -27,6 +27,7 @@ SRC_URI += " \
        file://default \
        file://init \
        file://cache \
+       file://udev-compat-static.patch \
 "
 
 SRC_URI_append_h2200 = " file://50-hostap_cs.rules "





More information about the Openembedded-commits mailing list