diff --git a/libguestfs-1.0.80-daemon-Work-around-udevsettle-issue-RHBZ-548121.patch b/libguestfs-1.0.80-daemon-Work-around-udevsettle-issue-RHBZ-548121.patch new file mode 100644 index 0000000..4d67f90 --- /dev/null +++ b/libguestfs-1.0.80-daemon-Work-around-udevsettle-issue-RHBZ-548121.patch @@ -0,0 +1,57 @@ +From 5c6147ecc7ee3cf657edb1e19ad5ab4e973424e0 Mon Sep 17 00:00:00 2001 +From: Richard Jones +Date: Fri, 18 Dec 2009 19:20:37 +0000 +Subject: [PATCH] daemon: Work around udevsettle issue (RHBZ#548121). + +--- + daemon/guestfsd.c | 30 +++++++++--------------------- + 1 files changed, 9 insertions(+), 21 deletions(-) + +diff --git a/daemon/guestfsd.c b/daemon/guestfsd.c +index 520a4a4..0fc0128 100644 +--- a/daemon/guestfsd.c ++++ b/daemon/guestfsd.c +@@ -1038,31 +1038,19 @@ device_name_translation (char *device, const char *func) + * involved. eg. You can create or remove some device, but the /dev + * device node won't appear until some time later. This means that + * you get an error if you run one command followed by another. ++ * + * Use 'udevadm settle' after certain commands, but don't be too + * fussed if it fails. ++ * ++ * 'udevsettle' was the old name for this command (RHEL 5). This was ++ * deprecated in favour of 'udevadm settle'. The old 'udevsettle' ++ * command was left as a symlink. Then in Fedora 13 the old symlink ++ * remained but it stopped working (RHBZ#548121), so we have to be ++ * careful not to assume that we can use 'udevsettle' if it exists. + */ + void + udev_settle (void) + { +- static int which_prog = 0; +- +- if (which_prog == 0) { +- if (access ("/sbin/udevsettle", X_OK) == 0) +- which_prog = 2; +- else if (access ("/sbin/udevadm", X_OK) == 0) +- which_prog = 1; +- else +- which_prog = 3; +- } +- +- switch (which_prog) { +- case 1: +- command (NULL, NULL, "/sbin/udevadm", "settle", NULL); +- break; +- case 2: +- command (NULL, NULL, "/sbin/udevsettle", NULL); +- break; +- default: +- ; +- } ++ (void) command (NULL, NULL, "/sbin/udevadm", "settle", NULL); ++ (void) command (NULL, NULL, "/sbin/udevsettle", NULL); + } +-- +1.6.5.2 + diff --git a/libguestfs.spec b/libguestfs.spec index edd5b20..439014f 100644 --- a/libguestfs.spec +++ b/libguestfs.spec @@ -5,7 +5,7 @@ Summary: Access and modify virtual machine disk images Name: libguestfs Epoch: 1 Version: 1.0.80 -Release: 2%{?dist} +Release: 3%{?dist} License: LGPLv2+ Group: Development/Libraries URL: http://libguestfs.org/ @@ -15,6 +15,9 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root # Disable FUSE tests, not supported in Koji at the moment. Patch0: libguestfs-1.0.79-no-fuse-test.patch +# Work around udevsettle command broken in Fedora 13 (RHBZ#548121). +Patch1: libguestfs-1.0.80-daemon-Work-around-udevsettle-issue-RHBZ-548121.patch + # Basic build requirements: BuildRequires: /usr/bin/pod2man BuildRequires: /usr/bin/pod2text @@ -328,6 +331,7 @@ Requires: jpackage-utils %setup -q %patch0 -p1 +%patch1 -p1 mkdir -p daemon/m4 @@ -382,11 +386,11 @@ export LIBGUESTFS_DEBUG=1 # (FIXED) # 516096 ? F-11 race condition in swapoff/blockdev --rereadpt # 516543 ? F-12 qemu-kvm segfaults when run inside a VM (FIXED) -# 548121 all F-13 udevsettle command is broken +# 548121 all F-13 udevsettle command is broken (WORKAROUND) -#%ifarch x86_64 # reenable if we fix 548121 -#make check -#%endif +%ifarch x86_64 +make check +%endif %install @@ -602,6 +606,10 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Fri Dec 18 2009 Richard W.M. Jones - 1.0.80-3 +- Work around udevsettle command problem (RHBZ#548121). +- Enable tests. + * Wed Dec 16 2009 Richard W.M. Jones - 1.0.80-2 - Disable tests because of RHBZ#548121.