diff options
Diffstat (limited to 'debian')
-rw-r--r-- | debian/changelog | 7 | ||||
-rw-r--r-- | debian/patches/init_try_runsystem.gnu.patch | 69 | ||||
-rw-r--r-- | debian/patches/tmp_exec_startup.patch | 47 |
3 files changed, 122 insertions, 1 deletions
diff --git a/debian/changelog b/debian/changelog index db7e3394..42c54ed8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,7 +1,7 @@ hurd (20071119-1) UNRELEASED; urgency=low * New snapshot from CVS. - + Includes a port of Linux' IPv6 support by Stefan Siegl. + + Includes a port of Linux' IPv6 support by Stefan Siegl. (Closes: #274156) + debian/patches/glibc_stat_updates.patch: Removed, applied upstream. + debian/patches/libpthread_no-inline.patch: Likewise. @@ -23,6 +23,11 @@ hurd (20071119-1) UNRELEASED; urgency=low pflocal during bootup if this has not been done before (in the install case). * debian/hurd.dirs: Added servers/socket. + * debian/patches/init_try_runsystem.gnu.patch: New patch, try + /libexec/runsystem.gnu as well if /libexec/runsystem is not + available. + * debian/patches/tmp_exec_startup.patch: New patch, try to attach the + exec server to /tmp/exec if /servers/exec is not yet available. * debian/patches/diskfs_no_inherit_dir_group.patch: Update with better patch by Thomas Schwinge. * debian/patches/pfinet_dhcp.patch: Updated with new patch by Christian diff --git a/debian/patches/init_try_runsystem.gnu.patch b/debian/patches/init_try_runsystem.gnu.patch new file mode 100644 index 00000000..86220951 --- /dev/null +++ b/debian/patches/init_try_runsystem.gnu.patch @@ -0,0 +1,69 @@ +--- init/init.c 4 Feb 2006 18:39:33 -0000 1.131 ++++ init/init.c 19 Nov 2007 21:14:40 -0000 +@@ -1082,10 +1082,12 @@ + static void + launch_something (const char *why) + { ++ file_t something; + static unsigned int try; + static const char *const tries[] = + { + "/libexec/runsystem", ++ "/libexec/runsystem.gnu", + _PATH_BSHELL, + "/bin/shd", /* XXX */ + }; +@@ -1093,12 +1095,26 @@ + if (why) + error (0, 0, "%s %s", tries[try - 1], why); + +- if (try == 0 && start_child (tries[try++], &global_argv[1]) == 0) +- return; ++ something = file_name_lookup (tries[try], O_EXEC, 0); ++ if (something != MACH_PORT_NULL) ++ { ++ mach_port_deallocate (mach_task_self (), something); ++ if (try == 0 && start_child (tries[try++], &global_argv[1]) == 0) ++ return; ++ } ++ else ++ try++; + + while (try < sizeof tries / sizeof tries[0]) +- if (start_child (tries[try++], NULL) == 0) +- return; ++ { ++ something = file_name_lookup (tries[try], O_EXEC, 0); ++ if (something != MACH_PORT_NULL) ++ { ++ mach_port_deallocate (mach_task_self (), something); ++ if (start_child (tries[try++], NULL) == 0) ++ return; ++ } ++ } + + crash_system (); + } +--- daemons/console-run.c 26 Mar 2002 18:59:31 -0000 1.5 ++++ daemons/console-run.c 19 Nov 2007 20:16:15 -0000 +@@ -49,6 +49,7 @@ + main (int argc, char **argv) + { + mach_port_t consdev = get_console (); ++ mach_port_t runsystem; + char *consname; + + if (consdev == MACH_PORT_NULL) +@@ -62,6 +63,12 @@ + if (argc < 2) + error (1, 0, "Usage: %s PROGRAM [ARG...]", program_invocation_short_name); + ++ /* Check whether runsystem exists before opening a console for it. */ ++ runsystem = file_name_lookup (argv[1], O_RDONLY, 0); ++ if (runsystem == MACH_PORT_NULL) ++ error (127, errno, "cannot open file `%s' for execution", argv[1]); ++ mach_port_deallocate (mach_task_self (), runsystem); ++ + if (open_console (&consname)) + setenv ("FALLBACK_CONSOLE", consname, 1); + diff --git a/debian/patches/tmp_exec_startup.patch b/debian/patches/tmp_exec_startup.patch new file mode 100644 index 00000000..6b8416d4 --- /dev/null +++ b/debian/patches/tmp_exec_startup.patch @@ -0,0 +1,47 @@ +--- libdiskfs/boot-start.c 26 Mar 2002 14:59:52 -0000 1.60 ++++ libdiskfs/boot-start.c 19 Nov 2007 21:22:57 -0000 +@@ -126,8 +126,13 @@ + assert (_hurd_ports); + assert (_hurd_ports[INIT_PORT_CRDIR].port != MACH_PORT_NULL); + diskfs_exec = file_name_lookup (_SERVERS_EXEC, 0, 0); +- if (diskfs_exec == MACH_PORT_NULL) +- error (1, errno, "%s", _SERVERS_EXEC); ++ if (diskfs_exec == MACH_PORT_NULL) ++ { ++ /* Debian specifc work-around for install bootstrapping. */ ++ diskfs_exec = file_name_lookup ("/tmp/exec", 0, 0); ++ if (diskfs_exec == MACH_PORT_NULL) ++ error (1, errno, "%s", _SERVERS_EXEC); ++ } + else + { + #ifndef NDEBUG +@@ -177,8 +182,15 @@ + &retry, pathbuf, &execnode); + if (err) + { +- error (0, err, "cannot set translator on %s", _SERVERS_EXEC); +- mach_port_deallocate (mach_task_self (), diskfs_exec_ctl); ++ /* If /servers/exec is not available (which is the case during ++ installation, try /tmp/exec as well. */ ++ err = dir_lookup (root_pt, "/tmp/exec", O_NOTRANS, 0, ++ &retry, pathbuf, &execnode); ++ if (err) ++ { ++ error (0, err, "cannot set translator on %s", _SERVERS_EXEC); ++ mach_port_deallocate (mach_task_self (), diskfs_exec_ctl); ++ } + } + else + { +@@ -393,6 +405,10 @@ + + err = dir_lookup (rootport, _SERVERS_EXEC, flags|O_NOTRANS, 0, + &retry, pathbuf, real); ++ if (err) ++ /* Try /tmp/exec as well, in case we're installing. */ ++ err = dir_lookup (rootport, "/tmp/exec", flags|O_NOTRANS|O_CREAT, 0, ++ &retry, pathbuf, real); + assert_perror (err); + assert (retry == FS_RETRY_NORMAL); + assert (pathbuf[0] == '\0'); |