[arch-commits] Commit in udev/trunk (4 files)
Tom Gundersen
tomegun at archlinux.org
Sat Mar 31 14:33:35 UTC 2012
Date: Saturday, March 31, 2012 @ 10:33:34
Author: tomegun
Revision: 154946
upgpkg: udev 181-6
move config files to /usr/lib by default
/lib is still supported as a fallback
packages installing non-config files in /lib/udev/ must be rebuilt
Added:
udev/trunk/0001-split-usr-always-read-config-files-from-lib-udev.patch
udev/trunk/0002-reinstate-TIMEOUT-handling.patch
Modified:
udev/trunk/PKGBUILD
Deleted:
udev/trunk/0001-reinstate-TIMEOUT-handling.patch
-------------------------------------------------------------+
0001-reinstate-TIMEOUT-handling.patch | 126 --------
0001-split-usr-always-read-config-files-from-lib-udev.patch | 61 ++++
0002-reinstate-TIMEOUT-handling.patch | 146 ++++++++++
PKGBUILD | 28 +
4 files changed, 224 insertions(+), 137 deletions(-)
Deleted: 0001-reinstate-TIMEOUT-handling.patch
===================================================================
--- 0001-reinstate-TIMEOUT-handling.patch 2012-03-31 14:17:08 UTC (rev 154945)
+++ 0001-reinstate-TIMEOUT-handling.patch 2012-03-31 14:33:34 UTC (rev 154946)
@@ -1,126 +0,0 @@
-From 86617453cd78bf88d347f0e75a5be8b5ebac6c2e 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] reinstate TIMEOUT= handling
-
-This reverts 43d5c5f03645c4b842659f9b5bd0ae465e885e92 and
-57c6f8ae5f52a6e8ffc66a54966346f733dded39.
-
-Signed-off-by: Tom Gundersen <teg at jklm.no>
----
- src/libudev-device.c | 19 +++++++++++++++++++
- src/libudev-private.h | 1 +
- src/udevd.c | 13 ++++++++++---
- 3 files changed, 30 insertions(+), 3 deletions(-)
-
-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.4
-
Added: 0001-split-usr-always-read-config-files-from-lib-udev.patch
===================================================================
--- 0001-split-usr-always-read-config-files-from-lib-udev.patch (rev 0)
+++ 0001-split-usr-always-read-config-files-from-lib-udev.patch 2012-03-31 14:33:34 UTC (rev 154946)
@@ -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
+
Added: 0002-reinstate-TIMEOUT-handling.patch
===================================================================
--- 0002-reinstate-TIMEOUT-handling.patch (rev 0)
+++ 0002-reinstate-TIMEOUT-handling.patch 2012-03-31 14:33:34 UTC (rev 154946)
@@ -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
+
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2012-03-31 14:17:08 UTC (rev 154945)
+++ PKGBUILD 2012-03-31 14:33:34 UTC (rev 154946)
@@ -6,7 +6,7 @@
pkgname=udev
pkgver=181
-pkgrel=5
+pkgrel=6
pkgdesc="The userspace dev tools (udev)"
depends=('util-linux' 'glib2' 'kmod' 'pciutils' 'usbutils' 'bash' 'acl')
install=udev.install
@@ -14,7 +14,8 @@
license=('GPL')
makedepends=('gobject-introspection' 'gperf' 'libxslt')
source=(ftp://ftp.kernel.org/pub/linux/utils/kernel/hotplug/$pkgname-$pkgver.tar.xz
- 0001-reinstate-TIMEOUT-handling.patch
+ 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"
@@ -25,19 +26,23 @@
build() {
cd $srcdir/$pkgname-$pkgver
- patch -p1 -i ../0001-reinstate-TIMEOUT-handling.patch
+ 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 \
- --with-rootprefix= \
--sysconfdir=/etc \
- --libdir=/usr/lib \
- --libexecdir=/lib \
- --with-systemdsystemunitdir=/lib/systemd/system \
+ --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
@@ -47,20 +52,21 @@
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
+ 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/lib/udev/rules.d/*.rules; do
+ 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'
- 'f758b3e62ab77a1a6b7be12bb900cb2d'
+ 'f27fa19645016cae732659b0f1c20f0f'
+ 'a9fae85491a08d7759388c605389a8c5'
'a4dd853050bf2e0ae6b2e3d2c75499c2'
'ee0bfe91a20fff12cc25ab1d1e024853')
More information about the arch-commits
mailing list