summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/changelog28
-rw-r--r--debian/control2
-rw-r--r--debian/hurd.links1
-rw-r--r--debian/hurd.postinst3
-rw-r--r--debian/patches/MAKEDEV-apm.patch16
-rw-r--r--debian/patches/console_ignore_bdf_err.patch3
-rw-r--r--debian/patches/dl_origin.patch113
-rw-r--r--debian/patches/exec_filename_fs.patch750
-rw-r--r--debian/patches/external.patch55
-rw-r--r--debian/patches/init_try_runsystem.gnu.patch19
-rw-r--r--debian/patches/libexec.patch56
-rw-r--r--debian/patches/makedev.diff2
-rw-r--r--debian/patches/mount.patch4
-rw-r--r--debian/patches/newRPC.patch19
-rw-r--r--debian/patches/posix-sigcodes.patch14
-rw-r--r--debian/patches/rc.patch91
-rw-r--r--debian/patches/run.patch16
-rw-r--r--debian/patches/series9
-rw-r--r--debian/patches/startup-usr-support.patch4
-rw-r--r--debian/patches/term-for-tcl.patch23
-rw-r--r--debian/patches/tmp_exec_startup.patch14
21 files changed, 841 insertions, 401 deletions
diff --git a/debian/changelog b/debian/changelog
index 720a7666..90d370fd 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,5 +1,29 @@
-hurd (1:0.6.git20150704-4) UNRELEASED; urgency=medium
+hurd (1:0.7-1) unstable; urgency=medium
+ * New upstream release
+
+ -- Samuel Thibault <sthibault@debian.org> Thu, 05 Nov 2015 00:20:12 +0000
+
+hurd (1:0.6.git20151012-1) unstable; urgency=medium
+
+ * New upstream snapshot.
+ * hurd.links: Add poweroff-hurd.
+
+ -- Samuel Thibault <sthibault@debian.org> Mon, 12 Oct 2015 22:08:31 +0000
+
+hurd (1:0.6.git20150922-1) unstable; urgency=medium
+
+ * New upstream snapshot.
+ - libdde_netdev_tx_t.patch, libdde_pci-needs_freset.patch,
+ libdde_addr_list.patch, libdde_ucast_list.patch, libdde_addr_fix.patch,
+ libdde_group_addr.patch, libdde_rculist.patch, libdde_dma_head.patch,
+ libdde_mdio.patch, libdde_ethoc.patch, libdde_phy.patch,
+ libdde_pci_ids.h.patch, libdde_ethtool.patch, libdde_workqueue.patch,
+ libdde_trans_start.patch, libdde_devres.patch, libdde_pr_cont.patch,
+ libdde_rx_queue.patch, libdde_rcu.patch: Merged.
+ - fix-payload-pflocal.patch, fakeroot-access.patch, glibc_2.21.patch,
+ format: Merged.
+ - exec_filename_fs.patch: Refresh.
* Upgrade to compat 9.
* Add a noudeb build profile.
* Add stage1 and stage2 build profiles for cross-bootstrapping hurd.
@@ -7,7 +31,7 @@ hurd (1:0.6.git20150704-4) UNRELEASED; urgency=medium
* Bump fakeroot-hurd priority so it becomes the default.
* Fix build against glibc 2.21.
- -- Samuel Thibault <sthibault@debian.org> Tue, 18 Aug 2015 10:50:47 +0000
+ -- Samuel Thibault <sthibault@debian.org> Tue, 22 Sep 2015 19:06:22 +0000
hurd (1:0.6.git20150704-3) unstable; urgency=medium
diff --git a/debian/control b/debian/control
index fc3f9ebf..cb19a06f 100644
--- a/debian/control
+++ b/debian/control
@@ -5,7 +5,7 @@ Maintainer: GNU Hurd Maintainers <debian-hurd@lists.debian.org>
Standards-Version: 3.9.6
Build-Depends: mig (>= 1.4-3~) <!stage1 !stage2>, gnumach-dev (>= 1.4+git20141109~) <!stage1 !stage2>,
libc0.3-dev (>= 2.17-94~) <!stage1>, texinfo, libncursesw5-dev <!stage1 !stage2>,
- debhelper (>= 9), dh-exec (>= 0.15), autoconf, dh-autoreconf,
+ debhelper (>= 9), dh-exec (>= 0.17), autoconf, dh-autoreconf,
libparted-dev <!stage1 !stage2>, libpciaccess-dev <!stage1 !stage2>, libx11-dev <!stage1 !stage2>, x11proto-core-dev <!stage1 !stage2>, pkg-config <!stage1 !stage2>,
xkb-data <!stage1 !stage2>, gawk, flex, bison, autotools-dev, libdaemon-dev <!stage1 !stage2>, libpcap0.8-dev <!stage1 !stage2>,
zlib1g-dev <!stage1 !stage2>, libbz2-dev <!stage1 !stage2>, uuid-dev <!stage1 !stage2>, libblkid-dev <!stage1 !stage2>
diff --git a/debian/hurd.links b/debian/hurd.links
index d1481a66..251c92ff 100644
--- a/debian/hurd.links
+++ b/debian/hurd.links
@@ -1 +1,2 @@
/usr/src/unifont.bdf /usr/share/hurd/vga-system.bdf
+/sbin/halt-hurd /sbin/poweroff-hurd
diff --git a/debian/hurd.postinst b/debian/hurd.postinst
index 081c039b..da7d26a4 100644
--- a/debian/hurd.postinst
+++ b/debian/hurd.postinst
@@ -10,7 +10,8 @@ fi
update-alternatives --quiet \
--install /etc/hurd/runsystem runsystem /etc/hurd/runsystem.gnu 5 \
--slave /sbin/halt halt /sbin/halt-hurd \
- --slave /sbin/reboot reboot /sbin/reboot-hurd
+ --slave /sbin/reboot reboot /sbin/reboot-hurd \
+ --slave /sbin/poweroff poweroff /sbin/poweroff-hurd
update-alternatives \
--install /usr/bin/fakeroot fakeroot /usr/bin/fakeroot-hurd 60
diff --git a/debian/patches/MAKEDEV-apm.patch b/debian/patches/MAKEDEV-apm.patch
new file mode 100644
index 00000000..eb539129
--- /dev/null
+++ b/debian/patches/MAKEDEV-apm.patch
@@ -0,0 +1,16 @@
+Workaround invocations from installation of power-management packages.
+
+Index: hurd-debian/sutils/MAKEDEV.sh
+===================================================================
+--- hurd-debian.orig/sutils/MAKEDEV.sh
++++ hurd-debian/sutils/MAKEDEV.sh
+@@ -223,6 +223,9 @@ mkdev() {
+ st $I root 640 /hurd/null
+ ;;
+
++ apm)
++ ;;
++
+ *)
+ lose "$I: Unknown device name"
+ ;;
diff --git a/debian/patches/console_ignore_bdf_err.patch b/debian/patches/console_ignore_bdf_err.patch
index c3ea30cb..ac6e6a53 100644
--- a/debian/patches/console_ignore_bdf_err.patch
+++ b/debian/patches/console_ignore_bdf_err.patch
@@ -1,4 +1,5 @@
-reduce-font overestimates the number of characters in the font.
+reduce-font overestimates the number of characters in the font. This should be
+fixed there, not here.
diff --git a/console-client/bdf.c b/console-client/bdf.c
index 30501f4..ee8aa30 100644
diff --git a/debian/patches/dl_origin.patch b/debian/patches/dl_origin.patch
new file mode 100644
index 00000000..e1750dfb
--- /dev/null
+++ b/debian/patches/dl_origin.patch
@@ -0,0 +1,113 @@
+Add basic support for $ORIGIN rpath expansion
+
+This only supports absolute paths, which is enough for ghc, but won't be enough
+for other uses. Perhaps it would be better to support it in glibc instead?
+
+Index: hurd-debian/exec/exec.c
+===================================================================
+--- hurd-debian.orig/exec/exec.c
++++ hurd-debian/exec/exec.c
+@@ -890,7 +890,7 @@ do_exec (file_t file,
+ secure = (flags & EXEC_SECURE);
+ defaults = (flags & EXEC_DEFAULTS);
+
+- /* Now record the big blocks of data we shuffle around unchanged.
++ /* Now record the big blocks of data we shuffle around.
+ Whatever arrived inline, we must allocate space for so it can
+ survive after this RPC returns. */
+
+@@ -901,11 +901,91 @@ do_exec (file_t file,
+ goto stdout;
+ boot->argv = argv;
+ boot->argvlen = argvlen;
+- envp = servercopy (envp, envplen, envp_copy, &e.error);
+- if (e.error)
+- goto stdout;
++
++ if (filename && filename[0] == '/')
++ {
++ /* Explicit absolute filename, put its dirname in the LD_ORIGIN_PATH
++ environment variable for $ORIGIN rpath expansion.
++ XXX: thus does not work with relative paths. */
++ const char *end = strrchr (filename, '/');
++ size_t pathlen;
++ const char ld_origin_s[] = "\0LD_ORIGIN_PATH=";
++ const char *existing;
++ size_t existing_len = 0;
++ size_t new_envplen;
++ char *new_envp;
++
++ /* Drop trailing slashes. */
++ while (end > filename && end[-1] == '/')
++ end--;
++
++ if (end == filename)
++ /* Root, keep explicit heading/trailing slash. */
++ end++;
++
++ pathlen = end - filename;
++
++ if (memcmp (envp, ld_origin_s + 1, sizeof (ld_origin_s) - 2) == 0)
++ /* Existing variable at the beginning of envp. */
++ existing = envp - 1;
++ else
++ /* Look for the definition. */
++ existing = memmem (envp, envplen, ld_origin_s, sizeof (ld_origin_s) - 1);
++
++ if (existing)
++ {
++ /* Definition already exists, just replace the content. */
++ existing += sizeof (ld_origin_s) - 1;
++ existing_len = strnlen (existing, envplen - (existing - envp));
++
++ /* Allocate room for the new content. */
++ new_envplen = envplen - existing_len + pathlen;
++ new_envp = mmap (0, new_envplen,
++ PROT_READ|PROT_WRITE, MAP_ANON, 0, 0);
++ if (new_envp == MAP_FAILED)
++ {
++ e.error = errno;
++ goto stdout;
++ }
++
++ /* And copy. */
++ memcpy (new_envp, envp, existing - envp);
++ memcpy (new_envp + (existing - envp), filename, pathlen);
++ memcpy (new_envp + (existing - envp) + pathlen,
++ existing + existing_len,
++ envplen - ((existing - envp) + existing_len));
++ }
++ else
++ {
++ /* No existing definition, prepend one. */
++ new_envplen = sizeof (ld_origin_s) - 1 + pathlen + envplen;
++ new_envp = mmap (0, new_envplen,
++ PROT_READ|PROT_WRITE, MAP_ANON, 0, 0);
++
++ memcpy (new_envp, ld_origin_s + 1, sizeof (ld_origin_s) - 2);
++ memcpy (new_envp + sizeof (ld_origin_s) - 2, filename, pathlen);
++ new_envp [sizeof (ld_origin_s) - 2 + pathlen] = 0;
++ memcpy (new_envp + sizeof (ld_origin_s) - 2 + pathlen + 1, envp, envplen);
++ }
++
++ if (! envp_copy)
++ /* Deallocate original environment */
++ munmap (envp, envplen);
++
++ envp = new_envp;
++ envplen = new_envplen;
++ }
++ else
++ {
++ /* No explicit filename, just copy the existing environment */
++ envp = servercopy (envp, envplen, envp_copy, &e.error);
++ if (e.error)
++ goto stdout;
++ }
++
+ boot->envp = envp;
+ boot->envplen = envplen;
++
+ dtable = servercopy (dtable, dtablesize * sizeof (mach_port_t),
+ dtable_copy, &e.error);
+ if (e.error)
diff --git a/debian/patches/exec_filename_fs.patch b/debian/patches/exec_filename_fs.patch
index b8146f38..28afb2bc 100644
--- a/debian/patches/exec_filename_fs.patch
+++ b/debian/patches/exec_filename_fs.patch
@@ -1,8 +1,34 @@
-diff --git a/TODO b/TODO
-index de2a199..9fdb86f 100644
---- a/TODO
-+++ b/TODO
-@@ -131,7 +131,7 @@ See `tasks', the exported task list.
+From ba528e4a9db131112aa09edfdbb3449b55618578 Mon Sep 17 00:00:00 2001
+From: Emilio Pozuelo Monfort <pochu27@gmail.com>
+Date: Wed, 26 May 2010 01:27:40 +0200
+Subject: [PATCH 2/3] Add a file_exec_file_name RPC
+
+* hurd/fs.defs (file_exec): Deprecate in favor of...
+(file_exec_file_name): ...this new RPC.
+Change all implementations and forward old implementations to
+the new version. Change all callers but fallback to old version.
+Change comments and documentation.
+---
+ TODO | 2 +-
+ doc/hurd.texi | 16 ++++----
+ exec/hashexec.c | 32 ++++++++++----
+ hurd/fs.defs | 28 +++++++++++--
+ hurd/hurd_types.h | 9 ++--
+ startup/startup.c | 81 ++++++++++++++++++++++++++----------
+ libdiskfs/boot-start.c | 2 +-
+ libdiskfs/file-exec.c | 75 ++++++++++++++++++++++++++++------
+ libfshelp/start-translator-long.c | 21 +++++++---
+ libnetfs/file-exec.c | 67 ++++++++++++++++++++++++++----
+ libtrivfs/file-exec.c | 27 ++++++++++++-
+ trans/fakeroot.c | 59 ++++++++++++++++++++++++---
+ utils/login.c | 23 +++++++---
+ 13 files changed, 350 insertions(+), 92 deletions(-)
+
+Index: hurd-debian/TODO
+===================================================================
+--- hurd-debian.orig/TODO
++++ hurd-debian/TODO
+@@ -133,7 +133,7 @@ See `tasks', the exported task list.
** libtrivfs
*** Allow for read/write/exec to be passed down.
@@ -11,24 +37,56 @@ index de2a199..9fdb86f 100644
*** Provide for the visible owner, etc., to be held in command-line args
instead of the underlying node, when it's important. !!
-diff --git a/configure.ac b/configure.ac
-index b03057b..b3abe1a 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -162,6 +162,8 @@ else
- VERSIONING=no
- fi
- AC_SUBST(VERSIONING)
-+# Check if libc contains these functions.
-+AC_CHECK_FUNCS(file_exec_file_name exec_exec_file_name)
+Index: hurd-debian/doc/hurd.texi
+===================================================================
+--- hurd-debian.orig/doc/hurd.texi
++++ hurd-debian/doc/hurd.texi
+@@ -2737,10 +2737,10 @@ write the file.
+ @node Program Execution
+ @subsection Program Execution
+-@findex file_exec
++@findex file_exec_file_name
+ Execution of programs on the Hurd is done through fileservers with the
+-@code{file_exec} RPC. The fileserver is expected to verify that the
+-user is allowed to execute the file, make whatever modifications to the
++@code{file_exec_file_name} RPC. The fileserver is expected to verify that
++the user is allowed to execute the file, make whatever modifications to the
+ ports are necessary for setuid execution, and then invoke the standard
+ execserver found on @file{/servers/exec}.
- # From glibc HEAD, 2007-11-07.
-diff --git a/exec/hashexec.c b/exec/hashexec.c
-index e53d2ee..36fcfb7 100644
---- a/exec/hashexec.c
-+++ b/exec/hashexec.c
-@@ -23,6 +23,9 @@
+@@ -2752,13 +2752,13 @@ The file must be opened for execution; i
+ be returned. In addition, at least one of the execute bits must be on. A
+ failure of this check should result in @code{EACCES}---not
+ @code{ENOEXEC}. It is not proper for the fileserver ever to respond to
+-the @code{file_exec} RPC with @code{ENOEXEC}.
++the @code{file_exec_file_name} RPC with @code{ENOEXEC}.
+
+ If either the setuid or setgid bits are set, the server needs to
+ construct a new authentication handle with the additional new ID's.
+-Then all the ports passed to @code{file_exec} need to be reauthenticated
+-with the new handle. If the fileserver is unable to make the new
+-authentication handle (for example, because it is not running as root)
++Then all the ports passed to @code{file_exec_file_name} need to be
++reauthenticated with the new handle. If the fileserver is unable to make the
++new authentication handle (for example, because it is not running as root)
+ it is not acceptable to return an error; in such a case the server
+ should simply silently fail to implement the setuid/setgid semantics.
+
+@@ -2773,7 +2773,7 @@ will not share any file pointers with th
+ opened with @code{O_READ}. Finally, all the information (mutated
+ appropriately for setuid/setgid) should be sent to the execserver with
+ @code{exec_exec_file_name}. Whatever error code @code{exec_exec_file_name}
+-returns should be returned to the caller of @code{file_exec}.
++returns should be returned to the caller of @code{file_exec_file_name}.
+
+ @node File Locking
+ @subsection File Locking
+Index: hurd-debian/exec/hashexec.c
+===================================================================
+--- hurd-debian.orig/exec/hashexec.c
++++ hurd-debian/exec/hashexec.c
+@@ -24,6 +24,9 @@ the Free Software Foundation, 675 Mass A
#include <unistd.h>
#include <envz.h>
#include <sys/param.h>
@@ -38,7 +96,7 @@ index e53d2ee..36fcfb7 100644
/* This is called to check E for a #! interpreter specification. E has
already been prepared (successfully) and checked (unsuccessfully). If
-@@ -415,16 +418,32 @@ check_hashbang (struct execdata *e,
+@@ -421,16 +424,32 @@ check_hashbang (struct execdata *e,
/* We cannot open the interpreter file to execute it. Lose! */
return;
@@ -80,10 +138,10 @@ index e53d2ee..36fcfb7 100644
mach_port_deallocate (mach_task_self (), interp_file);
munmap (new_argv, new_argvlen);
-diff --git a/hurd/fs.defs b/hurd/fs.defs
-index a4a48cc..1322237 100644
---- a/hurd/fs.defs
-+++ b/hurd/fs.defs
+Index: hurd-debian/hurd/fs.defs
+===================================================================
+--- hurd-debian.orig/hurd/fs.defs
++++ hurd-debian/hurd/fs.defs
@@ -1,5 +1,6 @@
/* Definitions for the filesystem interface.
- Copyright (C) 1994,95,96,97,98,99,2002 Free Software Foundation, Inc.
@@ -113,10 +171,10 @@ index a4a48cc..1322237 100644
written directly. */
routine file_check_access (
file: file_t;
-diff --git a/hurd/hurd_types.h b/hurd/hurd_types.h
-index 4341177..83942a7 100644
---- a/hurd/hurd_types.h
-+++ b/hurd/hurd_types.h
+Index: hurd-debian/hurd/hurd_types.h
+===================================================================
+--- hurd-debian.orig/hurd/hurd_types.h
++++ hurd-debian/hurd/hurd_types.h
@@ -1,5 +1,6 @@
/* C declarations for Hurd server interfaces
- Copyright (C) 1993,94,95,96,98,99,2001,02 Free Software Foundation, Inc.
@@ -152,32 +210,140 @@ index 4341177..83942a7 100644
enum
{
INIT_UMASK,
-diff --git a/libdiskfs/Makefile b/libdiskfs/Makefile
-index 47b9339..6646dbe 100644
---- a/libdiskfs/Makefile
-+++ b/libdiskfs/Makefile
-@@ -56,7 +56,7 @@ OTHERSRCS = conch-fetch.c conch-set.c dir-clear.c dir-init.c dir-renamed.c \
- SRCS = $(OTHERSRCS) $(FSSRCS) $(IOSRCS) $(FSYSSRCS) $(IFSOCKSRCS)
- installhdrs = diskfs.h diskfs-pager.h
+Index: hurd-debian/startup/startup.c
+===================================================================
+--- hurd-debian.orig/startup/startup.c
++++ hurd-debian/startup/startup.c
+@@ -1,7 +1,7 @@
+ /* Start and maintain hurd core servers and system run state
--MIGSTUBS = fsServer.o ioServer.o fsysServer.o exec_startupServer.o \
-+MIGSTUBS = fsServer.o fs_experimentalServer.o ioServer.o fsysServer.o exec_startupServer.o \
- fsys_replyUser.o fs_notifyUser.o ifsockServer.o \
- startup_notifyServer.o
- OBJS = $(sort $(SRCS:.c=.o) $(MIGSTUBS))
-@@ -66,6 +66,7 @@ LDLIBS += -lpthread
+ Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+- 2005, 2008, 2013 Free Software Foundation, Inc.
++ 2005, 2008, 2010, 2013 Free Software Foundation, Inc.
+ This file is part of the GNU Hurd.
- fsys-MIGSFLAGS = -imacros $(srcdir)/fsmutations.h -DREPLY_PORTS
- fs-MIGSFLAGS = -imacros $(srcdir)/fsmutations.h
-+fs_experimental-MIGSFLAGS = -imacros $(srcdir)/fsmutations.h
- io-MIGSFLAGS = -imacros $(srcdir)/fsmutations.h
- ifsock-MIGSFLAGS = -imacros $(srcdir)/fsmutations.h
- exec_startup-MIGSFLAGS = -imacros $(srcdir)/fsmutations.h
-diff --git a/libdiskfs/boot-start.c b/libdiskfs/boot-start.c
-index d10d783..d80a4ca 100644
---- a/libdiskfs/boot-start.c
-+++ b/libdiskfs/boot-start.c
-@@ -198,7 +198,7 @@ diskfs_start_bootstrap ()
+ The GNU Hurd is free software; you can redistribute it and/or modify
+@@ -24,6 +24,9 @@
+ one file. */
+ #include <hurd.h>
+ #include <hurd/fs.h>
++#ifdef HAVE_FILE_EXEC_FILE_NAME
++#include <hurd/fs_experimental.h>
++#endif
+ #include <hurd/fsys.h>
+ #include <device/device.h>
+ #include <stdio.h>
+@@ -376,13 +379,28 @@ run (const char *server, mach_port_t *po
+ printf ("Pausing for %s\n", prog);
+ getchar ();
+ }
+- err = file_exec (file, *task, 0,
+- (char *)prog, strlen (prog) + 1, /* Args. */
+- startup_envz, startup_envz_len,
+- default_dtable, MACH_MSG_TYPE_COPY_SEND, 3,
+- ports, MACH_MSG_TYPE_COPY_SEND, INIT_PORT_MAX,
+- default_ints, INIT_INT_MAX,
+- NULL, 0, NULL, 0);
++#ifdef HAVE_FILE_EXEC_FILE_NAME
++ err = file_exec_file_name (file, *task, 0, (char *)prog,
++ (char *)prog,
++ strlen (prog) + 1, /* Args. */
++ startup_envz, startup_envz_len,
++ default_dtable,
++ MACH_MSG_TYPE_COPY_SEND, 3,
++ ports, MACH_MSG_TYPE_COPY_SEND,
++ INIT_PORT_MAX,
++ default_ints, INIT_INT_MAX,
++ NULL, 0, NULL, 0);
++ /* For backwards compatibility. Just drop it when we kill
++ file_exec. */
++ if (err == MIG_BAD_ID)
++#endif
++ err = file_exec (file, *task, 0,
++ (char *)prog, strlen (prog) + 1, /* Args. */
++ startup_envz, startup_envz_len,
++ default_dtable, MACH_MSG_TYPE_COPY_SEND, 3,
++ ports, MACH_MSG_TYPE_COPY_SEND, INIT_PORT_MAX,
++ default_ints, INIT_INT_MAX,
++ NULL, 0, NULL, 0);
+ if (!err)
+ break;
+
+@@ -469,14 +487,27 @@ run_for_real (char *filename, char *args
+ ++progname;
+ else
+ progname = filename;
+- err = file_exec (file, task, 0,
+- args, arglen,
+- startup_envz, startup_envz_len,
+- default_dtable, MACH_MSG_TYPE_COPY_SEND, 3,
+- default_ports, MACH_MSG_TYPE_COPY_SEND,
+- INIT_PORT_MAX,
+- default_ints, INIT_INT_MAX,
+- NULL, 0, NULL, 0);
++#ifdef HAVE_FILE_EXEC_FILE_NAME
++ err = file_exec_file_name (file, task, 0, filename,
++ args, arglen,
++ startup_envz, startup_envz_len,
++ default_dtable, MACH_MSG_TYPE_COPY_SEND, 3,
++ default_ports, MACH_MSG_TYPE_COPY_SEND,
++ INIT_PORT_MAX,
++ default_ints, INIT_INT_MAX,
++ NULL, 0, NULL, 0);
++ /* For backwards compatibility. Just drop it when we kill file_exec. */
++ if (err == MIG_BAD_ID)
++#endif
++ err = file_exec (file, task, 0,
++ args, arglen,
++ startup_envz, startup_envz_len,
++ default_dtable, MACH_MSG_TYPE_COPY_SEND, 3,
++ default_ports, MACH_MSG_TYPE_COPY_SEND,
++ INIT_PORT_MAX,
++ default_ints, INIT_INT_MAX,
++ NULL, 0, NULL, 0);
++
+ mach_port_deallocate (mach_task_self (), default_ports[INIT_PORT_PROC]);
+ mach_port_deallocate (mach_task_self (), task);
+ if (ctty != MACH_PORT_NULL)
+@@ -1035,13 +1066,26 @@ start_child (const char *prog, char **pr
+ getchar ();
+ }
+
+- err = file_exec (file, child_task, 0,
+- args, arglen,
+- startup_envz, startup_envz_len,
+- NULL, MACH_MSG_TYPE_COPY_SEND, 0, /* No fds. */
+- default_ports, MACH_MSG_TYPE_COPY_SEND, INIT_PORT_MAX,
+- default_ints, INIT_INT_MAX,
+- NULL, 0, NULL, 0);
++#ifdef HAVE_FILE_EXEC_FILE_NAME
++ err = file_exec_file_name (file, child_task, 0, args,
++ args, arglen,
++ startup_envz, startup_envz_len,
++ NULL, MACH_MSG_TYPE_COPY_SEND, 0, /* No fds. */
++ default_ports, MACH_MSG_TYPE_COPY_SEND,
++ INIT_PORT_MAX,
++ default_ints, INIT_INT_MAX,
++ NULL, 0, NULL, 0);
++ /* For backwards compatibility. Just drop it when we kill file_exec. */
++ if (err == MIG_BAD_ID)
++#endif
++ err = file_exec (file, child_task, 0,
++ args, arglen,
++ startup_envz, startup_envz_len,
++ NULL, MACH_MSG_TYPE_COPY_SEND, 0, /* No fds. */
++ default_ports, MACH_MSG_TYPE_COPY_SEND, INIT_PORT_MAX,
++ default_ints, INIT_INT_MAX,
++ NULL, 0, NULL, 0);
++
+ proc_mark_important (default_ports[INIT_PORT_PROC]);
+ mach_port_deallocate (mach_task_self (), default_ports[INIT_PORT_PROC]);
+ mach_port_deallocate (mach_task_self (), file);
+Index: hurd-debian/libdiskfs/boot-start.c
+===================================================================
+--- hurd-debian.orig/libdiskfs/boot-start.c
++++ hurd-debian/libdiskfs/boot-start.c
+@@ -209,7 +209,7 @@ diskfs_start_bootstrap ()
diskfs_exec_ctl = MACH_PORT_NULL; /* Not used after this. */
}
@@ -186,30 +352,10 @@ index d10d783..d80a4ca 100644
_hurd_port_set (&_diskfs_exec_portcell, diskfs_exec);
if (_diskfs_boot_command)
-diff --git a/libdiskfs/demuxer.c b/libdiskfs/demuxer.c
-index 4a1c4fb..ff33b1b 100644
---- a/libdiskfs/demuxer.c
-+++ b/libdiskfs/demuxer.c
-@@ -19,6 +19,7 @@
-
- #include "io_S.h"
- #include "fs_S.h"
-+#include "fs_experimental_S.h"
- #include "../libports/notify_S.h"
- #include "fsys_S.h"
- #include "../libports/interrupt_S.h"
-@@ -33,6 +34,7 @@ diskfs_demuxer (mach_msg_header_t *inp,
- mig_routine_t routine;
- if ((routine = diskfs_io_server_routine (inp)) ||
- (routine = diskfs_fs_server_routine (inp)) ||
-+ (routine = diskfs_fs_experimental_server_routine (inp)) ||
- (routine = ports_notify_server_routine (inp)) ||
- (routine = diskfs_fsys_server_routine (inp)) ||
- (routine = ports_interrupt_server_routine (inp)) ||
-diff --git a/libdiskfs/file-exec.c b/libdiskfs/file-exec.c
-index e544b14..a491720 100644
---- a/libdiskfs/file-exec.c
-+++ b/libdiskfs/file-exec.c
+Index: hurd-debian/libdiskfs/file-exec.c
+===================================================================
+--- hurd-debian.orig/libdiskfs/file-exec.c
++++ hurd-debian/libdiskfs/file-exec.c
@@ -1,5 +1,6 @@
-/* File execution (file_exec RPC) for diskfs servers, using exec server.
- Copyright (C) 1993,94,95,96,97,98,2000,02 Free Software Foundation, Inc.
@@ -219,7 +365,7 @@ index e544b14..a491720 100644
This file is part of the GNU Hurd.
-@@ -21,10 +22,14 @@
+@@ -21,10 +22,14 @@ the Free Software Foundation, 675 Mass A
#include "priv.h"
#include "fs_S.h"
@@ -327,10 +473,10 @@ index e544b14..a491720 100644
mach_port_deallocate (mach_task_self (), right);
if (err == MACH_SEND_INVALID_DEST)
{
-diff --git a/libfshelp/start-translator-long.c b/libfshelp/start-translator-long.c
-index 8b00e08..f0966aa 100644
---- a/libfshelp/start-translator-long.c
-+++ b/libfshelp/start-translator-long.c
+Index: hurd-debian/libfshelp/start-translator-long.c
+===================================================================
+--- hurd-debian.orig/libfshelp/start-translator-long.c
++++ hurd-debian/libfshelp/start-translator-long.c
@@ -1,5 +1,6 @@
/*
- Copyright (C) 1995,96,99,2000,02, 04 Free Software Foundation, Inc.
@@ -349,7 +495,7 @@ index 8b00e08..f0966aa 100644
/* The data passed in the various messages we're interested in. */
-@@ -272,12 +276,22 @@ fshelp_start_translator_long (fshelp_open_fn_t underlying_open_fn,
+@@ -272,12 +276,22 @@ fshelp_start_translator_long (fshelp_ope
saveport = ports[INIT_PORT_BOOTSTRAP];
ports[INIT_PORT_BOOTSTRAP] = bootstrap;
@@ -377,49 +523,10 @@ index 8b00e08..f0966aa 100644
ports_moved = 1;
if (ports_type == MACH_MSG_TYPE_COPY_SEND)
-diff --git a/libnetfs/Makefile b/libnetfs/Makefile
-index c3830c0..4aade5a 100644
---- a/libnetfs/Makefile
-+++ b/libnetfs/Makefile
-@@ -59,12 +59,13 @@ SRCS= $(OTHERSRCS) $(FSSRCS) $(IOSRCS) $(FSYSSRCS) $(IFSOCKSRCS)
-
- installhdrs=netfs.h
-
--MIGSTUBS= ioServer.o fsServer.o fsysServer.o fsys_replyUser.o ifsockServer.o
-+MIGSTUBS= ioServer.o fsServer.o fs_experimentalServer.o fsysServer.o fsys_replyUser.o ifsockServer.o
-
- OBJS=$(sort $(SRCS:.c=.o) $(MIGSTUBS))
-
- fsys-MIGSFLAGS = -imacros $(srcdir)/mutations.h -DREPLY_PORTS
- fs-MIGSFLAGS = -imacros $(srcdir)/mutations.h
-+fs_experimental-MIGSFLAGS = -imacros $(srcdir)/mutations.h
- io-MIGSFLAGS = -imacros $(srcdir)/mutations.h
- ifsock-MIGSFLAGS = -imacros $(srcdir)/mutations.h
- MIGCOMSFLAGS = -prefix netfs_
-diff --git a/libnetfs/demuxer.c b/libnetfs/demuxer.c
-index 4c20ab6..bf78812 100644
---- a/libnetfs/demuxer.c
-+++ b/libnetfs/demuxer.c
-@@ -22,6 +22,7 @@
-
- #include "io_S.h"
- #include "fs_S.h"
-+#include "fs_experimental_S.h"
- #include "../libports/notify_S.h"
- #include "fsys_S.h"
- #include "../libports/interrupt_S.h"
-@@ -34,6 +35,7 @@ netfs_demuxer (mach_msg_header_t *inp,
- mig_routine_t routine;
- if ((routine = netfs_io_server_routine (inp)) ||
- (routine = netfs_fs_server_routine (inp)) ||
-+ (routine = netfs_fs_experimental_server_routine (inp)) ||
- (routine = ports_notify_server_routine (inp)) ||
- (routine = netfs_fsys_server_routine (inp)) ||
- (routine = ports_interrupt_server_routine (inp)) ||
-diff --git a/libnetfs/file-exec.c b/libnetfs/file-exec.c
-index 638f0ae..ffaf598 100644
---- a/libnetfs/file-exec.c
-+++ b/libnetfs/file-exec.c
+Index: hurd-debian/libnetfs/file-exec.c
+===================================================================
+--- hurd-debian.orig/libnetfs/file-exec.c
++++ hurd-debian/libnetfs/file-exec.c
@@ -1,5 +1,6 @@
/*
- Copyright (C) 1996,97,2000,01,02 Free Software Foundation, Inc.
@@ -523,54 +630,10 @@ index 638f0ae..ffaf598 100644
mach_port_deallocate (mach_task_self (), right);
ports_port_deref (newpi);
}
-diff --git a/libtrivfs/Makefile b/libtrivfs/Makefile
-index 48a53d7..c440101 100644
---- a/libtrivfs/Makefile
-+++ b/libtrivfs/Makefile
-@@ -44,7 +44,7 @@ OTHERSRCS=demuxer.c protid-clean.c protid-dup.c cntl-create.c \
-
- SRCS=$(FSSRCS) $(IOSRCS) $(FSYSSRCS) $(OTHERSRCS)
-
--MIGSTUBS=fsServer.o ioServer.o fsysServer.o fsys_replyUser.o
-+MIGSTUBS=fsServer.o fs_experimentalServer.o ioServer.o fsysServer.o fsys_replyUser.o
-
- libname = libtrivfs
- HURDLIBS = fshelp iohelp ports shouldbeinlibc
-@@ -54,6 +54,10 @@ MIGCOMSFLAGS = -prefix trivfs_
- installhdrs := trivfs.h
- mig-sheader-prefix = trivfs_
-
-+ifndef no_deps
-+installhdrs += $(patsubst %,trivfs_%_S.h,fs fs_experimental io fsys)
-+endif
-+
- include ../Makeconf
-
- $(MIGSTUBS:%Server.o=%.sdefsi): $(srcdir)/mig-mutate.h
-diff --git a/libtrivfs/demuxer.c b/libtrivfs/demuxer.c
-index 8c1afe6..55229da 100644
---- a/libtrivfs/demuxer.c
-+++ b/libtrivfs/demuxer.c
-@@ -23,6 +23,7 @@
-
- #include "trivfs_io_S.h"
- #include "trivfs_fs_S.h"
-+#include "trivfs_fs_experimental_S.h"
- #include "../libports/notify_S.h"
- #include "trivfs_fsys_S.h"
- #include "../libports/interrupt_S.h"
-@@ -34,6 +35,7 @@ trivfs_demuxer (mach_msg_header_t *inp,
- mig_routine_t routine;
- if ((routine = trivfs_io_server_routine (inp)) ||
- (routine = trivfs_fs_server_routine (inp)) ||
-+ (routine = trivfs_fs_experimental_server_routine (inp)) ||
- (routine = ports_notify_server_routine (inp)) ||
- (routine = trivfs_fsys_server_routine (inp)) ||
- (routine = ports_interrupt_server_routine (inp)))
-diff --git a/libtrivfs/file-exec.c b/libtrivfs/file-exec.c
-index b353d8a..5f873c7 100644
---- a/libtrivfs/file-exec.c
-+++ b/libtrivfs/file-exec.c
+Index: hurd-debian/libtrivfs/file-exec.c
+===================================================================
+--- hurd-debian.orig/libtrivfs/file-exec.c
++++ hurd-debian/libtrivfs/file-exec.c
@@ -1,5 +1,5 @@
/*
- Copyright (C) 1994,2002 Free Software Foundation, Inc.
@@ -578,7 +641,7 @@ index b353d8a..5f873c7 100644
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
-@@ -41,3 +41,28 @@ trivfs_S_file_exec (trivfs_protid_t exec_file,
+@@ -41,3 +41,28 @@ trivfs_S_file_exec (trivfs_protid_t exec
{
return EOPNOTSUPP;
}
@@ -607,139 +670,10 @@ index b353d8a..5f873c7 100644
+{
+ return EOPNOTSUPP;
+}
-diff --git a/startup/startup.c b/startup/startup.c
-index e916768..db30b65 100644
---- a/startup/startup.c
-+++ b/startup/startup.c
-@@ -1,7 +1,7 @@
- /* Start and maintain hurd core servers and system run state
-
- Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-- 2005, 2008, 2013 Free Software Foundation, Inc.
-+ 2005, 2008, 2010, 2013 Free Software Foundation, Inc.
- This file is part of the GNU Hurd.
-
- The GNU Hurd is free software; you can redistribute it and/or modify
-@@ -24,6 +24,9 @@
- one file. */
- #include <hurd.h>
- #include <hurd/fs.h>
-+#ifdef HAVE_FILE_EXEC_FILE_NAME
-+#include <hurd/fs_experimental.h>
-+#endif
- #include <hurd/fsys.h>
- #include <device/device.h>
- #include <stdio.h>
-@@ -377,13 +380,28 @@ run (const char *server, mach_port_t *ports, task_t *task)
- printf ("Pausing for %s\n", prog);
- getchar ();
- }
-- err = file_exec (file, *task, 0,
-- (char *)prog, strlen (prog) + 1, /* Args. */
-- startup_envz, startup_envz_len,
-- default_dtable, MACH_MSG_TYPE_COPY_SEND, 3,
-- ports, MACH_MSG_TYPE_COPY_SEND, INIT_PORT_MAX,
-- default_ints, INIT_INT_MAX,
-- NULL, 0, NULL, 0);
-+#ifdef HAVE_FILE_EXEC_FILE_NAME
-+ err = file_exec_file_name (file, *task, 0, (char *)prog,
-+ (char *)prog,
-+ strlen (prog) + 1, /* Args. */
-+ startup_envz, startup_envz_len,
-+ default_dtable,
-+ MACH_MSG_TYPE_COPY_SEND, 3,
-+ ports, MACH_MSG_TYPE_COPY_SEND,
-+ INIT_PORT_MAX,
-+ default_ints, INIT_INT_MAX,
-+ NULL, 0, NULL, 0);
-+ /* For backwards compatibility. Just drop it when we kill
-+ file_exec. */
-+ if (err == MIG_BAD_ID)
-+#endif
-+ err = file_exec (file, *task, 0,
-+ (char *)prog, strlen (prog) + 1, /* Args. */
-+ startup_envz, startup_envz_len,
-+ default_dtable, MACH_MSG_TYPE_COPY_SEND, 3,
-+ ports, MACH_MSG_TYPE_COPY_SEND, INIT_PORT_MAX,
-+ default_ints, INIT_INT_MAX,
-+ NULL, 0, NULL, 0);
- if (!err)
- break;
-
-@@ -470,14 +488,27 @@ run_for_real (char *filename, char *args, int arglen, mach_port_t ctty,
- ++progname;
- else
- progname = filename;
-- err = file_exec (file, task, 0,
-- args, arglen,
-- startup_envz, startup_envz_len,
-- default_dtable, MACH_MSG_TYPE_COPY_SEND, 3,
-- default_ports, MACH_MSG_TYPE_COPY_SEND,
-- INIT_PORT_MAX,
-- default_ints, INIT_INT_MAX,
-- NULL, 0, NULL, 0);
-+#ifdef HAVE_FILE_EXEC_FILE_NAME
-+ err = file_exec_file_name (file, task, 0, filename,
-+ args, arglen,
-+ startup_envz, startup_envz_len,
-+ default_dtable, MACH_MSG_TYPE_COPY_SEND, 3,
-+ default_ports, MACH_MSG_TYPE_COPY_SEND,
-+ INIT_PORT_MAX,
-+ default_ints, INIT_INT_MAX,
-+ NULL, 0, NULL, 0);
-+ /* For backwards compatibility. Just drop it when we kill file_exec. */
-+ if (err == MIG_BAD_ID)
-+#endif
-+ err = file_exec (file, task, 0,
-+ args, arglen,
-+ startup_envz, startup_envz_len,
-+ default_dtable, MACH_MSG_TYPE_COPY_SEND, 3,
-+ default_ports, MACH_MSG_TYPE_COPY_SEND,
-+ INIT_PORT_MAX,
-+ default_ints, INIT_INT_MAX,
-+ NULL, 0, NULL, 0);
-+
- mach_port_deallocate (mach_task_self (), default_ports[INIT_PORT_PROC]);
- mach_port_deallocate (mach_task_self (), task);
- if (ctty != MACH_PORT_NULL)
-@@ -1075,13 +1106,26 @@ start_child (const char *prog, char **progargs)
- getchar ();
- }
-
-- err = file_exec (file, child_task, 0,
-- args, arglen,
-- startup_envz, startup_envz_len,
-- NULL, MACH_MSG_TYPE_COPY_SEND, 0, /* No fds. */
-- default_ports, MACH_MSG_TYPE_COPY_SEND, INIT_PORT_MAX,
-- default_ints, INIT_INT_MAX,
-- NULL, 0, NULL, 0);
-+#ifdef HAVE_FILE_EXEC_FILE_NAME
-+ err = file_exec_file_name (file, child_task, 0, args,
-+ args, arglen,
-+ startup_envz, startup_envz_len,
-+ NULL, MACH_MSG_TYPE_COPY_SEND, 0, /* No fds. */
-+ default_ports, MACH_MSG_TYPE_COPY_SEND,
-+ INIT_PORT_MAX,
-+ default_ints, INIT_INT_MAX,
-+ NULL, 0, NULL, 0);
-+ /* For backwards compatibility. Just drop it when we kill file_exec. */
-+ if (err == MIG_BAD_ID)
-+#endif
-+ err = file_exec (file, child_task, 0,
-+ args, arglen,
-+ startup_envz, startup_envz_len,
-+ NULL, MACH_MSG_TYPE_COPY_SEND, 0, /* No fds. */
-+ default_ports, MACH_MSG_TYPE_COPY_SEND, INIT_PORT_MAX,
-+ default_ints, INIT_INT_MAX,
-+ NULL, 0, NULL, 0);
-+
- proc_mark_important (default_ports[INIT_PORT_PROC]);
- mach_port_deallocate (mach_task_self (), default_ports[INIT_PORT_PROC]);
- mach_port_deallocate (mach_task_self (), file);
-diff --git a/trans/fakeroot.c b/trans/fakeroot.c
-index 76fc901..adbd07d 100644
---- a/trans/fakeroot.c
-+++ b/trans/fakeroot.c
+Index: hurd-debian/trans/fakeroot.c
+===================================================================
+--- hurd-debian.orig/trans/fakeroot.c
++++ hurd-debian/trans/fakeroot.c
@@ -28,10 +28,14 @@
#include <pthread.h>
#include <hurd/ihash.h>
@@ -755,7 +689,7 @@ index 76fc901..adbd07d 100644
#include "libnetfs/io_S.h"
#include "libnetfs/fsys_S.h"
#include "libports/notify_S.h"
-@@ -820,23 +824,24 @@ netfs_file_get_storage_info (struct iouser *cred,
+@@ -785,23 +789,24 @@ netfs_file_get_storage_info (struct ious
}
kern_return_t
@@ -797,7 +731,7 @@ index 76fc901..adbd07d 100644
{
error_t err;
file_t file;
-@@ -855,14 +860,30 @@ netfs_S_file_exec (struct protid *user,
+@@ -820,14 +825,30 @@ netfs_S_file_exec (struct protid *user,
if (!err)
{
@@ -834,7 +768,7 @@ index 76fc901..adbd07d 100644
mach_port_deallocate (mach_task_self (), file);
}
-@@ -878,6 +899,38 @@ netfs_S_file_exec (struct protid *user,
+@@ -843,6 +864,38 @@ netfs_S_file_exec (struct protid *user,
return err;
}
@@ -873,7 +807,7 @@ index 76fc901..adbd07d 100644
error_t
netfs_S_io_map (struct protid *user,
mach_port_t *rdobj, mach_msg_type_name_t *rdobjtype,
-@@ -994,6 +1047,7 @@ netfs_demuxer (mach_msg_header_t *inp,
+@@ -959,6 +1012,7 @@ netfs_demuxer (mach_msg_header_t *inp,
mig_routine_t routine;
if ((routine = netfs_io_server_routine (inp)) ||
(routine = netfs_fs_server_routine (inp)) ||
@@ -881,10 +815,10 @@ index 76fc901..adbd07d 100644
(routine = ports_notify_server_routine (inp)) ||
(routine = netfs_fsys_server_routine (inp)) ||
/* XXX we should intercept interrupt_operation and do
-diff --git a/utils/login.c b/utils/login.c
-index 9ee296a..cc04715 100644
---- a/utils/login.c
-+++ b/utils/login.c
+Index: hurd-debian/utils/login.c
+===================================================================
+--- hurd-debian.orig/utils/login.c
++++ hurd-debian/utils/login.c
@@ -1,6 +1,7 @@
/* Hurdish login
@@ -933,3 +867,185 @@ index 9ee296a..cc04715 100644
if (err)
error(5, err, "%s", shell);
+Index: hurd-debian/hurd/fs_experimental.defs
+===================================================================
+--- /dev/null
++++ hurd-debian/hurd/fs_experimental.defs
+@@ -0,0 +1,51 @@
++/* Definitions for the filesystem interface.
++ Copyright (C) 1994,95,96,97,98,99,2002 Free Software Foundation, Inc.
++
++This file is part of the GNU Hurd.
++
++The GNU Hurd 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 2, or (at your option)
++any later version.
++
++The GNU Hurd 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 the GNU Hurd; see the file COPYING. If not, write to
++the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
++
++
++/* All these objects also implement the generic IO facilities. */
++
++subsystem fs_experimental 444242;
++
++#include <hurd/hurd_types.defs>
++
++#ifdef FILE_IMPORTS
++FILE_IMPORTS
++#endif
++
++/* Operations supported on all files */
++
++INTR_INTERFACE
++
++/* Overlay a task with a file. Necessary initialization, including
++ authentication changes associated with set[ug]id execution must be
++ handled by the filesystem. Filesystems normally implement this by
++ using exec_newtask or exec_loadtask as appropriate. */
++routine file_exec_file_name (
++ exec_file: file_t;
++ RPT
++ exec_task: task_t;
++ flags: int;
++ filename: string_t;
++ argv: data_t SCP;
++ envp: data_t SCP;
++ fdarray: portarray_t SCP;
++ portarray: portarray_t SCP;
++ intarray: intarray_t SCP;
++ deallocnames: mach_port_name_array_t SCP;
++ destroynames: mach_port_name_array_t SCP);
+Index: hurd-debian/libdiskfs/Makefile
+===================================================================
+--- hurd-debian.orig/libdiskfs/Makefile
++++ hurd-debian/libdiskfs/Makefile
+@@ -56,7 +56,7 @@ OTHERSRCS = conch-fetch.c conch-set.c di
+ SRCS = $(OTHERSRCS) $(FSSRCS) $(IOSRCS) $(FSYSSRCS) $(IFSOCKSRCS)
+ installhdrs = diskfs.h diskfs-pager.h
+
+-MIGSTUBS = fsServer.o ioServer.o fsysServer.o exec_startupServer.o \
++MIGSTUBS = fsServer.o fs_experimentalServer.o ioServer.o fsysServer.o exec_startupServer.o \
+ fsys_replyUser.o fs_notifyUser.o ifsockServer.o \
+ startup_notifyServer.o
+ OBJS = $(sort $(SRCS:.c=.o) $(MIGSTUBS))
+@@ -66,6 +66,7 @@ LDLIBS += -lpthread
+
+ fsys-MIGSFLAGS = -imacros $(srcdir)/fsmutations.h -DREPLY_PORTS
+ fs-MIGSFLAGS = -imacros $(srcdir)/fsmutations.h
++fs_experimental-MIGSFLAGS = -imacros $(srcdir)/fsmutations.h
+ io-MIGSFLAGS = -imacros $(srcdir)/fsmutations.h
+ ifsock-MIGSFLAGS = -imacros $(srcdir)/fsmutations.h
+ exec_startup-MIGSFLAGS = -imacros $(srcdir)/fsmutations.h
+Index: hurd-debian/libdiskfs/demuxer.c
+===================================================================
+--- hurd-debian.orig/libdiskfs/demuxer.c
++++ hurd-debian/libdiskfs/demuxer.c
+@@ -19,6 +19,7 @@
+
+ #include "io_S.h"
+ #include "fs_S.h"
++#include "fs_experimental_S.h"
+ #include "../libports/notify_S.h"
+ #include "fsys_S.h"
+ #include "../libports/interrupt_S.h"
+@@ -33,6 +34,7 @@ diskfs_demuxer (mach_msg_header_t *inp,
+ mig_routine_t routine;
+ if ((routine = diskfs_io_server_routine (inp)) ||
+ (routine = diskfs_fs_server_routine (inp)) ||
++ (routine = diskfs_fs_experimental_server_routine (inp)) ||
+ (routine = ports_notify_server_routine (inp)) ||
+ (routine = diskfs_fsys_server_routine (inp)) ||
+ (routine = ports_interrupt_server_routine (inp)) ||
+Index: hurd-debian/libnetfs/Makefile
+===================================================================
+--- hurd-debian.orig/libnetfs/Makefile
++++ hurd-debian/libnetfs/Makefile
+@@ -59,12 +59,13 @@ SRCS= $(OTHERSRCS) $(FSSRCS) $(IOSRCS) $
+
+ installhdrs=netfs.h
+
+-MIGSTUBS= ioServer.o fsServer.o fsysServer.o fsys_replyUser.o ifsockServer.o
++MIGSTUBS= ioServer.o fsServer.o fs_experimentalServer.o fsysServer.o fsys_replyUser.o ifsockServer.o
+
+ OBJS=$(sort $(SRCS:.c=.o) $(MIGSTUBS))
+
+ fsys-MIGSFLAGS = -imacros $(srcdir)/mutations.h -DREPLY_PORTS
+ fs-MIGSFLAGS = -imacros $(srcdir)/mutations.h
++fs_experimental-MIGSFLAGS = -imacros $(srcdir)/mutations.h
+ io-MIGSFLAGS = -imacros $(srcdir)/mutations.h
+ ifsock-MIGSFLAGS = -imacros $(srcdir)/mutations.h
+ MIGCOMSFLAGS = -prefix netfs_
+Index: hurd-debian/libnetfs/demuxer.c
+===================================================================
+--- hurd-debian.orig/libnetfs/demuxer.c
++++ hurd-debian/libnetfs/demuxer.c
+@@ -22,6 +22,7 @@
+
+ #include "io_S.h"
+ #include "fs_S.h"
++#include "fs_experimental_S.h"
+ #include "../libports/notify_S.h"
+ #include "fsys_S.h"
+ #include "../libports/interrupt_S.h"
+@@ -34,6 +35,7 @@ netfs_demuxer (mach_msg_header_t *inp,
+ mig_routine_t routine;
+ if ((routine = netfs_io_server_routine (inp)) ||
+ (routine = netfs_fs_server_routine (inp)) ||
++ (routine = netfs_fs_experimental_server_routine (inp)) ||
+ (routine = ports_notify_server_routine (inp)) ||
+ (routine = netfs_fsys_server_routine (inp)) ||
+ (routine = ports_interrupt_server_routine (inp)) ||
+Index: hurd-debian/libtrivfs/Makefile
+===================================================================
+--- hurd-debian.orig/libtrivfs/Makefile
++++ hurd-debian/libtrivfs/Makefile
+@@ -44,7 +44,7 @@ OTHERSRCS=demuxer.c protid-clean.c proti
+
+ SRCS=$(FSSRCS) $(IOSRCS) $(FSYSSRCS) $(OTHERSRCS)
+
+-MIGSTUBS=fsServer.o ioServer.o fsysServer.o fsys_replyUser.o
++MIGSTUBS=fsServer.o fs_experimentalServer.o ioServer.o fsysServer.o fsys_replyUser.o
+
+ libname = libtrivfs
+ HURDLIBS = fshelp iohelp ports shouldbeinlibc
+Index: hurd-debian/libtrivfs/demuxer.c
+===================================================================
+--- hurd-debian.orig/libtrivfs/demuxer.c
++++ hurd-debian/libtrivfs/demuxer.c
+@@ -23,6 +23,7 @@ the Free Software Foundation, 675 Mass A
+
+ #include "trivfs_io_S.h"
+ #include "trivfs_fs_S.h"
++#include "trivfs_fs_experimental_S.h"
+ #include "../libports/notify_S.h"
+ #include "trivfs_fsys_S.h"
+ #include "../libports/interrupt_S.h"
+@@ -34,6 +35,7 @@ trivfs_demuxer (mach_msg_header_t *inp,
+ mig_routine_t routine;
+ if ((routine = trivfs_io_server_routine (inp)) ||
+ (routine = trivfs_fs_server_routine (inp)) ||
++ (routine = trivfs_fs_experimental_server_routine (inp)) ||
+ (routine = ports_notify_server_routine (inp)) ||
+ (routine = trivfs_fsys_server_routine (inp)) ||
+ (routine = ports_interrupt_server_routine (inp)))
+Index: hurd-debian/configure.ac
+===================================================================
+--- hurd-debian.orig/configure.ac
++++ hurd-debian/configure.ac
+@@ -162,6 +162,8 @@ else
+ VERSIONING=no
+ fi
+ AC_SUBST(VERSIONING)
++# Check if libc contains these functions.
++AC_CHECK_FUNCS(file_exec_file_name exec_exec_file_name)
+
+
+ # From glibc HEAD, 2007-11-07.
diff --git a/debian/patches/external.patch b/debian/patches/external.patch
index c0f05fee..c746aac4 100644
--- a/debian/patches/external.patch
+++ b/debian/patches/external.patch
@@ -1,9 +1,11 @@
-Include procfs, random, and DDE in the build
+Include DDE in the build
-diff --git a/Makefile b/Makefile
-index 0b9eff2..12b56f0 100644
---- a/Makefile
-+++ b/Makefile
+TODO: We should turn AC_MSG_WARN into disabling targets
+
+Index: hurd-debian/Makefile
+===================================================================
+--- hurd-debian.orig/Makefile
++++ hurd-debian/Makefile
@@ -28,7 +28,8 @@ include ./Makeconf
# Hurd libraries
lib-subdirs = libshouldbeinlibc libihash libiohelp libports libthreads \
@@ -14,42 +16,41 @@ index 0b9eff2..12b56f0 100644
# Hurd programs
prog-subdirs = auth proc exec term \
-@@ -40,8 +41,9 @@ prog-subdirs = auth proc exec init term \
- benchmarks fstests \
- random \
+@@ -37,6 +38,7 @@ prog-subdirs = auth proc exec init term
procfs \
startup \
init \
-+ devnode \
++ devnode
ifeq ($(HAVE_SUN_RPC),yes)
prog-subdirs += nfs nfsd
-diff --git a/configure.ac b/configure.ac
-index 05b959b..68ec159 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -227,6 +227,12 @@ AC_SUBST(boot_store_types)dnl
+Index: hurd-debian/Makeconf
+===================================================================
+--- hurd-debian.orig/Makeconf
++++ hurd-debian/Makeconf
+@@ -576,7 +576,7 @@ vpath %.defs $(top_srcdir)/hurd
+ # These we want to find in the libc include directory...
+ mach_defs_names = bootstrap exc mach mach4 \
+ mach_host mach_port mach_timer_reply memory_object \
+- memory_object_default notify \
++ memory_object_default notify experimental \
+ gnumach \
+ task_notify \
+
+Index: hurd-debian/configure.ac
+===================================================================
+--- hurd-debian.orig/configure.ac
++++ hurd-debian/configure.ac
+@@ -241,6 +241,12 @@ AC_SUBST(boot_store_types)dnl
AC_MSG_CHECKING(boot store types)
AC_MSG_RESULT($boot_store_types)
+AC_CHECK_LIB(pciaccess, pci_system_init, LIBPCIACCESS=-lpciaccess, LIBPCIACCESS=no)
+AC_SUBST(LIBPCIACCESS)
+if test "$LIBPCIACCESS" = "no"; then
-+ AC_MSG_ERROR([libpciaccess must be install in order to use libddekit])
++ AC_MSG_WARN([libpciaccess must be install in order to use libddekit])
+fi
+
# Check for ncursesw, which is needed for the console-curses client.
hurd_LIB_NCURSESW
-diff --git a/Makeconf b/Makeconf
-index 5439913..1d70e53 100644
---- a/Makeconf
-+++ b/Makeconf
-@@ -582,6 +582,7 @@ mach_defs_names = bootstrap exc mach mach4 \
- mach_debug_defs_names = mach_debug
- device_defs_names = dev_forward device device_reply device_request
-
-+mach_defs_names += experimental
- mach_defs = $(addsuffix .defs,$(mach_defs_names))
- mach_debug_defs = $(addsuffix .defs,$(mach_debug_defs_names))
- device_defs = $(addsuffix .defs,$(device_defs_names))
diff --git a/debian/patches/init_try_runsystem.gnu.patch b/debian/patches/init_try_runsystem.gnu.patch
new file mode 100644
index 00000000..e76d5095
--- /dev/null
+++ b/debian/patches/init_try_runsystem.gnu.patch
@@ -0,0 +1,19 @@
+Also try runsystem.gnu, in case /etc/alternatives/runsystem is hosed.
+
+---
+ daemons/console-run.c | 7 +++++++
+ startup/startup.c | 24 ++++++++++++++++++++----
+ 2 files changed, 27 insertions(+), 4 deletions(-)
+
+Index: hurd-debian/startup/startup.c
+===================================================================
+--- hurd-debian.orig/startup/startup.c 2012-11-26 00:23:25.000000000 +0000
++++ hurd-debian/startup/startup.c 2012-11-26 00:25:06.000000000 +0000
+@@ -1087,6 +1087,7 @@
+ static const char *const tries[] =
+ {
+ "/libexec/runsystem",
++ "/libexec/runsystem.gnu",
+ _PATH_BSHELL,
+ "/bin/shd", /* XXX */
+ };
diff --git a/debian/patches/libexec.patch b/debian/patches/libexec.patch
index 18634a35..dc901b77 100644
--- a/debian/patches/libexec.patch
+++ b/debian/patches/libexec.patch
@@ -1,7 +1,9 @@
-diff --git a/config/ttys b/config/ttys
-index 6a548d5..d10bfcc 100644
---- a/config/ttys
-+++ b/config/ttys
+libexec is not FHS
+
+Index: hurd-debian/config/ttys
+===================================================================
+--- hurd-debian.orig/config/ttys
++++ hurd-debian/config/ttys
@@ -4,11 +4,11 @@
# name program type status comments
@@ -22,26 +24,24 @@ index 6a548d5..d10bfcc 100644
+tty5 "/sbin/getty 38400" hurd on secure trusted console
+tty6 "/sbin/getty 38400" hurd on secure trusted console
+#com0 "/sbin/getty 9600" dialup on secure
-diff --git a/daemons/runsystem.sh b/daemons/runsystem.sh
-index c3cb2d6..0ce4f59 100644
---- a/daemons/runsystem.hurd
-+++ b/daemons/runsystem.hurd
-@@ -23,8 +23,8 @@ fallback_shells='/bin/sh /bin/bash /bin/csh /bin/ash /bin/shd'
- SHELL=/bin/sh
+Index: hurd-debian/doc/hurd.texi
+===================================================================
+--- hurd-debian.orig/doc/hurd.texi
++++ hurd-debian/doc/hurd.texi
+@@ -566,7 +566,7 @@ The @option{--multiboot-command-line} op
+ it is a root filesystem, which triggers it to run @command{/hurd/startup} as PID
+ 2. @command{/hurd/startup} starts the @command{/hurd/proc} and
+ @command{/hurd/auth} servers. After the servers are launched
+-@command{/hurd/startup} starts the @command{/libexec/runsystem.sh} script to
++@command{/hurd/startup} starts the @command{/etc/hurd/runsystem.sh} script to
+ finish booting.
- # Programs that do multi-user startup.
--RUNCOM=/libexec/rc
--RUNTTYS=/libexec/runttys
-+RUNCOM=/etc/hurd/rc
-+RUNTTYS=/sbin/runttys
- # Signals that we should pass down to runttys.
- runttys_sigs='TERM INT HUP TSTP'
-
-diff --git a/init/init.c b/init/init.c
-index d66bee0..14d822e 100644
---- a/startup/startup.c
-+++ b/startup/startup.c
-@@ -888,7 +888,7 @@ frob_kernel_process (void)
+ After the Hurd has been booted, other sets of core Hurd servers can be
+Index: hurd-debian/startup/startup.c
+===================================================================
+--- hurd-debian.orig/startup/startup.c
++++ hurd-debian/startup/startup.c
+@@ -912,7 +912,7 @@ frob_kernel_process (void)
/** Running userland. **/
/* In the "split-init" setup, we just run a single program (usually
@@ -50,7 +50,7 @@ index d66bee0..14d822e 100644
If it does exit (or can't be started), we go to an emergency single-user
shell as a fallback. */
-@@ -1004,7 +1004,7 @@ process_signal (int signo)
+@@ -980,7 +980,7 @@ process_signal (int signo)
}
}
@@ -59,7 +59,7 @@ index d66bee0..14d822e 100644
with the given additional arguments. */
static int
start_child (const char *prog, char **progargs)
-@@ -1016,7 +1016,7 @@ start_child (const char *prog, char **progargs)
+@@ -992,7 +992,7 @@ start_child (const char *prog, char **pr
if (progargs == 0)
{
@@ -68,7 +68,7 @@ index d66bee0..14d822e 100644
err = argz_create ((char **) argv, &args, &arglen);
}
else
-@@ -1026,7 +1026,7 @@ start_child (const char *prog, char **progargs)
+@@ -1002,7 +1002,7 @@ start_child (const char *prog, char **pr
++argc;
{
const char *argv[2 + argc + 1];
@@ -77,12 +77,14 @@ index d66bee0..14d822e 100644
argv[1] = prog;
argv[2 + argc] = 0;
while (argc-- > 0)
-@@ -1086,7 +1086,7 @@ launch_something (const char *why)
+@@ -1062,8 +1062,8 @@ launch_something (const char *why)
static unsigned int try;
static const char *const tries[] =
{
- "/libexec/runsystem",
+- "/libexec/runsystem.gnu",
+ "/etc/hurd/runsystem",
++ "/etc/hurd/runsystem.gnu",
_PATH_BSHELL,
"/bin/shd", /* XXX */
};
diff --git a/debian/patches/makedev.diff b/debian/patches/makedev.diff
index b165246c..e4f7371d 100644
--- a/debian/patches/makedev.diff
+++ b/debian/patches/makedev.diff
@@ -6,7 +6,7 @@ there.
--- a/sutils/MAKEDEV.sh
+++ b/sutils/MAKEDEV.sh
-@@ -86,7 +86,7 @@ function mkdev {
+@@ -100,7 +100,7 @@ function mkdev {
;;
std)
diff --git a/debian/patches/mount.patch b/debian/patches/mount.patch
index 41770bc4..03aaaa31 100644
--- a/debian/patches/mount.patch
+++ b/debian/patches/mount.patch
@@ -8,12 +8,12 @@ diff --git a/utils/mount.c b/utils/mount.c
index 8b059c2..8af055e 100644
--- a/utils/mount.c
+++ b/utils/mount.c
-@@ -248,7 +248,9 @@ do_mount (struct fs *fs, int remount)
+@@ -284,7 +284,9 @@ do_mount (struct fs *fs, int remount)
{
ARGZ (add (&fsopts, &fsopts_len, o));
}
- else if ((strcmp (o, "defaults") != 0) && (strlen (o) != 0))
-+ else if (strcmp (o, "defaults") != 0 && (strlen (o) != 0) &&
++ else if ((strcmp (o, "defaults") != 0) && (strlen (o) != 0) &&
+ strcmp (o, "loop") != 0 &&
+ strcmp (o, "exec") != 0)
{
diff --git a/debian/patches/newRPC.patch b/debian/patches/newRPC.patch
new file mode 100644
index 00000000..ba8afb06
--- /dev/null
+++ b/debian/patches/newRPC.patch
@@ -0,0 +1,19 @@
+Just a build fix.
+
+# missing mach_notify_new_task RPCs
+
+To be removed with glibc 2.21
+
+Index: hurd-debian/proc/Makefile
+===================================================================
+--- hurd-debian.orig/proc/Makefile
++++ hurd-debian/proc/Makefile
+@@ -28,7 +28,7 @@ MIGSFLAGS = -imacros $(srcdir)/mig-mutat
+
+ MIGSTUBS = processServer.o notifyServer.o \
+ ourmsgUser.o proc_excUser.o proc_excServer.o \
+- task_notifyServer.o
++ task_notifyServer.o task_notifyUser.o
+ OBJS = $(SRCS:.c=.o) $(MIGSTUBS)
+ HURDLIBS = ihash ports shouldbeinlibc
+
diff --git a/debian/patches/posix-sigcodes.patch b/debian/patches/posix-sigcodes.patch
index 93beed93..f44d1fb7 100644
--- a/debian/patches/posix-sigcodes.patch
+++ b/debian/patches/posix-sigcodes.patch
@@ -63,19 +63,7 @@ diff --git a/proc/proc.h b/proc/proc.h
index 7943e0b..b52ca1d 100644
--- a/proc/proc.h
+++ b/proc/proc.h
-@@ -192,19 +192,19 @@ void exc_clean (void *);
- struct proc *allocate_proc (task_t);
- void proc_death_notify (struct proc *);
- void complete_proc (struct proc *, pid_t);
-
- void leave_pgrp (struct proc *);
- void join_pgrp (struct proc *);
- void boot_setsid (struct proc *);
-
- void process_has_exited (struct proc *);
- void alert_parent (struct proc *);
- void reparent_zombies (struct proc *);
- void complete_exit (struct proc *);
+@@ -192,7 +192,7 @@ void exc_clean (void *);
void initialize_version_info (void);
diff --git a/debian/patches/rc.patch b/debian/patches/rc.patch
new file mode 100644
index 00000000..964662c7
--- /dev/null
+++ b/debian/patches/rc.patch
@@ -0,0 +1,91 @@
+More debianish rc scripts
+---
+ daemons/rc.sh | 43 ++++++++++++++++++++++++++++++++-----------
+ 1 file changed, 32 insertions(+), 11 deletions(-)
+
+--- a/daemons/rc.sh
++++ b/daemons/rc.sh
+@@ -19,14 +19,17 @@ then
+ echo Automatic boot in progress...
+ date
+
+- /sbin/fsck --preen --writable
++ fsysopts / --update --readonly
++ /sbin/fsck -p -A
+
+ case $? in
+ # Successful completion
+ 0)
++ fsysopts / --update --writable
+ ;;
+ # Filesystem modified (but ok now)
+ 1)
++ fsysopts / --update --writable
+ ;;
+ # Filesystem modified, filesystem should be restarted
+ # Ideally we would only restart the filesystem
+@@ -85,12 +88,26 @@ if test -d /tmp; then
+
+ fi
+ if test -d /var/run; then
+- (cd /var/run && { rm -rf -- *; cp /dev/null utmp; chmod 644 utmp; })
++ (cd /var/run && {
++ find . ! -type d ! -name utmp ! -name innd.pid \
++ -exec rm -f -- {} \;
++ cp /dev/null utmp
++ if grep -q ^utmp: /etc/group
++ then
++ chmod 664 utmp
++ chgrp utmp utmp
++ fi; })
+ fi
+ echo done
+
+-# This file must exist for e2fsck to work. XXX
+-touch /var/run/mtab
++# See whether procfs is set up
++if ! test -e /proc/cmdline ; then
++ settrans -c /proc /hurd/procfs --compatible
++fi
++
++# This file must exist for e2fsck to work.
++ln -s /proc/mounts /var/run/mtab
++ln -sf /proc/mounts /etc/mtab
+
+ #echo -n restoring pty permissions...
+ #chmod 666 /dev/tty[pqrs]*
+@@ -104,15 +120,25 @@ touch /var/run/mtab
+
+ chmod 664 /etc/motd
+
+-echo -n starting daemons:
+-
+-/sbin/syslogd && echo -n ' syslogd'
+-/sbin/inetd && echo -n ' inetd'
+-
+-if test -x /sbin/sendmail -a -r /etc/sendmail.cf; then
+- /sbin/sendmail -bd -q30m && echo -n ' sendmail'
+-fi
++(
++ trap ":" INT QUIT TSTP
+
+-echo .
++ if [ -d /etc/rc.boot ]
++ then
++ for i in /etc/rc.boot/S*
++ do
++ [ ! -f $i ] && continue
++ $i start
++ done
++ fi
++ if [ -d /etc/rc2.d ]
++ then
++ for i in /etc/rc2.d/S*
++ do
++ [ ! -f $i ] && continue
++ $i start
++ done
++ fi
++)
+
+ date
diff --git a/debian/patches/run.patch b/debian/patches/run.patch
new file mode 100644
index 00000000..3588ddb0
--- /dev/null
+++ b/debian/patches/run.patch
@@ -0,0 +1,16 @@
+--- a/daemons/rc.sh
++++ b/daemons/rc.sh
+@@ -98,6 +98,13 @@
+ chgrp utmp utmp
+ fi; })
+ fi
++
++# until we properly start /etc/rcS.d
++rm -fr /run/*
++mkdir -p /run/lock /run/shm
++chmod 1777 /run/lock /run/shm
++: > /run/utmp
++
+ echo done
+
+ # See whether procfs is set up
diff --git a/debian/patches/series b/debian/patches/series
index b73278e2..829913bf 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -43,7 +43,7 @@ format
#procfs-0007-procfs-provide-magic-retry-response-for-proc-self.patch
startup-avoid-broken-puts.patch
-proc-task-notify-0005-proc-fix-build.patch
+#proc-task-notify-0005-proc-fix-build.patch
thomas_term.patch
ajoin.patch
proc_disable_new_task_notifications.patch
@@ -78,3 +78,10 @@ introspection0012-fixup_libintrospection.patch
ihash-as-cache0001-libihash-add-hurd_ihash_value_valid.patch
ihash-as-cache0002-libihash-optimize-lookup-or-insert-operations.patch
ihash-as-cache0003-libihash-prefer-performance-degradation-over-failure.patch
+dl_origin.patch
+init_try_runsystem.gnu.patch
+newRPC.patch
+rc.patch
+run.patch
+term-for-tcl.patch
+MAKEDEV-apm.patch
diff --git a/debian/patches/startup-usr-support.patch b/debian/patches/startup-usr-support.patch
index 1d705fc9..c7e12d12 100644
--- a/debian/patches/startup-usr-support.patch
+++ b/debian/patches/startup-usr-support.patch
@@ -12,8 +12,8 @@ Debian GNU/Hurd has a real /usr
-PATH=/bin:/sbin
+PATH=/bin:/sbin:/usr/bin:/usr/sbin
- # Start the default pager. It will bail if there is already one running.
- /hurd/mach-defpager
+ # Set up swap space. This will complain if no default pager is functioning.
+ swapon -a
--- a/daemons/runsystem.sh
+++ b/daemons/runsystem.sh
@@ -11,7 +11,7 @@
diff --git a/debian/patches/term-for-tcl.patch b/debian/patches/term-for-tcl.patch
new file mode 100644
index 00000000..fb63037a
--- /dev/null
+++ b/debian/patches/term-for-tcl.patch
@@ -0,0 +1,23 @@
+See discussion in http://bugs.debian.org/755295
+and bug report on comp.lang.tcl on July 1st 2015
+(“'expect' losing data due to tcl buffering”)
+
+--- a/term/ptyio.c
++++ b/term/ptyio.c
+@@ -350,6 +350,16 @@ pty_io_read (struct trivfs_protid *cred,
+ size++;
+ }
+
++ /*
++ * Linux never returns more than this, and at least TCL happens to depend on
++ * this behavior. This was discussed in http://bugs.debian.org/755295 and
++ * raised to TCL, with no answer so far.
++ */
++#define LINUXISH_READ_MAX 4095
++ if (cred->po->openmodes & O_NONBLOCK)
++ if (amount > LINUXISH_READ_MAX)
++ amount = LINUXISH_READ_MAX;
++
+ if (size > amount)
+ size = amount;
+ if (size > *datalen)
diff --git a/debian/patches/tmp_exec_startup.patch b/debian/patches/tmp_exec_startup.patch
index bd605718..a67383fb 100644
--- a/debian/patches/tmp_exec_startup.patch
+++ b/debian/patches/tmp_exec_startup.patch
@@ -5,9 +5,11 @@ TODO: not used by d-i. Is it used by crosshurd?
libdiskfs/boot-start.c | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
---- a/libdiskfs/boot-start.c
-+++ b/libdiskfs/boot-start.c
-@@ -126,8 +126,13 @@ diskfs_start_bootstrap ()
+Index: hurd-debian/libdiskfs/boot-start.c
+===================================================================
+--- hurd-debian.orig/libdiskfs/boot-start.c
++++ hurd-debian/libdiskfs/boot-start.c
+@@ -130,8 +130,13 @@ diskfs_start_bootstrap ()
assert (_hurd_ports);
assert (_hurd_ports[INIT_PORT_CRDIR].port != MACH_PORT_NULL);
diskfs_exec = file_name_lookup (_SERVERS_EXEC, 0, 0);
@@ -23,8 +25,8 @@ TODO: not used by d-i. Is it used by crosshurd?
else
{
#ifndef NDEBUG
-@@ -177,8 +182,15 @@ diskfs_start_bootstrap ()
- &retry, pathbuf, &execnode);
+@@ -181,8 +186,15 @@ diskfs_start_bootstrap ()
+ &retry, retry_name, &execnode);
if (err)
{
- error (0, err, "cannot set translator on %s", _SERVERS_EXEC);
@@ -41,7 +43,7 @@ TODO: not used by d-i. Is it used by crosshurd?
}
else
{
-@@ -393,6 +405,10 @@ diskfs_execboot_fsys_startup (mach_port_
+@@ -407,6 +419,10 @@ diskfs_execboot_fsys_startup (mach_port_
err = dir_lookup (rootport, _SERVERS_EXEC, flags|O_NOTRANS, 0,
&retry, pathbuf, real);