[systemd/f18] pick post-v197 fixes

Michal Schmidt michich at fedoraproject.org
Fri Jan 11 23:34:55 UTC 2013


commit d1a04b4502913eb6fa95eeb972d06de5f69aa9a2
Author: Michal Schmidt <mschmidt at redhat.com>
Date:   Sat Jan 12 00:02:12 2013 +0100

    pick post-v197 fixes

 ...-udev-net_id-skip-stacked-network-devices.patch |   39 ++++
 ...dbus-fix-serialization-of-calendar-timers.patch |   60 ++++++
 ...call-fclose-on-NULL-in-is_pci_multifuncti.patch |   33 ++++
 ...heck-return-of-fopen-before-setvbuf-in-lo.patch |   25 +++
 0009-man-systemd-bootchart.xml-fix-typo.patch      |   23 +++
 0010-man-systemd.unit.xml-fix-typos.patch          |   25 +++
 ...us-properly-serialize-calendar-timer-data.patch |  194 ++++++++++++++++++++
 ...-Fix-device-matching-in-the-accelerometer.patch |   49 +++++
 systemd.spec                                       |   14 ++-
 9 files changed, 461 insertions(+), 1 deletions(-)
---
diff --git a/0005-udev-net_id-skip-stacked-network-devices.patch b/0005-udev-net_id-skip-stacked-network-devices.patch
new file mode 100644
index 0000000..8400a2c
--- /dev/null
+++ b/0005-udev-net_id-skip-stacked-network-devices.patch
@@ -0,0 +1,39 @@
+From 778ad8d8fd3855254d9c96bc1016c7bb7dc2e8da Mon Sep 17 00:00:00 2001
+From: Kay Sievers <kay at vrfy.org>
+Date: Tue, 8 Jan 2013 14:54:12 +0100
+Subject: [PATCH] udev: net_id - skip stacked network devices (cherry picked
+ from commit 72bc96f07868d532596477604b6fb41633ebd124)
+
+---
+ src/udev/udev-builtin-net_id.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
+index d5db762..1975c6d 100644
+--- a/src/udev/udev-builtin-net_id.c
++++ b/src/udev/udev-builtin-net_id.c
+@@ -366,6 +366,7 @@ static int ieee_oui(struct udev_device *dev, struct netnames *names, bool test)
+ 
+ static int builtin_net_id(struct udev_device *dev, int argc, char *argv[], bool test) {
+         const char *s;
++        const char *p;
+         unsigned int i;
+         const char *devtype;
+         const char *prefix = "en";
+@@ -380,6 +381,16 @@ static int builtin_net_id(struct udev_device *dev, int argc, char *argv[], bool
+         if (i != 1)
+                 return 0;
+ 
++        /* skip stacked devices, like VLANs, ... */
++        s = udev_device_get_sysattr_value(dev, "ifindex");
++        if (!s)
++                return EXIT_FAILURE;
++        p = udev_device_get_sysattr_value(dev, "iflink");
++        if (!p)
++                return EXIT_FAILURE;
++        if (strcmp(s, p) != 0)
++                return 0;
++
+         devtype = udev_device_get_devtype(dev);
+         if (devtype) {
+                 if (streq("wlan", devtype))
diff --git a/0006-dbus-fix-serialization-of-calendar-timers.patch b/0006-dbus-fix-serialization-of-calendar-timers.patch
new file mode 100644
index 0000000..f34ec6f
--- /dev/null
+++ b/0006-dbus-fix-serialization-of-calendar-timers.patch
@@ -0,0 +1,60 @@
+From 15609a14fed7e091547984913d93db4e66ff107c Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart at poettering.net>
+Date: Tue, 8 Jan 2013 20:00:01 +0100
+Subject: [PATCH] dbus: fix serialization of calendar timers (cherry picked
+ from commit 3761902e2e120849c283106fd4b78b6adec7367e)
+
+---
+ src/core/dbus-timer.c | 25 +++++++++++++++----------
+ 1 file changed, 15 insertions(+), 10 deletions(-)
+
+diff --git a/src/core/dbus-timer.c b/src/core/dbus-timer.c
+index 11d18cb..b22fcb5 100644
+--- a/src/core/dbus-timer.c
++++ b/src/core/dbus-timer.c
+@@ -69,22 +69,28 @@ static int bus_timer_append_timers(DBusMessageIter *i, const char *property, voi
+                 return -ENOMEM;
+ 
+         LIST_FOREACH(value, k, p->values) {
+-                char *buf;
++                _cleanup_free_ char *buf = NULL;
+                 const char *t;
+                 size_t l;
+                 bool b;
+ 
+                 t = timer_base_to_string(k->base);
+-                assert(endswith(t, "Sec"));
+ 
+-                /* s/Sec/USec/ */
+-                l = strlen(t);
+-                buf = new(char, l+2);
+-                if (!buf)
+-                        return -ENOMEM;
++                if (endswith(t, "Sec")) {
++
++                        /* s/Sec/USec/ */
++                        l = strlen(t);
++                        buf = new(char, l+2);
++                        if (!buf)
++                                return -ENOMEM;
+ 
+-                memcpy(buf, t, l-3);
+-                memcpy(buf+l-3, "USec", 5);
++                        memcpy(buf, t, l-3);
++                        memcpy(buf+l-3, "USec", 5);
++                } else {
++                        buf = strdup(t);
++                        if (!buf)
++                                return -ENOMEM;
++                }
+ 
+                 b = dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) &&
+                         dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, &buf) &&
+@@ -92,7 +98,6 @@ static int bus_timer_append_timers(DBusMessageIter *i, const char *property, voi
+                         dbus_message_iter_append_basic(&sub2, DBUS_TYPE_UINT64, &k->next_elapse) &&
+                         dbus_message_iter_close_container(&sub, &sub2);
+ 
+-                free(buf);
+                 if (!b)
+                         return -ENOMEM;
+         }
diff --git a/0007-udev-don-t-call-fclose-on-NULL-in-is_pci_multifuncti.patch b/0007-udev-don-t-call-fclose-on-NULL-in-is_pci_multifuncti.patch
new file mode 100644
index 0000000..fd1299f
--- /dev/null
+++ b/0007-udev-don-t-call-fclose-on-NULL-in-is_pci_multifuncti.patch
@@ -0,0 +1,33 @@
+From 8177770c3f3b9bf38550c8b4b23e91f2c9dfe822 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn at redhat.com>
+Date: Wed, 9 Jan 2013 17:10:56 +0100
+Subject: [PATCH] udev: don't call fclose on NULL in is_pci_multifunction
+ (cherry picked from commit 3c123e0899b56c0587db36420da5e049c56d9e19)
+
+---
+ src/udev/udev-builtin-net_id.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
+index 1975c6d..7c9564f 100644
+--- a/src/udev/udev-builtin-net_id.c
++++ b/src/udev/udev-builtin-net_id.c
+@@ -136,7 +136,7 @@ static int dev_pci_onboard(struct udev_device *dev, struct netnames *names) {
+ /* read the 256 bytes PCI configuration space to check the multi-function bit */
+ static bool is_pci_multifunction(struct udev_device *dev) {
+         char filename[256];
+-        FILE *f;
++        FILE *f = NULL;
+         char config[64];
+         bool multi = false;
+ 
+@@ -151,7 +151,8 @@ static bool is_pci_multifunction(struct udev_device *dev) {
+         if ((config[PCI_HEADER_TYPE] & 0x80) != 0)
+                 multi = true;
+ out:
+-        fclose(f);
++        if(f)
++                fclose(f);
+         return multi;
+ }
+ 
diff --git a/0008-bootchart-check-return-of-fopen-before-setvbuf-in-lo.patch b/0008-bootchart-check-return-of-fopen-before-setvbuf-in-lo.patch
new file mode 100644
index 0000000..65c0a8e
--- /dev/null
+++ b/0008-bootchart-check-return-of-fopen-before-setvbuf-in-lo.patch
@@ -0,0 +1,25 @@
+From 3e20223710a1698b166df14b3a95011c72099cc7 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn at redhat.com>
+Date: Wed, 9 Jan 2013 17:10:57 +0100
+Subject: [PATCH] bootchart: check return of fopen before setvbuf in log.c
+ (cherry picked from commit 0908dd2fd5536cf15d75780980ac2eca37ff800f)
+
+---
+ src/bootchart/log.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/bootchart/log.c b/src/bootchart/log.c
+index 89c7b35..6c40913 100644
+--- a/src/bootchart/log.c
++++ b/src/bootchart/log.c
+@@ -364,9 +364,9 @@ schedstat_next:
+ 		if (!ps->smaps) {
+ 			sprintf(filename, "/proc/%d/smaps", pid);
+ 			ps->smaps = fopen(filename, "r");
+-			setvbuf(ps->smaps, smaps_buf, _IOFBF, sizeof(smaps_buf));
+ 			if (!ps->smaps)
+ 				continue;
++			setvbuf(ps->smaps, smaps_buf, _IOFBF, sizeof(smaps_buf));
+ 		} else {
+ 			rewind(ps->smaps);
+ 		}
diff --git a/0009-man-systemd-bootchart.xml-fix-typo.patch b/0009-man-systemd-bootchart.xml-fix-typo.patch
new file mode 100644
index 0000000..6004153
--- /dev/null
+++ b/0009-man-systemd-bootchart.xml-fix-typo.patch
@@ -0,0 +1,23 @@
+From 7f0de4bf0c3a4471228dc55a14af7d43c411af4a Mon Sep 17 00:00:00 2001
+From: Thomas Hindoe Paaboel Andersen <phomes at gmail.com>
+Date: Wed, 9 Jan 2013 21:25:02 +0100
+Subject: [PATCH] man/systemd-bootchart.xml: fix typo (cherry picked from
+ commit 1959c6ce940786d33f91e19c41441bf4c9f6a768)
+
+---
+ man/systemd-bootchart.xml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/man/systemd-bootchart.xml b/man/systemd-bootchart.xml
+index 4d53824..8c4d7cc 100644
+--- a/man/systemd-bootchart.xml
++++ b/man/systemd-bootchart.xml
+@@ -100,7 +100,7 @@
+                 <title>Output</title>
+ 
+                 <para>Systemd-bootchart generates SVG graphs. In order to render these
+-                on a graphica display any SVG capable viewer can be used. It should be
++                on a graphical display any SVG capable viewer can be used. It should be
+                 noted that the SVG render engines in most browsers (including Chrome
+                 and Firefox) are many times faster than dedicated graphical applications
+                 like Gimp and Inkscape.  Just point your browser at "file:///var/log"!
diff --git a/0010-man-systemd.unit.xml-fix-typos.patch b/0010-man-systemd.unit.xml-fix-typos.patch
new file mode 100644
index 0000000..91dee0d
--- /dev/null
+++ b/0010-man-systemd.unit.xml-fix-typos.patch
@@ -0,0 +1,25 @@
+From 3ce12acd4f95944e256aa2574e297230ab8a65c9 Mon Sep 17 00:00:00 2001
+From: Thomas Hindoe Paaboel Andersen <phomes at gmail.com>
+Date: Thu, 10 Jan 2013 00:19:44 +0100
+Subject: [PATCH] man/systemd.unit.xml: fix typos (cherry picked from commit
+ e711d102df3d3eafec9c51edfbb302c0fd8583f0)
+
+---
+ man/systemd.unit.xml | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
+index 8570815..54671e7 100644
+--- a/man/systemd.unit.xml
++++ b/man/systemd.unit.xml
+@@ -961,8 +961,8 @@
+                                 an exclamation mark.</para>
+ 
+                                 <para><varname>ConditionACPower=</varname>
+-                                may may be used to check whether the
+-                                system has AC power, or is exlcusively
++                                may be used to check whether the
++                                system has AC power, or is exclusively
+                                 battery powered at the time of
+                                 activation of the unit. This takes a
+                                 boolean argument. If set to
diff --git a/0011-dbus-properly-serialize-calendar-timer-data.patch b/0011-dbus-properly-serialize-calendar-timer-data.patch
new file mode 100644
index 0000000..fe8cf22
--- /dev/null
+++ b/0011-dbus-properly-serialize-calendar-timer-data.patch
@@ -0,0 +1,194 @@
+From a3c5fe158e2cb202ce03561a07ae4fed79180063 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart at poettering.net>
+Date: Thu, 10 Jan 2013 00:54:46 +0100
+Subject: [PATCH] dbus: properly serialize calendar timer data
+
+As it turns out the bus properties for timer units wre really broken,
+so let's clean this up for good and properly add calendar timer
+serialization. We really should get that right before finalizing the
+bus API documentation in the wiki...
+(cherry picked from commit b719810db446244ff708a2f5f08566af67ddab61)
+---
+ src/core/dbus-timer.c  | 92 +++++++++++++++++++++++++++++++++++++-------------
+ src/core/timer.c       |  2 +-
+ src/core/timer.h       |  4 +--
+ src/shared/time-util.c |  2 ++
+ 4 files changed, 73 insertions(+), 27 deletions(-)
+
+diff --git a/src/core/dbus-timer.c b/src/core/dbus-timer.c
+index b22fcb5..75add81 100644
+--- a/src/core/dbus-timer.c
++++ b/src/core/dbus-timer.c
+@@ -30,8 +30,10 @@
+ #define BUS_TIMER_INTERFACE                                             \
+         " <interface name=\"org.freedesktop.systemd1.Timer\">\n"        \
+         "  <property name=\"Unit\" type=\"s\" access=\"read\"/>\n"      \
+-        "  <property name=\"Timers\" type=\"a(stt)\" access=\"read\"/>\n" \
+-        "  <property name=\"NextElapseUSec\" type=\"t\" access=\"read\"/>\n" \
++        "  <property name=\"TimersMonotonic\" type=\"a(stt)\" access=\"read\"/>\n" \
++        "  <property name=\"TimersCalendar\" type=\"a(sst)\" access=\"read\"/>\n" \
++        "  <property name=\"NextElapseUSecRealtime\" type=\"t\" access=\"read\"/>\n" \
++        "  <property name=\"NextElapseUSecMonotonic\" type=\"t\" access=\"read\"/>\n" \
+         "  <property name=\"Result\" type=\"s\" access=\"read\"/>\n"    \
+         " </interface>\n"
+ 
+@@ -52,11 +54,13 @@
+ const char bus_timer_interface[] _introspect_("Timer") = BUS_TIMER_INTERFACE;
+ 
+ const char bus_timer_invalidating_properties[] =
+-        "Timers\0"
+-        "NextElapseUSec\0"
++        "TimersMonotonic\0"
++        "TimersRealtime\0"
++        "NextElapseUSecRealtime\0"
++        "NextElapseUSecMonotonic\0"
+         "Result\0";
+ 
+-static int bus_timer_append_timers(DBusMessageIter *i, const char *property, void *data) {
++static int bus_timer_append_monotonic_timers(DBusMessageIter *i, const char *property, void *data) {
+         Timer *p = data;
+         DBusMessageIter sub, sub2;
+         TimerValue *k;
+@@ -74,23 +78,20 @@ static int bus_timer_append_timers(DBusMessageIter *i, const char *property, voi
+                 size_t l;
+                 bool b;
+ 
+-                t = timer_base_to_string(k->base);
++                if (k->base == TIMER_CALENDAR)
++                        continue;
+ 
+-                if (endswith(t, "Sec")) {
++                t = timer_base_to_string(k->base);
++                assert(endswith(t, "Sec"));
+ 
+-                        /* s/Sec/USec/ */
+-                        l = strlen(t);
+-                        buf = new(char, l+2);
+-                        if (!buf)
+-                                return -ENOMEM;
++                /* s/Sec/USec/ */
++                l = strlen(t);
++                buf = new(char, l+2);
++                if (!buf)
++                        return -ENOMEM;
+ 
+-                        memcpy(buf, t, l-3);
+-                        memcpy(buf+l-3, "USec", 5);
+-                } else {
+-                        buf = strdup(t);
+-                        if (!buf)
+-                                return -ENOMEM;
+-                }
++                memcpy(buf, t, l-3);
++                memcpy(buf+l-3, "USec", 5);
+ 
+                 b = dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) &&
+                         dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, &buf) &&
+@@ -108,6 +109,48 @@ static int bus_timer_append_timers(DBusMessageIter *i, const char *property, voi
+         return 0;
+ }
+ 
++static int bus_timer_append_calendar_timers(DBusMessageIter *i, const char *property, void *data) {
++        Timer *p = data;
++        DBusMessageIter sub, sub2;
++        TimerValue *k;
++
++        assert(i);
++        assert(property);
++        assert(p);
++
++        if (!dbus_message_iter_open_container(i, DBUS_TYPE_ARRAY, "(sst)", &sub))
++                return -ENOMEM;
++
++        LIST_FOREACH(value, k, p->values) {
++                _cleanup_free_ char *buf = NULL;
++                const char *t;
++                bool b;
++                int j;
++
++                if (k->base != TIMER_CALENDAR)
++                        continue;
++
++                t = timer_base_to_string(k->base);
++                j = calendar_spec_to_string(k->calendar_spec, &buf);
++                if (j < 0)
++                        return j;
++
++                b = dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) &&
++                        dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, &t) &&
++                        dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, &buf) &&
++                        dbus_message_iter_append_basic(&sub2, DBUS_TYPE_UINT64, &k->next_elapse) &&
++                        dbus_message_iter_close_container(&sub, &sub2);
++
++                if (!b)
++                        return -ENOMEM;
++        }
++
++        if (!dbus_message_iter_close_container(i, &sub))
++                return -ENOMEM;
++
++        return 0;
++}
++
+ static int bus_timer_append_unit(DBusMessageIter *i, const char *property, void *data) {
+         Unit *u = data;
+         Timer *timer = TIMER(u);
+@@ -125,11 +168,12 @@ static int bus_timer_append_unit(DBusMessageIter *i, const char *property, void
+ static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_timer_append_timer_result, timer_result, TimerResult);
+ 
+ static const BusProperty bus_timer_properties[] = {
+-        { "Unit",           bus_timer_append_unit,        "s", 0 },
+-        { "Timers",         bus_timer_append_timers, "a(stt)", 0 },
+-        { "NextElapseUSec", bus_property_append_usec,     "t", offsetof(Timer, next_elapse_monotonic) },
+-        { "NextElapseUSecRealtime", bus_property_append_usec, "t", offsetof(Timer, next_elapse_realtime) },
+-        { "Result",         bus_timer_append_timer_result,"s", offsetof(Timer, result)      },
++        { "Unit",                    bus_timer_append_unit,             "s",      0 },
++        { "TimersMonotonic",         bus_timer_append_monotonic_timers, "a(stt)", 0 },
++        { "TimersCalendar",          bus_timer_append_calendar_timers,  "a(sst)", 0 },
++        { "NextElapseUSecMonotonic", bus_property_append_usec,          "t",      offsetof(Timer, next_elapse_monotonic) },
++        { "NextElapseUSecRealtime",  bus_property_append_usec,          "t",      offsetof(Timer, next_elapse_realtime) },
++        { "Result",                  bus_timer_append_timer_result,     "s",      offsetof(Timer, result) },
+         { NULL, }
+ };
+ 
+diff --git a/src/core/timer.c b/src/core/timer.c
+index 31ef176..4453aa0 100644
+--- a/src/core/timer.c
++++ b/src/core/timer.c
+@@ -323,7 +323,7 @@ static void timer_enter_waiting(Timer *t, bool initial) {
+                 log_debug_unit(UNIT(t)->id,
+                                "%s: Monotonic timer elapses in %s the next time.",
+                                UNIT(t)->id,
+-                               format_timespan(buf, sizeof(buf), t->next_elapse_monotonic - ts.monotonic));
++                               format_timespan(buf, sizeof(buf), t->next_elapse_monotonic > ts.monotonic ? t->next_elapse_monotonic - ts.monotonic : 0));
+ 
+                 r = unit_watch_timer(UNIT(t), CLOCK_MONOTONIC, false, t->next_elapse_monotonic, &t->monotonic_watch);
+                 if (r < 0)
+diff --git a/src/core/timer.h b/src/core/timer.h
+index 57a514a..10d3ce1 100644
+--- a/src/core/timer.h
++++ b/src/core/timer.h
+@@ -52,8 +52,8 @@ typedef struct TimerValue {
+         bool disabled;
+         clockid_t clock_id;
+ 
+-        usec_t value;
+-        CalendarSpec *calendar_spec;
++        usec_t value; /* only for monotonic events */
++        CalendarSpec *calendar_spec; /* only for calendar events */
+         usec_t next_elapse;
+ 
+         LIST_FIELDS(struct TimerValue, value);
+diff --git a/src/shared/time-util.c b/src/shared/time-util.c
+index 4fd8f08..e192d5e 100644
+--- a/src/shared/time-util.c
++++ b/src/shared/time-util.c
+@@ -230,6 +230,8 @@ char *format_timespan(char *buf, size_t l, usec_t t) {
+                 const char *suffix;
+                 usec_t usec;
+         } table[] = {
++                { "y", USEC_PER_YEAR },
++                { "month", USEC_PER_MONTH },
+                 { "w", USEC_PER_WEEK },
+                 { "d", USEC_PER_DAY },
+                 { "h", USEC_PER_HOUR },
diff --git a/0012-udev-Fix-device-matching-in-the-accelerometer.patch b/0012-udev-Fix-device-matching-in-the-accelerometer.patch
new file mode 100644
index 0000000..f6a19c5
--- /dev/null
+++ b/0012-udev-Fix-device-matching-in-the-accelerometer.patch
@@ -0,0 +1,49 @@
+From d6a83f50da40578db6712c341e48fa4bef88fd6e Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess at hadess.net>
+Date: Thu, 10 Jan 2013 14:23:23 +0100
+Subject: [PATCH] udev: Fix device matching in the accelerometer
+
+As we were searching by ID_PATH, it would have been possible
+for us to find a sibling device instead of the device we were
+looking for.
+
+This fixes device matching on the WeTab with the upstream kernel,
+as it was trying to use the "Asus Laptop extra buttons" device
+instead of the accelerometer.
+(cherry picked from commit 1d010426c01044350b2b32d8b3af5d064f7dfe27)
+---
+ src/udev/accelerometer/accelerometer.c | 11 +----------
+ 1 file changed, 1 insertion(+), 10 deletions(-)
+
+diff --git a/src/udev/accelerometer/accelerometer.c b/src/udev/accelerometer/accelerometer.c
+index 21f5193..2fea388 100644
+--- a/src/udev/accelerometer/accelerometer.c
++++ b/src/udev/accelerometer/accelerometer.c
+@@ -257,7 +257,6 @@ int main (int argc, char** argv)
+ 
+         char devpath[PATH_MAX];
+         char *devnode;
+-        const char *id_path;
+         struct udev_enumerate *enumerate;
+         struct udev_list_entry *list_entry;
+ 
+@@ -303,18 +302,10 @@ int main (int argc, char** argv)
+                 return 1;
+         }
+ 
+-        id_path = udev_device_get_property_value(dev, "ID_PATH");
+-        if (id_path == NULL) {
+-                fprintf (stderr, "unable to get property ID_PATH for '%s'", devpath);
+-                return 0;
+-        }
+-
+         /* Get the children devices and find the devnode */
+-        /* FIXME: use udev_enumerate_add_match_parent() instead */
+         devnode = NULL;
+         enumerate = udev_enumerate_new(udev);
+-        udev_enumerate_add_match_property(enumerate, "ID_PATH", id_path);
+-        udev_enumerate_add_match_subsystem(enumerate, "input");
++        udev_enumerate_add_match_parent(enumerate, dev);
+         udev_enumerate_scan_devices(enumerate);
+         udev_list_entry_foreach(list_entry, udev_enumerate_get_list_entry(enumerate)) {
+                 struct udev_device *device;
diff --git a/systemd.spec b/systemd.spec
index d9249e0..8e12b63 100644
--- a/systemd.spec
+++ b/systemd.spec
@@ -14,7 +14,7 @@ Name:           systemd
 Url:            http://www.freedesktop.org/wiki/Software/systemd
 
 Version:        197
-Release:        1%{?gitcommit:.git%{gitcommit}}%{?dist}
+Release:        1%{?gitcommit:.git%{gitcommit}}%{?dist}.1
 # For a breakdown of the licensing, see README
 License:        LGPLv2+ and MIT and GPLv2+
 Summary:        A System and Service Manager
@@ -81,6 +81,15 @@ Patch0001:      0001-F18-units-don-t-always-use-sulogin-in-rescue.service.patch
 Patch0002:      0002-F18-do-not-enable-persistent-network-device-naming.patch
 Patch0003:      0003-F18-re-add-http-daemon.target.patch
 Patch0004:      0004-F18-bring-back-single.service.patch
+# post-v197 fixes:
+Patch0005:      0005-udev-net_id-skip-stacked-network-devices.patch
+Patch0006:      0006-dbus-fix-serialization-of-calendar-timers.patch
+Patch0007:      0007-udev-don-t-call-fclose-on-NULL-in-is_pci_multifuncti.patch
+Patch0008:      0008-bootchart-check-return-of-fopen-before-setvbuf-in-lo.patch
+Patch0009:      0009-man-systemd-bootchart.xml-fix-typo.patch
+Patch0010:      0010-man-systemd.unit.xml-fix-typos.patch
+Patch0011:      0011-dbus-properly-serialize-calendar-timer-data.patch
+Patch0012:      0012-udev-Fix-device-matching-in-the-accelerometer.patch
 
 Obsoletes:      SysVinit < 2.86-24, sysvinit < 2.86-24
 Provides:       SysVinit = 2.86-24, sysvinit = 2.86-24
@@ -721,6 +730,9 @@ fi
 %{_libdir}/pkgconfig/gudev-1.0*
 
 %changelog
+* Sat Jan 12 2013 Michal Schmidt <mschmidt at redhat.com> - 197-1.fc18.1
+- Pick post-v197 fixes.
+
 * Fri Jan 11 2013 Michal Schmidt <mschmidt at redhat.com> - 197-1
 - Rebase to new upstream release.
 


More information about the scm-commits mailing list