* Handle symlinks such as /dev/disk/by-label/bla. Previously
Grub installation barfed. svn path=/nixpkgs/trunk/; revision=12877
This commit is contained in:
parent
74669a825c
commit
35cc272d07
|
@ -17,16 +17,26 @@ stdenv.mkDerivation {
|
||||||
sha256 = "12akcbp1a31pxzsxm01scgir0fqkk8qqqwhs44vzgs2chzzigyvd";
|
sha256 = "12akcbp1a31pxzsxm01scgir0fqkk8qqqwhs44vzgs2chzzigyvd";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
# Properly handle the case of symlinks such as
|
||||||
|
# /dev/disk/by-label/bla. The symlink resolution code in
|
||||||
|
# grub-install isn't smart enough.
|
||||||
|
./symlink.patch
|
||||||
|
];
|
||||||
|
|
||||||
# Autoconf/automake required for the splashimage patch.
|
# Autoconf/automake required for the splashimage patch.
|
||||||
buildInputs = [autoconf automake];
|
buildInputs = [autoconf automake];
|
||||||
|
|
||||||
preConfigure = ''
|
prePatch = ''
|
||||||
unpackFile $gentooPatches
|
unpackFile $gentooPatches
|
||||||
rm patch/400_all_grub-0.97-reiser4-20050808-gentoo.patch
|
rm patch/400_all_grub-0.97-reiser4-20050808-gentoo.patch
|
||||||
for i in patch/*.patch; do
|
for i in patch/*.patch; do
|
||||||
echo "applying patch $i"
|
echo "applying patch $i"
|
||||||
patch -p1 < $i || patch -p0 < $i
|
patch -p1 < $i || patch -p0 < $i
|
||||||
done
|
done
|
||||||
|
'';
|
||||||
|
|
||||||
|
preConfigure = ''
|
||||||
autoreconf
|
autoreconf
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
diff -rc grub-0.97-orig/util/grub-install.in grub-0.97/util/grub-install.in
|
||||||
|
*** grub-0.97-orig/util/grub-install.in 2008-09-18 11:32:13.000000000 +0200
|
||||||
|
--- grub-0.97/util/grub-install.in 2008-09-18 11:36:40.000000000 +0200
|
||||||
|
***************
|
||||||
|
*** 194,217 ****
|
||||||
|
# Usage: resolve_symlink file
|
||||||
|
# Find the real file/device that file points at
|
||||||
|
resolve_symlink () {
|
||||||
|
! tmp_fname=$1
|
||||||
|
! # Resolve symlinks
|
||||||
|
! while test -L $tmp_fname; do
|
||||||
|
! tmp_new_fname=`ls -al $tmp_fname | sed -n 's%.*-> \(.*\)%\1%p'`
|
||||||
|
! if test -z "$tmp_new_fname"; then
|
||||||
|
! echo "Unrecognized ls output" 2>&1
|
||||||
|
! exit 1
|
||||||
|
! fi
|
||||||
|
!
|
||||||
|
! # Convert relative symlinks
|
||||||
|
! case $tmp_new_fname in
|
||||||
|
! /*) tmp_fname="$tmp_new_fname"
|
||||||
|
! ;;
|
||||||
|
! *) tmp_fname="`echo $tmp_fname | sed 's%/[^/]*$%%'`/$tmp_new_fname"
|
||||||
|
! ;;
|
||||||
|
! esac
|
||||||
|
! done
|
||||||
|
! echo "$tmp_fname"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Usage: find_device file
|
||||||
|
--- 194,200 ----
|
||||||
|
# Usage: resolve_symlink file
|
||||||
|
# Find the real file/device that file points at
|
||||||
|
resolve_symlink () {
|
||||||
|
! readlink -f $1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Usage: find_device file
|
Loading…
Reference in New Issue