diff options
author | Matthias Schwarzott <zzam@gentoo.org> | 2007-09-04 22:19:14 +0000 |
---|---|---|
committer | Matthias Schwarzott <zzam@gentoo.org> | 2007-09-04 22:19:14 +0000 |
commit | 8e849e7910258b4bfec9371fcbede7ef3b03e113 (patch) | |
tree | ca09339a0fe6498169f0ec2a303a74cdae14f2ce /sys-fs | |
parent | media-sound/hydrogen-0.9.3-r2: x86 stable (bug #191278) (diff) | |
download | gentoo-2-8e849e7910258b4bfec9371fcbede7ef3b03e113.tar.gz gentoo-2-8e849e7910258b4bfec9371fcbede7ef3b03e113.tar.bz2 gentoo-2-8e849e7910258b4bfec9371fcbede7ef3b03e113.zip |
Updated ebuild to git code of udev. This contains rule updates, mainly to share more code with upstream. In this turn also changing modprobe.sh to be able to load multiple modules at once. Now installing extras/collect. Adding rules directory to CONFIG_PROTECT_MASK.
(Portage version: 2.1.3.7)
Diffstat (limited to 'sys-fs')
-rw-r--r-- | sys-fs/udev/ChangeLog | 11 | ||||
-rw-r--r-- | sys-fs/udev/files/digest-udev-115-r1 | 6 | ||||
-rwxr-xr-x | sys-fs/udev/files/modprobe-115.sh | 102 | ||||
-rw-r--r-- | sys-fs/udev/udev-115-r1.ebuild | 332 |
4 files changed, 450 insertions, 1 deletions
diff --git a/sys-fs/udev/ChangeLog b/sys-fs/udev/ChangeLog index 6d0b822412c5..b47be6fa5ba3 100644 --- a/sys-fs/udev/ChangeLog +++ b/sys-fs/udev/ChangeLog @@ -1,6 +1,15 @@ # 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.343 2007/09/02 13:21:02 zzam Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-fs/udev/ChangeLog,v 1.344 2007/09/04 22:19:14 zzam Exp $ + +*udev-115-r1 (04 Sep 2007) + + 04 Sep 2007; Matthias Schwarzott <zzam@gentoo.org> +files/modprobe-115.sh, + +udev-115-r1.ebuild: + Updated ebuild to git code of udev. This contains rule updates, mainly to + share more code with upstream. In this turn also changing modprobe.sh to be + able to load multiple modules at once. Now installing extras/collect. Adding + rules directory to CONFIG_PROTECT_MASK. 02 Sep 2007; Matthias Schwarzott <zzam@gentoo.org> udev-114.ebuild, udev-115.ebuild: diff --git a/sys-fs/udev/files/digest-udev-115-r1 b/sys-fs/udev/files/digest-udev-115-r1 new file mode 100644 index 000000000000..a21d4553a9c4 --- /dev/null +++ b/sys-fs/udev/files/digest-udev-115-r1 @@ -0,0 +1,6 @@ +MD5 3fe247b037e5fc33f44c9d919fa12926 udev-115-update-20079804.diff.bz2 16067 +RMD160 0b67eda0135bb41108c6b3c9add2ee339aaa4515 udev-115-update-20079804.diff.bz2 16067 +SHA256 911071b8a5a61b0b9086ad40cf18140c67e9c58ca8be650e10728bb8c9ec4e08 udev-115-update-20079804.diff.bz2 16067 +MD5 39bbe5ddcd62d35cd56b184d6862c540 udev-115.tar.bz2 198893 +RMD160 bf72a4e20b9ba50a5b0c3da09f77e67ec819b9fa udev-115.tar.bz2 198893 +SHA256 e35bb5662d2ad692a24adc5bb1d10b065e4657bcb68f20c8ef98d892bfc8dc93 udev-115.tar.bz2 198893 diff --git a/sys-fs/udev/files/modprobe-115.sh b/sys-fs/udev/files/modprobe-115.sh new file mode 100755 index 000000000000..0425d625d51c --- /dev/null +++ b/sys-fs/udev/files/modprobe-115.sh @@ -0,0 +1,102 @@ +#!/bin/sh + +# Do not continue for non-modular kernel - Bug #168322 +[ ! -f /proc/modules ] && exit 0 + +if [ -e /dev/.udev_populate ]; then + # Enable verbose while called from udev-addon-start + . /dev/.udev_populate + + if [ -c "${CONSOLE}" ]; then + # redirect stdin/out/err + exec <${CONSOLE} >${CONSOLE} 2>/${CONSOLE} + fi +fi + +# set default if not present in udev.conf +implicitly_blacklist_modules_autoload="yes" +MODPROBE=/sbin/modprobe + +. /etc/init.d/functions.sh +[ -e /etc/udev/udev.conf ] && . /etc/udev/udev.conf + + +# Create a lock file for the current module. +lock_modprobe() { + [ -e /dev/.udev/ ] || return 0 + + MODPROBE_LOCK="/dev/.udev/.lock-modprobe-${MODNAME}" + + retry=20 + while ! mkdir "$MODPROBE_LOCK" 2> /dev/null; do + if [ $retry -eq 0 ]; then + ewarn "Could not lock modprobe ${MODNAME}!" + return 1 + fi + sleep 1 + retry=$(($retry - 1)) + done + return 0 +} + +unlock_modprobe() { + [ "$MODPROBE_LOCK" ] || return 0 + rmdir "$MODPROBE_LOCK" || true + MODPROBE_LOCK="" +} + +load_module() { + # Get normalized names only with _ + local MODLIST=$("${MODPROBE}" -q -i --show-depends "${@}" 2>/dev/null \ + | sed -e "s#^insmod /lib.*/\(.*\)\.ko.*#\1#g" -e 's|-|_|g') + + # exit if you have no modules to load + [ -z "${MODLIST}" ] && return 0 + local m + for m in ${MODLIST}; do + MODNAME=$m + done + + lock_modprobe + + if [ -d /sys/module/"${MODNAME}" ]; then + # already loaded + unlock_modprobe + return 0 + fi + + # build regex to match module name written with either - or _ + MOD_REGEX="$(echo "${MODNAME}"|sed -e 's#_#[-_]#g')" + + # check for blacklisting + if [ -f /etc/modprobe.conf ]; then + if grep -q '^blacklist.*[[:space:]]'"${MOD_REGEX}"'\([[:space:]]\|$\)' /etc/modprobe.conf; then + # module blacklisted + unlock_modprobe + return 0 + fi + fi + + if [ "$implicitly_blacklist_modules_autoload" = "yes" -a -f "${MODULES_AUTOLOAD_FILE}" ]; then + if grep -q "^${MOD_REGEX}"'\([[:space:]]\|$\)' "${MODULES_AUTOLOAD_FILE}"; then + # module implictly blacklisted + # as present in modules.autoload, Bug 184833 + unlock_modprobe + return 0 + fi + fi + + # now do real loading + einfo " udev loading module ${MODNAME}" + "${MODPROBE}" -q "${@}" >/dev/null 2>/dev/null + unlock_modprobe +} + +while [ -n "${1}" ]; do + case "${1}" in + --all|-a) ;; + *) load_module "${1}" ;; + esac + shift +done + diff --git a/sys-fs/udev/udev-115-r1.ebuild b/sys-fs/udev/udev-115-r1.ebuild new file mode 100644 index 000000000000..5de1c432c3d8 --- /dev/null +++ b/sys-fs/udev/udev-115-r1.ebuild @@ -0,0 +1,332 @@ +# 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-115-r1.ebuild,v 1.1 2007/09/04 22:19:14 zzam Exp $ + +inherit eutils flag-o-matic multilib toolchain-funcs versionator + +PATCH="${P}-update-20079804.diff" +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 + mirror://gentoo/${PATCH}.bz2 + http://dev.gentoo.org/~zzam/distfiles/${PATCH}.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 + !<sys-fs/device-mapper-1.02.19-r1" +RDEPEND="${DEPEND} ${RDEPEND} + >=sys-apps/baselayout-1.12.5" +# We need the lib/rcscripts/addon support +PROVIDE="virtual/dev-manager" + +pkg_setup() { + udev_helper_dir="/$(get_libdir)/udev" + + myconf= + extras="extras/ata_id \ + extras/cdrom_id \ + extras/edd_id \ + extras/firmware \ + extras/floppy \ + extras/path_id \ + extras/scsi_id \ + extras/usb_id \ + extras/volume_id \ + extras/collect \ + extras/rule_generator \ + extras/root_link" + + use selinux && myconf="${myconf} USE_SELINUX=true" + + # comparing kernel version without linux-info.eclass to not pull + # virtual/linux-sources + + local KV=$(uname -r) + local KV_MAJOR=$(get_major_version ${KV}) + local KV_MINOR=$(get_version_component_range 2 ${KV}) + local KV_MICRO=$(get_version_component_range 3 ${KV}) + + local ok=0 + if [[ "${KV_MAJOR}" == 2 ]] && [[ "${KV_MINOR}" == 6 ]] && [[ "${KV_MICRO}" -ge 15 ]]; then + ok=1 + fi + + if [[ "$ok" = "0" ]]; then + ewarn + ewarn "${P} does not support Linux kernel before version 2.6.15!" + ewarn "If you want to use udev you need to update" + ewarn "to kernel >=2.6.15!" + ewarn + ebeep + fi +} + +sed_helper_dir() { + sed -e "s#/lib/udev#${udev_helper_dir}#" -i "$@" +} + +src_unpack() { + unpack ${A} + + cd "${S}" + + # patches go here... + epatch "${WORKDIR}/${PATCH}" + EPATCH_OPTS="-p1" epatch "${FILESDIR}/${PN}-114-root-link-2.diff" + + # We already have that rule in 50-udev.rules + sed -i extras/cdrom_id/Makefile -e '/60-cdrom_id.rules/d' + + # 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/50-udev.rules"` + MD5=${MD5/ -/} + if [ "${MD5}" != "71240a53c6005f4980bfc5e19238d90a" ] + then + echo + eerror "gentoo/udev.rules has been updated, please validate!" + die "gentoo/udev.rules has been updated, please validate!" + fi + + sed_helper_dir \ + etc/udev/gentoo/50-udev.rules \ + extras/rule_generator/write_*_rules \ + udev_rules_parse.c \ + udev_rules.c + + # Use correct multilib dir + sed -i extras/volume_id/lib/Makefile \ + -e "/ =/s-/lib-/$(get_libdir)-" +} + +src_compile() { + filter-flags -fprefetch-loop-arrays + + # Not everyone has full $CHOST-{ld,ar,etc...} yet + local mycross="" + type -p ${CHOST}-ar && mycross=${CHOST}- + + emake \ + EXTRAS="${extras}" \ + libudevdir=${udev_helper_dir} \ + CROSS_COMPILE=${mycross} \ + OPTFLAGS="" \ + ${myconf} || die +} + +src_install() { + into / + emake \ + DESTDIR="${D}" \ + libudevdir=${udev_helper_dir} \ + EXTRAS="${extras}" \ + ${myconf} \ + install || die + + # make install does not install this + dosbin udevstart || die "Required binary not installed properly" + doman udevstart.8 + + exeinto "${udev_helper_dir}" + newexe "${FILESDIR}"/net-104-r10.sh net.sh || die "Required binary not installed properly" + newexe "${FILESDIR}"/modprobe-115.sh modprobe.sh || die "Required binary not installed properly" + newexe "${FILESDIR}"/move_tmp_persistent_rules-112-r1.sh move_tmp_persistent_rules.sh \ + || die "Required binary not installed properly" + + keepdir "${udev_helper_dir}"/state + keepdir "${udev_helper_dir}"/devices + + # create symlinks for these utilities to /sbin + # where multipath-tools expect them to be (Bug #168588) + dosym "..${udev_helper_dir}/vol_id" /sbin/vol_id + dosym "..${udev_helper_dir}/scsi_id" /sbin/scsi_id + + # vol_id library (needed by mount and HAL) + into / + rm "${D}/$(get_libdir)"/libvolume_id.so* 2>/dev/null + dolib extras/volume_id/lib/*.so* || die "Failed installing libvolume_id.so" + into /usr + dolib extras/volume_id/lib/*.a || die "Failed installing libvolume_id.a" + + # handle static linking bug #4411 + rm -f "${D}/usr/$(get_libdir)/libvolume_id.so" + gen_usr_ldscript libvolume_id.so + + # Add gentoo stuff to udev.conf + cat "${FILESDIR}"/udev.conf.post_114 >> "${D}"/etc/udev/udev.conf + + # Now installing rules + cd etc/udev + insinto /etc/udev/rules.d/ + + # For now use our own file - not default upstream one + rm "${D}"/etc/udev/rules.d/50-udev-default.rules + + # Our rules files + doins gentoo/??-*.rules + + # Adding arch specific rules + if [[ -f "packages/40-${ARCH}.rules" ]]; then + doins "packages/40-${ARCH}.rules" + fi + cd "${S}" + + # our udev hooks into the rc system + insinto /$(get_libdir)/rcscripts/addons + newins "${FILESDIR}"/udev-start-114-r1.sh udev-start.sh + newins "${FILESDIR}"/udev-stop-111-r2.sh udev-stop.sh + + # The udev-post init-script + newinitd "${FILESDIR}"/udev-postmount-initd-111-r2 udev-postmount + + insinto /etc/modprobe.d + newins ${FILESDIR}/blacklist-110 blacklist + doins ${FILESDIR}/pnp-aliases + + # use our modprobe-wrapper + sed -e '/while read id/s#/sbin/modprobe#/lib/udev/modprobe.sh#' \ + -e 's#/sbin/modprobe#modprobe.sh#' \ + -i "${D}"/etc/udev/rules.d/80-drivers.rules + + # convert /lib/udev to real used dir + sed_helper_dir \ + "${D}/$(get_libdir)"/rcscripts/addons/*.sh \ + "${D}"/etc/init.d/udev* \ + "${D}"/etc/modprobe.d/* + + # documentation + 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 + + echo "CONFIG_PROTECT_MASK=\"/etc/udev/rules.d\"" > 20udev + doenvd 20udev +} + +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() { + # 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 2>/dev/null + fi + + if has_version "<sys-fs/udev-106-r5"; then + if [[ -e "${ROOT}"/etc/udev/rules.d/95-net.rules ]]; then + rm -f "${ROOT}"/etc/udev/rules.d/95-net.rules + fi + fi + + # Try to remove /etc/dev.d as that is obsolete + if [[ -d "${ROOT}"/etc/dev.d ]]; then + rmdir --ignore-fail-on-non-empty "${ROOT}"/etc/dev.d/default "${ROOT}"/etc/dev.d 2>/dev/null + if [[ -d "${ROOT}"/etc/dev.d ]]; then + ewarn "You still have the directory /etc/dev.d on your system." + ewarn "This is no longer used by udev and can be removed." + fi + fi + + # 64-device-mapper.rules now gets installed by sys-fs/device-mapper + # remove it if user don't has sys-fs/device-mapper installed + if has_version "<sys-fs/udev-113" && + [[ -f "${ROOT}"/etc/udev/rules.d/64-device-mapper.rules ]] && + ! has_version sys-fs/device-mapper + then + rm -f "${ROOT}"/etc/udev/rules.d/64-device-mapper.rules + einfo "Removed unneeded file 64-device-mapper.rules" + fi + + 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 + + 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" +} |