[arch-commits] Commit in udev/repos (14 files)

Tom Gundersen tomegun at archlinux.org
Sat Mar 31 10:34:20 EDT 2012


    Date: Saturday, March 31, 2012 @ 10:34:19
  Author: tomegun
Revision: 154947

archrelease: copy trunk to staging-i686, staging-x86_64

Added:
  udev/repos/staging-i686/
  udev/repos/staging-i686/0001-split-usr-always-read-config-files-from-lib-udev.patch
    (from rev 154946, udev/trunk/0001-split-usr-always-read-config-files-from-lib-udev.patch)
  udev/repos/staging-i686/0002-reinstate-TIMEOUT-handling.patch
    (from rev 154946, udev/trunk/0002-reinstate-TIMEOUT-handling.patch)
  udev/repos/staging-i686/PKGBUILD
    (from rev 154946, udev/trunk/PKGBUILD)
  udev/repos/staging-i686/initcpio-hooks-udev
    (from rev 154946, udev/trunk/initcpio-hooks-udev)
  udev/repos/staging-i686/initcpio-install-udev
    (from rev 154946, udev/trunk/initcpio-install-udev)
  udev/repos/staging-i686/udev.install
    (from rev 154946, udev/trunk/udev.install)
  udev/repos/staging-x86_64/
  udev/repos/staging-x86_64/0001-split-usr-always-read-config-files-from-lib-udev.patch
    (from rev 154946, udev/trunk/0001-split-usr-always-read-config-files-from-lib-udev.patch)
  udev/repos/staging-x86_64/0002-reinstate-TIMEOUT-handling.patch
    (from rev 154946, udev/trunk/0002-reinstate-TIMEOUT-handling.patch)
  udev/repos/staging-x86_64/PKGBUILD
    (from rev 154946, udev/trunk/PKGBUILD)
  udev/repos/staging-x86_64/initcpio-hooks-udev
    (from rev 154946, udev/trunk/initcpio-hooks-udev)
  udev/repos/staging-x86_64/initcpio-install-udev
    (from rev 154946, udev/trunk/initcpio-install-udev)
  udev/repos/staging-x86_64/udev.install
    (from rev 154946, udev/trunk/udev.install)

----------------------------------------------------------------------------+
 staging-i686/0001-split-usr-always-read-config-files-from-lib-udev.patch   |   61 ++++
 staging-i686/0002-reinstate-TIMEOUT-handling.patch                         |  146 ++++++++++
 staging-i686/PKGBUILD                                                      |   72 ++++
 staging-i686/initcpio-hooks-udev                                           |    9 
 staging-i686/initcpio-install-udev                                         |   26 +
 staging-i686/udev.install                                                  |   59 ++++
 staging-x86_64/0001-split-usr-always-read-config-files-from-lib-udev.patch |   61 ++++
 staging-x86_64/0002-reinstate-TIMEOUT-handling.patch                       |  146 ++++++++++
 staging-x86_64/PKGBUILD                                                    |   72 ++++
 staging-x86_64/initcpio-hooks-udev                                         |    9 
 staging-x86_64/initcpio-install-udev                                       |   26 +
 staging-x86_64/udev.install                                                |   59 ++++
 12 files changed, 746 insertions(+)

Copied: udev/repos/staging-i686/0001-split-usr-always-read-config-files-from-lib-udev.patch (from rev 154946, udev/trunk/0001-split-usr-always-read-config-files-from-lib-udev.patch)
===================================================================
--- staging-i686/0001-split-usr-always-read-config-files-from-lib-udev.patch	                        (rev 0)
+++ staging-i686/0001-split-usr-always-read-config-files-from-lib-udev.patch	2012-03-31 14:34:19 UTC (rev 154947)
@@ -0,0 +1,61 @@
+From 4c55c8d844e6f1a5b1f14cce23b247134bfd3a8d Mon Sep 17 00:00:00 2001
+From: Tom Gundersen <teg at jklm.no>
+Date: Sat, 3 Mar 2012 12:28:15 +0100
+Subject: [PATCH 1/2] split /usr: always read config files from /lib/udev
+
+This means we don't need a flagday in order to move udev to use
+/usr/lib/udev/rules.d
+---
+ src/libudev.c |   20 +++++++++++++-------
+ 1 file changed, 13 insertions(+), 7 deletions(-)
+
+diff --git a/src/libudev.c b/src/libudev.c
+index be24329..0359bb4 100644
+--- a/src/libudev.c
++++ b/src/libudev.c
+@@ -255,21 +255,26 @@ UDEV_EXPORT struct udev *udev_new(void)
+                         goto err;
+ 
+         if (udev->rules_path[0] == NULL) {
+-                /* /usr/lib/udev -- system rules */
+-                udev->rules_path[0] = strdup(PKGLIBEXECDIR "/rules.d");
++                /* /lib/udev -- compat for system rules */
++                udev->rules_path[0] = strdup("/lib/udev/rules.d");
+                 if (!udev->rules_path[0])
++                       goto err;
++
++                /* /usr/lib/udev -- system rules */
++                udev->rules_path[1] = strdup(PKGLIBEXECDIR "/rules.d");
++                if (!udev->rules_path[1])
+                         goto err;
+ 
+                 /* /etc/udev -- local administration rules */
+-                udev->rules_path[1] = strdup(SYSCONFDIR "/udev/rules.d");
+-                if (!udev->rules_path[1])
++                udev->rules_path[2] = strdup(SYSCONFDIR "/udev/rules.d");
++                if (!udev->rules_path[2])
+                         goto err;
+ 
+                 /* /run/udev -- runtime rules */
+-                if (asprintf(&udev->rules_path[2], "%s/rules.d", udev->run_path) < 0)
++                if (asprintf(&udev->rules_path[3], "%s/rules.d", udev->run_path) < 0)
+                         goto err;
+ 
+-                udev->rules_path_count = 3;
++                udev->rules_path_count = 4;
+         }
+ 
+         dbg(udev, "context %p created\n", udev);
+@@ -278,7 +283,8 @@ UDEV_EXPORT struct udev *udev_new(void)
+         dbg(udev, "dev_path='%s'\n", udev->dev_path);
+         dbg(udev, "sys_path='%s'\n", udev->sys_path);
+         dbg(udev, "run_path='%s'\n", udev->run_path);
+-        dbg(udev, "rules_path='%s':'%s':'%s'\n", udev->rules_path[0], udev->rules_path[1], udev->rules_path[2]);
++        dbg(udev, "rules_path='%s':'%s':'%s':'%s'\n", udev->rules_path[0], udev->rules_path[1],
++              udev->rules_path[2], udev->rules_path[3]);
+         free(config_file);
+         return udev;
+ err:
+-- 
+1.7.9.5
+

Copied: udev/repos/staging-i686/0002-reinstate-TIMEOUT-handling.patch (from rev 154946, udev/trunk/0002-reinstate-TIMEOUT-handling.patch)
===================================================================
--- staging-i686/0002-reinstate-TIMEOUT-handling.patch	                        (rev 0)
+++ staging-i686/0002-reinstate-TIMEOUT-handling.patch	2012-03-31 14:34:19 UTC (rev 154947)
@@ -0,0 +1,146 @@
+From 0a581062ee3e31e0c2aedc5eb64c60f52868b17f Mon Sep 17 00:00:00 2001
+From: Tom Gundersen <teg at jklm.no>
+Date: Thu, 15 Mar 2012 02:12:43 +0100
+Subject: [PATCH 2/2] reinstate TIMEOUT= handling
+
+Without treating events with timeouts specially some drivers would cause a
+30 seconds stall on boot: .
+
+I also received reports of some drivers not working at all, even after the
+timeout.
+
+We will remove this patch when more drivers have been fixed in the kernel (3.4?).
+
+This reverts 43d5c5f03645c4b842659f9b5bd0ae465e885e92 and
+57c6f8ae5f52a6e8ffc66a54966346f733dded39.
+---
+ TODO                  |    2 ++
+ src/libudev-device.c  |   19 +++++++++++++++++++
+ src/libudev-private.h |    1 +
+ src/udevd.c           |   13 ++++++++++---
+ 4 files changed, 32 insertions(+), 3 deletions(-)
+
+diff --git a/TODO b/TODO
+index 36e8440..c2e59b6 100644
+--- a/TODO
++++ b/TODO
+@@ -1,6 +1,8 @@
+  - find a way to tell udev to not cancel firmware
+    requests in initramfs
+ 
++ - remove TIMEOUT= handling
++
+  - move /lib/udev/devices/ to tmpfiles
+ 
+  - trigger --subsystem-match=usb/usb_device
+diff --git a/src/libudev-device.c b/src/libudev-device.c
+index 10f28b8..639c367 100644
+--- a/src/libudev-device.c
++++ b/src/libudev-device.c
+@@ -68,6 +68,7 @@ struct udev_device {
+         struct udev_list tags_list;
+         unsigned long long int seqnum;
+         unsigned long long int usec_initialized;
++        int timeout;
+         int devlink_priority;
+         int refcount;
+         dev_t devnum;
+@@ -160,6 +161,21 @@ static int udev_device_set_devnum(struct udev_device *udev_device, dev_t devnum)
+         return 0;
+ }
+ 
++int udev_device_get_timeout(struct udev_device *udev_device)
++{
++        return udev_device->timeout;
++}
++
++static int udev_device_set_timeout(struct udev_device *udev_device, int timeout)
++{
++        char num[32];
++
++        udev_device->timeout = timeout;
++        snprintf(num, sizeof(num), "%u", timeout);
++        udev_device_add_property(udev_device, "TIMEOUT", num);
++        return 0;
++}
++
+ const char *udev_device_get_devpath_old(struct udev_device *udev_device)
+ {
+         return udev_device->devpath_old;
+@@ -414,6 +430,8 @@ void udev_device_add_property_from_string_parse(struct udev_device *udev_device,
+                 udev_device_set_devpath_old(udev_device, &property[12]);
+         } else if (strncmp(property, "SEQNUM=", 7) == 0) {
+                 udev_device_set_seqnum(udev_device, strtoull(&property[7], NULL, 10));
++        } else if (strncmp(property, "TIMEOUT=", 8) == 0) {
++                udev_device_set_timeout(udev_device, strtoull(&property[8], NULL, 10));
+         } else if (strncmp(property, "IFINDEX=", 8) == 0) {
+                 udev_device_set_ifindex(udev_device, strtoull(&property[8], NULL, 10));
+         } else if (strncmp(property, "DEVMODE=", 8) == 0) {
+@@ -599,6 +617,7 @@ struct udev_device *udev_device_new(struct udev *udev)
+         udev_list_init(udev, &udev_device->sysattr_value_list, true);
+         udev_list_init(udev, &udev_device->sysattr_list, false);
+         udev_list_init(udev, &udev_device->tags_list, true);
++        udev_device->timeout = -1;
+         udev_device->watch_handle = -1;
+         /* copy global properties */
+         udev_list_entry_foreach(list_entry, udev_get_properties_list_entry(udev))
+diff --git a/src/libudev-private.h b/src/libudev-private.h
+index 5f5c64a..ec63b67 100644
+--- a/src/libudev-private.h
++++ b/src/libudev-private.h
+@@ -87,6 +87,7 @@ const char *udev_device_get_id_filename(struct udev_device *udev_device);
+ void udev_device_set_is_initialized(struct udev_device *udev_device);
+ int udev_device_add_tag(struct udev_device *udev_device, const char *tag);
+ void udev_device_cleanup_tags_list(struct udev_device *udev_device);
++int udev_device_get_timeout(struct udev_device *udev_device);
+ unsigned long long udev_device_get_usec_initialized(struct udev_device *udev_device);
+ void udev_device_set_usec_initialized(struct udev_device *udev_device, unsigned long long usec_initialized);
+ int udev_device_get_devlink_priority(struct udev_device *udev_device);
+diff --git a/src/udevd.c b/src/udevd.c
+index 1702217..88e9272 100644
+--- a/src/udevd.c
++++ b/src/udevd.c
+@@ -401,7 +401,7 @@ out:
+         }
+ }
+ 
+-static void event_run(struct event *event)
++static void event_run(struct event *event, bool force)
+ {
+         struct udev_list_node *loop;
+ 
+@@ -427,7 +427,7 @@ static void event_run(struct event *event)
+                 return;
+         }
+ 
+-        if (children >= children_max) {
++        if (!force && children >= children_max) {
+                 if (children_max > 1)
+                         info(event->udev, "maximum number (%i) of children reached\n", children);
+                 return;
+@@ -461,6 +461,13 @@ static int event_queue_insert(struct udev_device *dev)
+ 
+         event->state = EVENT_QUEUED;
+         udev_list_node_append(&event->node, &event_list);
++
++        /* run all events with a timeout set immediately */
++        if (udev_device_get_timeout(dev) > 0) {
++                event_run(event, true);
++                return 0;
++        }
++
+         return 0;
+ }
+ 
+@@ -577,7 +584,7 @@ static void event_queue_start(struct udev *udev)
+                         continue;
+                 }
+ 
+-                event_run(event);
++                event_run(event, false);
+         }
+ }
+ 
+-- 
+1.7.9.5
+

Copied: udev/repos/staging-i686/PKGBUILD (from rev 154946, udev/trunk/PKGBUILD)
===================================================================
--- staging-i686/PKGBUILD	                        (rev 0)
+++ staging-i686/PKGBUILD	2012-03-31 14:34:19 UTC (rev 154947)
@@ -0,0 +1,72 @@
+# $Id$
+# Maintainer: Tom Gundersen <teg at jklm.no>
+# Contributor: Aaron Griffin <aaron at archlinux.org>
+# Contributor: Tobias Powalowski <tpowa at archlinux.org>
+# Contributor: Thomas Bächler <thomas at archlinux.org>
+
+pkgname=udev
+pkgver=181
+pkgrel=6
+pkgdesc="The userspace dev tools (udev)"
+depends=('util-linux' 'glib2' 'kmod' 'pciutils' 'usbutils' 'bash' 'acl')
+install=udev.install
+arch=(i686 x86_64)
+license=('GPL')
+makedepends=('gobject-introspection' 'gperf' 'libxslt')
+source=(ftp://ftp.kernel.org/pub/linux/utils/kernel/hotplug/$pkgname-$pkgver.tar.xz
+	0001-split-usr-always-read-config-files-from-lib-udev.patch
+	0002-reinstate-TIMEOUT-handling.patch
+	initcpio-hooks-udev
+	initcpio-install-udev)
+url="http://git.kernel.org/?p=linux/hotplug/udev.git;a=summary"
+backup=(etc/udev/udev.conf)
+groups=('base')
+options=(!makeflags !libtool)
+
+build() {
+  cd $srcdir/$pkgname-$pkgver
+
+  patch -p1 -i ../0001-split-usr-always-read-config-files-from-lib-udev.patch
+  patch -p1 -i ../0002-reinstate-TIMEOUT-handling.patch
+
+  ./configure --prefix=/usr \
+              --sysconfdir=/etc \
+              --libexecdir=/usr/lib \
+              --with-systemdsystemunitdir=/usr/lib/systemd/system \
+              --with-firmware-path=/usr/lib/firmware/updates:/lib/firmware/updates:/usr/lib/firmware:/lib/firmware \
+              --enable-udev_acl
+
+  make
+}
+
+check() {
+  make -C "$pkgname-$pkgver" check
+}
+ 
+package() {
+  cd $srcdir/$pkgname-$pkgver
+  make DESTDIR=${pkgdir} install
+
+  # install the mkinitpcio hook
+  install -D -m644 ../initcpio-hooks-udev ${pkgdir}/usr/lib/initcpio/hooks/udev
+  install -D -m644 ../initcpio-install-udev ${pkgdir}/usr/lib/initcpio/install/udev
+
+  # udevd moved, symlink to make life easy for restarting udevd manually
+  ln -s ../lib/udev/udevd ${pkgdir}/usr/bin/udevd
+
+  # the path to udevadm is hardcoded in some places
+  install -d ${pkgdir}/sbin
+  ln -s ../usr/bin/udevadm ${pkgdir}/sbin/udevadm
+
+  # Replace dialout/tape/cdrom group in rules with uucp/storage/optical group
+  for i in $pkgdir/usr/lib/udev/rules.d/*.rules; do
+    sed -i -e 's#GROUP="dialout"#GROUP="uucp"#g;
+               s#GROUP="tape"#GROUP="storage"#g;
+               s#GROUP="cdrom"#GROUP="optical"#g' $i
+  done
+}
+md5sums=('0d7af750702620a871b9f9b98d8ad859'
+         'f27fa19645016cae732659b0f1c20f0f'
+         'a9fae85491a08d7759388c605389a8c5'
+         'a4dd853050bf2e0ae6b2e3d2c75499c2'
+         'ee0bfe91a20fff12cc25ab1d1e024853')

Copied: udev/repos/staging-i686/initcpio-hooks-udev (from rev 154946, udev/trunk/initcpio-hooks-udev)
===================================================================
--- staging-i686/initcpio-hooks-udev	                        (rev 0)
+++ staging-i686/initcpio-hooks-udev	2012-03-31 14:34:19 UTC (rev 154947)
@@ -0,0 +1,9 @@
+# vim: set ft=sh:
+run_hook ()
+{
+    msg -n ":: Triggering uevents..."
+    udevadm trigger --action=add --type=subsystems
+    udevadm trigger --action=add --type=devices
+    udevadm settle
+    msg "done."
+}

Copied: udev/repos/staging-i686/initcpio-install-udev (from rev 154946, udev/trunk/initcpio-install-udev)
===================================================================
--- staging-i686/initcpio-install-udev	                        (rev 0)
+++ staging-i686/initcpio-install-udev	2012-03-31 14:34:19 UTC (rev 154947)
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+build() {
+    FILES="/etc/udev/udev.conf"
+    SCRIPT="udev"
+
+    add_binary /lib/udev/udevd
+    add_binary /usr/bin/udevadm
+
+    for rules in 50-udev-default.rules 60-persistent-storage.rules 80-drivers.rules; do
+        add_file "/lib/udev/rules.d/$rules"
+    done
+    for tool in ata_id scsi_id; do
+        add_file "/lib/udev/$tool"
+    done
+}
+
+help() {
+    cat <<HELPEOF
+This hook will use udev to create your root device node and detect the needed
+modules for your root device. It is also required for firmware loading in
+initramfs. It is recommended to use this hook.
+HELPEOF
+}
+
+# vim: set ft=sh ts=4 sw=4 et:

Copied: udev/repos/staging-i686/udev.install (from rev 154946, udev/trunk/udev.install)
===================================================================
--- staging-i686/udev.install	                        (rev 0)
+++ staging-i686/udev.install	2012-03-31 14:34:19 UTC (rev 154947)
@@ -0,0 +1,59 @@
+# arg 1:  the new package version
+# arg 2:  the old package version
+
+post_upgrade() {
+  if [ "$(vercmp $2 181-3)" -lt 0 ]; then
+    echo "udev changes:"
+    if [ "$(vercmp $2 168)" -lt 0 ]; then
+      echo " * Kernel 2.6.32 or newer is now required."
+      echo " * OSS emulation modules are not loaded by default, add to rc.conf if needed."
+      echo " * Arch specific cd symlinks are now no longer created."
+      echo " * cd and net persistent rules will no longer be autogenerated,"
+      echo "   see <https://wiki.archlinux.org/index.php/Udev> for details."
+      echo " * Errors are now logged (possibly to the console) by default."
+    fi
+    if [ "$(vercmp $2 171)" -lt 0 ]; then
+      echo " * Arch's custom blacklisting logic has been removed. MOD_AUTOLOAD and"
+      echo "   blacklisting in MODULES no longer works."
+      echo "   See 'man modprobe.conf' for a replacement to blacklisting."
+      echo "   To disable a module mod1 on the kernel command line, use"
+      echo "     mod1.disable=1"
+      echo "   or"
+      echo "     modprobe.blacklist=mod1"
+      echo " * The following modules are no longer unconditionally loaded:"
+      echo "     pcspkr irtty-sir analog lp ppdev ide-generic"
+      echo "   Add them to MODULES in rc.conf if you need them."
+    fi
+    if [ "$(vercmp $2 172)" -lt 0 ]; then
+      echo " * Blacklisting of framebuffer devices has moved from /etc/modprobe.d to"
+      echo "   /lib/modprobe.d. Any customizations shoud be done to the file in /etc, as it"
+      echo "   takes precedence."
+      echo " * kbd and rtc devices are no longer world readable."
+      echo " * rtc is no longer in the audio group and fb devices are no longer in"
+      echo "   the video group, as permissions and ownership of fb devices are controlled"
+      echo "   by X."
+    fi
+    if [ "$(vercmp $2 174)" -lt 0 ]; then
+      echo " * We now use upstream rules for assigning devices to the 'disk', 'optical',"
+      echo "   'scanner' and 'video' groups. Beware of any changes."
+      echo " * We no longer create symlinks from /dev/<dev> to /dev/<dev>0."
+      echo " * For security reasons, we no longer add devices to the 'storage' group. Use"
+      echo "   udisks and friends, or add custom rules to /etc/udev.d/rules/, if you want"
+      echo "   this functionality back."
+      echo " * We no longer create the static nodes on install needed for an initrd-less"
+      echo "   boot where devtmpfs is not mounted by the kernel, this only affects fresh"
+      echo "   installs."
+    fi
+    if [ "$(vercmp $2 175)" -lt 0 ]; then
+      echo " * devtmpfs support is now a hard requirement. Users of the official Arch"
+      echo "   kernels have this enabled."
+    fi
+    if [ "$(vercmp $2 181)" -lt 0 ]; then
+      echo " * udev-compat has been removed, and should be uninstalled."
+      echo " * Framebuffers are no longer blacklisted by default."
+      echo " * binaries moved from /sbin to /usr/bin"
+    fi
+    echo " * if your kernel does not provide /dev/loop-control, you need to manually"
+    echo "   load the 'loop' module before using losetup"
+  fi
+}

Copied: udev/repos/staging-x86_64/0001-split-usr-always-read-config-files-from-lib-udev.patch (from rev 154946, udev/trunk/0001-split-usr-always-read-config-files-from-lib-udev.patch)
===================================================================
--- staging-x86_64/0001-split-usr-always-read-config-files-from-lib-udev.patch	                        (rev 0)
+++ staging-x86_64/0001-split-usr-always-read-config-files-from-lib-udev.patch	2012-03-31 14:34:19 UTC (rev 154947)
@@ -0,0 +1,61 @@
+From 4c55c8d844e6f1a5b1f14cce23b247134bfd3a8d Mon Sep 17 00:00:00 2001
+From: Tom Gundersen <teg at jklm.no>
+Date: Sat, 3 Mar 2012 12:28:15 +0100
+Subject: [PATCH 1/2] split /usr: always read config files from /lib/udev
+
+This means we don't need a flagday in order to move udev to use
+/usr/lib/udev/rules.d
+---
+ src/libudev.c |   20 +++++++++++++-------
+ 1 file changed, 13 insertions(+), 7 deletions(-)
+
+diff --git a/src/libudev.c b/src/libudev.c
+index be24329..0359bb4 100644
+--- a/src/libudev.c
++++ b/src/libudev.c
+@@ -255,21 +255,26 @@ UDEV_EXPORT struct udev *udev_new(void)
+                         goto err;
+ 
+         if (udev->rules_path[0] == NULL) {
+-                /* /usr/lib/udev -- system rules */
+-                udev->rules_path[0] = strdup(PKGLIBEXECDIR "/rules.d");
++                /* /lib/udev -- compat for system rules */
++                udev->rules_path[0] = strdup("/lib/udev/rules.d");
+                 if (!udev->rules_path[0])
++                       goto err;
++
++                /* /usr/lib/udev -- system rules */
++                udev->rules_path[1] = strdup(PKGLIBEXECDIR "/rules.d");
++                if (!udev->rules_path[1])
+                         goto err;
+ 
+                 /* /etc/udev -- local administration rules */
+-                udev->rules_path[1] = strdup(SYSCONFDIR "/udev/rules.d");
+-                if (!udev->rules_path[1])
++                udev->rules_path[2] = strdup(SYSCONFDIR "/udev/rules.d");
++                if (!udev->rules_path[2])
+                         goto err;
+ 
+                 /* /run/udev -- runtime rules */
+-                if (asprintf(&udev->rules_path[2], "%s/rules.d", udev->run_path) < 0)
++                if (asprintf(&udev->rules_path[3], "%s/rules.d", udev->run_path) < 0)
+                         goto err;
+ 
+-                udev->rules_path_count = 3;
++                udev->rules_path_count = 4;
+         }
+ 
+         dbg(udev, "context %p created\n", udev);
+@@ -278,7 +283,8 @@ UDEV_EXPORT struct udev *udev_new(void)
+         dbg(udev, "dev_path='%s'\n", udev->dev_path);
+         dbg(udev, "sys_path='%s'\n", udev->sys_path);
+         dbg(udev, "run_path='%s'\n", udev->run_path);
+-        dbg(udev, "rules_path='%s':'%s':'%s'\n", udev->rules_path[0], udev->rules_path[1], udev->rules_path[2]);
++        dbg(udev, "rules_path='%s':'%s':'%s':'%s'\n", udev->rules_path[0], udev->rules_path[1],
++              udev->rules_path[2], udev->rules_path[3]);
+         free(config_file);
+         return udev;
+ err:
+-- 
+1.7.9.5
+

Copied: udev/repos/staging-x86_64/0002-reinstate-TIMEOUT-handling.patch (from rev 154946, udev/trunk/0002-reinstate-TIMEOUT-handling.patch)
===================================================================
--- staging-x86_64/0002-reinstate-TIMEOUT-handling.patch	                        (rev 0)
+++ staging-x86_64/0002-reinstate-TIMEOUT-handling.patch	2012-03-31 14:34:19 UTC (rev 154947)
@@ -0,0 +1,146 @@
+From 0a581062ee3e31e0c2aedc5eb64c60f52868b17f Mon Sep 17 00:00:00 2001
+From: Tom Gundersen <teg at jklm.no>
+Date: Thu, 15 Mar 2012 02:12:43 +0100
+Subject: [PATCH 2/2] reinstate TIMEOUT= handling
+
+Without treating events with timeouts specially some drivers would cause a
+30 seconds stall on boot: .
+
+I also received reports of some drivers not working at all, even after the
+timeout.
+
+We will remove this patch when more drivers have been fixed in the kernel (3.4?).
+
+This reverts 43d5c5f03645c4b842659f9b5bd0ae465e885e92 and
+57c6f8ae5f52a6e8ffc66a54966346f733dded39.
+---
+ TODO                  |    2 ++
+ src/libudev-device.c  |   19 +++++++++++++++++++
+ src/libudev-private.h |    1 +
+ src/udevd.c           |   13 ++++++++++---
+ 4 files changed, 32 insertions(+), 3 deletions(-)
+
+diff --git a/TODO b/TODO
+index 36e8440..c2e59b6 100644
+--- a/TODO
++++ b/TODO
+@@ -1,6 +1,8 @@
+  - find a way to tell udev to not cancel firmware
+    requests in initramfs
+ 
++ - remove TIMEOUT= handling
++
+  - move /lib/udev/devices/ to tmpfiles
+ 
+  - trigger --subsystem-match=usb/usb_device
+diff --git a/src/libudev-device.c b/src/libudev-device.c
+index 10f28b8..639c367 100644
+--- a/src/libudev-device.c
++++ b/src/libudev-device.c
+@@ -68,6 +68,7 @@ struct udev_device {
+         struct udev_list tags_list;
+         unsigned long long int seqnum;
+         unsigned long long int usec_initialized;
++        int timeout;
+         int devlink_priority;
+         int refcount;
+         dev_t devnum;
+@@ -160,6 +161,21 @@ static int udev_device_set_devnum(struct udev_device *udev_device, dev_t devnum)
+         return 0;
+ }
+ 
++int udev_device_get_timeout(struct udev_device *udev_device)
++{
++        return udev_device->timeout;
++}
++
++static int udev_device_set_timeout(struct udev_device *udev_device, int timeout)
++{
++        char num[32];
++
++        udev_device->timeout = timeout;
++        snprintf(num, sizeof(num), "%u", timeout);
++        udev_device_add_property(udev_device, "TIMEOUT", num);
++        return 0;
++}
++
+ const char *udev_device_get_devpath_old(struct udev_device *udev_device)
+ {
+         return udev_device->devpath_old;
+@@ -414,6 +430,8 @@ void udev_device_add_property_from_string_parse(struct udev_device *udev_device,
+                 udev_device_set_devpath_old(udev_device, &property[12]);
+         } else if (strncmp(property, "SEQNUM=", 7) == 0) {
+                 udev_device_set_seqnum(udev_device, strtoull(&property[7], NULL, 10));
++        } else if (strncmp(property, "TIMEOUT=", 8) == 0) {
++                udev_device_set_timeout(udev_device, strtoull(&property[8], NULL, 10));
+         } else if (strncmp(property, "IFINDEX=", 8) == 0) {
+                 udev_device_set_ifindex(udev_device, strtoull(&property[8], NULL, 10));
+         } else if (strncmp(property, "DEVMODE=", 8) == 0) {
+@@ -599,6 +617,7 @@ struct udev_device *udev_device_new(struct udev *udev)
+         udev_list_init(udev, &udev_device->sysattr_value_list, true);
+         udev_list_init(udev, &udev_device->sysattr_list, false);
+         udev_list_init(udev, &udev_device->tags_list, true);
++        udev_device->timeout = -1;
+         udev_device->watch_handle = -1;
+         /* copy global properties */
+         udev_list_entry_foreach(list_entry, udev_get_properties_list_entry(udev))
+diff --git a/src/libudev-private.h b/src/libudev-private.h
+index 5f5c64a..ec63b67 100644
+--- a/src/libudev-private.h
++++ b/src/libudev-private.h
+@@ -87,6 +87,7 @@ const char *udev_device_get_id_filename(struct udev_device *udev_device);
+ void udev_device_set_is_initialized(struct udev_device *udev_device);
+ int udev_device_add_tag(struct udev_device *udev_device, const char *tag);
+ void udev_device_cleanup_tags_list(struct udev_device *udev_device);
++int udev_device_get_timeout(struct udev_device *udev_device);
+ unsigned long long udev_device_get_usec_initialized(struct udev_device *udev_device);
+ void udev_device_set_usec_initialized(struct udev_device *udev_device, unsigned long long usec_initialized);
+ int udev_device_get_devlink_priority(struct udev_device *udev_device);
+diff --git a/src/udevd.c b/src/udevd.c
+index 1702217..88e9272 100644
+--- a/src/udevd.c
++++ b/src/udevd.c
+@@ -401,7 +401,7 @@ out:
+         }
+ }
+ 
+-static void event_run(struct event *event)
++static void event_run(struct event *event, bool force)
+ {
+         struct udev_list_node *loop;
+ 
+@@ -427,7 +427,7 @@ static void event_run(struct event *event)
+                 return;
+         }
+ 
+-        if (children >= children_max) {
++        if (!force && children >= children_max) {
+                 if (children_max > 1)
+                         info(event->udev, "maximum number (%i) of children reached\n", children);
+                 return;
+@@ -461,6 +461,13 @@ static int event_queue_insert(struct udev_device *dev)
+ 
+         event->state = EVENT_QUEUED;
+         udev_list_node_append(&event->node, &event_list);
++
++        /* run all events with a timeout set immediately */
++        if (udev_device_get_timeout(dev) > 0) {
++                event_run(event, true);
++                return 0;
++        }
++
+         return 0;
+ }
+ 
+@@ -577,7 +584,7 @@ static void event_queue_start(struct udev *udev)
+                         continue;
+                 }
+ 
+-                event_run(event);
++                event_run(event, false);
+         }
+ }
+ 
+-- 
+1.7.9.5
+

Copied: udev/repos/staging-x86_64/PKGBUILD (from rev 154946, udev/trunk/PKGBUILD)
===================================================================
--- staging-x86_64/PKGBUILD	                        (rev 0)
+++ staging-x86_64/PKGBUILD	2012-03-31 14:34:19 UTC (rev 154947)
@@ -0,0 +1,72 @@
+# $Id$
+# Maintainer: Tom Gundersen <teg at jklm.no>
+# Contributor: Aaron Griffin <aaron at archlinux.org>
+# Contributor: Tobias Powalowski <tpowa at archlinux.org>
+# Contributor: Thomas Bächler <thomas at archlinux.org>
+
+pkgname=udev
+pkgver=181
+pkgrel=6
+pkgdesc="The userspace dev tools (udev)"
+depends=('util-linux' 'glib2' 'kmod' 'pciutils' 'usbutils' 'bash' 'acl')
+install=udev.install
+arch=(i686 x86_64)
+license=('GPL')
+makedepends=('gobject-introspection' 'gperf' 'libxslt')
+source=(ftp://ftp.kernel.org/pub/linux/utils/kernel/hotplug/$pkgname-$pkgver.tar.xz
+	0001-split-usr-always-read-config-files-from-lib-udev.patch
+	0002-reinstate-TIMEOUT-handling.patch
+	initcpio-hooks-udev
+	initcpio-install-udev)
+url="http://git.kernel.org/?p=linux/hotplug/udev.git;a=summary"
+backup=(etc/udev/udev.conf)
+groups=('base')
+options=(!makeflags !libtool)
+
+build() {
+  cd $srcdir/$pkgname-$pkgver
+
+  patch -p1 -i ../0001-split-usr-always-read-config-files-from-lib-udev.patch
+  patch -p1 -i ../0002-reinstate-TIMEOUT-handling.patch
+
+  ./configure --prefix=/usr \
+              --sysconfdir=/etc \
+              --libexecdir=/usr/lib \
+              --with-systemdsystemunitdir=/usr/lib/systemd/system \
+              --with-firmware-path=/usr/lib/firmware/updates:/lib/firmware/updates:/usr/lib/firmware:/lib/firmware \
+              --enable-udev_acl
+
+  make
+}
+
+check() {
+  make -C "$pkgname-$pkgver" check
+}
+ 
+package() {
+  cd $srcdir/$pkgname-$pkgver
+  make DESTDIR=${pkgdir} install
+
+  # install the mkinitpcio hook
+  install -D -m644 ../initcpio-hooks-udev ${pkgdir}/usr/lib/initcpio/hooks/udev
+  install -D -m644 ../initcpio-install-udev ${pkgdir}/usr/lib/initcpio/install/udev
+
+  # udevd moved, symlink to make life easy for restarting udevd manually
+  ln -s ../lib/udev/udevd ${pkgdir}/usr/bin/udevd
+
+  # the path to udevadm is hardcoded in some places
+  install -d ${pkgdir}/sbin
+  ln -s ../usr/bin/udevadm ${pkgdir}/sbin/udevadm
+
+  # Replace dialout/tape/cdrom group in rules with uucp/storage/optical group
+  for i in $pkgdir/usr/lib/udev/rules.d/*.rules; do
+    sed -i -e 's#GROUP="dialout"#GROUP="uucp"#g;
+               s#GROUP="tape"#GROUP="storage"#g;
+               s#GROUP="cdrom"#GROUP="optical"#g' $i
+  done
+}
+md5sums=('0d7af750702620a871b9f9b98d8ad859'
+         'f27fa19645016cae732659b0f1c20f0f'
+         'a9fae85491a08d7759388c605389a8c5'
+         'a4dd853050bf2e0ae6b2e3d2c75499c2'
+         'ee0bfe91a20fff12cc25ab1d1e024853')

Copied: udev/repos/staging-x86_64/initcpio-hooks-udev (from rev 154946, udev/trunk/initcpio-hooks-udev)
===================================================================
--- staging-x86_64/initcpio-hooks-udev	                        (rev 0)
+++ staging-x86_64/initcpio-hooks-udev	2012-03-31 14:34:19 UTC (rev 154947)
@@ -0,0 +1,9 @@
+# vim: set ft=sh:
+run_hook ()
+{
+    msg -n ":: Triggering uevents..."
+    udevadm trigger --action=add --type=subsystems
+    udevadm trigger --action=add --type=devices
+    udevadm settle
+    msg "done."
+}

Copied: udev/repos/staging-x86_64/initcpio-install-udev (from rev 154946, udev/trunk/initcpio-install-udev)
===================================================================
--- staging-x86_64/initcpio-install-udev	                        (rev 0)
+++ staging-x86_64/initcpio-install-udev	2012-03-31 14:34:19 UTC (rev 154947)
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+build() {
+    FILES="/etc/udev/udev.conf"
+    SCRIPT="udev"
+
+    add_binary /lib/udev/udevd
+    add_binary /usr/bin/udevadm
+
+    for rules in 50-udev-default.rules 60-persistent-storage.rules 80-drivers.rules; do
+        add_file "/lib/udev/rules.d/$rules"
+    done
+    for tool in ata_id scsi_id; do
+        add_file "/lib/udev/$tool"
+    done
+}
+
+help() {
+    cat <<HELPEOF
+This hook will use udev to create your root device node and detect the needed
+modules for your root device. It is also required for firmware loading in
+initramfs. It is recommended to use this hook.
+HELPEOF
+}
+
+# vim: set ft=sh ts=4 sw=4 et:

Copied: udev/repos/staging-x86_64/udev.install (from rev 154946, udev/trunk/udev.install)
===================================================================
--- staging-x86_64/udev.install	                        (rev 0)
+++ staging-x86_64/udev.install	2012-03-31 14:34:19 UTC (rev 154947)
@@ -0,0 +1,59 @@
+# arg 1:  the new package version
+# arg 2:  the old package version
+
+post_upgrade() {
+  if [ "$(vercmp $2 181-3)" -lt 0 ]; then
+    echo "udev changes:"
+    if [ "$(vercmp $2 168)" -lt 0 ]; then
+      echo " * Kernel 2.6.32 or newer is now required."
+      echo " * OSS emulation modules are not loaded by default, add to rc.conf if needed."
+      echo " * Arch specific cd symlinks are now no longer created."
+      echo " * cd and net persistent rules will no longer be autogenerated,"
+      echo "   see <https://wiki.archlinux.org/index.php/Udev> for details."
+      echo " * Errors are now logged (possibly to the console) by default."
+    fi
+    if [ "$(vercmp $2 171)" -lt 0 ]; then
+      echo " * Arch's custom blacklisting logic has been removed. MOD_AUTOLOAD and"
+      echo "   blacklisting in MODULES no longer works."
+      echo "   See 'man modprobe.conf' for a replacement to blacklisting."
+      echo "   To disable a module mod1 on the kernel command line, use"
+      echo "     mod1.disable=1"
+      echo "   or"
+      echo "     modprobe.blacklist=mod1"
+      echo " * The following modules are no longer unconditionally loaded:"
+      echo "     pcspkr irtty-sir analog lp ppdev ide-generic"
+      echo "   Add them to MODULES in rc.conf if you need them."
+    fi
+    if [ "$(vercmp $2 172)" -lt 0 ]; then
+      echo " * Blacklisting of framebuffer devices has moved from /etc/modprobe.d to"
+      echo "   /lib/modprobe.d. Any customizations shoud be done to the file in /etc, as it"
+      echo "   takes precedence."
+      echo " * kbd and rtc devices are no longer world readable."
+      echo " * rtc is no longer in the audio group and fb devices are no longer in"
+      echo "   the video group, as permissions and ownership of fb devices are controlled"
+      echo "   by X."
+    fi
+    if [ "$(vercmp $2 174)" -lt 0 ]; then
+      echo " * We now use upstream rules for assigning devices to the 'disk', 'optical',"
+      echo "   'scanner' and 'video' groups. Beware of any changes."
+      echo " * We no longer create symlinks from /dev/<dev> to /dev/<dev>0."
+      echo " * For security reasons, we no longer add devices to the 'storage' group. Use"
+      echo "   udisks and friends, or add custom rules to /etc/udev.d/rules/, if you want"
+      echo "   this functionality back."
+      echo " * We no longer create the static nodes on install needed for an initrd-less"
+      echo "   boot where devtmpfs is not mounted by the kernel, this only affects fresh"
+      echo "   installs."
+    fi
+    if [ "$(vercmp $2 175)" -lt 0 ]; then
+      echo " * devtmpfs support is now a hard requirement. Users of the official Arch"
+      echo "   kernels have this enabled."
+    fi
+    if [ "$(vercmp $2 181)" -lt 0 ]; then
+      echo " * udev-compat has been removed, and should be uninstalled."
+      echo " * Framebuffers are no longer blacklisted by default."
+      echo " * binaries moved from /sbin to /usr/bin"
+    fi
+    echo " * if your kernel does not provide /dev/loop-control, you need to manually"
+    echo "   load the 'loop' module before using losetup"
+  fi
+}



More information about the arch-commits mailing list