aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/patches
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r--gnu/packages/patches/bigloo-gc-shebangs.patch4
-rw-r--r--gnu/packages/patches/curl-fix-test172.patch12
-rw-r--r--gnu/packages/patches/dmd-tests-longer-sleeps.patch52
-rw-r--r--gnu/packages/patches/gdb-loongson-madd-fix.patch44
-rw-r--r--gnu/packages/patches/gnunet-fix-scheduler.patch13
-rw-r--r--gnu/packages/patches/gnunet-fix-tests.patch58
-rw-r--r--gnu/packages/patches/inkscape-stray-comma.patch13
-rw-r--r--gnu/packages/patches/mpc123-initialize-ao.patch19
-rw-r--r--gnu/packages/patches/patchelf-page-size.patch69
-rw-r--r--gnu/packages/patches/ratpoison-shell.patch91
-rw-r--r--gnu/packages/patches/slim-config.patch27
-rw-r--r--gnu/packages/patches/slim-session.patch17
-rw-r--r--gnu/packages/patches/slim-sigusr1.patch33
13 files changed, 406 insertions, 46 deletions
diff --git a/gnu/packages/patches/bigloo-gc-shebangs.patch b/gnu/packages/patches/bigloo-gc-shebangs.patch
index 9ead2ba979..367708610a 100644
--- a/gnu/packages/patches/bigloo-gc-shebangs.patch
+++ b/gnu/packages/patches/bigloo-gc-shebangs.patch
@@ -1,7 +1,7 @@
Patch shebangs in source that gets unpacked by `configure'.
---- bigloo4.0b/gc/install-gc-7.3alpha3-20130330 2013-08-19 10:45:20.000000000 +0200
-+++ bigloo4.0b/gc/install-gc-7.3alpha3-20130330 2013-08-19 10:46:36.000000000 +0200
+--- bigloo4.1a/gc/install-gc-7.4.0 2014-02-04 14:55:03.000000000 +0100
++++ bigloo4.1a/gc/install-gc-7.4.0 2014-02-04 14:55:36.000000000 +0100
@@ -29,10 +29,12 @@ fi
# untar the two versions of the GC
diff --git a/gnu/packages/patches/curl-fix-test172.patch b/gnu/packages/patches/curl-fix-test172.patch
new file mode 100644
index 0000000000..cc2c2705e7
--- /dev/null
+++ b/gnu/packages/patches/curl-fix-test172.patch
@@ -0,0 +1,12 @@
+diff --git a/tests/data/test172 b/tests/data/test172
+index b3efae9..3d53418 100644
+--- a/tests/data/test172
++++ b/tests/data/test172
+@@ -36,7 +36,7 @@ http://%HOSTIP:%HTTPPORT/we/want/172 -b log/jar172.txt -b "tool=curl; name=fool"
+
+ .%HOSTIP TRUE /silly/ FALSE 0 ismatch this
+ .%HOSTIP TRUE / FALSE 0 partmatch present
+-%HOSTIP FALSE /we/want/ FALSE 1391252187 nodomain value
++%HOSTIP FALSE /we/want/ FALSE 2139150993 nodomain value
+ </file>
+ </client>
diff --git a/gnu/packages/patches/dmd-tests-longer-sleeps.patch b/gnu/packages/patches/dmd-tests-longer-sleeps.patch
new file mode 100644
index 0000000000..708000f351
--- /dev/null
+++ b/gnu/packages/patches/dmd-tests-longer-sleeps.patch
@@ -0,0 +1,52 @@
+Increase sleep times in tests, for slower machines.
+
+Patch by Mark H Weaver <mhw@netris.org>.
+
+--- dmd/tests/basic.sh 2013-11-30 17:22:00.000000000 -0500
++++ dmd/tests/basic.sh 2014-02-16 02:18:34.036376953 -0500
+@@ -46,7 +46,7 @@
+ dmd -I -s "$socket" -c "$conf" -l "$log" &
+ dmd_pid=$!
+
+-sleep 1 # XXX: wait till it's up
++sleep 3 # XXX: wait till it's up
+ kill -0 $dmd_pid
+ test -S "$socket"
+ $deco status dmd | grep -E '(Start.*dmd|Stop.*test)'
+--- dmd/tests/respawn.sh 2013-12-01 16:50:37.000000000 -0500
++++ dmd/tests/respawn.sh 2014-02-16 02:19:16.958251953 -0500
+@@ -39,7 +39,7 @@
+ i=0
+ while ! test -f "$1" && test $i -lt 20
+ do
+- sleep 0.3
++ sleep 1
+ i=`expr $i + 1`
+ done
+ test -f "$1"
+@@ -65,14 +65,14 @@
+ #:provides '(test1)
+ #:start (make-forkexec-constructor
+ "$SHELL" "-c"
+- "echo \$\$ > $service1_pid ; while true ; do sleep 1 ; done")
++ "echo \$\$ > $service1_pid ; while true ; do sleep 3 ; done")
+ #:stop (make-kill-destructor)
+ #:respawn? #t)
+ (make <service>
+ #:provides '(test2)
+ #:start (make-forkexec-constructor
+ "$SHELL" "-c"
+- "echo \$\$ > $service2_pid ; while true ; do sleep 1 ; done")
++ "echo \$\$ > $service2_pid ; while true ; do sleep 3 ; done")
+ #:stop (make-kill-destructor)
+ #:respawn? #t))
+ (start 'test1)
+@@ -82,7 +82,7 @@
+ dmd -I -s "$socket" -c "$conf" -l "$log" &
+ dmd_pid=$!
+
+-sleep 1 # XXX: wait till it's up
++sleep 3 # XXX: wait till it's up
+ kill -0 $dmd_pid
+ test -S "$socket"
+ $deco status test1 | grep started
diff --git a/gnu/packages/patches/gdb-loongson-madd-fix.patch b/gnu/packages/patches/gdb-loongson-madd-fix.patch
deleted file mode 100644
index 0d50dd2dd4..0000000000
--- a/gnu/packages/patches/gdb-loongson-madd-fix.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-Fix the Loongson 2F specific fused multiply-add instructions on paired singles to
-use the encoding recognized by the processor, as opposed to the mistaken english
-Loongson 2F documentation.
-
-Patch by Mark H Weaver <mhw@netris.org>.
-
---- gdb/opcodes/mips-opc.c.orig 2013-02-09 05:24:18.000000000 -0500
-+++ gdb/opcodes/mips-opc.c 2013-10-27 23:35:20.191997541 -0400
-@@ -956,7 +956,7 @@
- {"madd.s", "D,S,T", 0x4600001c, 0xffe0003f, RD_S|RD_T|WR_D|FP_S, 0, EE },
- {"madd.ps", "D,R,S,T", 0x4c000026, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I5_33 },
- {"madd.ps", "D,S,T", 0x45600018, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2E },
--{"madd.ps", "D,S,T", 0x71600018, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2F },
-+{"madd.ps", "D,S,T", 0x72c00018, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2F },
- {"madd", "s,t", 0x0000001c, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, L1 },
- {"madd", "s,t", 0x70000000, 0xfc00ffff, RD_s|RD_t|MOD_HILO, 0, I32|N55 },
- {"madd", "s,t", 0x70000000, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M, 0, G1 },
-@@ -1084,7 +1084,7 @@
- {"msub.s", "D,S,T", 0x4600001d, 0xffe0003f, RD_S|RD_T|WR_D|FP_S, 0, EE },
- {"msub.ps", "D,R,S,T", 0x4c00002e, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I5_33 },
- {"msub.ps", "D,S,T", 0x45600019, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2E },
--{"msub.ps", "D,S,T", 0x71600019, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2F },
-+{"msub.ps", "D,S,T", 0x72c00019, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2F },
- {"msub", "s,t", 0x0000001e, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, L1 },
- {"msub", "s,t", 0x70000004, 0xfc00ffff, RD_s|RD_t|MOD_HILO, 0, I32|N55 },
- {"msub", "7,s,t", 0x70000004, 0xfc00e7ff, MOD_a|RD_s|RD_t, 0, D32 },
-@@ -1218,7 +1218,7 @@
- {"nmadd.s", "D,S,T", 0x7200001a, 0xffe0003f, RD_S|RD_T|WR_D|FP_S, 0, IL2F },
- {"nmadd.ps","D,R,S,T", 0x4c000036, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I5_33 },
- {"nmadd.ps", "D,S,T", 0x4560001a, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2E },
--{"nmadd.ps", "D,S,T", 0x7160001a, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2F },
-+{"nmadd.ps", "D,S,T", 0x72c0001a, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2F },
- {"nmsub.d", "D,R,S,T", 0x4c000039, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I4_33 },
- {"nmsub.d", "D,S,T", 0x4620001b, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2E },
- {"nmsub.d", "D,S,T", 0x7220001b, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2F },
-@@ -1227,7 +1227,7 @@
- {"nmsub.s", "D,S,T", 0x7200001b, 0xffe0003f, RD_S|RD_T|WR_D|FP_S, 0, IL2F },
- {"nmsub.ps","D,R,S,T", 0x4c00003e, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0, I5_33 },
- {"nmsub.ps", "D,S,T", 0x4560001b, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2E },
--{"nmsub.ps", "D,S,T", 0x7160001b, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2F },
-+{"nmsub.ps", "D,S,T", 0x72c0001b, 0xffe0003f, RD_S|RD_T|WR_D|FP_D, 0, IL2F },
- /* nop is at the start of the table. */
- {"nor", "d,v,t", 0x00000027, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I1 },
- {"nor", "t,r,I", 0, (int) M_NOR_I, INSN_MACRO, 0, I1 },
diff --git a/gnu/packages/patches/gnunet-fix-scheduler.patch b/gnu/packages/patches/gnunet-fix-scheduler.patch
new file mode 100644
index 0000000000..1e0aef2a1a
--- /dev/null
+++ b/gnu/packages/patches/gnunet-fix-scheduler.patch
@@ -0,0 +1,13 @@
+Index: src/util/scheduler.c
+===================================================================
+--- src/util/scheduler.c (revision 31745)
++++ src/util/scheduler.c (working copy)
+@@ -1599,7 +1599,7 @@
+ int real_fd;
+
+ GNUNET_DISK_internal_file_handle_ (fd, &real_fd, sizeof (int));
+- GNUNET_assert (real_fd > 0);
++ GNUNET_assert (real_fd >= 0);
+ return add_without_sets (
+ delay, priority,
+ on_read ? real_fd : -1,
diff --git a/gnu/packages/patches/gnunet-fix-tests.patch b/gnu/packages/patches/gnunet-fix-tests.patch
new file mode 100644
index 0000000000..4276db5a7c
--- /dev/null
+++ b/gnu/packages/patches/gnunet-fix-tests.patch
@@ -0,0 +1,58 @@
+diff -ru a/src/peerinfo-tool/Makefile.in b/src/peerinfo-tool/Makefile.in
+--- src/peerinfo-tool/Makefile.in 2013-12-24 13:55:04.000000000 +0100
++++ src/peerinfo-tool/Makefile.in 2014-01-30 13:07:52.275965484 +0100
+@@ -335,9 +335,6 @@
+ $(top_builddir)/src/statistics/libgnunetstatistics.la \
+ $(top_builddir)/src/util/libgnunetutil.la
+
+-@HAVE_PYTHON_TRUE@check_SCRIPTS = \
+-@HAVE_PYTHON_TRUE@ test_gnunet_peerinfo.py
+-
+ @ENABLE_TEST_RUN_TRUE@TESTS = $(check_SCRIPTS)
+ do_subst = $(SED) -e 's,[@]PYTHON[@],$(PYTHON),g'
+ EXTRA_DIST = \
+diff -ru a/src/revocation/test_revocation.conf b/src/revocation/test_revocation.conf
+--- src/revocation/test_revocation.conf 2013-12-21 18:57:06.000000000 +0100
++++ src/revocation/test_revocation.conf 2014-01-30 15:00:02.841340556 +0100
+@@ -20,6 +20,9 @@
+ [transport-udp]
+ BROADCAST = NO
+
++[nat]
++RETURN_LOCAL_ADDRESSES = YES
++
+ [peerinfo]
+ USE_INCLUDED_HELLOS = NO
+
+Index: src/gns/test_gns_cname_lookup.sh
+===================================================================
+--- src/gns/test_gns_cname_lookup.sh (revision 32117)
++++ src/gns/test_gns_cname_lookup.sh (revision 32118)
+@@ -13,6 +13,15 @@
+ exit 77
+ fi
+
++# permissive DNS resolver we will use for the test
++DNS_RESOLVER="8.8.8.8"
++if ! nslookup gnunet.org $DNS_RESOLVER &> /dev/null
++then
++ echo "Cannot reach DNS, skipping test"
++ exit 77
++fi
++
++
+ rm -rf /tmp/test-gnunet-gns-peer-1/
+
+ TEST_DOMAIN_PLUS="www.gnu"
+Index: src/integration-tests/confs/test_defaults.conf
+===================================================================
+--- src/integration-tests/confs/test_defaults.conf (revision 32320)
++++ src/integration-tests/confs/test_defaults.conf (working copy)
+@@ -17,6 +17,7 @@
+ EXTERNAL_ADDRESS = 127.0.0.1
+ INTERNAL_ADDRESS = 127.0.0.1
+ BINDTO = 127.0.0.1
++RETURN_LOCAL_ADDRESSES = YES
+
+ [hostlist]
+ SERVERS =
diff --git a/gnu/packages/patches/inkscape-stray-comma.patch b/gnu/packages/patches/inkscape-stray-comma.patch
new file mode 100644
index 0000000000..0b000d9e30
--- /dev/null
+++ b/gnu/packages/patches/inkscape-stray-comma.patch
@@ -0,0 +1,13 @@
+This is verbatim from Upstream: http://bazaar.launchpad.net/~inkscape.dev/inkscape/RELEASE_0_48_BRANCH/diff/9943
+--- a/src/widgets/desktop-widget.h 2011-06-06 06:43:00 +0000
++++ b/src/widgets/desktop-widget.h 2013-01-05 14:34:09 +0000
+@@ -239,7 +239,7 @@
+ private:
+ GtkWidget *tool_toolbox;
+ GtkWidget *aux_toolbox;
+- GtkWidget *commands_toolbox,;
++ GtkWidget *commands_toolbox;
+ GtkWidget *snap_toolbox;
+
+ static void init(SPDesktopWidget *widget);
+
diff --git a/gnu/packages/patches/mpc123-initialize-ao.patch b/gnu/packages/patches/mpc123-initialize-ao.patch
new file mode 100644
index 0000000000..85e461f896
--- /dev/null
+++ b/gnu/packages/patches/mpc123-initialize-ao.patch
@@ -0,0 +1,19 @@
+Description: Zero ao_sample_format structure to cope with libao 1.0.0
+Author: Colin Watson <cjwatson@debian.org>
+Bug-Debian: http://bugs.debian.org/591396
+Bug-Ubuntu: https://bugs.launchpad.net/bugs/710268
+Forwarded: no
+Last-Update: 2013-05-07
+
+Index: b/ao.c
+===================================================================
+--- a/ao.c
++++ b/ao.c
+@@ -123,6 +123,7 @@
+
+ /* initialize ao_format struct */
+ /* XXX VERY WRONG */
++ memset(&ao_fmt, 0, sizeof(ao_fmt));
+ ao_fmt.bits=16; /*tmp_stream_info.average_bitrate;*/
+ ao_fmt.rate=streaminfo->sample_freq;
+ ao_fmt.channels=streaminfo->channels;
diff --git a/gnu/packages/patches/patchelf-page-size.patch b/gnu/packages/patches/patchelf-page-size.patch
new file mode 100644
index 0000000000..2528b604e5
--- /dev/null
+++ b/gnu/packages/patches/patchelf-page-size.patch
@@ -0,0 +1,69 @@
+Improve the determination of pageSize in patchelf.cc.
+
+Patch by Mark H Weaver <mhw@netris.org>.
+
+--- patchelf/src/patchelf.cc.orig 1969-12-31 19:00:01.000000000 -0500
++++ patchelf/src/patchelf.cc 2014-02-16 20:15:06.283203125 -0500
+@@ -21,11 +21,19 @@
+ using namespace std;
+
+
+-#ifdef MIPSEL
+-/* The lemote fuloong 2f kernel defconfig sets a page size of 16KB */
+-const unsigned int pageSize = 4096*4;
+-#else
++/* Note that some platforms support multiple page sizes. Therefore,
++ it is not enough to query the current page size. 'pageSize' must
++ be the maximum architectural page size for the platform, which is
++ typically defined in the corresponding ABI document.
++
++ XXX FIXME: This won't work when we're cross-compiling. */
++
++#if defined __MIPSEL__ || defined __MIPSEB__ || defined __aarch64__
++const unsigned int pageSize = 65536;
++#elif defined __x86_64__ || defined __i386__ || defined __arm__
+ const unsigned int pageSize = 4096;
++#else
++# error maximum architectural page size unknown for this platform
+ #endif
+
+
+--- patchelf/tests/no-rpath.sh.orig 1969-12-31 19:00:01.000000000 -0500
++++ patchelf/tests/no-rpath.sh 2014-02-16 20:44:12.036376953 -0500
+@@ -1,22 +1,22 @@
+ #! /bin/sh -e
+
+-rm -rf scratch
+-mkdir -p scratch
++if [ "$(uname -m)" = i686 -a "$(uname -s)" = Linux ]; then
++ rm -rf scratch
++ mkdir -p scratch
+
+-cp no-rpath scratch/
++ cp no-rpath scratch/
+
+-oldRPath=$(../src/patchelf --print-rpath scratch/no-rpath)
+-if test -n "$oldRPath"; then exit 1; fi
+-../src/patchelf \
+- --set-interpreter "$(../src/patchelf --print-interpreter ../src/patchelf)" \
+- --set-rpath /foo:/bar:/xxxxxxxxxxxxxxx scratch/no-rpath
++ oldRPath=$(../src/patchelf --print-rpath scratch/no-rpath)
++ if test -n "$oldRPath"; then exit 1; fi
++ ../src/patchelf \
++ --set-interpreter "$(../src/patchelf --print-interpreter ../src/patchelf)" \
++ --set-rpath /foo:/bar:/xxxxxxxxxxxxxxx scratch/no-rpath
+
+-newRPath=$(../src/patchelf --print-rpath scratch/no-rpath)
+-if ! echo "$newRPath" | grep -q '/foo:/bar'; then
+- echo "incomplete RPATH"
+- exit 1
+-fi
++ newRPath=$(../src/patchelf --print-rpath scratch/no-rpath)
++ if ! echo "$newRPath" | grep -q '/foo:/bar'; then
++ echo "incomplete RPATH"
++ exit 1
++ fi
+
+-if [ "$(uname -m)" = i686 -a "$(uname -s)" = Linux ]; then
+ cd scratch && ./no-rpath
+ fi
diff --git a/gnu/packages/patches/ratpoison-shell.patch b/gnu/packages/patches/ratpoison-shell.patch
new file mode 100644
index 0000000000..63d265a382
--- /dev/null
+++ b/gnu/packages/patches/ratpoison-shell.patch
@@ -0,0 +1,91 @@
+Use $SHELL instead of hardcoding /bin/sh in ratpoison.
+
+Patch by Mark H Weaver <mhw@netris.org>.
+
+--- ratpoison/src/actions.c.orig 2013-04-06 21:37:43.000000000 -0400
++++ ratpoison/src/actions.c 2014-02-13 00:34:10.992553710 -0500
+@@ -19,6 +19,7 @@
+ */
+
+ #include <unistd.h>
++#include <stdlib.h>
+ #include <ctype.h> /* for isspace */
+ #include <sys/wait.h>
+ #include <X11/keysym.h>
+@@ -223,12 +223,12 @@
+ add_command ("escape", cmd_escape, 1, 1, 1,
+ "Key: ", arg_KEY);
+ add_command ("exec", cmd_exec, 1, 1, 1,
+- "/bin/sh -c ", arg_SHELLCMD);
++ "$SHELL -c ", arg_SHELLCMD);
+ add_command ("execa", cmd_execa, 1, 1, 1,
+- "/bin/sh -c ", arg_SHELLCMD);
++ "$SHELL -c ", arg_SHELLCMD);
+ add_command ("execf", cmd_execf, 2, 2, 2,
+ "frame to execute in:", arg_FRAME,
+- "/bin/sh -c ", arg_SHELLCMD);
++ "$SHELL -c ", arg_SHELLCMD);
+ add_command ("fdump", cmd_fdump, 1, 0, 0,
+ "", arg_NUMBER);
+ add_command ("focus", cmd_next_frame, 0, 0, 0);
+@@ -359,7 +359,7 @@
+ add_command ("unsetenv", cmd_unsetenv, 1, 1, 1,
+ "Variable: ", arg_STRING);
+ add_command ("verbexec", cmd_verbexec, 1, 1, 1,
+- "/bin/sh -c ", arg_SHELLCMD);
++ "$SHELL -c ", arg_SHELLCMD);
+ add_command ("version", cmd_version, 0, 0, 0);
+ add_command ("vsplit", cmd_v_split, 1, 0, 0,
+ "Split: ", arg_STRING);
+@@ -2627,6 +2627,9 @@
+ pid = fork();
+ if (pid == 0)
+ {
++ char *shell_path;
++ char *shell_name;
++
+ /* Some process setup to make sure the spawned process runs
+ in its own session. */
+ putenv(current_screen()->display_string);
+@@ -2641,7 +2644,18 @@
+ /* raw means don't run it through sh. */
+ if (raw)
+ execl (cmd, cmd, NULL);
+- execl("/bin/sh", "sh", "-c", cmd, NULL);
++
++ shell_path = getenv ("SHELL");
++ if (shell_path == NULL)
++ shell_path = "/bin/sh";
++
++ shell_name = strrchr (shell_path, '/');
++ if (shell_name == NULL)
++ shell_name = shell_path;
++ else
++ shell_name++;
++
++ execl(shell_path, shell_name, "-c", cmd, NULL);
+ _exit(EXIT_FAILURE);
+ }
+
+--- ratpoison/src/events.c.orig 2013-04-06 20:05:48.000000000 -0400
++++ ratpoison/src/events.c 2014-02-13 00:34:39.327758789 -0500
+@@ -920,7 +920,7 @@
+ {
+ /* Report any child that didn't return 0. */
+ if (cur->status != 0)
+- marked_message_printf (0,0, "/bin/sh -c \"%s\" finished (%d)",
++ marked_message_printf (0,0, "$SHELL -c \"%s\" finished (%d)",
+ cur->cmd, cur->status);
+ list_del (&cur->node);
+ free (cur->cmd);
+--- ratpoison/src/messages.h.orig 2012-07-20 20:25:33.000000000 -0400
++++ ratpoison/src/messages.h 2014-02-13 00:34:28.608398437 -0500
+@@ -41,7 +41,7 @@
+
+ #define MESSAGE_PROMPT_SWITCH_TO_WINDOW "Switch to window: "
+ #define MESSAGE_PROMPT_NEW_WINDOW_NAME "Set window's title to: "
+-#define MESSAGE_PROMPT_SHELL_COMMAND "/bin/sh -c "
++#define MESSAGE_PROMPT_SHELL_COMMAND "$SHELL -c "
+ #define MESSAGE_PROMPT_COMMAND ":"
+ #define MESSAGE_PROMPT_SWITCH_WM "Switch to wm: "
+ #define MESSAGE_PROMPT_XTERM_COMMAND MESSAGE_PROMPT_SHELL_COMMAND TERM_PROG " -e "
diff --git a/gnu/packages/patches/slim-config.patch b/gnu/packages/patches/slim-config.patch
new file mode 100644
index 0000000000..5e6135d75c
--- /dev/null
+++ b/gnu/packages/patches/slim-config.patch
@@ -0,0 +1,27 @@
+Allow the configuration file and theme directory to be specified at run time.
+Patch by Eelco Dolstra, from Nixpkgs.
+
+--- slim-1.3.6/app.cpp 2013-10-02 00:38:05.000000000 +0200
++++ slim-1.3.6/app.cpp 2013-10-15 11:02:55.629263422 +0200
+@@ -200,7 +200,9 @@
+
+ /* Read configuration and theme */
+ cfg = new Cfg;
+- cfg->readConf(CFGFILE);
++ char *cfgfile = getenv("SLIM_CFGFILE");
++ if (!cfgfile) cfgfile = CFGFILE;
++ cfg->readConf(cfgfile);
+ string themebase = "";
+ string themefile = "";
+ string themedir = "";
+@@ -208,7 +210,9 @@
+ if (testing) {
+ themeName = testtheme;
+ } else {
+- themebase = string(THEMESDIR) + "/";
++ char *themesdir = getenv("SLIM_THEMESDIR");
++ if (!themesdir) themesdir = THEMESDIR;
++ themebase = string(themesdir) + "/";
+ themeName = cfg->getOption("current_theme");
+ string::size_type pos;
+ if ((pos = themeName.find(",")) != string::npos) {
diff --git a/gnu/packages/patches/slim-session.patch b/gnu/packages/patches/slim-session.patch
new file mode 100644
index 0000000000..b85d3f7dd0
--- /dev/null
+++ b/gnu/packages/patches/slim-session.patch
@@ -0,0 +1,17 @@
+Exit after the user's session has finished. This works around slim's broken
+PAM session handling (see
+http://developer.berlios.de/bugs/?func=detailbug&bug_id=19102&group_id=2663).
+
+Patch by Eelco Dolstra, from Nixpkgs.
+
+--- slim-1.3.6/app.cpp 2013-10-15 11:02:55.629263422 +0200
++++ slim-1.3.6/app.cpp 2013-10-15 13:00:10.141210784 +0200
+@@ -816,7 +822,7 @@
+ StopServer();
+ RemoveLock();
+ while (waitpid(-1, NULL, WNOHANG) > 0); /* Collects all dead childrens */
+- Run();
++ exit(OK_EXIT);
+ }
+
+ void App::KillAllClients(Bool top) {
diff --git a/gnu/packages/patches/slim-sigusr1.patch b/gnu/packages/patches/slim-sigusr1.patch
new file mode 100644
index 0000000000..344b02933e
--- /dev/null
+++ b/gnu/packages/patches/slim-sigusr1.patch
@@ -0,0 +1,33 @@
+This patch fixes SLiM so it really waits for the X server to be ready
+before attempting to connect to it. Indeed, the X server notices that
+its parent process has a handler for SIGUSR1, and consequently sends it
+SIGUSR1 when it's ready to accept connections.
+
+The problem was that SLiM doesn't pay attention to SIGUSR1. So in practice,
+if X starts slowly, then SLiM gets ECONNREFUSED a couple of time on
+/tmp/.X11-unix/X0, then goes on trying to connect to localhost:6000,
+where nobody answers; eventually, it times out and tries again on
+/tmp/.X11-unix/X0, and finally it shows up on the screen.
+
+Patch by L. Courtès.
+
+--- slim-1.3.6/app.cpp 2014-02-05 15:27:20.000000000 +0100
++++ slim-1.3.6/app.cpp 2014-02-09 22:42:04.000000000 +0100
+@@ -119,7 +119,9 @@ void CatchSignal(int sig) {
+ exit(ERR_EXIT);
+ }
+
++static volatile int got_sigusr1 = 0;
+ void User1Signal(int sig) {
++ got_sigusr1 = 1;
+ signal(sig, User1Signal);
+ }
+
+@@ -884,6 +886,7 @@ int App::WaitForServer() {
+ int ncycles = 120;
+ int cycles;
+
++ while (!got_sigusr1);
+ for(cycles = 0; cycles < ncycles; cycles++) {
+ if((Dpy = XOpenDisplay(DisplayName))) {
+ XSetIOErrorHandler(xioerror);