aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/patches
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-01-18 01:06:24 +0100
committerLudovic Courtès <ludo@gnu.org>2013-01-18 01:07:31 +0100
commit1ffa7090b99dfd2f54fa883929c5e78d7852657a (patch)
tree1c8bd191e31212e172b3e9158408cccd571a5020 /gnu/packages/patches
parent08ba7ff318720d926215de83daed0da628908ca3 (diff)
downloadgnu-guix-1ffa7090b99dfd2f54fa883929c5e78d7852657a.tar
gnu-guix-1ffa7090b99dfd2f54fa883929c5e78d7852657a.tar.gz
distro: Change the module name space to (gnu ...).
* distro: Rename to... * gnu: ... this. Update module names accordingly. * Makefile.am: Adjust accordingly. * po/POTFILES.in: Likewise. * distro.scm: Search for files under /gnu/packages instead of /distro/packages. * gnu/packages/base.scm (ld-wrapper-boot3): Likewise.
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r--gnu/packages/patches/bigloo-gc-shebangs.patch17
-rw-r--r--gnu/packages/patches/binutils-ld-new-dtags.patch16
-rw-r--r--gnu/packages/patches/cpio-gets-undeclared.patch45
-rw-r--r--gnu/packages/patches/diffutils-gets-undeclared.patch71
-rw-r--r--gnu/packages/patches/emacs-configure-sh.patch14
-rw-r--r--gnu/packages/patches/findutils-absolute-paths.patch29
-rw-r--r--gnu/packages/patches/flex-bison-tests.patch24
-rw-r--r--gnu/packages/patches/gawk-shell.patch34
-rw-r--r--gnu/packages/patches/gettext-gets-undeclared.patch77
-rw-r--r--gnu/packages/patches/glibc-bootstrap-system.patch28
-rw-r--r--gnu/packages/patches/glibc-no-ld-so-cache.patch53
-rw-r--r--gnu/packages/patches/guile-1.8-cpp-4.5.patch24
-rw-r--r--gnu/packages/patches/guile-default-utf8.patch111
-rw-r--r--gnu/packages/patches/guile-relocatable.patch70
-rw-r--r--gnu/packages/patches/libtool-skip-tests.patch37
-rw-r--r--gnu/packages/patches/lsh-guile-compat.patch9
-rw-r--r--gnu/packages/patches/lsh-no-root-login.patch16
-rw-r--r--gnu/packages/patches/lsh-pam-service-name.patch14
-rw-r--r--gnu/packages/patches/m4-gets-undeclared.patch45
-rw-r--r--gnu/packages/patches/m4-readlink-EINVAL.patch18
-rw-r--r--gnu/packages/patches/m4-s_isdir.patch14
-rw-r--r--gnu/packages/patches/make-impure-dirs.patch40
-rw-r--r--gnu/packages/patches/perl-no-sys-dirs.patch156
-rw-r--r--gnu/packages/patches/procps-make-3.82.patch14
-rw-r--r--gnu/packages/patches/readline-link-ncurses.patch18
-rw-r--r--gnu/packages/patches/shishi-gets-undeclared.patch71
-rw-r--r--gnu/packages/patches/tar-gets-undeclared.patch26
27 files changed, 1091 insertions, 0 deletions
diff --git a/gnu/packages/patches/bigloo-gc-shebangs.patch b/gnu/packages/patches/bigloo-gc-shebangs.patch
new file mode 100644
index 0000000000..07af261887
--- /dev/null
+++ b/gnu/packages/patches/bigloo-gc-shebangs.patch
@@ -0,0 +1,17 @@
+Patch shebangs in source that gets unpacked by `configure'.
+
+--- bigloo3.9a/gc/install-gc-7.2d 2013-01-14 15:24:01.000000000 +0100
++++ bigloo3.9a/gc/install-gc-7.2d 2013-01-14 15:23:51.000000000 +0100
+@@ -29,9 +29,11 @@ fi
+ # untar the two versions of the GC
+ $tar xfz $src -C ../gc || (echo "$tar xfz $src failed"; exit 1)
+ /bin/rm -rf "../gc/$gc"_fth
++find ../gc/gc-7.2 -perm /111 -type f | xargs sed -i -e"s|/bin/sh|`type -P bash`|g"
+ mv ../gc/gc-7.2 "../gc/$gc"_fth || (echo "mv gc-7.2 failed"; exit 1)
+
+ $tar xfz $src -C ../gc || (echo "$tar xfz $src failed"; exit 1)
++find ../gc/gc-7.2 -perm /111 -type f | xargs sed -i -e"s|/bin/sh|`type -P bash`|g"
+ mv ../gc/gc-7.2 "../gc/$gc"
+
+ # general Bigloo patch
+
diff --git a/gnu/packages/patches/binutils-ld-new-dtags.patch b/gnu/packages/patches/binutils-ld-new-dtags.patch
new file mode 100644
index 0000000000..5f7a03fc38
--- /dev/null
+++ b/gnu/packages/patches/binutils-ld-new-dtags.patch
@@ -0,0 +1,16 @@
+Turn on --enable-new-dtags by default to make the linker set RUNPATH
+instead of RPATH on binaries. This is important because RUNPATH can
+be overriden using LD_LIBRARY_PATH at runtime.
+
+Patch from Nixpkgs by Eelco Dolstra <eelco.dolstra@logicblox.com>.
+
+--- binutils/ld/ldmain.c
++++ binutils/ld/ldmain.c
+@@ -296,6 +296,7 @@ main (int argc, char **argv)
+
+ link_info.allow_undefined_version = TRUE;
+ link_info.keep_memory = TRUE;
++ link_info.new_dtags = TRUE;
+ link_info.combreloc = TRUE;
+ link_info.strip_discarded = TRUE;
+ link_info.callbacks = &link_callbacks;
diff --git a/gnu/packages/patches/cpio-gets-undeclared.patch b/gnu/packages/patches/cpio-gets-undeclared.patch
new file mode 100644
index 0000000000..bc34de6455
--- /dev/null
+++ b/gnu/packages/patches/cpio-gets-undeclared.patch
@@ -0,0 +1,45 @@
+This patch is needed to allow builds with newer versions of
+the GNU libc (2.16+).
+
+The upstream fix was:
+
+ commit 66712c23388e93e5c518ebc8515140fa0c807348
+ Author: Eric Blake <eblake@redhat.com>
+ Date: Thu Mar 29 13:30:41 2012 -0600
+
+ stdio: don't assume gets any more
+
+ Gnulib intentionally does not have a gets module, and now that C11
+ and glibc have dropped it, we should be more proactive about warning
+ any user on a platform that still has a declaration of this dangerous
+ interface.
+
+ * m4/stdio_h.m4 (gl_STDIO_H, gl_STDIO_H_DEFAULTS): Drop gets
+ support.
+ * modules/stdio (Makefile.am): Likewise.
+ * lib/stdio-read.c (gets): Likewise.
+ * tests/test-stdio-c++.cc: Likewise.
+ * m4/warn-on-use.m4 (gl_WARN_ON_USE_PREPARE): Fix comment.
+ * lib/stdio.in.h (gets): Make warning occur in more places.
+ * doc/posix-functions/gets.texi (gets): Update documentation.
+ Reported by Christer Solskogen.
+
+ Signed-off-by: Eric Blake <eblake@redhat.com>
+
+This patch just gets rid of the offending part.
+
+--- cpio-2.11/gnu/stdio.in.h-orig 2012-11-25 22:17:06.000000000 +0400
++++ cpio-2.11/gnu/stdio.in.h 2012-11-25 22:18:36.000000000 +0400
+@@ -135,12 +135,6 @@
+ "use gnulib module fflush for portable POSIX compliance");
+ #endif
+
+-/* It is very rare that the developer ever has full control of stdin,
+- so any use of gets warrants an unconditional warning. Assume it is
+- always declared, since it is required by C89. */
+-#undef gets
+-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
+-
+ #if @GNULIB_FOPEN@
+ # if @REPLACE_FOPEN@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
diff --git a/gnu/packages/patches/diffutils-gets-undeclared.patch b/gnu/packages/patches/diffutils-gets-undeclared.patch
new file mode 100644
index 0000000000..b6cdc77caa
--- /dev/null
+++ b/gnu/packages/patches/diffutils-gets-undeclared.patch
@@ -0,0 +1,71 @@
+This patch is needed to allow builds with newer versions of
+the GNU libc (2.16+).
+
+
+commit 66712c23388e93e5c518ebc8515140fa0c807348
+Author: Eric Blake <eblake@redhat.com>
+Date: Thu Mar 29 13:30:41 2012 -0600
+
+ stdio: don't assume gets any more
+
+ Gnulib intentionally does not have a gets module, and now that C11
+ and glibc have dropped it, we should be more proactive about warning
+ any user on a platform that still has a declaration of this dangerous
+ interface.
+
+ * m4/stdio_h.m4 (gl_STDIO_H, gl_STDIO_H_DEFAULTS): Drop gets
+ support.
+ * modules/stdio (Makefile.am): Likewise.
+ * lib/stdio-read.c (gets): Likewise.
+ * tests/test-stdio-c++.cc: Likewise.
+ * m4/warn-on-use.m4 (gl_WARN_ON_USE_PREPARE): Fix comment.
+ * lib/stdio.in.h (gets): Make warning occur in more places.
+ * doc/posix-functions/gets.texi (gets): Update documentation.
+ Reported by Christer Solskogen.
+
+ Signed-off-by: Eric Blake <eblake@redhat.com>
+
+diff --git a/lib/stdio.in.h b/lib/stdio.in.h
+index aa7b599..c377b6e 100644
+--- a/lib/stdio.in.h
++++ b/lib/stdio.in.h
+@@ -698,22 +698,11 @@ _GL_WARN_ON_USE (getline, "getline is unportable - "
+ # endif
+ #endif
+
+-#if @GNULIB_GETS@
+-# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+-# undef gets
+-# define gets rpl_gets
+-# endif
+-_GL_FUNCDECL_RPL (gets, char *, (char *s) _GL_ARG_NONNULL ((1)));
+-_GL_CXXALIAS_RPL (gets, char *, (char *s));
+-# else
+-_GL_CXXALIAS_SYS (gets, char *, (char *s));
+-# undef gets
+-# endif
+-_GL_CXXALIASWARN (gets);
+ /* It is very rare that the developer ever has full control of stdin,
+- so any use of gets warrants an unconditional warning. Assume it is
+- always declared, since it is required by C89. */
++ so any use of gets warrants an unconditional warning; besides, C11
++ removed it. */
++#undef gets
++#if HAVE_RAW_DECL_GETS
+ _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
+ #endif
+
+@@ -1053,9 +1042,9 @@ _GL_WARN_ON_USE (snprintf, "snprintf is unportable - "
+ # endif
+ #endif
+
+-/* Some people would argue that sprintf should be handled like gets
+- (for example, OpenBSD issues a link warning for both functions),
+- since both can cause security holes due to buffer overruns.
++/* Some people would argue that all sprintf uses should be warned about
++ (for example, OpenBSD issues a link warning for it),
++ since it can cause security holes due to buffer overruns.
+ However, we believe that sprintf can be used safely, and is more
+ efficient than snprintf in those safe cases; and as proof of our
+ belief, we use sprintf in several gnulib modules. So this header
diff --git a/gnu/packages/patches/emacs-configure-sh.patch b/gnu/packages/patches/emacs-configure-sh.patch
new file mode 100644
index 0000000000..fd34d06ced
--- /dev/null
+++ b/gnu/packages/patches/emacs-configure-sh.patch
@@ -0,0 +1,14 @@
+Make sure the right shell is used when creating src/epaths.h.
+
+--- emacs-24.2/configure 2013-01-13 17:01:53.000000000 +0100
++++ emacs-24.2/configure 2013-01-13 17:01:57.000000000 +0100
+@@ -24135,7 +24135,7 @@ done
+ ;;
+ "epaths":C)
+ echo creating src/epaths.h
+-${MAKE-make} epaths-force
++${MAKE-make} epaths-force SHELL="$CONFIG_SHELL"
+ ;;
+ "gdbinit":C)
+ if test ! -f src/.gdbinit && test -f $srcdir/src/.gdbinit; then
+
diff --git a/gnu/packages/patches/findutils-absolute-paths.patch b/gnu/packages/patches/findutils-absolute-paths.patch
new file mode 100644
index 0000000000..96341e281f
--- /dev/null
+++ b/gnu/packages/patches/findutils-absolute-paths.patch
@@ -0,0 +1,29 @@
+Fix use of LFS-style absolute paths.
+
+Patches from Nixpkgs by Armijn Hemel <armijn@gpl-violations.org>
+and Wouter den Breejen <uu@denbreejen.net>.
+
+diff -ruN findutils-4.2.20/locate/updatedb.sh findutils-4.2.20.new/locate/updatedb.sh
+--- findutils-4.2.20/locate/updatedb.sh 2005-01-24 17:12:35.000000000 +0100
++++ findutils-4.2.20.new/locate/updatedb.sh 2005-08-23 14:37:10.000000000 +0200
+@@ -141,7 +141,7 @@
+ : ${code:=${LIBEXECDIR}/@code@}
+
+
+-PATH=/bin:/usr/bin:${BINDIR}; export PATH
++PATH=/bin:/usr/bin:${BINDIR}:${PATH}; export PATH
+
+ : ${PRUNEFS="nfs NFS proc afs proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs sysfs shfs"}
+
+diff -Naur findutils-4.2.30/xargs/xargs.c findutils-4.2.30_new/xargs/xargs.c
+--- findutils-4.2.30/xargs/xargs.c 2007-02-27 11:21:08.000000000 +0100
++++ findutils-4.2.30_new/xargs/xargs.c 2007-07-17 19:02:05.000000000 +0200
+@@ -402,7 +402,7 @@
+ int show_limits = 0; /* --show-limits */
+ int always_run_command = 1;
+ char *input_file = "-"; /* "-" is stdin */
+- char *default_cmd = "/bin/echo";
++ char *default_cmd = "echo";
+ int (*read_args) PARAMS ((void)) = read_line;
+ void (*act_on_init_result)(void) = noop;
+ int env_too_big = 0;
diff --git a/gnu/packages/patches/flex-bison-tests.patch b/gnu/packages/patches/flex-bison-tests.patch
new file mode 100644
index 0000000000..0f372f83bf
--- /dev/null
+++ b/gnu/packages/patches/flex-bison-tests.patch
@@ -0,0 +1,24 @@
+The `test-bison-yyl{loc,val}' tests fail with "conflicting types for
+'testparse'" because `YYPARSE_PARAM' is undefined; work around that.
+
+--- flex-2.5.37/tests/test-bison-yylloc/main.c 2012-11-22 18:17:01.000000000 +0100
++++ flex-2.5.37/tests/test-bison-yylloc/main.c 2012-11-22 18:17:07.000000000 +0100
+@@ -21,6 +21,7 @@
+ * PURPOSE.
+ */
+
++#define YYPARSE_PARAM scanner
+ #include "parser.h"
+ #include "scanner.h"
+
+
+--- flex-2.5.37/tests/test-bison-yylval/main.c 2012-11-22 18:17:42.000000000 +0100
++++ flex-2.5.37/tests/test-bison-yylval/main.c 2012-11-22 18:17:49.000000000 +0100
+@@ -21,6 +21,7 @@
+ * PURPOSE.
+ */
+
++#define YYPARSE_PARAM scanner
+ #include "parser.h"
+ #include "scanner.h"
+
diff --git a/gnu/packages/patches/gawk-shell.patch b/gnu/packages/patches/gawk-shell.patch
new file mode 100644
index 0000000000..89b8540a8d
--- /dev/null
+++ b/gnu/packages/patches/gawk-shell.patch
@@ -0,0 +1,34 @@
+As for libc's `system', change Awk to look for `sh' in $PATH. This patch is
+only meant to be used during bootstrapping, where we don't know in advance the
+absolute file name of `sh'.
+
+--- gawk-4.0.0/io.c 2011-05-18 20:47:29.000000000 +0200
++++ gawk-4.0.0/io.c 2012-12-18 15:56:06.000000000 +0100
+@@ -1759,7 +1759,7 @@ two_way_open(const char *str, struct red
+
+ signal(SIGPIPE, SIG_DFL);
+
+- execl("/bin/sh", "sh", "-c", str, NULL);
++ execlp("sh", "sh", "-c", str, NULL);
+ _exit(errno == ENOENT ? 127 : 126);
+
+ case -1:
+@@ -1924,7 +1924,7 @@ use_pipes:
+ || close(ctop[0]) == -1 || close(ctop[1]) == -1)
+ fatal(_("close of pipe failed (%s)"), strerror(errno));
+ /* stderr does NOT get dup'ed onto child's stdout */
+- execl("/bin/sh", "sh", "-c", str, NULL);
++ execlp("sh", "sh", "-c", str, NULL);
+ _exit(errno == ENOENT ? 127 : 126);
+ }
+ #endif /* NOT __EMX__ */
+@@ -2074,7 +2074,7 @@ gawk_popen(const char *cmd, struct redir
+ fatal(_("moving pipe to stdout in child failed (dup: %s)"), strerror(errno));
+ if (close(p[0]) == -1 || close(p[1]) == -1)
+ fatal(_("close of pipe failed (%s)"), strerror(errno));
+- execl("/bin/sh", "sh", "-c", cmd, NULL);
++ execlp("sh", "sh", "-c", cmd, NULL);
+ _exit(errno == ENOENT ? 127 : 126);
+ }
+ #endif /* NOT __EMX__ */
+
diff --git a/gnu/packages/patches/gettext-gets-undeclared.patch b/gnu/packages/patches/gettext-gets-undeclared.patch
new file mode 100644
index 0000000000..072a8d94ab
--- /dev/null
+++ b/gnu/packages/patches/gettext-gets-undeclared.patch
@@ -0,0 +1,77 @@
+This patch is needed to allow builds with newer versions of
+the GNU libc (2.16+).
+
+The upstream fix was:
+
+ commit 66712c23388e93e5c518ebc8515140fa0c807348
+ Author: Eric Blake <eblake@redhat.com>
+ Date: Thu Mar 29 13:30:41 2012 -0600
+
+ stdio: don't assume gets any more
+
+ Gnulib intentionally does not have a gets module, and now that C11
+ and glibc have dropped it, we should be more proactive about warning
+ any user on a platform that still has a declaration of this dangerous
+ interface.
+
+ * m4/stdio_h.m4 (gl_STDIO_H, gl_STDIO_H_DEFAULTS): Drop gets
+ support.
+ * modules/stdio (Makefile.am): Likewise.
+ * lib/stdio-read.c (gets): Likewise.
+ * tests/test-stdio-c++.cc: Likewise.
+ * m4/warn-on-use.m4 (gl_WARN_ON_USE_PREPARE): Fix comment.
+ * lib/stdio.in.h (gets): Make warning occur in more places.
+ * doc/posix-functions/gets.texi (gets): Update documentation.
+ Reported by Christer Solskogen.
+
+ Signed-off-by: Eric Blake <eblake@redhat.com>
+
+This patch just gets rid of the offending part.
+
+--- gettext-0.18.1.1/gettext-tools/libgettextpo/stdio.in.h-orig 2012-11-24 01:13:14.000000000 +0400
++++ gettext-0.18.1.1/gettext-tools/libgettextpo/stdio.in.h 2012-11-24 01:13:46.000000000 +0400
+@@ -137,12 +137,6 @@
+ "use gnulib module fflush for portable POSIX compliance");
+ #endif
+
+-/* It is very rare that the developer ever has full control of stdin,
+- so any use of gets warrants an unconditional warning. Assume it is
+- always declared, since it is required by C89. */
+-#undef gets
+-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
+-
+ #if @GNULIB_FOPEN@
+ # if @REPLACE_FOPEN@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+
+--- gettext-0.18.1.1/gettext-runtime/gnulib-lib/stdio.in.h-orig 2012-11-24 00:26:49.000000000 +0400
++++ gettext-0.18.1.1/gettext-runtime/gnulib-lib/stdio.in.h 2012-11-24 00:45:54.000000000 +0400
+@@ -137,12 +137,6 @@
+ "use gnulib module fflush for portable POSIX compliance");
+ #endif
+
+-/* It is very rare that the developer ever has full control of stdin,
+- so any use of gets warrants an unconditional warning. Assume it is
+- always declared, since it is required by C89. */
+-#undef gets
+-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
+-
+ #if @GNULIB_FOPEN@
+ # if @REPLACE_FOPEN@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+
+--- gettext-0.18.1.1/gettext-tools/gnulib-lib/stdio.in.h-orig 2012-11-24 01:00:26.000000000 +0400
++++ gettext-0.18.1.1/gettext-tools/gnulib-lib/stdio.in.h 2012-11-24 01:00:53.000000000 +0400
+@@ -137,12 +137,6 @@
+ "use gnulib module fflush for portable POSIX compliance");
+ #endif
+
+-/* It is very rare that the developer ever has full control of stdin,
+- so any use of gets warrants an unconditional warning. Assume it is
+- always declared, since it is required by C89. */
+-#undef gets
+-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
+-
+ #if @GNULIB_FOPEN@
+ # if @REPLACE_FOPEN@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
diff --git a/gnu/packages/patches/glibc-bootstrap-system.patch b/gnu/packages/patches/glibc-bootstrap-system.patch
new file mode 100644
index 0000000000..7208cce3f4
--- /dev/null
+++ b/gnu/packages/patches/glibc-bootstrap-system.patch
@@ -0,0 +1,28 @@
+We want to allow builds in chroots that lack /bin/sh. Thus, system(3)
+and popen(3) need to be tweaked to use the right shell. For the bootstrap
+glibc, we just use whatever `sh' can be found in $PATH. The final glibc
+instead uses the hard-coded absolute file name of `bash'.
+
+--- a/sysdeps/posix/system.c
++++ b/sysdeps/posix/system.c
+@@ -134,7 +134,7 @@ do_system (const char *line)
+ INIT_LOCK ();
+
+ /* Exec the shell. */
+- (void) __execve (SHELL_PATH, (char *const *) new_argv, __environ);
++ (void) __execvpe (SHELL_NAME, (char *const *) new_argv, __environ);
+ _exit (127);
+ }
+ else if (pid < (pid_t) 0)
+
+--- b/libio/iopopen.c 2012-06-30 21:12:34.000000000 +0200
++++ b/libio/iopopen.c 2012-12-19 12:52:29.000000000 +0100
+@@ -226,7 +226,7 @@ _IO_new_proc_open (fp, command, mode)
+ _IO_close (fd);
+ }
+
+- _IO_execl ("/bin/sh", "sh", "-c", command, (char *) 0);
++ execlp ("sh", "sh", "-c", command, (char *) 0);
+ _IO__exit (127);
+ }
+ _IO_close (child_end);
diff --git a/gnu/packages/patches/glibc-no-ld-so-cache.patch b/gnu/packages/patches/glibc-no-ld-so-cache.patch
new file mode 100644
index 0000000000..75fff50b47
--- /dev/null
+++ b/gnu/packages/patches/glibc-no-ld-so-cache.patch
@@ -0,0 +1,53 @@
+Disable attempts to use the system-wide /etc/ld.so.cache. This is
+required on LFS distros to avoid loading the distro's libc.so instead
+of ours.
+
+Patch from Nixpkgs. Idea by Eelco Dolstra, initial patch by Jack
+Cummings, minor fixups by Shea Levy.
+
+diff -Naur glibc-2.13-orig/elf/ldconfig.c glibc-2.13/elf/ldconfig.c
+--- glibc-2.13-orig/elf/ldconfig.c 2011-01-17 23:34:07.000000000 -0500
++++ glibc-2.13/elf/ldconfig.c 2012-04-10 23:28:45.957492340 -0400
+@@ -51,7 +51,7 @@
+ #endif
+
+ #ifndef LD_SO_CONF
+-# define LD_SO_CONF SYSCONFDIR "/ld.so.conf"
++# define LD_SO_CONF PREFIX "/etc/ld.so.conf"
+ #endif
+
+ /* Get libc version number. */
+
+--- glibc-2.16.0/elf/Makefile 2012-06-30 21:12:34.000000000 +0200
++++ glibc-2.16.0/elf/Makefile 2012-11-12 23:52:21.000000000 +0100
+@@ -415,12 +415,12 @@ $(objpfx)ldconfig: $(ldconfig-modules:%=
+
+ $(objpfx)pldd: $(pldd-modules:%=$(objpfx)%.o)
+
+-SYSCONF-FLAGS := -D'SYSCONFDIR="$(sysconfdir)"'
+-CFLAGS-ldconfig.c = $(SYSCONF-FLAGS) -D'LIBDIR="$(libdir)"' \
++PREFIX-FLAGS := -D'PREFIX="$(sysconfdir)"'
++CFLAGS-ldconfig.c = $(PREFIX-FLAGS) -D'LIBDIR="$(libdir)"' \
+ -D'SLIBDIR="$(slibdir)"' -DIS_IN_ldconfig=1
+-CFLAGS-dl-cache.c = $(SYSCONF-FLAGS)
+-CFLAGS-cache.c = $(SYSCONF-FLAGS)
+-CFLAGS-rtld.c = $(SYSCONF-FLAGS)
++CFLAGS-dl-cache.c = $(PREFIX-FLAGS)
++CFLAGS-cache.c = $(PREFIX-FLAGS)
++CFLAGS-rtld.c = $(PREFIX-FLAGS)
+
+ CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\
+ -DNOT_IN_libc=1 -DIS_IN_rtld=1 -DIN_LIB=rtld)
+
+diff -Naur glibc-2.13-orig/sysdeps/generic/dl-cache.h glibc-2.13/sysdeps/generic/dl-cache.h
+--- glibc-2.13-orig/sysdeps/generic/dl-cache.h 2011-01-17 23:34:07.000000000 -0500
++++ glibc-2.13/sysdeps/generic/dl-cache.h 2012-04-10 23:28:20.077488815 -0400
+@@ -29,7 +29,7 @@
+ #endif
+
+ #ifndef LD_SO_CACHE
+-# define LD_SO_CACHE SYSCONFDIR "/ld.so.cache"
++# define LD_SO_CACHE PREFIX "/etc/ld.so.cache"
+ #endif
+
+ #ifndef add_system_dir
diff --git a/gnu/packages/patches/guile-1.8-cpp-4.5.patch b/gnu/packages/patches/guile-1.8-cpp-4.5.patch
new file mode 100644
index 0000000000..638d071baf
--- /dev/null
+++ b/gnu/packages/patches/guile-1.8-cpp-4.5.patch
@@ -0,0 +1,24 @@
+Fix doc snarfing with GCC 4.5+.
+From <http://git.savannah.gnu.org/cgit/guile.git/commit/?h=branch_release-1-8&id=aac41d28358cea594bb30f6e547afb82bb6004a6>.
+
+diff --git a/scripts/snarf-check-and-output-texi b/scripts/snarf-check-and-output-texi
+index ea33e17..8cd42e8 100755
+--- a/scripts/snarf-check-and-output-texi
++++ b/scripts/snarf-check-and-output-texi
+@@ -267,6 +267,17 @@ exec ${GUILE-guile} -l $0 -c "(apply $main (cdr (command-line)))" "$@"
+ (set! *file* file)
+ (set! *line* line))
+
++ ;; newer gccs like to throw around more location markers into the
++ ;; preprocessed source; these (hash . hash) bits are what they translate to
++ ;; in snarfy terms.
++ (('location ('string . file) ('int . line) ('hash . 'hash))
++ (set! *file* file)
++ (set! *line* line))
++
++ (('location ('hash . 'hash) ('string . file) ('int . line) ('hash . 'hash))
++ (set! *file* file)
++ (set! *line* line))
++
+ (('arglist rest ...)
+ (set! *args* (do-arglist rest)))
diff --git a/gnu/packages/patches/guile-default-utf8.patch b/gnu/packages/patches/guile-default-utf8.patch
new file mode 100644
index 0000000000..409f435161
--- /dev/null
+++ b/gnu/packages/patches/guile-default-utf8.patch
@@ -0,0 +1,111 @@
+This hack makes Guile default to UTF-8. This avoids calls to
+`iconv_open'; `iconv_open' tries to open shared objects that aren't
+available during bootstrap, so using UTF-8 avoids that (and UTF-8 has
+built-in conversions in glibc, too.)
+
+diff --git a/libguile/bytevectors.c b/libguile/bytevectors.c
+index cf41f2f..facfb91 100644
+--- a/libguile/bytevectors.c
++++ b/libguile/bytevectors.c
+@@ -1887,7 +1887,7 @@ utf_encoding_name (char *name, size_t utf_width, SCM endianness)
+ if (scm_i_is_narrow_string (str)) \
+ { \
+ err = mem_iconveh (scm_i_string_chars (str), c_strlen, \
+- "ISO-8859-1", c_utf_name, \
++ "UTF-8", c_utf_name, \
+ iconveh_question_mark, NULL, \
+ &c_utf, &c_utf_len); \
+ if (SCM_UNLIKELY (err)) \
+diff --git a/libguile/ports.c b/libguile/ports.c
+index 301bc44..b0ea2e6 100644
+--- a/libguile/ports.c
++++ b/libguile/ports.c
+@@ -1750,7 +1750,7 @@ scm_ungetc (scm_t_wchar c, SCM port)
+ if (pt->encoding != NULL)
+ encoding = pt->encoding;
+ else
+- encoding = "ISO-8859-1";
++ encoding = "UTF-8";
+
+ len = sizeof (result_buf);
+ result = u32_conv_to_encoding (encoding,
+@@ -2212,7 +2212,7 @@ scm_i_set_port_encoding_x (SCM port, const char *encoding)
+ pt = SCM_PTAB_ENTRY (port);
+
+ if (encoding == NULL)
+- encoding = "ISO-8859-1";
++ encoding = "UTF-8";
+
+ if (pt->encoding != encoding)
+ pt->encoding = scm_gc_strdup (encoding, "port");
+diff --git a/libguile/posix.c b/libguile/posix.c
+index 4f8b8ac..fea7f74 100644
+--- a/libguile/posix.c
++++ b/libguile/posix.c
+@@ -1740,7 +1740,7 @@ SCM_DEFINE (scm_setlocale, "setlocale", 1, 1, 0,
+ SCM_SYSERROR;
+ }
+
+- enc = locale_charset ();
++ enc = "UTF-8";
+
+ /* Set the default encoding for new ports. */
+ scm_i_set_default_port_encoding (enc);
+diff --git a/libguile/script.c b/libguile/script.c
+index 83daf8a..083891e 100644
+--- a/libguile/script.c
++++ b/libguile/script.c
+@@ -387,7 +387,7 @@ locale_arguments_to_string_list (int argc, char **const argv)
+ SCM lst;
+ const char *encoding;
+
+- encoding = environ_locale_charset ();
++ encoding = "UTF-8";
+ for (i = argc - 1, lst = SCM_EOL;
+ i >= 0;
+ i--)
+diff --git a/libguile/strings.c b/libguile/strings.c
+index 5d0db23..8266247 100644
+--- a/libguile/strings.c
++++ b/libguile/strings.c
+@@ -1576,7 +1576,7 @@ scm_from_locale_string (const char *str)
+ SCM
+ scm_from_locale_stringn (const char *str, size_t len)
+ {
+- return scm_from_stringn (str, len, locale_charset (),
++ return scm_from_stringn (str, len, "UTF-8",
+ scm_i_default_port_conversion_handler ());
+ }
+
+@@ -1803,7 +1803,7 @@ char *
+ scm_to_locale_stringn (SCM str, size_t *lenp)
+ {
+ return scm_to_stringn (str, lenp,
+- locale_charset (),
++ "UTF-8",
+ scm_i_default_port_conversion_handler ());
+ }
+
+@@ -2054,7 +2054,7 @@ scm_to_stringn (SCM str, size_t *lenp, const char *encoding,
+ "string contains #\\nul character: ~S",
+ scm_list_1 (str));
+
+- if (scm_i_is_narrow_string (str) && (encoding == NULL))
++ if (scm_i_is_narrow_string (str))
+ {
+ /* If using native Latin-1 encoding, just copy the string
+ contents. */
+@@ -2079,11 +2079,11 @@ scm_to_stringn (SCM str, size_t *lenp, const char *encoding,
+ len = 0;
+ enc = encoding;
+ if (enc == NULL)
+- enc = "ISO-8859-1";
++ enc = "UTF-8";
+ if (scm_i_is_narrow_string (str))
+ {
+ ret = mem_iconveh (scm_i_string_chars (str), ilen,
+- "ISO-8859-1", enc,
++ "UTF-8", enc,
+ (enum iconv_ilseq_handler) handler, NULL,
+ &buf, &len);
+
diff --git a/gnu/packages/patches/guile-relocatable.patch b/gnu/packages/patches/guile-relocatable.patch
new file mode 100644
index 0000000000..077394cdde
--- /dev/null
+++ b/gnu/packages/patches/guile-relocatable.patch
@@ -0,0 +1,70 @@
+This patch changes Guile to use a default search path relative to the
+location of the `guile' binary, allowing it to be relocated.
+
+diff --git a/libguile/load.c b/libguile/load.c
+index af2ca45..19dd338 100644
+--- a/libguile/load.c
++++ b/libguile/load.c
+@@ -26,6 +26,7 @@
+
+ #include <string.h>
+ #include <stdio.h>
++#include <libgen.h>
+
+ #include "libguile/_scm.h"
+ #include "libguile/private-gc.h" /* scm_getenv_int */
+@@ -255,6 +256,32 @@ scm_init_load_path ()
+ SCM cpath = SCM_EOL;
+
+ #ifdef SCM_LIBRARY_DIR
++ char *program, *bin_dir, *prefix, *module_dir, *ccache_dir;
++
++ /* Determine the source and compiled module directories at run-time,
++ relative to the executable's location.
++
++ Note: Use /proc/self/exe instead of argv[0] because the latter is
++ not necessarily an absolute, nor a valid file name. */
++
++ program = scm_gc_malloc_pointerless (256, "string");
++ readlink ("/proc/self/exe", program, 256);
++
++ bin_dir = dirname (strdupa (program));
++
++ prefix = scm_gc_malloc_pointerless (strlen (bin_dir) + 4, "string");
++ strcpy (prefix, bin_dir);
++ strcat (prefix, "/..");
++ prefix = canonicalize_file_name (prefix);
++
++ module_dir = scm_gc_malloc_pointerless (strlen (prefix) + 50, "string");
++ strcpy (module_dir, prefix);
++ strcat (module_dir, "/share/guile/2.0");
++
++ ccache_dir = scm_gc_malloc_pointerless (strlen (prefix) + 50, "string");
++ strcpy (ccache_dir, prefix);
++ strcat (ccache_dir, "/lib/guile/2.0/ccache");
++
+ env = getenv ("GUILE_SYSTEM_PATH");
+ if (env && strcmp (env, "") == 0)
+ /* special-case interpret system-path=="" as meaning no system path instead
+@@ -263,10 +290,7 @@ scm_init_load_path ()
+ else if (env)
+ path = scm_parse_path (scm_from_locale_string (env), path);
+ else
+- path = scm_list_4 (scm_from_locale_string (SCM_LIBRARY_DIR),
+- scm_from_locale_string (SCM_SITE_DIR),
+- scm_from_locale_string (SCM_GLOBAL_SITE_DIR),
+- scm_from_locale_string (SCM_PKGDATA_DIR));
++ path = scm_list_1 (scm_from_locale_string (module_dir));
+
+ env = getenv ("GUILE_SYSTEM_COMPILED_PATH");
+ if (env && strcmp (env, "") == 0)
+@@ -276,8 +300,7 @@ scm_init_load_path ()
+ cpath = scm_parse_path (scm_from_locale_string (env), cpath);
+ else
+ {
+- cpath = scm_list_2 (scm_from_locale_string (SCM_CCACHE_DIR),
+- scm_from_locale_string (SCM_SITE_CCACHE_DIR));
++ cpath = scm_list_1 (scm_from_locale_string (ccache_dir));
+ }
+
+ #endif /* SCM_LIBRARY_DIR */
diff --git a/gnu/packages/patches/libtool-skip-tests.patch b/gnu/packages/patches/libtool-skip-tests.patch
new file mode 100644
index 0000000000..6e12615d51
--- /dev/null
+++ b/gnu/packages/patches/libtool-skip-tests.patch
@@ -0,0 +1,37 @@
+Because our GCC `lib' spec automatically adds `-rpath' for each `-L'
+and a couple more `-rpath, there are two test failures:
+demo-hardcode.test, and destdir.at. Disable these.
+
+--- libtool-2.4.2/Makefile.in 2011-10-17 12:18:55.000000000 +0200
++++ libtool-2.4.2/Makefile.in 2012-09-13 23:50:37.000000000 +0200
+@@ -909,7 +908,7 @@ COMMON_TESTS = \
+ # but they depend on the other tests being run beforehand.
+ INTERACTIVE_TESTS = tests/demo-shared.test tests/demo-shared-make.test \
+ tests/demo-shared-exec.test tests/demo-shared-inst.test \
+- tests/demo-hardcode.test tests/demo-relink.test \
++ tests/demo-relink.test \
+ tests/demo-noinst-link.test tests/demo-shared-unst.test \
+ tests/depdemo-shared.test tests/depdemo-shared-make.test \
+ tests/depdemo-shared-exec.test tests/depdemo-shared-inst.test \
+@@ -2580,8 +2579,7 @@ tests/cdemo-static-make.log: tests/cdemo
+
+ tests/demo-shared-unst.log: tests/demo-noinst-link.log
+ tests/demo-noinst-link.log: tests/demo-relink.log
+-tests/demo-relink.log: tests/demo-hardcode.log
+-tests/demo-hardcode.log: tests/demo-shared-inst.log
++tests/demo-relink.log: tests/demo-shared-inst.log
+ tests/demo-shared-inst.log: tests/demo-shared-exec.log
+ tests/demo-shared-exec.log: tests/demo-shared-make.log
+ tests/demo-shared-make.log: tests/demo-shared.log
+
+--- libtool-2.4.2/tests/testsuite 2011-10-17 12:19:52.000000000 +0200
++++ libtool-2.4.2/tests/testsuite 2012-09-14 00:28:45.000000000 +0200
+@@ -14443,6 +14443,6 @@ read at_status <"$at_status_file"
+ #AT_START_69
+ at_fn_group_banner 69 'destdir.at:75' \
+ "DESTDIR with in-package deplibs" " " 4
+-at_xfail=no
++at_xfail=yes
+ eval `$LIBTOOL --config | grep '^fast_install='`
+ case $fast_install in no) :;; *) false;; esac && at_xfail=yes
+
diff --git a/gnu/packages/patches/lsh-guile-compat.patch b/gnu/packages/patches/lsh-guile-compat.patch
new file mode 100644
index 0000000000..0fe0484580
--- /dev/null
+++ b/gnu/packages/patches/lsh-guile-compat.patch
@@ -0,0 +1,9 @@
+Use (ice-9 rdelim) for `read-line'.
+
+--- lsh-2.0.4/src/scm/guile-compat.scm 2012-12-03 23:28:01.000000000 +0100
++++ lsh-2.0.4/src/scm/guile-compat.scm 2012-12-03 23:28:04.000000000 +0100
+@@ -21,3 +21,4 @@
+ ;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ (use-syntax (ice-9 syncase))
++(use-modules (ice-9 rdelim))
diff --git a/gnu/packages/patches/lsh-no-root-login.patch b/gnu/packages/patches/lsh-no-root-login.patch
new file mode 100644
index 0000000000..9dd81de3fb
--- /dev/null
+++ b/gnu/packages/patches/lsh-no-root-login.patch
@@ -0,0 +1,16 @@
+Correctly handle the `--no-root-login' option.
+
+--- lsh-2.0.4/src/lshd.c 2006-05-01 13:47:44.000000000 +0200
++++ lsh-2.0.4/src/lshd.c 2009-09-08 12:20:36.000000000 +0200
+@@ -758,6 +758,10 @@ main_argp_parser(int key, char *arg, str
+ self->allow_root = 1;
+ break;
+
++ case OPT_NO_ROOT_LOGIN:
++ self->allow_root = 0;
++ break;
++
+ case OPT_KERBEROS_PASSWD:
+ self->pw_helper = PATH_KERBEROS_HELPER;
+ break;
+
diff --git a/gnu/packages/patches/lsh-pam-service-name.patch b/gnu/packages/patches/lsh-pam-service-name.patch
new file mode 100644
index 0000000000..6a6156855c
--- /dev/null
+++ b/gnu/packages/patches/lsh-pam-service-name.patch
@@ -0,0 +1,14 @@
+Tell `lsh-pam-checkpw', the PAM password helper program, to use a more
+descriptive service name.
+
+--- lsh-2.0.4/src/lsh-pam-checkpw.c 2003-02-16 22:30:10.000000000 +0100
++++ lsh-2.0.4/src/lsh-pam-checkpw.c 2008-11-28 16:16:58.000000000 +0100
+@@ -38,7 +38,7 @@
+ #include <security/pam_appl.h>
+
+ #define PWD_MAXLEN 1024
+-#define SERVICE_NAME "other"
++#define SERVICE_NAME "lshd"
+ #define TIMEOUT 600
+
+ static int
diff --git a/gnu/packages/patches/m4-gets-undeclared.patch b/gnu/packages/patches/m4-gets-undeclared.patch
new file mode 100644
index 0000000000..d28f0cdcc4
--- /dev/null
+++ b/gnu/packages/patches/m4-gets-undeclared.patch
@@ -0,0 +1,45 @@
+This patch is needed to allow builds with newer versions of
+the GNU libc (2.16+).
+
+The upstream fix was:
+
+ commit 66712c23388e93e5c518ebc8515140fa0c807348
+ Author: Eric Blake <eblake@redhat.com>
+ Date: Thu Mar 29 13:30:41 2012 -0600
+
+ stdio: don't assume gets any more
+
+ Gnulib intentionally does not have a gets module, and now that C11
+ and glibc have dropped it, we should be more proactive about warning
+ any user on a platform that still has a declaration of this dangerous
+ interface.
+
+ * m4/stdio_h.m4 (gl_STDIO_H, gl_STDIO_H_DEFAULTS): Drop gets
+ support.
+ * modules/stdio (Makefile.am): Likewise.
+ * lib/stdio-read.c (gets): Likewise.
+ * tests/test-stdio-c++.cc: Likewise.
+ * m4/warn-on-use.m4 (gl_WARN_ON_USE_PREPARE): Fix comment.
+ * lib/stdio.in.h (gets): Make warning occur in more places.
+ * doc/posix-functions/gets.texi (gets): Update documentation.
+ Reported by Christer Solskogen.
+
+ Signed-off-by: Eric Blake <eblake@redhat.com>
+
+This patch just gets rid of the offending part.
+
+--- m4-1.4.16/lib/stdio.in.h.orig 2012-09-01 01:05:36.000000000 +0200
++++ m4-1.4.16/lib/stdio.in.h 2012-09-01 01:05:42.000000000 +0200
+@@ -158,12 +158,6 @@ _GL_WARN_ON_USE (fflush, "fflush is not
+ "use gnulib module fflush for portable POSIX compliance");
+ #endif
+
+-/* It is very rare that the developer ever has full control of stdin,
+- so any use of gets warrants an unconditional warning. Assume it is
+- always declared, since it is required by C89. */
+-#undef gets
+-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
+-
+ #if @GNULIB_FOPEN@
+ # if @REPLACE_FOPEN@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)
diff --git a/gnu/packages/patches/m4-readlink-EINVAL.patch b/gnu/packages/patches/m4-readlink-EINVAL.patch
new file mode 100644
index 0000000000..dd371584a7
--- /dev/null
+++ b/gnu/packages/patches/m4-readlink-EINVAL.patch
@@ -0,0 +1,18 @@
+Newer Linux kernels would return EINVAL instead of ENOENT.
+The patch below, taken from Gnulib, allows the test to pass when
+these Linux versions are in use:
+https://lists.gnu.org/archive/html/bug-gnulib/2011-03/msg00308.html .
+
+diff --git a/tests/test-readlink.h b/tests/test-readlink.h
+index 08d5662..7247fc4 100644
+--- a/tests/test-readlink.h
++++ b/tests/test-readlink.h
+@@ -38,7 +38,7 @@ test_readlink (ssize_t (*func) (char const *, char *, size_t), bool print)
+ ASSERT (errno == ENOENT);
+ errno = 0;
+ ASSERT (func ("", buf, sizeof buf) == -1);
+- ASSERT (errno == ENOENT);
++ ASSERT (errno == ENOENT || errno == EINVAL);
+ errno = 0;
+ ASSERT (func (".", buf, sizeof buf) == -1);
+ ASSERT (errno == EINVAL);
diff --git a/gnu/packages/patches/m4-s_isdir.patch b/gnu/packages/patches/m4-s_isdir.patch
new file mode 100644
index 0000000000..a009a4ba44
--- /dev/null
+++ b/gnu/packages/patches/m4-s_isdir.patch
@@ -0,0 +1,14 @@
+Fails to build with glibc 2.12.1 without this patch.
+
+http://lists.gnu.org/archive/html/bug-m4/2010-05/msg00002.html
+
+--- a/src/path.c
++++ b/src/path.c
+@@ -22,6 +22,7 @@
+ /* Handling of path search of included files via the builtins "include"
+ and "sinclude". */
+
+ #include "m4.h"
++#include "sys/stat.h"
+
+ struct includes
diff --git a/gnu/packages/patches/make-impure-dirs.patch b/gnu/packages/patches/make-impure-dirs.patch
new file mode 100644
index 0000000000..83a5fbe3a5
--- /dev/null
+++ b/gnu/packages/patches/make-impure-dirs.patch
@@ -0,0 +1,40 @@
+Purity: don't look for library dependencies (of the form `-lfoo') in
+/lib and /usr/lib. Likewise, when searching for included Makefiles,
+don't look in /usr/include and friends.
+
+Patch from Nixpkgs, by Eelco Dolstra.
+
+diff -rc make-3.81-orig/read.c make-3.81/read.c
+*** make-3.81-orig/read.c 2006-03-17 15:24:20.000000000 +0100
+--- make-3.81/read.c 2007-05-24 17:16:31.000000000 +0200
+***************
+*** 99,107 ****
+--- 99,109 ----
+ #endif
+ INCLUDEDIR,
+ #ifndef _AMIGA
++ #if 0
+ "/usr/gnu/include",
+ "/usr/local/include",
+ "/usr/include",
++ #endif
+ #endif
+ 0
+ };
+diff -rc make-3.81-orig/remake.c make-3.81/remake.c
+*** make-3.81-orig/remake.c 2006-03-20 03:36:37.000000000 +0100
+--- make-3.81/remake.c 2007-05-24 17:06:54.000000000 +0200
+***************
+*** 1452,1460 ****
+--- 1452,1462 ----
+ static char *dirs[] =
+ {
+ #ifndef _AMIGA
++ #if 0
+ "/lib",
+ "/usr/lib",
+ #endif
++ #endif
+ #if defined(WINDOWS32) && !defined(LIBDIR)
+ /*
+ * This is completely up to the user at product install time. Just define
diff --git a/gnu/packages/patches/perl-no-sys-dirs.patch b/gnu/packages/patches/perl-no-sys-dirs.patch
new file mode 100644
index 0000000000..3aba4d7529
--- /dev/null
+++ b/gnu/packages/patches/perl-no-sys-dirs.patch
@@ -0,0 +1,156 @@
+Don't long for headers and libraries in "traditional" locations.
+
+Patch from Nixpkgs by Eelco Dolstra <eelco.dolstra@logicblox.com>.
+
+diff -ru -x '*~' perl-5.14.2-orig/Configure perl-5.14.2/Configure
+--- perl-5.14.2-orig/Configure 2011-09-26 11:44:34.000000000 +0200
++++ perl-5.14.2/Configure 2012-01-20 17:05:23.089223129 +0100
+@@ -106,15 +106,7 @@
+ fi
+
+ : Proper PATH setting
+-paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
+-paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
+-paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
+-paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
+-paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
+-paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
+-paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
+-paths="$paths /sbin /usr/sbin /usr/libexec"
+-paths="$paths /system/gnu_library/bin"
++paths=''
+
+ for p in $paths
+ do
+@@ -1311,8 +1303,7 @@
+ archname=''
+ : Possible local include directories to search.
+ : Set locincpth to "" in a hint file to defeat local include searches.
+-locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
+-locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
++locincpth=""
+ :
+ : no include file wanted by default
+ inclwanted=''
+@@ -1328,17 +1319,12 @@
+ archobjs=''
+ libnames=''
+ : change the next line if compiling for Xenix/286 on Xenix/386
+-xlibpth='/usr/lib/386 /lib/386'
++xlibpth=''
+ : Possible local library directories to search.
+-loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
+-loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
++loclibpth=""
+
+ : general looking path for locating libraries
+-glibpth="/lib /usr/lib $xlibpth"
+-glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
+-test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
+-test -f /shlib/libc.so && glibpth="/shlib $glibpth"
+-test -d /usr/lib64 && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64"
++glibpth=""
+
+ : Private path used by Configure to find libraries. Its value
+ : is prepended to libpth. This variable takes care of special
+@@ -1371,8 +1357,6 @@
+ libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
+ : We probably want to search /usr/shlib before most other libraries.
+ : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
+-glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
+-glibpth="/usr/shlib $glibpth"
+ : Do not use vfork unless overridden by a hint file.
+ usevfork=false
+
+@@ -2380,7 +2364,6 @@
+ zip
+ "
+ pth=`echo $PATH | sed -e "s/$p_/ /g"`
+-pth="$pth /lib /usr/lib"
+ for file in $loclist; do
+ eval xxx=\$$file
+ case "$xxx" in
+@@ -4785,7 +4768,7 @@
+ : Set private lib path
+ case "$plibpth" in
+ '') if ./mips; then
+- plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
++ plibpth="$incpath/usr/lib"
+ fi;;
+ esac
+ case "$libpth" in
+@@ -8390,13 +8373,8 @@
+ echo " "
+ case "$sysman" in
+ '')
+- syspath='/usr/share/man/man1 /usr/man/man1'
+- syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
+- syspath="$syspath /usr/man/u_man/man1"
+- syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
+- syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
+- syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
+- sysman=`./loc . /usr/man/man1 $syspath`
++ syspath=''
++ sysman=''
+ ;;
+ esac
+ if $test -d "$sysman"; then
+@@ -19721,9 +19699,10 @@
+ case "$full_ar" in
+ '') full_ar=$ar ;;
+ esac
++full_ar=ar
+
+ : Store the full pathname to the sed program for use in the C program
+-full_sed=$sed
++full_sed=sed
+
+ : see what type gids are declared as in the kernel
+ echo " "
+diff -ru -x '*~' perl-5.14.2-orig/ext/Errno/Errno_pm.PL perl-5.14.2/ext/Errno/Errno_pm.PL
+--- perl-5.14.2-orig/ext/Errno/Errno_pm.PL 2011-09-26 11:44:34.000000000 +0200
++++ perl-5.14.2/ext/Errno/Errno_pm.PL 2012-01-20 17:02:07.938138311 +0100
+@@ -137,11 +137,7 @@
+ if ($dep =~ /(\S+errno\.h)/) {
+ $file{$1} = 1;
+ }
+- } elsif ($^O eq 'linux' &&
+- $Config{gccversion} ne '' &&
+- $Config{gccversion} !~ /intel/i
+- # might be using, say, Intel's icc
+- ) {
++ } elsif (0) {
+ # Some Linuxes have weird errno.hs which generate
+ # no #file or #line directives
+ my $linux_errno_h = -e '/usr/include/errno.h' ?
+diff -ru -x '*~' perl-5.14.2-orig/hints/freebsd.sh perl-5.14.2/hints/freebsd.sh
+--- perl-5.14.2-orig/hints/freebsd.sh 2011-09-19 15:18:22.000000000 +0200
++++ perl-5.14.2/hints/freebsd.sh 2012-01-20 17:10:37.267924044 +0100
+@@ -118,21 +118,21 @@
+ objformat=`/usr/bin/objformat`
+ if [ x$objformat = xaout ]; then
+ if [ -e /usr/lib/aout ]; then
+- libpth="/usr/lib/aout /usr/local/lib /usr/lib"
+- glibpth="/usr/lib/aout /usr/local/lib /usr/lib"
++ libpth=""
++ glibpth=""
+ fi
+ lddlflags='-Bshareable'
+ else
+- libpth="/usr/lib /usr/local/lib"
+- glibpth="/usr/lib /usr/local/lib"
++ libpth=""
++ glibpth=""
+ ldflags="-Wl,-E "
+ lddlflags="-shared "
+ fi
+ cccdlflags='-DPIC -fPIC'
+ ;;
+ *)
+- libpth="/usr/lib /usr/local/lib"
+- glibpth="/usr/lib /usr/local/lib"
++ libpth=""
++ glibpth=""
+ ldflags="-Wl,-E "
+ lddlflags="-shared "
+ cccdlflags='-DPIC -fPIC'
diff --git a/gnu/packages/patches/procps-make-3.82.patch b/gnu/packages/patches/procps-make-3.82.patch
new file mode 100644
index 0000000000..7bf53e2ccc
--- /dev/null
+++ b/gnu/packages/patches/procps-make-3.82.patch
@@ -0,0 +1,14 @@
+Fix compilation with GNU Make 3.82 (patch from Nixpkgs).
+
+diff --git a/Makefile b/Makefile
+index 09fb3ed..59eba16 100644
+--- a/Makefile
++++ b/Makefile
+@@ -174,7 +174,7 @@ INSTALL := $(BINFILES) $(MANFILES)
+ # want this rule first, use := on ALL, and ALL not filled in yet
+ all: do_all
+
+--include */module.mk
++-include proc/module.mk ps/module.mk
+
+ do_all: $(ALL)
diff --git a/gnu/packages/patches/readline-link-ncurses.patch b/gnu/packages/patches/readline-link-ncurses.patch
new file mode 100644
index 0000000000..0fd0598f46
--- /dev/null
+++ b/gnu/packages/patches/readline-link-ncurses.patch
@@ -0,0 +1,18 @@
+This patch is to make sure that `libncurses' is among the `NEEDED'
+dependencies of `libreadline.so' and `libhistory.so'.
+
+Failing to do that, applications linking against Readline are
+forced to explicitly link against libncurses as well; in addition,
+this trick doesn't work when using GNU ld's `--as-needed'.
+
+--- shlib/Makefile.in 2009-01-06 18:03:22.000000000 +0100
++++ shlib/Makefile.in 2009-07-27 14:43:25.000000000 +0200
+@@ -84,7 +84,7 @@ SHOBJ_LDFLAGS = @SHOBJ_LDFLAGS@
+ SHOBJ_XLDFLAGS = @SHOBJ_XLDFLAGS@
+ SHOBJ_LIBS = @SHOBJ_LIBS@
+
+-SHLIB_XLDFLAGS = @LDFLAGS@ @SHLIB_XLDFLAGS@
++SHLIB_XLDFLAGS = @LDFLAGS@ @SHLIB_XLDFLAGS@ -lncurses
+ SHLIB_LIBS = @SHLIB_LIBS@
+
+ SHLIB_DOT = @SHLIB_DOT@
diff --git a/gnu/packages/patches/shishi-gets-undeclared.patch b/gnu/packages/patches/shishi-gets-undeclared.patch
new file mode 100644
index 0000000000..a3d6d0cca2
--- /dev/null
+++ b/gnu/packages/patches/shishi-gets-undeclared.patch
@@ -0,0 +1,71 @@
+This patch is needed to allow builds with newer versions of
+the GNU libc (2.16+).
+
+
+commit 66712c23388e93e5c518ebc8515140fa0c807348
+Author: Eric Blake <eblake@redhat.com>
+Date: Thu Mar 29 13:30:41 2012 -0600
+
+ stdio: don't assume gets any more
+
+ Gnulib intentionally does not have a gets module, and now that C11
+ and glibc have dropped it, we should be more proactive about warning
+ any user on a platform that still has a declaration of this dangerous
+ interface.
+
+ * m4/stdio_h.m4 (gl_STDIO_H, gl_STDIO_H_DEFAULTS): Drop gets
+ support.
+ * modules/stdio (Makefile.am): Likewise.
+ * lib/stdio-read.c (gets): Likewise.
+ * tests/test-stdio-c++.cc: Likewise.
+ * m4/warn-on-use.m4 (gl_WARN_ON_USE_PREPARE): Fix comment.
+ * lib/stdio.in.h (gets): Make warning occur in more places.
+ * doc/posix-functions/gets.texi (gets): Update documentation.
+ Reported by Christer Solskogen.
+
+ Signed-off-by: Eric Blake <eblake@redhat.com>
+
+diff --git a/gl/stdio.in.h b/gl/stdio.in.h
+index aa7b599..c377b6e 100644
+--- a/gl/stdio.in.h
++++ b/gl/stdio.in.h
+@@ -698,22 +698,11 @@ _GL_WARN_ON_USE (getline, "getline is unportable - "
+ # endif
+ #endif
+
+-#if @GNULIB_GETS@
+-# if @REPLACE_STDIO_READ_FUNCS@ && @GNULIB_STDIO_H_NONBLOCKING@
+-# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+-# undef gets
+-# define gets rpl_gets
+-# endif
+-_GL_FUNCDECL_RPL (gets, char *, (char *s) _GL_ARG_NONNULL ((1)));
+-_GL_CXXALIAS_RPL (gets, char *, (char *s));
+-# else
+-_GL_CXXALIAS_SYS (gets, char *, (char *s));
+-# undef gets
+-# endif
+-_GL_CXXALIASWARN (gets);
+ /* It is very rare that the developer ever has full control of stdin,
+- so any use of gets warrants an unconditional warning. Assume it is
+- always declared, since it is required by C89. */
++ so any use of gets warrants an unconditional warning; besides, C11
++ removed it. */
++#undef gets
++#if HAVE_RAW_DECL_GETS
+ _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
+ #endif
+
+@@ -1053,9 +1042,9 @@ _GL_WARN_ON_USE (snprintf, "snprintf is unportable - "
+ # endif
+ #endif
+
+-/* Some people would argue that sprintf should be handled like gets
+- (for example, OpenBSD issues a link warning for both functions),
+- since both can cause security holes due to buffer overruns.
++/* Some people would argue that all sprintf uses should be warned about
++ (for example, OpenBSD issues a link warning for it),
++ since it can cause security holes due to buffer overruns.
+ However, we believe that sprintf can be used safely, and is more
+ efficient than snprintf in those safe cases; and as proof of our
+ belief, we use sprintf in several gnulib modules. So this header
diff --git a/gnu/packages/patches/tar-gets-undeclared.patch b/gnu/packages/patches/tar-gets-undeclared.patch
new file mode 100644
index 0000000000..301a09dde1
--- /dev/null
+++ b/gnu/packages/patches/tar-gets-undeclared.patch
@@ -0,0 +1,26 @@
+This patch is needed to allow builds with newer versions of
+the GNU libc (2.16+).
+
+This is a backport of this patch:
+
+commit 66712c23388e93e5c518ebc8515140fa0c807348
+Author: Eric Blake <eblake@redhat.com>
+Date: Thu Mar 29 13:30:41 2012 -0600
+
+ stdio: don't assume gets any more
+
+--- tar-1.26/gnu/stdio.in.h 2012-07-02 14:28:45.000000000 +0200
++++ tar-1.26/gnu/stdio.in.h 2012-07-02 14:28:50.000000000 +0200
+@@ -160,12 +160,6 @@ _GL_WARN_ON_USE (fflush, "fflush is not
+ "use gnulib module fflush for portable POSIX compliance");
+ #endif
+
+-/* It is very rare that the developer ever has full control of stdin,
+- so any use of gets warrants an unconditional warning. Assume it is
+- always declared, since it is required by C89. */
+-#undef gets
+-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
+-
+ #if @GNULIB_FOPEN@
+ # if @REPLACE_FOPEN@
+ # if !(defined __cplusplus && defined GNULIB_NAMESPACE)