[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