summaryrefslogtreecommitdiff
path: root/sys-fs
diff options
context:
space:
mode:
authorMatthias Schwarzott <zzam@gentoo.org>2007-03-12 14:52:16 +0000
committerMatthias Schwarzott <zzam@gentoo.org>2007-03-12 14:52:16 +0000
commit9a4ff99b81e014fb719e2fb2ff1fc1d0b5fbeb65 (patch)
treebed5b856d0d5bf8d1bd1ac943f696a96cdee1522 /sys-fs
parentremove trailing whitespace. (diff)
downloadgentoo-2-9a4ff99b81e014fb719e2fb2ff1fc1d0b5fbeb65.tar.gz
gentoo-2-9a4ff99b81e014fb719e2fb2ff1fc1d0b5fbeb65.tar.bz2
gentoo-2-9a4ff99b81e014fb719e2fb2ff1fc1d0b5fbeb65.zip
Now support kernel cmdline gentoo=nocoldplug to disable udev coldplug. Do not install persistent net rules for s390 arch, as it has no persistent mac addresses. No longer ignore device mapper devices, but look up the name and create /dev/mapper/NAME, that allows hal to get the events, Bug #137831. Do not apply normal rules to network devices, Bug #166652.
(Portage version: 2.1.2.2)
Diffstat (limited to 'sys-fs')
-rw-r--r--sys-fs/udev/ChangeLog13
-rw-r--r--sys-fs/udev/files/digest-udev-106-r23
-rw-r--r--sys-fs/udev/files/udev-start-106-r2.sh155
-rw-r--r--sys-fs/udev/files/udev.rules-106-r2330
-rw-r--r--sys-fs/udev/udev-106-r2.ebuild282
5 files changed, 782 insertions, 1 deletions
diff --git a/sys-fs/udev/ChangeLog b/sys-fs/udev/ChangeLog
index 644ee68e9db2..022db799fdf7 100644
--- a/sys-fs/udev/ChangeLog
+++ b/sys-fs/udev/ChangeLog
@@ -1,6 +1,17 @@
# ChangeLog for sys-fs/udev
# Copyright 1999-2007 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-fs/udev/ChangeLog,v 1.279 2007/03/11 00:42:31 uberlord Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-fs/udev/ChangeLog,v 1.280 2007/03/12 14:52:16 zzam Exp $
+
+*udev-106-r2 (12 Mar 2007)
+
+ 12 Mar 2007; Matthias Schwarzott <zzam@gentoo.org>
+ +files/udev.rules-106-r2, +files/udev-start-106-r2.sh,
+ +udev-106-r2.ebuild:
+ Now support kernel cmdline gentoo=nocoldplug to disable udev coldplug. Do
+ not install persistent net rules for s390 arch, as it has no persistent mac
+ addresses. No longer ignore device mapper devices, but look up the name and
+ create /dev/mapper/NAME, that allows hal to get the events, Bug #137831. Do
+ not apply normal rules to network devices, Bug #166652.
11 Mar 2007; Roy Marples <uberlord@gentoo.org> files/modprobe-104-r12.sh,
files/modprobe-105.sh, files/modprobe.sh:
diff --git a/sys-fs/udev/files/digest-udev-106-r2 b/sys-fs/udev/files/digest-udev-106-r2
new file mode 100644
index 000000000000..7bc700ae9207
--- /dev/null
+++ b/sys-fs/udev/files/digest-udev-106-r2
@@ -0,0 +1,3 @@
+MD5 320ccd2d0f4540d10e021bafa14f8985 udev-106.tar.bz2 188557
+RMD160 2a01d06746b143c53d01b8c6aa97e635c062e9d3 udev-106.tar.bz2 188557
+SHA256 544a7372468459e8a631ffdf9cace29bc77365b9a6dab4189c6ba813da002156 udev-106.tar.bz2 188557
diff --git a/sys-fs/udev/files/udev-start-106-r2.sh b/sys-fs/udev/files/udev-start-106-r2.sh
new file mode 100644
index 000000000000..f20b8d19be40
--- /dev/null
+++ b/sys-fs/udev/files/udev-start-106-r2.sh
@@ -0,0 +1,155 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+populate_udev() {
+ # populate /dev with devices already found by the kernel
+
+ # tell modprobe.sh to be verbose to $CONSOLE
+ echo CONSOLE=${CONSOLE} > /dev/.udev_populate
+
+ if get_bootparam "nocoldplug" ; then
+ RC_COLDPLUG="no"
+ ewarn "Skipping udev coldplug as requested in kernel cmdline"
+ fi
+
+ if [ $(get_KV) -gt $(KV_to_int '2.6.14') ] ; then
+ ebegin "Populating /dev with existing devices through uevents"
+ local opts=
+ [ ${RC_COLDPLUG} != "yes" ] && opts="--attr-match=dev"
+ /sbin/udevtrigger ${opts}
+ eend $?
+ else
+ ebegin "Populating /dev with existing devices with udevstart"
+ /sbin/udevstart
+ eend $?
+ fi
+
+ # loop until everything is finished
+ # there's gotta be a better way...
+ ebegin "Letting udev process events"
+ /sbin/udevsettle --timeout=60
+ eend $?
+
+ rm -f /dev/.udev_populate
+ return 0
+}
+
+seed_dev() {
+ # Seed /dev with some things that we know we need
+ ebegin "Seeding /dev with needed nodes"
+
+ # if /dev/console is missing on root-partition,
+ # kernel could not open it and we need to do that for
+ # udevd (Bug #151414)
+ [ ! -c /dev/console ] && mknod /dev/console c 5 1
+
+ # creating /dev/tty1 as it is used by bootsplash
+ # (to allow us to write to $CONSOLE before udev has
+ # created it)
+ [ ! -c /dev/tty1 ] && mknod /dev/tty1 c 4 1
+
+ # udevd will dup its stdin/stdout/stderr to /dev/null
+ # and we do not want a file which gets buffered in ram
+ [ ! -c /dev/null ] && mknod /dev/null c 1 3
+
+ # copy over any persistant things
+ if [ -d /lib/udev/devices ] ; then
+ cp --preserve=all --recursive --update /lib/udev/devices/* /dev 2>/dev/null
+ fi
+
+ # Not provided by sysfs but needed
+ ln -snf /proc/self/fd /dev/fd
+ ln -snf fd/0 /dev/stdin
+ ln -snf fd/1 /dev/stdout
+ ln -snf fd/2 /dev/stderr
+ [ -e /proc/kcore ] && ln -snf /proc/kcore /dev/core
+
+ # Create problematic directories
+ mkdir -p /dev/pts /dev/shm
+ eend 0
+}
+
+main() {
+ # check if /dev/console exists outside tmpfs
+ [ -c /dev/console ] ; local need_redirect=$?
+
+ # Setup temporary storage for /dev
+ ebegin "Mounting /dev for udev"
+ if [ "${RC_USE_FSTAB}" = "yes" ] ; then
+ mntcmd=$(get_mount_fstab /dev)
+ else
+ unset mntcmd
+ fi
+ if [ -n "${mntcmd}" ] ; then
+ try mount -n ${mntcmd}
+ else
+ if grep -Eq "[[:space:]]+tmpfs$" /proc/filesystems ; then
+ mntcmd="tmpfs"
+ else
+ mntcmd="ramfs"
+ fi
+ # many video drivers require exec access in /dev #92921
+ try mount -n -t "${mntcmd}" -o exec,nosuid,mode=0755 udev /dev
+ fi
+ eend $?
+
+ # Create a file so that our rc system knows it's still in sysinit.
+ # Existance means init scripts will not directly run.
+ # rc will remove the file when done with sysinit.
+ touch /dev/.rcsysinit
+
+ # Selinux lovin; /selinux should be mounted by selinux-patched init
+ if [ -x /sbin/restorecon ] && [ -c /selinux/null ] ; then
+ restorecon /dev > /selinux/null
+ fi
+
+ # Actually get udev rolling
+ if [ "${RC_DEVICE_TARBALL}" = "yes" ] && \
+ [ -s /lib/udev/state/devices.tar.bz2 ] ; then
+ ebegin "Populating /dev with saved device nodes"
+ try tar -jxpf /lib/udev/state/devices.tar.bz2 -C /dev
+ eend $?
+ fi
+
+ seed_dev
+
+ # Setup hotplugging (if possible)
+ if [ -e /proc/sys/kernel/hotplug ] ; then
+ ebegin "Setting up proper hotplug agent"
+ eindent
+ if [ $(get_KV) -gt $(KV_to_int '2.6.14') ] ; then
+ einfo "Using netlink for hotplug events..."
+ echo "" > /proc/sys/kernel/hotplug
+ else
+ einfo "Setting /sbin/udevsend as hotplug agent ..."
+ echo "/sbin/udevsend" > /proc/sys/kernel/hotplug
+ fi
+ eoutdent
+ eend 0
+ fi
+
+ ebegin "Starting udevd"
+ if [ ${need_redirect} -eq 1 ]; then
+ # we need to open fds 0 1 2 to solve Bug #151414
+ /sbin/udevd --daemon </dev/console >/dev/console 2>/dev/console
+ else
+ /sbin/udevd --daemon
+ fi
+ eend $?
+
+ populate_udev
+
+ # Create nodes that udev can't
+ ebegin "Finalizing udev configuration"
+ [ -x /sbin/dmsetup ] && /sbin/dmsetup mknodes &>/dev/null
+ [ -x /sbin/lvm ] && \
+ /sbin/lvm vgscan -P --mknodes --ignorelockingfailure &>/dev/null
+ # Running evms_activate on a LiveCD causes lots of headaches
+ [ -z "${CDBOOT}" ] && [ -x /sbin/evms_activate ] && \
+ /sbin/evms_activate -q &>/dev/null
+ eend 0
+}
+
+main
+
+# vim:ts=4
diff --git a/sys-fs/udev/files/udev.rules-106-r2 b/sys-fs/udev/files/udev.rules-106-r2
new file mode 100644
index 000000000000..bee125051984
--- /dev/null
+++ b/sys-fs/udev/files/udev.rules-106-r2
@@ -0,0 +1,330 @@
+# /etc/udev/rules/50-udev.rules: device naming rules for udev
+#
+# Gentoo specific rules
+#
+# There are a number of modifiers that are allowed to be used in some of the
+# fields. See the udev man page for a full description of them.
+#
+# Try not to modify this file, if you wish to change things, create a new rule
+# file that can be run before this one.
+#
+
+# Net devices can have arbitrary names, even
+# ones set by the user. Not try to match normal
+# rules on net devices (Bug #166652)
+SUBSYSTEM=="net", GOTO="gentoo_device_rules_end"
+
+# console
+KERNEL=="pty[pqrstuvwxyzabcdef][0123456789abcdef]", NAME="%k", GROUP="tty", OPTIONS="last_rule"
+KERNEL=="tty[pqrstuvwxyzabcdef][0123456789abcdef]", NAME="%k", GROUP="tty", OPTIONS="last_rule"
+KERNEL=="vcs*", NAME="%k", GROUP="tty", OPTIONS="last_rule"
+KERNEL=="vcsa*", NAME="%k", GROUP="tty", OPTIONS="last_rule"
+KERNEL=="tty", NAME="%k", GROUP="tty", MODE="0666", OPTIONS="last_rule"
+KERNEL=="tty[0-9]", NAME="%k", GROUP="tty", OPTIONS="last_rule"
+KERNEL=="tty[0-9][0-9]", NAME="%k", GROUP="tty", OPTIONS="last_rule"
+KERNEL=="console", NAME="%k", GROUP="tty", MODE="0600"
+KERNEL=="ptmx", NAME="%k", GROUP="tty", MODE="0666"
+
+# tty devices
+KERNEL=="ttyS[0-9]*", NAME="%k", SYMLINK="tts/%n", GROUP="uucp", MODE="0660"
+KERNEL=="ttyUSB[0-9]*", NAME="%k", SYMLINK="tts/USB%n", GROUP="uucp", MODE="0660"
+KERNEL=="ippp0", NAME="%k", GROUP="uucp", MODE="0660"
+KERNEL=="isdn*" NAME="%k", GROUP="uucp", MODE="0660"
+KERNEL=="dcbri*", NAME="%k", GROUP="uucp", MODE="0660"
+KERNEL=="ircomm*", NAME="%k", GROUP="uucp", MODE="0660"
+
+# all block devices
+SUBSYSTEM=="block", GROUP="disk"
+
+# cdrom symlinks and other good cdrom naming
+KERNEL=="sr[0-9]*|hd[a-z]|pcd[0-9]*", ACTION=="add", IMPORT{program}="cdrom_id --export $tempnode"
+ENV{ID_CDROM}=="?*", GROUP="cdrom"
+
+# assign cdrom-permission also to associated generic device (for cd-burning ...)
+KERNEL=="sg[0-9]*", ACTION=="add", ATTRS{type}=="4|5", GROUP="cdrom"
+
+# disk devices
+KERNEL=="sd*", NAME="%k", GROUP="disk"
+KERNEL=="dasd*", NAME="%k", GROUP="disk"
+KERNEL=="ataraid*", NAME="%k", GROUP="disk"
+
+# compaq smart array
+KERNEL=="cciss*", NAME="%k"
+KERNEL=="ida*", NAME="%k"
+
+# mylex
+KERNEL=="rd*", NAME="%k"
+
+# dri devices
+KERNEL=="card*", NAME="dri/card%n", GROUP="video"
+KERNEL=="nvidia*", NAME="%k", GROUP="video"
+KERNEL=="3dfx*", NAME="%k", GROUP="video"
+
+# alsa devices
+SUBSYSTEM=="sound", GROUP="audio"
+KERNEL=="controlC[0-9]*", NAME="snd/%k"
+KERNEL=="hw[CD0-9]*", NAME="snd/%k"
+KERNEL=="pcm[CD0-9cp]*", NAME="snd/%k"
+KERNEL=="midiC[D0-9]*", NAME="snd/%k"
+KERNEL=="timer", NAME="snd/%k"
+KERNEL=="seq", NAME="snd/%k"
+
+# capi devices
+KERNEL=="capi", NAME="capi20", SYMLINK+="isdn/capi20", GROUP="uucp", MODE="0660"
+KERNEL=="capi*", NAME="capi/%n", GROUP="uucp", MODE="0660"
+
+# cpu devices
+KERNEL=="cpu[0-9]*", NAME="cpu/%n/cpuid"
+KERNEL=="msr[0-9]*", NAME="cpu/%n/msr"
+KERNEL=="microcode", NAME="cpu/microcode"
+
+# dm devices
+# lookup device name and create device in /dev/mapper
+# use dmsetup, until devmap_name is provided by sys-fs/device-mapper
+ACTION=="add", SUBSYSTEM=="block", KERNEL=="dm-*", \
+ PROGRAM="/sbin/dmsetup -j %M -m %m --noopencount --noheadings -c -o name info", \
+ NAME="mapper/%c"
+KERNEL=="device-mapper", NAME="mapper/control"
+
+# fb devices
+KERNEL=="fb[0-9]*", NAME="fb/%n", SYMLINK+="%k", GROUP="video"
+
+# floppy devices
+KERNEL=="fd[0-9]*", NAME="floppy/%k", SYMLINK+="%k", GROUP="floppy"
+KERNEL=="fd[0-9]*", ACTION=="add", ATTRS{cmos}=="*", RUN+="create_floppy_devices -c -t $attr{cmos} -m %M -M 0660 -G floppy $root/floppy/%k"
+KERNEL=="fd[0-9]*", ACTION=="remove", RUN+="/bin/sh -c 'rm -f $root/floppy/%k?*'"
+
+# i2c devices
+KERNEL=="i2c-[0-9]*", NAME="i2c/%n", SYMLINK+="%k"
+
+# input devices
+KERNEL=="mice", NAME="input/%k", MODE="0644"
+KERNEL=="mouse*", NAME="input/%k", MODE="0644"
+KERNEL=="event*", NAME="input/%k", MODE="0600"
+KERNEL=="js*", NAME="input/%k", MODE="664"
+KERNEL=="ts*", NAME="input/%k", MODE="0600"
+
+# loop devices
+KERNEL=="loop[0-9]*", NAME="loop/%n", SYMLINK+="%k", GROUP="disk"
+
+# md block devices
+KERNEL=="md[0-9]*", NAME="md/%n", SYMLINK+="%k", GROUP="disk"
+
+# aoe char devices,
+SUBSYSTEM=="aoe", KERNEL=="discover", NAME="etherd/%k", GROUP="disk", MODE="0220"
+SUBSYSTEM=="aoe", KERNEL=="err", NAME="etherd/%k", GROUP="disk", MODE="0440"
+SUBSYSTEM=="aoe", KERNEL=="interfaces", NAME="etherd/%k", GROUP="disk", MODE="0220"
+
+# misc devices
+KERNEL=="agpgart", NAME="misc/%k", SYMLINK+="%k"
+KERNEL=="psaux", NAME="misc/%k", SYMLINK+="%k"
+KERNEL=="rtc", NAME="misc/%k", SYMLINK+="%k", MODE="0664"
+KERNEL=="uinput", NAME="misc/%k", SYMLINK+="%k"
+KERNEL=="inotify", NAME="misc/%k", SYMLINK+="%k", MODE="0666"
+
+# netlink devices
+KERNEL=="route", NAME="netlink/%k"
+KERNEL=="skip", NAME="netlink/%k"
+KERNEL=="usersock", NAME="netlink/%k"
+KERNEL=="fwmonitor", NAME="netlink/%k"
+KERNEL=="tcpdiag", NAME="netlink/%k"
+KERNEL=="nflog", NAME="netlink/%k"
+KERNEL=="xfrm", NAME="netlink/%k"
+KERNEL=="arpd", NAME="netlink/%k"
+KERNEL=="route6", NAME="netlink/%k"
+KERNEL=="ip6_fw", NAME="netlink/%k"
+KERNEL=="dnrtmsg", NAME="netlink/%k"
+KERNEL=="tap*", NAME="netlink/%k"
+
+# network devices
+KERNEL=="tun", NAME="net/%k", MODE="0600"
+
+# ramdisk devices
+KERNEL=="ram[0-9]*", NAME="rd/%n", SYMLINK+="%k"
+
+# IEEE1394 (firewire) devices (must be before raw devices below)
+KERNEL=="raw1394", NAME="%k", GROUP="video"
+KERNEL=="dv1394*", NAME="dv1394/%n", GROUP="video"
+KERNEL=="video1394*", NAME="video1394/%n", GROUP="video"
+
+# raw devices
+SUBSYSTEM=="raw", KERNEL=="raw[0-9]*", NAME="raw/%k", GROUP="disk"
+KERNEL=="ram*", NAME="%k", GROUP="disk"
+
+# sound devices
+KERNEL=="adsp", NAME="sound/%k", SYMLINK+="%k", GROUP="audio"
+KERNEL=="adsp[0-9]*", NAME="sound/%k", SYMLINK+="%k", GROUP="audio"
+KERNEL=="audio", NAME="sound/%k", SYMLINK+="%k", GROUP="audio"
+KERNEL=="audio[0-9]*", NAME="sound/%k", SYMLINK+="%k", GROUP="audio"
+KERNEL=="dsp", NAME="sound/%k", SYMLINK+="%k", GROUP="audio"
+KERNEL=="dsp[0-9]*", NAME="sound/%k", SYMLINK+="%k", GROUP="audio"
+KERNEL=="mixer", NAME="sound/%k", SYMLINK+="%k", GROUP="audio"
+KERNEL=="mixer[0-9]*", NAME="sound/%k", SYMLINK+="%k", GROUP="audio"
+KERNEL=="sequencer", NAME="sound/%k", SYMLINK+="%k", GROUP="audio"
+KERNEL=="sequencer[0-9]*", NAME="sound/%k", SYMLINK+="%k", GROUP="audio"
+
+# memory devices
+KERNEL=="random", NAME="%k", MODE="0666"
+KERNEL=="urandom", NAME="%k", MODE="0444"
+KERNEL=="mem", NAME="%k", MODE="0640"
+KERNEL=="kmem", NAME="%k", MODE="0640"
+KERNEL=="port", NAME="%k", MODE="0640"
+KERNEL=="full", NAME="%k", MODE="0666"
+KERNEL=="null", NAME="%k", MODE="0666"
+KERNEL=="zero", NAME="%k", MODE="0666"
+
+# usb devices
+KERNEL=="hiddev*", NAME="usb/%k"
+KERNEL=="auer*", NAME="usb/%k"
+KERNEL=="legousbtower*", NAME="usb/%k", GROUP="usb"
+KERNEL=="dabusb*", NAME="usb/%k"
+BUS=="usb", KERNEL=="lp[0-9]*", NAME="usb/%k", GROUP="lp"
+
+# v4l devices
+KERNEL=="video[0-9]*", NAME="v4l/video%n", SYMLINK+="video%n", GROUP="video"
+KERNEL=="radio[0-9]*", NAME="v4l/radio%n", SYMLINK+="radio%n", GROUP="video"
+KERNEL=="vbi[0-9]*", NAME="v4l/vbi%n", SYMLINK+="vbi%n", GROUP="video"
+KERNEL=="vtx[0-9]*", NAME="v4l/vtx%n", GROUP="video"
+
+# dvb devices
+SUBSYSTEM=="dvb", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter%%i/%%s $${K%%%%.*} $${K#*.}'", NAME="%c", GROUP="video"
+
+# Asterisk Zaptel devices
+KERNEL=="zapctl", NAME="zap/ctl"
+KERNEL=="zaptimer", NAME="zap/timer"
+KERNEL=="zapchannel", NAME="zap/channel"
+KERNEL=="zappseudo", NAME="zap/pseudo"
+KERNEL=="zap[0-9]*", NAME="zap/%n"
+
+# pilot/palm devices
+KERNEL=="pilot", NAME="%k", GROUP="uucp"
+
+# jaz devices
+KERNEL=="jaz*", NAME="%k", GROUP="disk"
+
+# zip devices
+KERNEL=="pocketzip*", NAME="%k", GROUP="disk"
+KERNEL=="zip*", NAME="%k", GROUP="disk"
+
+# ls120 devices
+KERNEL=="ls120", NAME="%k", GROUP="disk"
+
+# lp devices
+KERNEL=="lp*", NAME="%k", GROUP="lp"
+KERNEL=="irlpt", NAME="%k", GROUP="lp"
+KERNEL=="usblp", NAME="%k", GROUP="lp"
+KERNEL=="lp*", NAME="%k", GROUP="lp"
+KERNEL=="parport*", NAME="%k", GROUP="lp"
+
+# tape devices
+KERNEL=="ht*", NAME="%k", GROUP="tape"
+KERNEL=="nht*", NAME="%k", GROUP="tape"
+KERNEL=="pt*", NAME="%k", GROUP="tape"
+KERNEL=="npt*", NAME="%k", GROUP="tape"
+KERNEL=="st*", NAME="%k", GROUP="tape"
+KERNEL=="nst*", NAME="%k", GROUP="tape"
+KERNEL=="osst*", NAME="%k", GROUP="tape"
+KERNEL=="nosst*", NAME="%k", GROUP="tape"
+
+# diskonkey devices
+KERNEL=="diskonkey*", NAME="%k", GROUP="disk"
+
+# rem_ide devices
+KERNEL=="microdrive*", NAME="%k", GROUP="disk"
+
+# kbd devices
+KERNEL=="kbd", NAME="%k", MODE="0664"
+
+# Sony Vaio Jogdial sonypi device
+KERNEL=="sonypi", NAME="%k", MODE="0666"
+
+# packet devices
+KERNEL=="pktcdvd", NAME="pktcdvd/control", GROUP="cdrw", MODE="0660"
+KERNEL=="pktcdvd[0-9]*", NAME="pktcdvd/pktcdvd%n", GROUP="cdrw", MODE="0660"
+
+# infiniband devices
+KERNEL=="umad*", NAME="infiniband/%k"
+KERNEL=="issm*", NAME="infiniband/%k"
+
+
+# usbfs-like device nodes
+SUBSYSTEM=="usb_device", PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", NAME="%c", GROUP="usb", MODE="0664"
+
+
+# Setting timeout for tape-devices to 900 seconds
+# if you need timeouts for other devices add a similar rule
+# with correct type-value, or open a bug on bugs.gentoo.org.
+ACTION=="add", SUBSYSTEM=="scsi" , ATTRS{type}=="1", \
+ RUN+="/bin/sh -c 'echo 900 > /sys$$DEVPATH/timeout'"
+
+
+# Module autoloading
+ACTION!="add", GOTO="hotplug_no_add_event"
+
+# check if the device has already been claimed by a driver
+ENV{DRIVER}=="?*", SUBSYSTEM!="input", GOTO="hotplug_load_end"
+
+# this driver is broken and should not be loaded automatically
+SUBSYSTEM=="platform", ENV{MODALIAS}=="i82365", GOTO="hotplug_load_end"
+
+# Autoload modules that lack aliases but have them defined inutoload modules
+ENV{MODALIAS}=="?*", RUN+="modprobe.sh $env{MODALIAS}"
+
+# /etc/modprobe.conf.
+SUBSYSTEM=="pnp", ENV{MODALIAS}!="?*", RUN+="/bin/sh -c 'while read id; do /lib/udev/modprobe.sh pnp:d$$id; done < /sys$devpath/id'"
+# If you have problems with some pnp modules being loaded, please enter the
+# following aliases into the modprobe configuration files. These are needed by
+# udev to autoload some modules
+# alias pnp:dPNP0510 irtty-sir
+# alias pnp:dPNP0511 irtty-sir
+# alias pnp:dPNP0700 floppy
+# alias pnp:dPNP0800 pcspkr
+# alias pnp:dPNP0b00 rtc
+# alias pnp:dPNP0303 atkbd
+# alias pnp:dPNP0f13 psmouse
+# alias pnp:dPNPb02f analog
+
+
+SUBSYSTEM=="i2o", RUN+="modprobe.sh i2o_block"
+SUBSYSTEM=="mmc", RUN+="modprobe.sh mmc_block"
+
+# Parts taken from redhat-rules
+# sd: 0 TYPE_DISK, 7 TYPE_MOD, 14 TYPE_RBC
+# sr: 4 TYPE_WORM, 5 TYPE_ROM
+# st/osst: 1 TYPE_TAPE
+
+# Load driver for scsi-device
+SUBSYSTEM!="scsi_device", GOTO="hotplug_scsi_end"
+ATTRS{type}=="?*", RUN+="modprobe.sh sg"
+ATTRS{type}=="0|7|14", RUN+="modprobe.sh sd_mod"
+ATTRS{type}=="4|5", RUN+="modprobe.sh sr_mod"
+ATTRS{type}=="8", RUN+="modprobe.sh ch"
+
+ATTRS{type}=="1", ENV{ID_SCSI_TAPE_DRIVER}="st"
+ATTRS{type}=="1", ATTRS{vendor}=="On[sS]tream", \
+ ATTRS{model}!="ADR*", ENV{ID_SCSI_TAPE_DRIVER}="osst"
+ENV{ID_SCSI_TAPE_DRIVER}=="?*", RUN+="modprobe.sh $env{ID_SCSI_TAPE_DRIVER}"
+LABEL="hotplug_scsi_end"
+
+
+SUBSYSTEM=="ide", ATTR{media}=="tape", RUN+="modprobe.sh ide-scsi"
+
+LABEL="hotplug_load_end"
+
+
+# Load firmware
+SUBSYSTEM=="firmware", RUN+="firmware.sh"
+
+LABEL="hotplug_no_add_event"
+
+LABEL="gentoo_device_rules_end"
+
+# be backward compatible for a while with the /etc/dev.d and /etc/hotplug.d/ systems
+# run /etc/hotplug.d/ stuff only if we came from a hotplug event, not for udevstart
+#ENV{UDEVD_EVENT}=="1", RUN+="udev_run_hotplugd $env{SUBSYSTEM}"
+
+# always run /etc/dev.d/ stuff for now.
+RUN+="udev_run_devd $env{SUBSYSTEM}"
+
+# debugging monitor
+RUN+="socket:/org/kernel/udev/monitor"
diff --git a/sys-fs/udev/udev-106-r2.ebuild b/sys-fs/udev/udev-106-r2.ebuild
new file mode 100644
index 000000000000..7d655a723aa8
--- /dev/null
+++ b/sys-fs/udev/udev-106-r2.ebuild
@@ -0,0 +1,282 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-fs/udev/udev-106-r2.ebuild,v 1.1 2007/03/12 14:52:16 zzam Exp $
+
+inherit eutils flag-o-matic multilib toolchain-funcs
+
+DESCRIPTION="Linux dynamic and persistent device naming support (aka userspace devfs)"
+HOMEPAGE="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html"
+SRC_URI="mirror://kernel/linux/utils/kernel/hotplug/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86"
+IUSE="selinux"
+
+DEPEND="selinux? ( sys-libs/libselinux )"
+RDEPEND="!sys-apps/coldplug"
+RDEPEND="${DEPEND} ${RDEPEND}
+ >=sys-apps/baselayout-1.12.5"
+# We need the lib/rcscripts/addon support
+PROVIDE="virtual/dev-manager"
+
+src_unpack() {
+ unpack ${A}
+
+ cd "${S}"
+
+ # patches go here...
+ #epatch ${FILESDIR}/${P}-udev_volume_id.patch
+ epatch ${FILESDIR}/${PN}-104-peristent-net-disable-xen.patch
+ epatch ${FILESDIR}/${P}-floppy-devices-no-umask.diff
+
+ # No need to clutter the logs ...
+ sed -ie '/^DEBUG/ c\DEBUG = false' Makefile
+ # Do not use optimization flags from the package
+ sed -ie 's|$(OPTIMIZATION)||g' Makefile
+
+ # Make sure there is no sudden changes to udev.rules.gentoo
+ # (more for my own needs than anything else ...)
+ MD5=`md5sum < "${S}/etc/udev/gentoo/udev.rules"`
+ MD5=${MD5/ -/}
+ if [ "${MD5}" != "295a9b7bdc8bdb239f8860d14af761b0" ]
+ then
+ echo
+ eerror "gentoo/udev.rules has been updated, please validate!"
+ die "gentoo/udev.rules has been updated, please validate!"
+ fi
+}
+
+src_compile() {
+ filter-flags -fprefetch-loop-arrays
+ local myconf=
+ local extras="extras/ata_id \
+ extras/cdrom_id \
+ extras/dasd_id \
+ extras/edd_id \
+ extras/firmware \
+ extras/floppy \
+ extras/path_id \
+ extras/run_directory \
+ extras/scsi_id \
+ extras/usb_id \
+ extras/volume_id \
+ extras/rule_generator"
+
+ use selinux && myconf="${myconf} USE_SELINUX=true"
+
+ # Not everyone has full $CHOST-{ld,ar,etc...} yet
+ local mycross=""
+ type -p ${CHOST}-ar && mycross=${CHOST}-
+
+ echo "get_libdir = $(get_libdir)"
+ # Do not work with emake
+ make \
+ EXTRAS="${extras}" \
+ udevdir="/dev/" \
+ CROSS_COMPILE=${mycross} \
+ ${myconf} || die
+}
+
+src_install() {
+ # we install everything by "hand" and don't rely on the udev Makefile to do
+ # it for us (why? it's easier that way...)
+ dobin udevinfo || die "Required binary not installed properly"
+ dobin udevtest || die "Required binary not installed properly"
+ dobin udevmonitor || die "Required binary not installed properly"
+ into /
+ dosbin udevd || die "Required binary not installed properly"
+ dosbin udevstart || die "Required binary not installed properly"
+ dosbin udevtrigger || die "Required binary not installed properly"
+ dosbin udevcontrol || die "Required binary not installed properly"
+ dosbin udevsettle || die "Required binary not installed properly"
+
+ # Helpers
+ exeinto /lib/udev
+ doexe extras/run_directory/udev_run_devd || die "Required helper not installed properly"
+ doexe extras/run_directory/udev_run_hotplugd || die "Required helper not installed properly"
+ doexe extras/ata_id/ata_id || die "Required helper not installed properly"
+ doexe extras/volume_id/vol_id || die "Required helper not installed properly"
+ doexe extras/scsi_id/scsi_id || die "Required helper not installed properly"
+ doexe extras/usb_id/usb_id || die "Required helper not installed properly"
+ doexe extras/path_id/path_id || die "Required helper not installed properly"
+ doexe extras/cdrom_id/cdrom_id || die "Required helper not installed properly"
+ doexe extras/dasd_id/dasd_id || die "Required helper not installed properly"
+ doexe extras/edd_id/edd_id || die "Required helper not installed properly"
+ doexe extras/rule_generator/write_cd_rules || die "Required helper not installed properly"
+ doexe extras/rule_generator/write_net_rules || die "Required helper not installed properly"
+ doexe extras/rule_generator/rule_generator.functions || die "Required helper not installed properly"
+ keepdir /lib/udev/state
+ keepdir /lib/udev/devices
+
+ # vol_id library (needed by mount and HAL)
+ dolib extras/volume_id/lib/*.a extras/volume_id/lib/*.so*
+ # move the .a files to /usr/lib
+ dodir /usr/$(get_libdir)
+ mv -f "${D}"/$(get_libdir)/*.a "${D}"/usr/$(get_libdir)/
+
+ # handle static linking bug #4411
+ gen_usr_ldscript libvolume_id.so
+
+ # save pkgconfig info
+ insinto /usr/$(get_libdir)/pkgconfig
+ doins extras/volume_id/lib/*.pc
+
+ #exeinto /etc/udev/scripts
+ exeinto /lib/udev
+ #doexe extras/ide-devfs.sh
+ #doexe extras/scsi-devfs.sh
+ #doexe extras/raid-devfs.sh
+ doexe extras/floppy/create_floppy_devices || die "Required binary not installed properly"
+ doexe extras/firmware/firmware.sh || die "Required binary not installed properly"
+ newexe ${FILESDIR}/net-104-r10.sh net.sh || die "Required binary not installed properly"
+ newexe ${FILESDIR}/modprobe-105.sh modprobe.sh || die "Required binary not installed properly"
+ doexe ${FILESDIR}/seq_node.sh || die "Required binary not installed properly"
+
+ # Our udev config file
+ insinto /etc/udev
+ newins ${FILESDIR}/udev.conf.post_081 udev.conf
+
+ # Our rules files
+ insinto /etc/udev/rules.d/
+ newins etc/udev/gentoo/udev.rules 50-udev.rules
+ newins ${FILESDIR}/udev.rules-106-r2 50-udev.rules
+ newins ${FILESDIR}/05-udev-early.rules-104-r5 05-udev-early.rules
+ doins ${FILESDIR}/95-net.rules
+ # Use upstream's persistent rules for devices
+ doins etc/udev/rules.d/60-*.rules
+ doins extras/rule_generator/75-*.rules || die "rules not installed properly"
+
+ # scsi_id configuration
+ insinto /etc
+ doins extras/scsi_id/scsi_id.config
+
+ # set up the /etc/dev.d directory tree
+ keepdir /etc/dev.d
+
+ # all of the man pages
+ doman *.7
+ doman *.8
+ doman extras/ata_id/ata_id.8
+ doman extras/edd_id/edd_id.8
+ doman extras/scsi_id/scsi_id.8
+ doman extras/volume_id/vol_id.8
+ doman extras/dasd_id/dasd_id.8
+ doman extras/cdrom_id/cdrom_id.8
+ # create a extra symlink for udevcontrol
+ dosym udevd.8 /usr/share/man/man8/udevcontrol.8
+
+ # our udev hooks into the rc system
+ insinto /lib/rcscripts/addons
+ newins "${FILESDIR}"/udev-start-106-r2.sh udev-start.sh
+ newins "${FILESDIR}"/udev-stop-105.sh udev-stop.sh
+
+ # needed to compile latest Hal
+ insinto /usr/include
+ doins extras/volume_id/lib/libvolume_id.h
+
+ dodoc ChangeLog FAQ README TODO RELEASE-NOTES
+ dodoc docs/{overview,udev_vs_devfs}
+ dodoc docs/writing_udev_rules/*
+
+ newdoc extras/volume_id/README README_volume_id
+
+ if use s390; then
+ # s390 does not has persistent mac addresses
+ # and we only have persistence rules for mac.
+ # For now just remove the rules file.
+ rm ${D}/etc/udev/rules.d/75-persistent-net-generator.rules
+ fi
+
+}
+
+pkg_preinst() {
+ if [[ -d ${ROOT}/lib/udev-state ]] ; then
+ mv -f "${ROOT}"/lib/udev-state/* "${D}"/lib/udev/state/
+ rm -r "${ROOT}"/lib/udev-state
+ fi
+
+ if [ -f "${ROOT}/etc/udev/udev.config" -a \
+ ! -f "${ROOT}/etc/udev/udev.rules" ]
+ then
+ mv -f ${ROOT}/etc/udev/udev.config ${ROOT}/etc/udev/udev.rules
+ fi
+
+ # delete the old udev.hotplug symlink if it is present
+ if [ -h "${ROOT}/etc/hotplug.d/default/udev.hotplug" ]
+ then
+ rm -f ${ROOT}/etc/hotplug.d/default/udev.hotplug
+ fi
+
+ # delete the old wait_for_sysfs.hotplug symlink if it is present
+ if [ -h "${ROOT}/etc/hotplug.d/default/05-wait_for_sysfs.hotplug" ]
+ then
+ rm -f ${ROOT}/etc/hotplug.d/default/05-wait_for_sysfs.hotplug
+ fi
+
+ # delete the old wait_for_sysfs.hotplug symlink if it is present
+ if [ -h "${ROOT}/etc/hotplug.d/default/10-udev.hotplug" ]
+ then
+ rm -f ${ROOT}/etc/hotplug.d/default/10-udev.hotplug
+ fi
+
+ # is there a stale coldplug initscript? (CONFIG_PROTECT leaves it behind)
+ coldplug_stale=""
+ if [ -f "${ROOT}/etc/init.d/coldplug" ]
+ then
+ coldplug_stale="1"
+ fi
+}
+
+pkg_postinst() {
+ if [[ ${ROOT} == "/" ]] ; then
+ # check if root of init-process is identical to ours
+ if [ -r /proc/1/root -a /proc/1/root/ -ef /proc/self/root/ ]; then
+ einfo "restarting udevd now."
+ if [[ -n $(pidof udevd) ]] ; then
+ killall -15 udevd &>/dev/null
+ sleep 1
+ killall -9 udevd &>/dev/null
+ fi
+ /sbin/udevd --daemon
+ fi
+ fi
+
+ # people want reminders, I'll give them reminders. Odds are they will
+ # just ignore them anyway...
+
+ if [[ ${coldplug_stale} == "1" ]] ; then
+ ewarn "A stale coldplug init script found. You should run:"
+ ewarn
+ ewarn " rc-update del coldplug"
+ ewarn " rm -f /etc/init.d/coldplug"
+ ewarn
+ ewarn "udev now provides its own coldplug functionality."
+ fi
+
+ # delete 40-scsi-hotplug.rules - all integrated in 50-udev.rules
+ if has_version "=sys-fs/udev-103-r3"; then
+ if [[ -e "${ROOT}/etc/udev/rules.d/40-scsi-hotplug.rules" ]]
+ then
+ ewarn "Deleting stray 40-scsi-hotplug.rules"
+ ewarn "installed by sys-fs/udev-103-r3"
+ rm -f ${ROOT}/etc/udev/rules.d/40-scsi-hotplug.rules
+ fi
+ fi
+
+ # Removing some device-nodes we thought we need some time ago
+ if [[ -d "${ROOT}"/lib/udev/devices ]]; then
+ rm -f "${ROOT}"/lib/udev/devices/{null,zero,console,urandom}
+ fi
+
+ # Removing some old file
+ if has_version "<sys-fs/udev-104-r5"; then
+ rm -f "${ROOT}"/etc/dev.d/net/hotplug.dev
+ rmdir --ignore-fail-on-non-empty "${ROOT}"/etc/dev.d/net
+ fi
+
+ einfo
+ einfo "For more information on udev on Gentoo, writing udev rules, and"
+ einfo " fixing known issues visit:"
+ einfo " http://www.gentoo.org/doc/en/udev-guide.xml"
+}