Package: grub2 Version: 1.99-22 Severity: normal Tags: patch pending Dear maintainer,
I've prepared an NMU for grub2 (versioned as 1.99-22.1) and uploaded it to DELAYED/7. Please feel free to tell me if I should delay it longer. Regards.
diff -u grub2-1.99/debian/changelog grub2-1.99/debian/changelog --- grub2-1.99/debian/changelog +++ grub2-1.99/debian/changelog @@ -1,3 +1,14 @@ +grub2 (1.99-22.1) unstable; urgency=low + + * Non-maintainer upload. + * Apply upstream patches for hurd-i386: + - Test inode number (Closes: #634799). + - Disable zfs code on GNU/Hurd (Closes: #670069). + - Add userland partition support (Closes: #670186). + * Fix packages build without libfuse (Closes: #670189). + + -- Samuel Thibault <sthiba...@debian.org> Fri, 08 Jun 2012 01:19:00 +0200 + grub2 (1.99-22) unstable; urgency=low [ Debconf translations ] diff -u grub2-1.99/debian/patches/series grub2-1.99/debian/patches/series --- grub2-1.99/debian/patches/series +++ grub2-1.99/debian/patches/series @@ -42,0 +43,3 @@ +dirlen.patch +hurd.patch +userland-part.patch only in patch2: unchanged: --- grub2-1.99.orig/debian/grub-mount-udeb.install.hurd-i386 +++ grub2-1.99/debian/grub-mount-udeb.install.hurd-i386 @@ -0,0 +1 @@ +usr/sbin/grub-probe only in patch2: unchanged: --- grub2-1.99.orig/debian/grub-common.install.hurd-i386 +++ grub2-1.99/debian/grub-common.install.hurd-i386 @@ -0,0 +1,37 @@ +../../debian/presubj usr/share/bug/grub-common +../../debian/apport/source_grub2.py usr/share/apport/package-hooks/ +../../debian/grub.d etc + +etc/bash_completion.d +etc/grub.d +usr/bin/grub-bin2h +usr/bin/grub-editenv +usr/bin/grub-fstest +usr/bin/grub-kbdcomp +usr/bin/grub-menulst2cfg +usr/bin/grub-mkfont +usr/bin/grub-mkimage +usr/bin/grub-mklayout +usr/bin/grub-mkpasswd-pbkdf2 +usr/bin/grub-mkrelpath +usr/bin/grub-script-check +usr/sbin/grub-mkconfig +usr/sbin/grub-mkdevicemap +usr/sbin/grub-probe +usr/share/grub +usr/share/locale +usr/share/man/man1/grub-bin2h.1 +usr/share/man/man1/grub-editenv.1 +usr/share/man/man1/grub-fstest.1 +usr/share/man/man1/grub-menulst2cfg.1 +usr/share/man/man1/grub-mkfont.1 +usr/share/man/man1/grub-mkimage.1 +usr/share/man/man1/grub-mklayout.1 +usr/share/man/man1/grub-mkpasswd-pbkdf2.1 +usr/share/man/man1/grub-mkrelpath.1 +usr/share/man/man1/grub-script-check.1 +usr/share/man/man8/grub-mkconfig.8 +usr/share/man/man8/grub-mkdevicemap.8 +usr/share/man/man8/grub-probe.8 +usr/bin/grub-mkrescue +usr/share/man/man1/grub-mkrescue.1 only in patch2: unchanged: --- grub2-1.99.orig/debian/patches/userland-part.patch +++ grub2-1.99/debian/patches/userland-part.patch @@ -0,0 +1,149 @@ +Description: Handle hurd userspace partitions. +Author: Samuel Thibault <samuel.thiba...@ens-lyon.org> +Origin: upstream, http://bazaar.launchpad.net/~vcs-imports/grub/grub2-bzr/revision/4290 +Forwarded: not-needed +Applied-Upstream: http://bazaar.launchpad.net/~vcs-imports/grub/grub2-bzr/revision/4290 +Last-Update: 2012-06-08 + +--- a/grub-core/kern/emu/getroot.c 2012-05-03 20:59:16 +0000 ++++ b/grub-core/kern/emu/getroot.c 2012-05-03 21:41:46 +0000 +@@ -337,6 +337,75 @@ + + #elif defined (__GNU__) + ++static char * ++find_hurd_root_device (const char *path) ++{ ++ file_t file; ++ error_t err; ++ char *argz = NULL, *name = NULL, *ret; ++ size_t argz_len = 0; ++ int i; ++ ++ file = file_name_lookup (path, 0, 0); ++ if (file == MACH_PORT_NULL) ++ grub_util_error ("cannot open `%s': %s", path, strerror (errno)); ++ ++ /* This returns catenated 0-terminated strings. */ ++ err = file_get_fs_options (file, &argz, &argz_len); ++ if (err) ++ grub_util_error ("cannot get filesystem options " ++ "for path `%s': %s", path, strerror(err)); ++ if (argz_len == 0) ++ /* TRANSLATORS: a "translator" is similar to a filesystem, but handled by a ++ * userland daemon. */ ++ grub_util_error ("translator is empty for path `%s'", path); ++ ++ /* Make sure the string is terminated. */ ++ argz[argz_len-1] = 0; ++ ++ /* Skip first word (translator path) and options. */ ++ for (i = strlen (argz) + 1; i < argz_len; i += strlen (argz + i) + 1) ++ { ++ if (argz[i] != '-') ++ { ++ /* Non-option. Only accept one, assumed to be the FS path. */ ++ /* XXX: this should be replaced by an RPC to the translator. */ ++ if (name) ++ /* TRANSLATORS: we expect to get something like ++ /hurd/foobar --option1 --option2=baz /dev/something ++ */ ++ grub_util_error ("translator `%s' for path `%s' has several " ++ "non-option words, at least `%s' and `%s'", ++ argz, path, name, argz + i); ++ name = argz + i; ++ } ++ } ++ ++ if (!name) ++ /* TRANSLATORS: we expect to get something like ++ /hurd/foobar --option1 --option2=baz /dev/something ++ */ ++ grub_util_error ("translator `%s' for path `%s' is given only options, " ++ "cannot find device part", argz, path); ++ ++ if (strncmp (name, "device:", sizeof ("device:") - 1) == 0) ++ { ++ char *dev_name = name + sizeof ("device:") - 1; ++ size_t size = sizeof ("/dev/") - 1 + strlen (dev_name) + 1; ++ char *next; ++ ret = malloc (size); ++ next = stpncpy (ret, "/dev/", size); ++ stpncpy (next, dev_name, size - (next - ret)); ++ } ++ else if (!strncmp (name, "file:", sizeof ("file:") - 1)) ++ ret = strdup (name + sizeof ("file:") - 1); ++ else ++ ret = strdup (name); ++ ++ munmap (argz, argz_len); ++ return ret; ++} ++ + #elif ! defined(__CYGWIN__) + + char * +@@ -565,61 +634,8 @@ + { + char *os_dev = NULL; + #ifdef __GNU__ +- file_t file; +- mach_port_t *ports; +- int *ints; +- loff_t *offsets; +- char *data; +- error_t err; +- mach_msg_type_number_t num_ports = 0, num_ints = 0, num_offsets = 0, data_len = 0; +- size_t name_len; +- +- file = file_name_lookup (dir, 0, 0); +- if (file == MACH_PORT_NULL) +- return 0; +- +- err = file_get_storage_info (file, +- &ports, &num_ports, +- &ints, &num_ints, +- &offsets, &num_offsets, +- &data, &data_len); +- +- if (num_ints < 1) +- grub_util_error ("Storage info for `%s' does not include type", dir); +- if (ints[0] != STORAGE_DEVICE) +- grub_util_error ("Filesystem of `%s' is not stored on local disk", dir); +- +- if (num_ints < 5) +- grub_util_error ("Storage info for `%s' does not include name", dir); +- name_len = ints[4]; +- if (name_len < data_len) +- grub_util_error ("Bogus name length for storage info for `%s'", dir); +- if (data[name_len - 1] != '\0') +- grub_util_error ("Storage name for `%s' not NUL-terminated", dir); +- +- os_dev = xmalloc (strlen ("/dev/") + data_len); +- memcpy (os_dev, "/dev/", strlen ("/dev/")); +- memcpy (os_dev + strlen ("/dev/"), data, data_len); +- +- if (ports && num_ports > 0) +- { +- mach_msg_type_number_t i; +- for (i = 0; i < num_ports; i++) +- { +- mach_port_t port = ports[i]; +- if (port != MACH_PORT_NULL) +- mach_port_deallocate (mach_task_self(), port); +- } +- munmap ((caddr_t) ports, num_ports * sizeof (*ports)); +- } +- +- if (ints && num_ints > 0) +- munmap ((caddr_t) ints, num_ints * sizeof (*ints)); +- if (offsets && num_offsets > 0) +- munmap ((caddr_t) offsets, num_offsets * sizeof (*offsets)); +- if (data && data_len > 0) +- munmap (data, data_len); +- mach_port_deallocate (mach_task_self (), file); ++ /* GNU/Hurd specific function. */ ++ os_dev = find_hurd_root_device (dir); + #else /* !__GNU__ */ + struct stat st; + dev_t dev; only in patch2: unchanged: --- grub2-1.99.orig/debian/patches/hurd.patch +++ grub2-1.99/debian/patches/hurd.patch @@ -0,0 +1,37 @@ +Description: Fix hurd build by disabling zfs code. +Author: Samuel Thibault <samuel.thiba...@ens-lyon.org> +Origin: upstream, http://bazaar.launchpad.net/~vcs-imports/grub/grub2-bzr/revision/4237 +Forwarded: not-needed +Applied-Upstream: http://bazaar.launchpad.net/~vcs-imports/grub/grub2-bzr/revision/4237 +Last-Update: 2012-06-08 + +--- a/grub-core/kern/emu/getroot.c 2012-04-21 14:49:56 +0000 ++++ b/grub-core/kern/emu/getroot.c 2012-04-22 19:02:55 +0000 +@@ -241,6 +241,8 @@ + + #endif /* __linux__ */ + ++#if !defined (__GNU__) ++ + static char * + find_device_from_pool (const char *poolname) + { +@@ -322,6 +323,8 @@ + return device; + } + ++#endif ++ + #ifdef __MINGW32__ + + char * +@@ -331,6 +331,8 @@ + return 0; + } + ++#elif defined (__GNU__) ++ + #elif ! defined(__CYGWIN__) + + char * + only in patch2: unchanged: --- grub2-1.99.orig/debian/patches/dirlen.patch +++ grub2-1.99/debian/patches/dirlen.patch @@ -0,0 +1,19 @@ +Description: Ignore entries with direct.inode = 0. +Author: Samuel Thibault <samuel.thiba...@ens-lyon.org> +Origin: upstream, http://bazaar.launchpad.net/~vcs-imports/grub/grub2-bzr/revision/3749 +Forwarded: not-needed +Applied-Upstream: http://bazaar.launchpad.net/~vcs-imports/grub/grub2-bzr/revision/3749 +Last-Update: 2012-06-08 + +--- a/grub-core/fs/ext2.c 2012-01-14 10:30:43 +0000 ++++ b/grub-core/fs/ext2.c 2012-01-14 10:55:20 +0000 +@@ -685,7 +685,7 @@ grub_ext2_iterate_dir (grub_fshelp_node_ + if (dirent.direntlen == 0) + return 0; + +- if (dirent.namelen != 0) ++ if (dirent.inode != 0 && dirent.namelen != 0) + { + char filename[dirent.namelen + 1]; + struct grub_fshelp_node *fdiro; +