* Work around an incompatibility between LVM's udev rules and GRUB 2

(http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=550704).

svn path=/nixpkgs/trunk/; revision=19304
This commit is contained in:
Eelco Dolstra 2010-01-07 23:45:29 +00:00
parent a4473b8205
commit 8df82e27b5
2 changed files with 39 additions and 1 deletions

View file

@ -16,7 +16,17 @@ stdenv.mkDerivation rec {
buildInputs = [ bison ncurses libusb freetype ];
patchPhase =
patches =
[ # The udev rules for LVM create symlinks in /dev/mapper rathe
# than device nodes, causing GRUB to fail to recognize LVM
# volumes. See
# http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=550704
# This ugly workaround makes `find_root_device' use stat() on
# files in /dev/mapper instead of lstat().
./device-mapper-symlinks.patch
];
postPatch =
'' gunzip < "${unifont_bdf}" > "unifont.bdf"
sed -i "configure" \
-e "s|/usr/src/unifont.bdf|$PWD/unifont.bdf|g"

View file

@ -0,0 +1,28 @@
Only in grub-1.97.1-orig/: grub-1.97.1
diff -rc -x '*~' grub-1.97.1-orig/util/getroot.c grub-1.97.1/util/getroot.c
*** grub-1.97.1-orig/util/getroot.c 2009-11-09 16:48:16.000000000 +0100
--- grub-1.97.1/util/getroot.c 2010-01-08 00:26:12.000000000 +0100
***************
*** 217,224 ****
continue;
if (S_ISLNK (st.st_mode))
! /* Don't follow symbolic links. */
! continue;
if (S_ISDIR (st.st_mode))
{
--- 217,229 ----
continue;
if (S_ISLNK (st.st_mode))
! {
! if (strcmp(dir, "mapper") != 0)
! /* Don't follow symbolic links. */
! continue;
! if (stat (ent->d_name, &st) < 0)
! continue;
! }
if (S_ISDIR (st.st_mode))
{