From f028c96220ca367d855d2da4b455ad698629984c Mon Sep 17 00:00:00 2001
From: Chia-I Wu <olv@openmoko.com>
Date: Tue, 28 Oct 2008 16:48:59 +0800
Subject: [PATCH] fastboot: udev static only

---
 packages/udev/udev-118/om-gta02/init         |  152 ++++++++++++++++++++++++++
 packages/udev/udev-118/om-gta02/udev_devices |  Bin 0 -> 2463 bytes
 packages/udev/udev_118.bb                    |    9 ++
 3 files changed, 161 insertions(+), 0 deletions(-)
 create mode 100644 packages/udev/udev-118/om-gta02/init
 create mode 100644 packages/udev/udev-118/om-gta02/udev_devices

diff --git a/packages/udev/udev-118/om-gta02/init b/packages/udev/udev-118/om-gta02/init
new file mode 100644
index 0000000..ca378bd
--- /dev/null
+++ b/packages/udev/udev-118/om-gta02/init
@@ -0,0 +1,152 @@
+#!/bin/sh -e
+### BEGIN INIT INFO
+# Provides:          udev
+# Required-Start:    mountkernfs 
+# Required-Stop:     
+# Default-Start:     S
+# Default-Stop:
+# Short-Description: Start udevd, populate /dev and load drivers.
+### END INIT INFO
+
+# we need to unmount /dev/pts/ and remount it later over the tmpfs
+unmount_devpts() {
+  if mountpoint -q /dev/pts/; then
+    umount -n -l /dev/pts/
+  fi
+
+  if mountpoint -q /dev/shm/; then
+    umount -n -l /dev/shm/
+  fi
+}
+
+# mount a tmpfs over /dev, if somebody did not already do it
+mount_tmpfs() {
+  if grep -q "/dev tmpfs" /proc/mounts; then
+    return
+  fi
+
+  if ! mount -n -o size=$tmpfs_size,mode=0755 -t tmpfs udev /dev; then
+    echo "udev requires tmpfs support, not started."
+    exit 1
+  fi
+
+  return 0
+}
+
+create_dev_makedev() {
+  if [ -e /sbin/MAKEDEV ]; then
+    ln -sf /sbin/MAKEDEV /dev/MAKEDEV
+  else
+    ln -sf /bin/true /dev/MAKEDEV
+  fi
+}
+
+make_extra_nodes() {
+  if [ "$(echo /lib/udev/devices/*)" != "/lib/udev/devices/*" ]; then
+    cp -a /lib/udev/devices/* /$1/
+  fi
+
+  [ -e /etc/udev/links.conf ] || return 0
+
+  grep '^[^#]' /etc/udev/links.conf | \
+  while read type name arg1; do
+    [ "$type" -a "$name" -a ! -e "/$1/$name" -a ! -L "/$1/$name" ] || continue
+    case "$type" in
+      L) ln -s $arg1 /$1/$name ;;
+      D) mkdir -p /$1/$name ;;
+      M) mknod -m 600 /$1/$name $arg1 ;;
+      *) echo "links.conf: unparseable line ($type $name $arg1)" >&2 ;;
+    esac
+  done
+}
+
+##############################################################################
+
+[ -x /sbin/udevd ] || exit 0
+
+PATH="/sbin:/bin"
+
+# defaults
+tmpfs_size="2M"
+udev_root="/dev"
+
+if [ -e /etc/udev/udev.conf ]; then
+  . /etc/udev/udev.conf
+fi
+
+##############################################################################
+
+# When modifying this script, do not forget that between the time that the
+# new /dev has been mounted and udevadm trigger has been run there will be
+# no /dev/null. This also means that you cannot use the "&" shell command.
+
+case "$1" in
+    start)
+    if [ -e "$udev_root/.udev/" ]; then
+	if mountpoint -q $udev_root/; then
+	    TMPFS_MOUNTED=1
+	else
+	    echo ".udev/ already exists on the static $udev_root!"
+	fi
+    fi
+
+    echo > /sys/kernel/uevent_helper
+
+    if [ -z "$TMPFS_MOUNTED" ]; then
+	unmount_devpts
+	mount_tmpfs
+    else
+	# and clean up the database of the initramfs udev
+	rm -rf /dev/.udev/
+    fi
+
+    # /dev/null must be created before udevd is started
+    make_extra_nodes "$udev_root"
+
+    # if this directory is not present /dev will not be updated by udev
+    mkdir -p /dev/.udev/db/
+
+    echo "Startting the hotplug events dispatcher"
+    udevd --daemon
+
+    mkdir -p /dev/.udev/queue/ /dev/.udev/rules.d/
+
+    #echo "Synthesizing the initial hotplug events"
+    #udevadm trigger
+
+    create_dev_makedev
+
+    # wait for the udevd childs to finish
+    #echo "Waiting for /dev to be fully populated"
+    #if udevadm settle; then
+    #    echo 'done'
+    #else
+    #    echo 'timeout'
+    #fi
+    ;;
+
+    stop)
+    echo "Stopping the hotplug events dispatcher"
+    start-stop-daemon --stop --name udevd --quiet --oknodo
+    ;;
+
+    restart)
+    echo "Stopping the hotplug events dispatcher"
+    start-stop-daemon --stop --name udevd --quiet --oknodo
+
+    echo "Startting the hotplug events dispatcher"
+    udevd --daemon
+    ;;
+
+    reload|force-reload)
+    udevadm control --reload_rules
+    ;;
+
+    *)
+    echo "Usage: /etc/init.d/udev {start|stop|restart|reload|force-reload}"
+    exit 1
+    ;;
+esac
+
+exit 0
+
diff --git a/packages/udev/udev-118/om-gta02/udev_devices b/packages/udev/udev-118/om-gta02/udev_devices
new file mode 100644
index 0000000000000000000000000000000000000000..24e1a52c95ac186bd543bb6cc9df73787c292ead
GIT binary patch
diff --git a/packages/udev/udev_118.bb b/packages/udev/udev_118.bb
index 20fef83..ea2ac38 100644
--- a/packages/udev/udev_118.bb
+++ b/packages/udev/udev_118.bb
@@ -17,6 +17,10 @@ SRC_URI = "\
 
 require udev.inc
 
+SRC_URI_append_om-gta02 = "\
+ file://udev_devices \
+"
+
 INITSCRIPT_PARAMS = "start 03 S ."
 
 FILES_${PN} += "${base_libdir}/udev/*"
@@ -53,6 +57,11 @@ do_install () {
 	install -m 0755 ${WORKDIR}/network.sh ${D}${sysconfdir}/udev/scripts
 
 	install -d ${D}${base_libdir}/udev/
+
+	install -d ${D}${base_libdir}/udev/devices
+	if [ -f ${WORKDIR}/udev_devices ]; then
+		install -m 0644 ${WORKDIR}/udev_devices ${D}${base_libdir}/udev/udev_devices.tar.gz
+	fi
 }
 
 pkg_postinst_append() {
-- 
1.5.6.3

