Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 7 Jun 2015 22:38:34 +0000 (UTC)
From:      Kris Moore <kmoore@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r388791 - in head/sysutils/grub2-pcbsd: . files
Message-ID:  <201506072238.t57McY3T051368@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kmoore
Date: Sun Jun  7 22:38:33 2015
New Revision: 388791
URL: https://svnweb.freebsd.org/changeset/ports/388791

Log:
  Opps, forgot to delete/add some of the updated patches in files/

Added:
  head/sysutils/grub2-pcbsd/files/patch-grub-core_lib_libgcrypt_src_types.h   (contents, props changed)
  head/sysutils/grub2-pcbsd/files/patch-grub-core_osdep_freebsd_getroot.c   (contents, props changed)
  head/sysutils/grub2-pcbsd/files/patch-grub-core_osdep_unix_getroot.c   (contents, props changed)
  head/sysutils/grub2-pcbsd/files/patch-grub-core_osdep_unix_platform.c   (contents, props changed)
  head/sysutils/grub2-pcbsd/files/patch-include_grub_emu_getroot.h   (contents, props changed)
  head/sysutils/grub2-pcbsd/files/patch-include_grub_gpt__partition.h   (contents, props changed)
  head/sysutils/grub2-pcbsd/files/patch-po_LINGUAS   (contents, props changed)
  head/sysutils/grub2-pcbsd/files/patch-util_grub-install.c   (contents, props changed)
  head/sysutils/grub2-pcbsd/files/patch-util_grub-mkconfig__lib.in   (contents, props changed)
  head/sysutils/grub2-pcbsd/files/patch-util_grub-probe.c   (contents, props changed)
Deleted:
  head/sysutils/grub2-pcbsd/files/patch-geom-label-support
  head/sysutils/grub2-pcbsd/files/patch-grub-core_disk_geli.c
  head/sysutils/grub2-pcbsd/files/patch-include_grub_gpt_partition.h
  head/sysutils/grub2-pcbsd/files/patch-util_grub-mkconfig_lib.in
  head/sysutils/grub2-pcbsd/pkg-install

Added: head/sysutils/grub2-pcbsd/files/patch-grub-core_lib_libgcrypt_src_types.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/grub2-pcbsd/files/patch-grub-core_lib_libgcrypt_src_types.h	Sun Jun  7 22:38:33 2015	(r388791)
@@ -0,0 +1,11 @@
+--- grub-core/lib/libgcrypt/src/types.h.orig	2014-03-03 16:00:26 UTC
++++ grub-core/lib/libgcrypt/src/types.h
+@@ -113,6 +113,8 @@
+ #endif
+ #endif
+ 
++typedef uint64_t u64;
++
+ typedef union {
+     int a;
+     short b;

Added: head/sysutils/grub2-pcbsd/files/patch-grub-core_osdep_freebsd_getroot.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/grub2-pcbsd/files/patch-grub-core_osdep_freebsd_getroot.c	Sun Jun  7 22:38:33 2015	(r388791)
@@ -0,0 +1,108 @@
+--- grub-core/osdep/freebsd/getroot.c.orig	2015-01-23 02:27:45 UTC
++++ grub-core/osdep/freebsd/getroot.c
+@@ -296,6 +296,105 @@ grub_util_get_grub_dev_os (const char *o
+   return grub_dev;
+ }
+ 
++int grub_util_check_geom_label(const char *name)
++{
++  struct gmesh mesh;
++  struct gclass *class;
++  struct ggeom *geom;
++  struct gprovider *pp;
++  struct gprovider *pplabel;
++  struct gconsumer *cp;
++  const char *geom_name;
++  const char *test_name;
++  int err;
++
++  err = geom_gettree (&mesh);
++  if (err != 0)
++    grub_util_error ("%s", _("couldn't open geom"));
++
++  LIST_FOREACH (class, &mesh.lg_class, lg_class)
++    if (strcasecmp (class->lg_name, "label") == 0)
++      break;
++  if (!class)
++    grub_util_error ("%s", _("couldn't find geom `label' class"));
++
++  if (strncmp (name, "/dev/", sizeof ("/dev/") - 1) == 0)
++    test_name = name + sizeof ("/dev/") - 1;
++  else
++    test_name = name;
++
++  LIST_FOREACH (geom, &class->lg_geom, lg_geom)
++    {
++     LIST_FOREACH(pp, &geom->lg_provider, lg_provider)
++       {
++         geom_name = pp->lg_name;
++         if (strcasecmp (geom_name, test_name) != 0)
++           continue;
++
++         LIST_FOREACH(cp, &geom->lg_consumer, lg_consumer)
++           {
++             pplabel = cp->lg_provider;
++             if (pplabel == NULL)
++               continue;
++	     return 1;
++           }
++        }
++    }
++  return 0;
++}
++
++const char *
++grub_util_convert_geom_label_to_dev (const char *name, int *full_path)
++{
++  struct gmesh mesh;
++  struct gclass *class;
++  struct ggeom *geom;
++  struct gprovider *pp;
++  struct gprovider *pplabel;
++  struct gconsumer *cp;
++  static char buf[256];
++  const char *geom_name;
++  int err;
++
++  grub_util_info ("Converting label '%s' to device", name);
++
++  err = geom_gettree (&mesh);
++  if (err != 0)
++    grub_util_error ("%s", _("couldn't open geom"));
++
++  LIST_FOREACH (class, &mesh.lg_class, lg_class)
++    if (strcasecmp (class->lg_name, "label") == 0)
++      break;
++  if (!class)
++    grub_util_error ("%s", _("couldn't find geom `label' class"));
++
++
++  LIST_FOREACH (geom, &class->lg_geom, lg_geom)
++    {
++     LIST_FOREACH(pp, &geom->lg_provider, lg_provider)
++       {
++         geom_name = pp->lg_name;
++         if (strcasecmp (geom_name, name) != 0)
++           continue;
++
++         LIST_FOREACH(cp, &geom->lg_consumer, lg_consumer)
++           {
++             pplabel = cp->lg_provider;
++             if (pplabel == NULL)
++               continue;
++
++             if ( full_path )
++               snprintf(buf, sizeof(buf), "/dev/%s", pplabel->lg_name);
++             else
++               snprintf(buf, sizeof(buf), "%s", pplabel->lg_name);
++	     return buf;
++           }
++        }
++    }
++  grub_util_error ("%s", _("couldn't convert gptid to real device name"));
++  return 0;
++}
++
+ /* FIXME: geom actually gives us the whole container hierarchy.
+    It can be used more efficiently than this.  */
+ void

Added: head/sysutils/grub2-pcbsd/files/patch-grub-core_osdep_unix_getroot.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/grub2-pcbsd/files/patch-grub-core_osdep_unix_getroot.c	Sun Jun  7 22:38:33 2015	(r388791)
@@ -0,0 +1,15 @@
+--- grub-core/osdep/unix/getroot.c.orig	2015-06-03 14:54:01 UTC
++++ grub-core/osdep/unix/getroot.c
+@@ -507,6 +507,12 @@ grub_guess_root_devices (const char *dir
+   if (!os_dev)
+     os_dev = find_root_devices_from_libzfs (dir);
+ 
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
++  if (os_dev)
++    if ( grub_util_check_geom_label(os_dev) )
++      os_dev = grub_util_convert_geom_label_to_dev (os_dev + sizeof ("/dev/") - 1, 1);
++#endif
++
+   if (os_dev)
+     {
+       char **cur;

Added: head/sysutils/grub2-pcbsd/files/patch-grub-core_osdep_unix_platform.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/grub2-pcbsd/files/patch-grub-core_osdep_unix_platform.c	Sun Jun  7 22:38:33 2015	(r388791)
@@ -0,0 +1,100 @@
+--- grub-core/osdep/unix/platform.c.orig	2014-03-03 16:00:26 UTC
++++ grub-core/osdep/unix/platform.c
+@@ -81,52 +81,8 @@ get_ofpathname (const char *dev)
+ static void
+ grub_install_remove_efi_entries_by_distributor (const char *efi_distributor)
+ {
+-  int fd;
+-  pid_t pid = grub_util_exec_pipe ((const char * []){ "efibootmgr", NULL }, &fd);
+-  char *line = NULL;
+-  size_t len = 0;
+-
+-  if (!pid)
+-    {
+-      grub_util_warn (_("Unable to open stream from %s: %s"),
+-		      "efibootmgr", strerror (errno));
+-      return;
+-    }
+-
+-  FILE *fp = fdopen (fd, "r");
+-  if (!fp)
+-    {
+-      grub_util_warn (_("Unable to open stream from %s: %s"),
+-		      "efibootmgr", strerror (errno));
+-      return;
+-    }
+-
+-  line = xmalloc (80);
+-  len = 80;
+-  while (1)
+-    {
+-      int ret;
+-      char *bootnum;
+-      ret = getline (&line, &len, fp);
+-      if (ret == -1)
+-	break;
+-      if (grub_memcmp (line, "Boot", sizeof ("Boot") - 1) != 0
+-	  || line[sizeof ("Boot") - 1] < '0'
+-	  || line[sizeof ("Boot") - 1] > '9')
+-	continue;
+-      if (!strcasestr (line, efi_distributor))
+-	continue;
+-      bootnum = line + sizeof ("Boot") - 1;
+-      bootnum[4] = '\0';
+-      if (!verbosity)
+-	grub_util_exec ((const char * []){ "efibootmgr", "-q",
+-	      "-b", bootnum,  "-B", NULL });
+-      else
+-	grub_util_exec ((const char * []){ "efibootmgr",
+-	      "-b", bootnum, "-B", NULL });
+-    }
+-
+-  free (line);
++  // We don't have efibootmgr on FreeBSD, have to set externally
++  return;
+ }
+ 
+ void
+@@ -134,40 +90,8 @@ grub_install_register_efi (grub_device_t
+ 			   const char *efifile_path,
+ 			   const char *efi_distributor)
+ {
+-  const char * efidir_disk;
+-  int efidir_part;
+-  efidir_disk = grub_util_biosdisk_get_osdev (efidir_grub_dev->disk);
+-  efidir_part = efidir_grub_dev->disk->partition ? efidir_grub_dev->disk->partition->number + 1 : 1;
+-
+-  if (grub_util_exec_redirect_null ((const char * []){ "efibootmgr", "--version", NULL }))
+-    {
+-      /* TRANSLATORS: This message is shown when required executable `%s'
+-	 isn't found.  */
+-      grub_util_error (_("%s: not found"), "efibootmgr");
+-    }
+-
+-  /* On Linux, we need the efivars kernel modules.  */
+-#ifdef __linux__
+-  grub_util_exec ((const char * []){ "modprobe", "-q", "efivars", NULL });
+-#endif
+-  /* Delete old entries from the same distributor.  */
+-  grub_install_remove_efi_entries_by_distributor (efi_distributor);
+-
+-  char *efidir_part_str = xasprintf ("%d", efidir_part);
+-
+-  if (!verbosity)
+-    grub_util_exec ((const char * []){ "efibootmgr", "-q",
+-	  "-c", "-d", efidir_disk,
+-	  "-p", efidir_part_str, "-w",
+-	  "-L", efi_distributor, "-l", 
+-	  efifile_path, NULL });
+-  else
+-    grub_util_exec ((const char * []){ "efibootmgr",
+-	  "-c", "-d", efidir_disk,
+-	  "-p", efidir_part_str, "-w",
+-	  "-L", efi_distributor, "-l", 
+-	  efifile_path, NULL });
+-  free (efidir_part_str);
++  // We don't have efibootmgr on FreeBSD, have to set externally
++  return;
+ }
+ 
+ void

Added: head/sysutils/grub2-pcbsd/files/patch-include_grub_emu_getroot.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/grub2-pcbsd/files/patch-include_grub_emu_getroot.h	Sun Jun  7 22:38:33 2015	(r388791)
@@ -0,0 +1,11 @@
+--- include/grub/emu/getroot.h.orig	2015-01-23 02:27:45 UTC
++++ include/grub/emu/getroot.h
+@@ -44,6 +44,8 @@ char *grub_util_get_grub_dev (const char
+ #if defined (__FreeBSD__) || defined(__FreeBSD_kernel__)
+ void grub_util_follow_gpart_up (const char *name, grub_disk_addr_t *off_out,
+ 				char **name_out);
++int grub_util_check_geom_label(const char *name);
++const char *grub_util_convert_geom_label_to_dev (const char *name, int *full_path);
+ #endif
+ 
+ #include <sys/stat.h>

Added: head/sysutils/grub2-pcbsd/files/patch-include_grub_gpt__partition.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/grub2-pcbsd/files/patch-include_grub_gpt__partition.h	Sun Jun  7 22:38:33 2015	(r388791)
@@ -0,0 +1,17 @@
+--- include/grub/gpt_partition.h.orig	2014-03-03 16:00:26 UTC
++++ include/grub/gpt_partition.h
+@@ -43,6 +43,14 @@ typedef struct grub_gpt_part_type grub_g
+     { 0x74, 0x4e, 0x65, 0x65, 0x64, 0x45, 0x46, 0x49 } \
+   }
+ 
++#define GRUB_GPT_PARTITION_TYPE_FREEBSD_BOOT \
++  { grub_cpu_to_le32_compile_time (0x83bd6b9d), \
++      grub_cpu_to_le16_compile_time (0x7f41), \
++      grub_cpu_to_le16_compile_time (0x11dc),	       \
++    { 0xbe, 0x0b, 0x00, 0x15, 0x60, 0xb8, 0x4f, 0x0f } \
++  }
++
++
+ #define GRUB_GPT_PARTITION_TYPE_LDM \
+   { grub_cpu_to_le32_compile_time (0x5808C8AAU),\
+       grub_cpu_to_le16_compile_time (0x7E8F), \

Added: head/sysutils/grub2-pcbsd/files/patch-po_LINGUAS
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/grub2-pcbsd/files/patch-po_LINGUAS	Sun Jun  7 22:38:33 2015	(r388791)
@@ -0,0 +1,5 @@
+--- po/LINGUAS.orig	2015-01-30 16:30:32 UTC
++++ po/LINGUAS
+@@ -1 +1 @@
+-ast ca da de de@hebrew de_CH en@arabic en@cyrillic en@greek en@hebrew en@piglatin en@quot eo es fi fr gl hu id it ja lt nb nl pa pl pt_BR ru sl sv tr uk vi zh_CN zh_TW
++ast ca da de eo es fi fr gl hu id it ja lt nb nl pa pl pt_BR ru sl sv tr uk vi zh_CN zh_TW

Added: head/sysutils/grub2-pcbsd/files/patch-util_grub-install.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/grub2-pcbsd/files/patch-util_grub-install.c	Sun Jun  7 22:38:33 2015	(r388791)
@@ -0,0 +1,19 @@
+--- util/grub-install.c.orig	2015-06-03 14:54:01 UTC
++++ util/grub-install.c
+@@ -236,7 +236,16 @@ argp_parser (int key, char *arg, struct 
+     case ARGP_KEY_ARG:
+       if (install_device)
+ 	grub_util_error ("%s", _("More than one install device?"));
++#if defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
++    /* Check if passing a FreeBSD geom label */
++    if ( grub_util_check_geom_label(arg) )
++      install_device = \
++        xstrdup(grub_util_convert_geom_label_to_dev (arg + sizeof ("/dev/") - 1, 1));
++    else
++      install_device = xstrdup (arg);
++#else
+       install_device = xstrdup (arg);
++#endif
+       return 0;
+ 
+     default:

Added: head/sysutils/grub2-pcbsd/files/patch-util_grub-mkconfig__lib.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/grub2-pcbsd/files/patch-util_grub-mkconfig__lib.in	Sun Jun  7 22:38:33 2015	(r388791)
@@ -0,0 +1,21 @@
+--- util/grub-mkconfig_lib.in.orig	2015-06-03 14:54:01 UTC
++++ util/grub-mkconfig_lib.in
+@@ -139,7 +139,17 @@ prepare_grub_to_access_device ()
+     echo "insmod ${module}"
+   done
+ 
+-  fs="`"${grub_probe}" --device $@ --target=fs`"
++  # KPM - 6-24-2013
++  # Add this work-around since GRUB doesn't like to identify ZFS
++  # partitions which are in a raidz configuration, gives Unknown FS error
++  # We can instead look at zpool to see if this device is used though
++  zpool status 2>/dev/null | grep -q "`echo ${device} | sed 's|/dev/||g'`"
++  if [ $? -eq 0 ] ; then
++     fs="zfs"
++  else
++     fs="`"${grub_probe}" --device $@ --target=fs`"
++  fi
++
+   for module in ${fs} ; do
+     echo "insmod ${module}"
+   done

Added: head/sysutils/grub2-pcbsd/files/patch-util_grub-probe.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sysutils/grub2-pcbsd/files/patch-util_grub-probe.c	Sun Jun  7 22:38:33 2015	(r388791)
@@ -0,0 +1,19 @@
+--- util/grub-probe.c.orig	2015-06-03 14:54:01 UTC
++++ util/grub-probe.c
+@@ -805,7 +805,16 @@ argp_parser (int key, char *arg, struct 
+ 
+     case ARGP_KEY_ARG:
+       assert (arguments->ndevices < arguments->device_max);
++#if defined (__FreeBSD__) || defined (__FreeBSD_kernel__)
++    /* Check if passing a FreeBSD geom label */
++    if ( grub_util_check_geom_label(arg) )
++      arguments->devices[arguments->ndevices++] = \
++	xstrdup(grub_util_convert_geom_label_to_dev (arg + sizeof ("/dev/") - 1, 1));
++    else
++      arguments->devices[arguments->ndevices++] = xstrdup(arg);
++#else
+       arguments->devices[arguments->ndevices++] = xstrdup(arg);
++#endif
+       break;
+ 
+     default:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201506072238.t57McY3T051368>