Author: viric
Date: Sat Apr  9 09:25:06 2011
New Revision: 26761
URL: https://svn.nixos.org/websvn/nix/?rev=26761&sc=1

Log:
Restoring grub 1.98 from svn, and adding it as a package apart. This allows
easy using package overrides in nixos to use grub 1.98.

I found 1.98 can boot from /dev/md* devices, while 1.99rc1 cannot due to some
upstream problem. Once it works, we can remove this 1.98 again.

Added:
   nixpkgs/trunk/pkgs/tools/misc/grub/1.98.nix
   nixpkgs/trunk/pkgs/tools/misc/grub/device-mapper-symlinks.patch
Modified:
   nixpkgs/trunk/pkgs/top-level/all-packages.nix

Added: nixpkgs/trunk/pkgs/tools/misc/grub/1.98.nix
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ nixpkgs/trunk/pkgs/tools/misc/grub/1.98.nix Sat Apr  9 09:25:06 2011        
(r26761)
@@ -0,0 +1,79 @@
+{ fetchurl, stdenv, bison, gettext, ncurses, libusb, freetype, qemu }:
+
+let unifont_bdf = fetchurl {
+      url = "http://unifoundry.com/unifont-5.1.20080820.bdf.gz";;
+      sha256 = "0s0qfff6n6282q28nwwblp5x295zd6n71kl43xj40vgvdqxv0fxx";
+    };
+in
+
+stdenv.mkDerivation rec {
+  name = "grub-1.98";
+
+  src = fetchurl {
+    url = "ftp://alpha.gnu.org/gnu/grub/${name}.tar.gz";;
+    sha256 = "05660x82y2rwrzm0d1c4z07fbh02qwmacsmbbav6fa855s4w3wmy";
+  };
+
+  buildInputs = [ bison ncurses libusb freetype gettext ]
+    ++ stdenv.lib.optional doCheck qemu;
+
+  preConfigure =
+    '' for i in "tests/util/"*.in
+       do
+         sed -i "$i" -e's|/bin/bash|/bin/sh|g'
+       done
+
+       # Apparently, the QEMU executable is no longer called
+       # `qemu-system-i386', even on i386.
+       #
+       # In addition, use `-nodefaults' to avoid errors like:
+       #
+       #  chardev: opening backend "stdio" failed
+       #  qemu: could not open serial device 'stdio': Invalid argument
+       #
+       # See <http://www.mail-archive.com/[email protected]/msg22775.html>.
+       sed -i "tests/util/grub-shell.in" \
+           -e's/qemu-system-i386/qemu-system-x86_64 -nodefaults/g'
+    '';
+
+  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"
+    '';
+
+  doCheck = true;
+
+  meta = {
+    description = "GNU GRUB, the Grand Unified Boot Loader (2.x alpha)";
+
+    longDescription =
+      '' GNU GRUB is a Multiboot boot loader. It was derived from GRUB, GRand
+         Unified Bootloader, which was originally designed and implemented by
+         Erich Stefan Boleyn.
+
+         Briefly, the boot loader is the first software program that runs when 
a
+         computer starts.  It is responsible for loading and transferring
+         control to the operating system kernel software (such as the Hurd or
+         the Linux).  The kernel, in turn, initializes the rest of the
+         operating system (e.g., GNU).
+      '';
+
+    homepage = http://www.gnu.org/software/grub/;
+
+    license = "GPLv3+";
+
+    maintainers = [ stdenv.lib.maintainers.ludo ];
+    platforms = stdenv.lib.platforms.gnu;
+  };
+}

Added: nixpkgs/trunk/pkgs/tools/misc/grub/device-mapper-symlinks.patch
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ nixpkgs/trunk/pkgs/tools/misc/grub/device-mapper-symlinks.patch     Sat Apr 
 9 09:25:06 2011        (r26761)
@@ -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))
+       {

Modified: nixpkgs/trunk/pkgs/top-level/all-packages.nix
==============================================================================
--- nixpkgs/trunk/pkgs/top-level/all-packages.nix       Fri Apr  8 16:17:32 
2011        (r26760)
+++ nixpkgs/trunk/pkgs/top-level/all-packages.nix       Sat Apr  9 09:25:06 
2011        (r26761)
@@ -752,9 +752,13 @@
     buggyBiosCDSupport = getConfig ["grub" "buggyBiosCDSupport"] true;
   };
 
-  grub2 = callPackage ../tools/misc/grub/1.9x.nix { };
+  grub19x = callPackage ../tools/misc/grub/1.9x.nix { };
 
-  grub2_efi = callPackage ../tools/misc/grub/1.9x.nix { EFIsupport = true; };
+  grub198 = callPackage ../tools/misc/grub/1.98.nix { };
+
+  grub2 = grub19x;
+
+  # grub2_efi = callPackage ../tools/misc/grub/1.9x.nix { EFIsupport = true; };
 
   gssdp = callPackage ../development/libraries/gssdp {
     inherit (gnome) libsoup;
_______________________________________________
nix-commits mailing list
[email protected]
http://mail.cs.uu.nl/mailman/listinfo/nix-commits

Reply via email to