[oe-commits] Angus Ainslie : hotplug2: ship an init file

GIT User account git at amethyst.openembedded.net
Wed Apr 1 22:47:48 UTC 2009


Module: openembedded.git
Branch: fso/milestone5.5
Commit: 0e7ad7f0a5d7eb8267677633ec8364bd346accc8
URL:    http://gitweb.openembedded.net/?p=openembedded.git&a=commit;h=0e7ad7f0a5d7eb8267677633ec8364bd346accc8

Author: Angus Ainslie <nytowl at openmoko.org>
Date:   Wed Apr  1 16:45:11 2009 -0600

hotplug2: ship an init file

---

 packages/hotplug2/files/hotplug2.sh       |  171 +++++++++++++++++++++++++++++
 packages/hotplug2/hotplug2_0.9+1.0beta.bb |   27 ++++-
 2 files changed, 192 insertions(+), 6 deletions(-)

diff --git a/packages/hotplug2/files/hotplug2.sh b/packages/hotplug2/files/hotplug2.sh
new file mode 100755
index 0000000..d799ee7
--- /dev/null
+++ b/packages/hotplug2/files/hotplug2.sh
@@ -0,0 +1,171 @@
+#!/bin/sh -e
+### BEGIN INIT INFO
+# Provides:          hotplug2
+# Required-Start:    mountvirtfs 
+# Required-Stop:     
+# Default-Start:     S
+# Default-Stop:
+# Short-Description: Start hotplug2, 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 -l /dev/pts/
+  fi
+
+  if mountpoint -q /dev/shm/; then
+    umount -l /dev/shm/
+  fi
+}
+
+# mount a tmpfs over /dev, if somebody did not already do it
+mount_tmpfs() {
+  if grep -E -q "^[^[:space:]]+ /dev tmpfs" /proc/mounts; then
+    return
+  fi
+
+  # /dev/.static/dev/ is used by MAKEDEV to access the real /dev/ directory.
+  # /etc/udev/ is recycled as a temporary mount point because it's the only
+  # directory which is guaranteed to be available.
+  mount -n -o bind /dev /etc/udev
+
+  if ! mount -n -o size=$tmpfs_size,mode=0755 -t tmpfs udev /dev; then
+    umount /etc/udev
+    echo "udev requires tmpfs support, not started."
+    exit 1
+  fi
+
+  mkdir -p /dev/.static/dev
+  chmod 700 /dev/.static/
+  # The mount options in busybox are non-standard...
+  if test -x /bin/mount.util-linux
+  then
+    /bin/mount.util-linux --move /etc/udev /dev/.static/dev
+  elif test -x /bin/busybox
+  then
+    busybox mount -n -o move /etc/udev /dev/.static/dev
+  else
+    echo "udev requires an identifiable mount command, not started."
+    umount /etc/udev
+    umount /dev
+    exit 1
+  fi
+}
+
+make_extra_nodes() {
+  [ -c /dev/null ] || mknod -m 666 /dev/null c 1 3
+# I hate this hack.  -- Md
+#  if [ "$(echo /lib/udev/devices/*)" != "/lib/udev/devices/*" ]; then
+#    cp -a /lib/udev/devices/* /dev/
+#  fi
+
+  [ -e /etc/udev/links.conf ] || return 0
+  grep '^[^#]' /etc/udev/links.conf | \
+  while read type name arg1; do
+    [ "$type" -a "$name" -a ! -e "/dev/$name" -a ! -L "/dev/$name" ] ||continue
+    case "$type" in
+      L) ln -s $arg1 /dev/$name ;;
+      D) mkdir -p /dev/$name ;;
+      M) mknod -m 600 /dev/$name $arg1 ;;
+      *) echo "links.conf: unparseable line ($type $name $arg1)" ;;
+    esac
+  done
+}
+
+supported_kernel() {
+  case "$(uname -r)" in
+    2.[012345].*|2.6.[0-9]|2.6.[0-9][!0-9]*) return 1 ;;
+    2.6.1[0134]|2.6.1[01234][!0-9]*) return 1 ;;
+  esac
+  return 0
+}
+
+# shell version of /usr/bin/tty
+my_tty() {
+  [ -x /bin/readlink ] || return 0
+  [ -e /proc/self/fd/0 ] || return 0
+  readlink --silent /proc/self/fd/0 || true
+}
+
+##############################################################################
+
+PATH="/sbin:/bin:/usr/bin"
+
+[ -x /sbin/udevd ] || exit 0
+
+# defaults
+tmpfs_size="2M"
+
+. /etc/hotplug2/hotplug2.conf
+
+if ! supported_kernel; then
+  echo "udev requires a kernel >= 2.6.15, not started."
+  exit 1
+fi
+
+if [ ! -e /proc/filesystems ]; then
+  echo "udev requires a mounted procfs, not started."
+  exit 1
+fi
+
+if ! grep -q '[[:space:]]tmpfs$' /proc/filesystems; then
+  echo "udev requires tmpfs support, not started."
+  exit 1
+fi
+
+if [ ! -d /sys/class/ ]; then
+  echo "udev requires a mounted sysfs, not started."
+  exit 1
+fi
+
+##############################################################################
+
+# When modifying this script, do not forget that between the time that
+# the new /dev has been mounted and udevsynthesize has been run there will be
+# no /dev/null. This also means that you cannot use the "&" shell command.
+case "$1" in
+    start)
+    unmount_devpts
+    mount_tmpfs
+    [ -d /proc/1 ] || mount -n /proc
+
+    # /dev/null must be created before udevd is started
+    make_extra_nodes
+
+    # It's all over netlink now
+    if [ -e /proc/sys/kernel/hotplug ]; then
+        echo "hotplug2" > /proc/sys/kernel/hotplug
+    fi
+
+    echo "Starting the hotplug events dispatcher" "hotplug2"
+    start-stop-daemon --start --oknodo --name hotplug2 --pidfile /var/run/hotplug2.pid --startas /sbin/hotplug2 -- --persist
+
+    #echo "Synthesizing the initial hotplug events"
+    #udevtrigger
+    #udevsettle
+    ;;
+
+    stop)
+    echo "Stopping the hotplug events dispatcher" "hotplug2"
+    start-stop-daemon --stop --name hotplug2 --quiet
+    ;;
+
+    restart|force-reload)
+    echo "Stopping the hotplug events dispatcher" "hotplug2"
+    if start-stop-daemon --stop --name hotplug2 --quiet ; then
+	exit 1
+    fi
+
+    echo "Starting the hotplug events dispatcher" "hotplug2"
+    start-stop-daemon --start --oknodo --name hotplug2 --pidfile /var/run/hotplug2.pid --startas /sbin/hotplug2 -- --persist
+    ;;
+
+    *)
+    echo "Usage: /etc/init.d/udev {start|stop|restart|force-reload}"
+    exit 1
+    ;;
+esac
+
+exit 0
+
diff --git a/packages/hotplug2/hotplug2_0.9+1.0beta.bb b/packages/hotplug2/hotplug2_0.9+1.0beta.bb
index 3d51ad8..b717954 100644
--- a/packages/hotplug2/hotplug2_0.9+1.0beta.bb
+++ b/packages/hotplug2/hotplug2_0.9+1.0beta.bb
@@ -3,23 +3,38 @@ DESCRIPTION = "hotplug2 is a daemon which dynamically creates and removes device
 the hotplug and udev packages and requires a kernel not older than 2.6.12."
 RPROVIDES_${PN} = "hotplug"
 
+PR = "r1"
+
 SRC_URI = "http://isteve.bofh.cz/~isteve/hotplug2/downloads/hotplug2-1.0-beta.tar.gz \
-           "
+           file://hotplug2.sh \
+	   "
 
 S = "${WORKDIR}/hotplug2-1.0-beta"
 
 inherit update-rc.d
 
-INITSCRIPT_PARAMS = "start 03 S ."
-INITSCRIPT_NAME = "hotplug2"
+INITSCRIPT_PARAMS = "start 04 S ."
+INITSCRIPT_NAME = "hotplug2.sh"
 
 LDFLAGS += "-ldl"
 DESTDIR="${D}"
 
-do_install_prepend () {
+do_install () {
         install -d ${D}/lib/hotplug2
         install -d ${D}/sbin
+	install -d ${D}${sysconfdir}/init.d/
+	install ${WORKDIR}/hotplug2.sh ${D}${sysconfdir}/init.d/
+	sed -i 's|^DESTDIR=*|DESTDIR="${D}"|' ${S}/Makefile
+	sed -i 's|^DESTDIR=*|DESTDIR="${D}"|' ${S}/workers/Makefile
+	oe_runmake install
 }
 
-FILES_${PN} += "${base_libdir}/hotplug2/*"
-FILES_${PN}-dbg += "${base_libdir}/hotplug2/.debug"
+FILES_${PN} += "${base_libdir}/hotplug2/* \
+	       /sbin/hotplug2 \
+	       ${sysconfdr}/init.d/hotplug2 \
+	       "
+FILES_${PN}-dbg += "/lib/hotplug2/.debug \
+		   /sbin/.debug \
+		   ${sysconfdir}/init.d/.debug \
+		   "
+





More information about the Openembedded-commits mailing list