summaryrefslogtreecommitdiff
path: root/debian
diff options
context:
space:
mode:
Diffstat (limited to 'debian')
-rw-r--r--debian/changelog7
-rw-r--r--debian/patches/init_try_runsystem.gnu.patch69
-rw-r--r--debian/patches/tmp_exec_startup.patch47
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');