Hi,

r1302 was a change I introduced to make device.map work on non-i386.  However,
with time it appears that it wasn't really a good idea.  The powerpc version
is fragile (see #465365 for an example of breakage), and nobody's really into
maintaining the powerpc-ieee1275 port nowadays.

Then, at some point we started favouring UUIDs over hardcoded drive names in
device.map.  As a result, even if your device.map names like hd0 are
meaningless on ieee1275, this won't matter because grub.cfg uses UUIDs to
access everything (and GRUB itself finds grub.cfg by asking the OFW).

So I propose reverting it (along with the changes that propagated to other
files).  See attached patch.

-- 
Robert Millan

  The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and
  how) you may access your data; but nobody's threatening your freedom: we
  still allow you to remove your data and not access it at all."
2008-09-07  Robert Millan  <[EMAIL PROTECTED]>

	* conf/i386-pc.rmk (grub_mkdevicemap_SOURCES): Remove
	`util/i386/get_disk_name.c'.
	* conf/i386-efi.rmk: Likewise.
	* conf/x86_64-efi.rmk: Likewise.
	* conf/i386-coreboot.rmk: Likewise.
	* conf/i386-ieee1275.rmk: Likewise.
	* conf/powerpc-ieee1275.rmk (grub_mkdevicemap_SOURCES): Remove
	`util/ieee1275/get_disk_name.c'.
	* include/grub/util/misc.h (grub_util_get_disk_name): Remove.
	* util/ieee1275/get_disk_name.c: Remove file.
	* util/i386/get_disk_name.c: Remove file.
	* util/grub-mkdevicemap.c (make_device_map): Back to hardcoding
	"hd%d" for device.map entries, rather than using
	grub_util_get_disk_name().

Index: conf/i386-pc.rmk
===================================================================
--- conf/i386-pc.rmk	(revision 1857)
+++ conf/i386-pc.rmk	(working copy)
@@ -108,8 +108,7 @@ grub_setup_SOURCES = util/i386/pc/grub-s
 	grub_setup_init.c
 
 # For grub-mkdevicemap.
-grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c		\
-	util/i386/get_disk_name.c
+grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c
 
 # For grub-emu.
 util/grub-emu.c_DEPENDENCIES = grub_emu_init.h
Index: conf/i386-efi.rmk
===================================================================
--- conf/i386-efi.rmk	(revision 1857)
+++ conf/i386-efi.rmk	(working copy)
@@ -28,8 +28,7 @@ util/i386/efi/grub-mkimage.c_DEPENDENCIE
 #	kern/fs.c kern/env.c fs/fshelp.c
 
 # For grub-mkdevicemap.
-grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c		\
-	util/i386/get_disk_name.c
+grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c
 
 # For grub-emu.
 util/grub-emu.c_DEPENDENCIES = grub_emu_init.h
Index: conf/x86_64-efi.rmk
===================================================================
--- conf/x86_64-efi.rmk	(revision 1857)
+++ conf/x86_64-efi.rmk	(working copy)
@@ -30,8 +30,7 @@ grub_mkimage_SOURCES = util/i386/efi/gru
 #	kern/fs.c kern/env.c fs/fshelp.c
 
 # For grub-mkdevicemap.
-grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c		\
-	util/i386/get_disk_name.c
+grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c
 
 # For grub-emu.
 util/grub-emu.c_DEPENDENCIES = grub_emu_init.h
Index: conf/i386-coreboot.rmk
===================================================================
--- conf/i386-coreboot.rmk	(revision 1857)
+++ conf/i386-coreboot.rmk	(working copy)
@@ -51,8 +51,7 @@ sbin_UTILITIES += grub-emu
 endif
 
 # For grub-mkdevicemap.
-grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c		\
-	util/i386/get_disk_name.c
+grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c
 
 # For grub-emu.
 util/grub-emu.c_DEPENDENCIES = grub_emu_init.h
Index: conf/powerpc-ieee1275.rmk
===================================================================
--- conf/powerpc-ieee1275.rmk	(revision 1856)
+++ conf/powerpc-ieee1275.rmk	(working copy)
@@ -34,8 +34,7 @@ sbin_UTILITIES += grub-emu
 endif
  
 # For grub-mkdevicemap.
-grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c		\
-	util/ieee1275/get_disk_name.c
+grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c
 
 # For grub-emu
 util/grub-emu.c_DEPENDENCIES = grub_emu_init.h
Index: conf/i386-ieee1275.rmk
===================================================================
--- conf/i386-ieee1275.rmk	(revision 1857)
+++ conf/i386-ieee1275.rmk	(working copy)
@@ -48,8 +48,7 @@ sbin_UTILITIES += grub-emu
 endif
 
 # For grub-mkdevicemap.
-grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c		\
-	util/i386/get_disk_name.c
+grub_mkdevicemap_SOURCES = util/grub-mkdevicemap.c util/misc.c
 
 # For grub-emu.
 util/grub-emu.c_DEPENDENCIES = grub_emu_init.h
Index: include/grub/util/misc.h
===================================================================
--- include/grub/util/misc.h	(revision 1856)
+++ include/grub/util/misc.h	(working copy)
@@ -56,7 +56,6 @@ void grub_util_load_image (const char *p
 void grub_util_write_image (const char *img, size_t size, FILE *out);
 void grub_util_write_image_at (const void *img, size_t size, off_t offset,
 			       FILE *out);
-char *grub_util_get_disk_name (int disk, char *name);
 
 #ifndef  HAVE_ASPRINTF
 
Index: util/ieee1275/get_disk_name.c
===================================================================
--- util/ieee1275/get_disk_name.c	(revision 1856)
+++ util/ieee1275/get_disk_name.c	(working copy)
@@ -1,61 +0,0 @@
-/* get_disk_name.c */
-/*
- *  GRUB  --  GRand Unified Bootloader
- *  Copyright (C) 2007 Free Software Foundation, Inc.
- *
- *  GRUB is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  GRUB is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <config.h>
-#include <stdio.h>
-#include <grub/util/misc.h>
-
-char *
-grub_util_get_disk_name (int disk __attribute__ ((unused)), char *name)
-{
-  int p[2];
-
-  char *line = NULL;
-  size_t zero = 0;
-  int len;
-
-  pipe (p);
-
-  switch (fork ())
-    {
-    case -1:
-      perror ("fork");
-      exit (1);
-    case 0:
-      close (1);
-      dup (p[1]);
-      close (p[0]);
-      close (p[1]);
-      execlp ("ofpathname", "ofpathname", "-a", name, NULL);
-      perror ("execlp");
-    default:
-      close (0);
-      dup (p[0]);
-      close (p[0]);
-      close (p[1]);
-    }
-
-  len = getline (&line, &zero, stdin);
-  if (len < 2)
-    grub_util_error ("ofpathname didn't print a meaningful alias name");
-
-  line[len - 1] = '\0';
-  
-  return line;
-}
Index: util/i386/get_disk_name.c
===================================================================
--- util/i386/get_disk_name.c	(revision 1856)
+++ util/i386/get_disk_name.c	(working copy)
@@ -1,31 +0,0 @@
-/* get_disk_name.c */
-/*
- *  GRUB  --  GRand Unified Bootloader
- *  Copyright (C) 2007 Free Software Foundation, Inc.
- *
- *  GRUB is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  GRUB is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <grub/util/misc.h>
-
-char *
-grub_util_get_disk_name (int disk, char *name  __attribute__ ((unused)))
-{
-  char *p;
-
-  p = xmalloc (16);
-  sprintf (p, "hd%d", disk);
-  
-  return p;
-}
Index: util/grub-mkdevicemap.c
===================================================================
--- util/grub-mkdevicemap.c	(revision 1856)
+++ util/grub-mkdevicemap.c	(working copy)
@@ -450,11 +450,8 @@ make_device_map (const char *device_map,
 	  
 	  if (realpath (discn, name))
 	    {
-	      char *p;
 	      strcat (name, "/disc");
-	      p = grub_util_get_disk_name (num_hd, name);
-	      fprintf (fp, "(%s)\t%s\n", p, name);
-	      free (p);
+	      fprintf (fp, "(hd%d)\t%s\n", num_hd, name);
 	    }
 	  
 	  num_hd++;
@@ -472,10 +469,7 @@ make_device_map (const char *device_map,
       get_ide_disk_name (name, i);
       if (check_device (name))
 	{
-	  char *p;
-	  p = grub_util_get_disk_name (num_hd, name);
-	  fprintf (fp, "(%s)\t%s\n", p, name);
-	  free (p);
+	  fprintf (fp, "(hd%d)\t%s\n", num_hd, name);
 	  num_hd++;
 	}
     }
@@ -505,10 +499,7 @@ make_device_map (const char *device_map,
       get_ataraid_disk_name (name, i);
       if (check_device (name))
 	{
-	  char *p;
-	  p = grub_util_get_disk_name (num_hd, name);
-	  fprintf (fp, "(%s)\t%s\n", p, name);
-	  free (p);
+	  fprintf (fp, "(hd%d)\t%s\n", num_hd, name);
           num_hd++;
         }
     }
@@ -538,10 +529,7 @@ make_device_map (const char *device_map,
       get_scsi_disk_name (name, i);
       if (check_device (name))
 	{
-	  char *p;
-	  p = grub_util_get_disk_name (num_hd, name);
-	  fprintf (fp, "(%s)\t%s\n", p, name);
-	  free (p);
+	  fprintf (fp, "(hd%d)\t%s\n", num_hd, name);
 	  num_hd++;
 	}
     }
@@ -564,10 +552,7 @@ make_device_map (const char *device_map,
 	    get_dac960_disk_name (name, controller, drive);
 	    if (check_device (name))
 	      {
-		char *p;
-		p = grub_util_get_disk_name (num_hd, name);
-		fprintf (fp, "(%s)\t%s\n", p, name);
-		free (p);
+		fprintf (fp, "(hd%d)\t%s\n", num_hd, name);
 		num_hd++;
 	      }
 	  }
@@ -633,10 +618,7 @@ make_device_map (const char *device_map,
 	get_i2o_disk_name (name, unit);
 	if (check_device (name))
 	  {
-	    char *p;
-	    p = grub_util_get_disk_name (num_hd, name);
-	    fprintf (fp, "(%s)\t%s\n", p, name);
-	    free (p);
+	    fprintf (fp, "(hd%d)\t%s\n", num_hd, name);
 	    num_hd++;
 	  }
       }
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to