aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/patches
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r--gnu/packages/patches/azr3.patch151
-rw-r--r--gnu/packages/patches/dtc-add-missing-symbols-to-lds.patch59
-rw-r--r--gnu/packages/patches/flashrom-use-libftdi1.patch70
-rw-r--r--gnu/packages/patches/gnupg-fix-expired-test.patch78
-rw-r--r--gnu/packages/patches/gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch15
-rw-r--r--gnu/packages/patches/gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch15
-rw-r--r--gnu/packages/patches/hydra-automake-1.15.patch63
-rw-r--r--gnu/packages/patches/jbig2dec-ignore-testtest.patch24
-rw-r--r--gnu/packages/patches/llvm-for-extempore.patch118
-rw-r--r--gnu/packages/patches/lua51-pkgconfig.patch101
-rw-r--r--gnu/packages/patches/mupdf-build-with-openjpeg-2.1.patch38
-rw-r--r--gnu/packages/patches/mysql-fix-failing-test.patch57
-rw-r--r--gnu/packages/patches/onionshare-fix-install-paths.patch39
-rw-r--r--gnu/packages/patches/openjpeg-CVE-2016-5157.patch96
-rw-r--r--gnu/packages/patches/openjpeg-CVE-2016-7163.patch71
-rw-r--r--gnu/packages/patches/openssl-1.1.0-c-rehash-in.patch19
-rw-r--r--gnu/packages/patches/p7zip-remove-unused-code.patch959
-rw-r--r--gnu/packages/patches/plink-endian-detection.patch30
-rw-r--r--gnu/packages/patches/python-django-fix-testcase.patch42
-rw-r--r--gnu/packages/patches/slock-CVE-2016-6866.patch51
-rw-r--r--gnu/packages/patches/steghide-fixes.patch71
-rw-r--r--gnu/packages/patches/swish-e-format-security.patch33
-rw-r--r--gnu/packages/patches/swish-e-search.patch43
23 files changed, 1983 insertions, 260 deletions
diff --git a/gnu/packages/patches/azr3.patch b/gnu/packages/patches/azr3.patch
new file mode 100644
index 0000000000..5849383c5b
--- /dev/null
+++ b/gnu/packages/patches/azr3.patch
@@ -0,0 +1,151 @@
+This patch adds the "sigc" and "std" namespace prefixes where needed. It also
+replaces a double single-argument "bind" with a single two-argument "bind",
+because the former would confuse the compiler.
+
+The patch has been sent to the developer on 2016-09-26.
+
+--- azr3-jack-1.2.3/azr3/knob.cpp 2016-09-26 10:29:27.653375902 +0200
++++ azr3-jack-1.2.3/azr3/knob.cpp 2016-09-26 10:29:38.693430647 +0200
+@@ -44,7 +44,7 @@
+ set_size_request(44, 44);
+ add_events(EXPOSURE_MASK | BUTTON1_MOTION_MASK |
+ BUTTON_PRESS_MASK | SCROLL_MASK);
+- m_adj.signal_value_changed().connect(mem_fun(*this, &Knob::queue_draw));
++ m_adj.signal_value_changed().connect(sigc::mem_fun(*this, &Knob::queue_draw));
+ }
+
+
+--- azr3-jack-1.2.3/azr3/drawbar.cpp 2016-09-26 10:27:40.632845216 +0200
++++ azr3-jack-1.2.3/azr3/drawbar.cpp 2016-09-26 10:27:48.952886473 +0200
+@@ -37,7 +37,7 @@
+ set_size_request(22, 150);
+ add_events(EXPOSURE_MASK | BUTTON1_MOTION_MASK |
+ BUTTON_PRESS_MASK | SCROLL_MASK);
+- m_adj.signal_value_changed().connect(mem_fun(*this, &Drawbar::queue_draw));
++ m_adj.signal_value_changed().connect(sigc::mem_fun(*this, &Drawbar::queue_draw));
+ }
+
+
+--- azr3-jack-1.2.3/azr3/switch.cpp 2016-09-26 10:28:48.169180111 +0200
++++ azr3-jack-1.2.3/azr3/switch.cpp 2016-09-26 10:28:55.713217520 +0200
+@@ -49,7 +49,7 @@
+ }
+ set_size_request(m_width, m_height);
+ add_events(EXPOSURE_MASK | BUTTON_PRESS_MASK | SCROLL_MASK);
+- m_adj.signal_value_changed().connect(mem_fun(*this, &Switch::queue_draw));
++ m_adj.signal_value_changed().connect(sigc::mem_fun(*this, &Switch::queue_draw));
+ }
+
+
+--- azr3-jack-1.2.3/azr3/azr3gui.cpp 2016-09-26 09:05:10.106963561 +0200
++++ azr3-jack-1.2.3/azr3/azr3gui.cpp 2016-09-26 10:26:47.480581648 +0200
+@@ -73,19 +73,19 @@
+ m_tbox = add_textbox(m_fbox, pixmap, 391, 19, 3, 140, 39);
+ m_tbox->add_events(SCROLL_MASK);
+ m_tbox->signal_scroll_display.
+- connect(mem_fun(*this, &AZR3GUI::display_scroll));
++ connect(sigc::mem_fun(*this, &AZR3GUI::display_scroll));
+ m_splitpoint_adj = new Adjustment(0, 0, 1);
+ m_adj[n_splitpoint] = m_splitpoint_adj;
+ m_splitpoint_adj->signal_value_changed().
+- connect(mem_fun(*this, &AZR3GUI::splitpoint_changed));
++ connect(sigc::mem_fun(*this, &AZR3GUI::splitpoint_changed));
+ Menu* menu = create_menu();
+ m_tbox->signal_button_press_event().
+- connect(bind(mem_fun(*this, &AZR3GUI::popup_menu), menu));
++ connect(sigc::bind(sigc::mem_fun(*this, &AZR3GUI::popup_menu), menu));
+
+ // keyboard split switch
+ m_splitswitch = add_switch(m_fbox, -1, 537, 49, Switch::Mini);
+ m_splitswitch->get_adjustment().signal_value_changed().
+- connect(mem_fun(*this, &AZR3GUI::splitbox_clicked));
++ connect(sigc::mem_fun(*this, &AZR3GUI::splitbox_clicked));
+
+ // upper knobs
+ add_switch(m_fbox, n_mono, 61, 105, Switch::Mini);
+@@ -141,8 +141,8 @@
+ // mode switcher
+ Widget* eb = add_clickbox(m_fbox, 14, 319, 14, 44);
+ eb->signal_button_press_event().
+- connect(sigc::hide(bind(bind(mem_fun(*this, &AZR3GUI::change_mode),
+- ref(m_fbox)), false)));
++ connect(sigc::hide(sigc::bind(sigc::mem_fun(*this, &AZR3GUI::change_mode),
++ false, std::ref(m_fbox))));
+ m_fx_widgets.push_back(eb);
+
+ // Mr Valve controls
+@@ -182,8 +182,8 @@
+ // mode switcher 2
+ Widget* eb2 = add_clickbox(m_vbox, 14, 53, 14, 44);
+ eb2->signal_button_press_event().
+- connect(sigc::hide(bind(bind(mem_fun(*this, &AZR3GUI::change_mode),
+- ref(m_fbox)), true)));
++ connect(sigc::hide(sigc::bind(sigc::mem_fun(*this, &AZR3GUI::change_mode),
++ true, std::ref(m_fbox))));
+
+ // vibrato controls
+ add_switch(m_vbox, n_1_vibrato, 39, 17, Switch::Green);
+@@ -352,9 +352,9 @@
+ knob->set_style(s);
+ if (port >= 0 && port < m_adj.size()) {
+ knob->get_adjustment().signal_value_changed().
+- connect(compose(bind<0>(mem_fun(*this, &AZR3GUI::control_changed), port),
+- mem_fun(knob->get_adjustment(),
+- &Adjustment::get_value)));
++ connect(compose(sigc::bind<0>(sigc::mem_fun(*this, &AZR3GUI::control_changed), port),
++ sigc::mem_fun(knob->get_adjustment(),
++ &Adjustment::get_value)));
+ assert(m_adj[port] == 0);
+ m_adj[port] = &knob->get_adjustment();
+ }
+@@ -382,8 +382,8 @@
+ db->set_style(s);
+ if (port >= 0 && port < m_adj.size()) {
+ db->get_adjustment().signal_value_changed().
+- connect(compose(bind<0>(mem_fun(*this, &AZR3GUI::control_changed), port),
+- mem_fun(db->get_adjustment(), &Adjustment::get_value)));
++ connect(compose(sigc::bind<0>(sigc::mem_fun(*this, &AZR3GUI::control_changed), port),
++ sigc::mem_fun(db->get_adjustment(), &Adjustment::get_value)));
+ assert(m_adj[port] == 0);
+ m_adj[port] = &db->get_adjustment();
+ }
+@@ -397,8 +397,8 @@
+ fbox.put(*sw, xoffset, yoffset);
+ if (port >= 0 && port < m_adj.size()) {
+ sw->get_adjustment().signal_value_changed().
+- connect(compose(bind<0>(mem_fun(*this, &AZR3GUI::control_changed),port),
+- mem_fun(sw->get_adjustment(), &Adjustment::get_value)));
++ connect(compose(sigc::bind<0>(sigc::mem_fun(*this, &AZR3GUI::control_changed),port),
++ sigc::mem_fun(sw->get_adjustment(), &Adjustment::get_value)));
+ assert(m_adj[port] == 0);
+ m_adj[port] = &sw->get_adjustment();
+ }
+@@ -489,7 +489,7 @@
+ oss<<setw(2)<<setfill('0')<<iter->first<<' '<<iter->second.substr(0, 23);
+ MenuItem* item = manage(new MenuItem(oss.str()));
+ item->signal_activate().
+- connect(bind(mem_fun(*this, &AZR3GUI::program_changed), iter->first));
++ connect(sigc::bind(sigc::mem_fun(*this, &AZR3GUI::program_changed), iter->first));
+ m_program_menu->items().push_back(*item);
+ item->show();
+ item->get_child()->modify_bg(STATE_NORMAL, m_menu_bg);
+@@ -503,8 +503,8 @@
+ for (int i = 0; i < 128; ++i) {
+ MenuItem* item = manage(new MenuItem(note2str(i)));
+ item->signal_activate().
+- connect(bind(mem_fun(*m_splitpoint_adj, &Adjustment::set_value),
+- i / 128.0));
++ connect(sigc::bind(sigc::mem_fun(*m_splitpoint_adj, &Adjustment::set_value),
++ i / 128.0));
+ m_split_menu->items().push_back(*item);
+ item->show();
+ item->get_child()->modify_bg(STATE_NORMAL, m_menu_bg);
+@@ -533,7 +533,7 @@
+
+ MenuItem* save_item = manage(new MenuItem("Save program"));
+ save_item->signal_activate().
+- connect(mem_fun(*this, &AZR3GUI::save_program));
++ connect(sigc::mem_fun(*this, &AZR3GUI::save_program));
+ save_item->show();
+ save_item->get_child()->modify_fg(STATE_NORMAL, m_menu_bg);
+ save_item->get_child()->modify_fg(STATE_NORMAL, m_menu_fg);
diff --git a/gnu/packages/patches/dtc-add-missing-symbols-to-lds.patch b/gnu/packages/patches/dtc-add-missing-symbols-to-lds.patch
deleted file mode 100644
index ccece0f466..0000000000
--- a/gnu/packages/patches/dtc-add-missing-symbols-to-lds.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From a4b093f7366fdb429ca1781144d3985fa50d0fbb Mon Sep 17 00:00:00 2001
-From: Julien Grall <julien.grall@linaro.org>
-Date: Tue, 17 Mar 2015 16:00:34 +0000
-Subject: [PATCH] libfdt: Add missing functions to shared library
-
-The commit 4e76ec7 "libfdt: Add fdt_next_subnode() to permit easy
-subnode iteration" adds new functions (fdt_{first,next}_subnode) but
-forgot to mark them as 'global' in the shared library.
-
-Signed-off-by: Julien Grall <julien.grall@linaro.org>
----
- libfdt/version.lds | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/libfdt/version.lds b/libfdt/version.lds
-index 80b322b..941208e 100644
---- a/libfdt/version.lds
-+++ b/libfdt/version.lds
-@@ -54,6 +54,8 @@ LIBFDT_1.2 {
- fdt_get_property_by_offset;
- fdt_getprop_by_offset;
- fdt_next_property_offset;
-+ fdt_first_subnode;
-+ fdt_next_subnode;
-
- local:
- *;
-From f58799be130e27cc729cb2d45566daa0bb3b8605 Mon Sep 17 00:00:00 2001
-From: David Gibson <david@gibson.dropbear.id.au>
-Date: Tue, 1 Dec 2015 12:55:21 +1100
-Subject: [PATCH] libfdt: Add some missing symbols to version.lds
-
-Several functions in the header file were missing from the version.lds
-script, meaning that they couldn't be used from a libfdt shared library.
-
-Reported by Ken Aaker, via github issue tracker.
-
-Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
----
- libfdt/version.lds | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/libfdt/version.lds b/libfdt/version.lds
-index f19f157..1f4e1ea 100644
---- a/libfdt/version.lds
-+++ b/libfdt/version.lds
-@@ -57,6 +57,10 @@ LIBFDT_1.2 {
- fdt_next_property_offset;
- fdt_first_subnode;
- fdt_next_subnode;
-+ fdt_address_cells;
-+ fdt_size_cells;
-+ fdt_stringlist_contains;
-+ fdt_resize;
-
- local:
- *;
---
-2.8.1
diff --git a/gnu/packages/patches/flashrom-use-libftdi1.patch b/gnu/packages/patches/flashrom-use-libftdi1.patch
deleted file mode 100644
index a6051df30a..0000000000
--- a/gnu/packages/patches/flashrom-use-libftdi1.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-Update to libftdi-1.0 is advertised as a drop-in replacement for libftdi,
-running on top of libusb-1.0. This also removes indirect dependency to
-libusb-0.1.
-
-Patch by Kyösti Mälkki <kyosti.malkki@gmail.com>.
-See <http://patchwork.coreboot.org/patch/3904/>.
-
---- flashrom/Makefile.orig 2013-08-13 18:00:00.000000000 -0400
-+++ flashrom/Makefile 2014-08-05 03:10:40.217145375 -0400
-@@ -492,19 +492,21 @@
- ifeq ($(CONFIG_FT2232_SPI), yes)
- # This is a totally ugly hack.
- FEATURE_CFLAGS += $(shell LC_ALL=C grep -q "FTDISUPPORT := yes" .features && printf "%s" "-D'CONFIG_FT2232_SPI=1'")
--NEED_FTDI := yes
-+NEED_FTDI1 := yes
- PROGRAMMER_OBJS += ft2232_spi.o
- endif
-
- ifeq ($(CONFIG_USBBLASTER_SPI), yes)
- # This is a totally ugly hack.
- FEATURE_CFLAGS += $(shell LC_ALL=C grep -q "FTDISUPPORT := yes" .features && printf "%s" "-D'CONFIG_USBBLASTER_SPI=1'")
--NEED_FTDI := yes
-+NEED_LIBUSB1 := yes
-+NEED_FTDI1 := yes
- PROGRAMMER_OBJS += usbblaster_spi.o
- endif
-
--ifeq ($(NEED_FTDI), yes)
--FTDILIBS := $(shell pkg-config --libs libftdi 2>/dev/null || printf "%s" "-lftdi -lusb")
-+ifeq ($(NEED_FTDI1), yes)
-+FTDILIBS := $(shell pkg-config --libs libftdi1 2>/dev/null || printf "%s" "-lftdi1 -lusb-1.0")
-+FEATURE_CFLAGS += $(shell pkg-config --cflags libftdi1 2>/dev/null)
- FEATURE_CFLAGS += $(shell LC_ALL=C grep -q "FT232H := yes" .features && printf "%s" "-D'HAVE_FT232H=1'")
- FEATURE_LIBS += $(shell LC_ALL=C grep -q "FTDISUPPORT := yes" .features && printf "%s" "$(FTDILIBS)")
- # We can't set NEED_USB here because that would transform libftdi auto-enabling
-@@ -781,6 +783,7 @@
- endif
-
- define FTDI_TEST
-+#include <stddef.h>
- #include <ftdi.h>
- struct ftdi_context *ftdic = NULL;
- int main(int argc, char **argv)
-@@ -793,6 +796,7 @@
- export FTDI_TEST
-
- define FTDI_232H_TEST
-+#include <stddef.h>
- #include <ftdi.h>
- enum ftdi_chip_type type = TYPE_232H;
- endef
-@@ -826,15 +830,15 @@
-
- features: compiler
- @echo "FEATURES := yes" > .features.tmp
--ifeq ($(NEED_FTDI), yes)
-+ifeq ($(NEED_FTDI1), yes)
- @printf "Checking for FTDI support... "
- @echo "$$FTDI_TEST" > .featuretest.c
-- @$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .featuretest.c -o .featuretest$(EXEC_SUFFIX) $(FTDILIBS) $(LIBS) >/dev/null 2>&1 && \
-+ @$(CC) $(CPPFLAGS) $(CFLAGS) $(FEATURE_CFLAGS) $(LDFLAGS) .featuretest.c -o .featuretest$(EXEC_SUFFIX) $(FTDILIBS) $(LIBS) >/dev/null 2>&1 && \
- ( echo "found."; echo "FTDISUPPORT := yes" >> .features.tmp ) || \
- ( echo "not found."; echo "FTDISUPPORT := no" >> .features.tmp )
- @printf "Checking for FT232H support in libftdi... "
- @echo "$$FTDI_232H_TEST" >> .featuretest.c
-- @$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .featuretest.c -o .featuretest$(EXEC_SUFFIX) $(FTDILIBS) $(LIBS) >/dev/null 2>&1 && \
-+ @$(CC) $(CPPFLAGS) $(CFLAGS) $(FEATURE_CFLAGS) $(LDFLAGS) .featuretest.c -o .featuretest$(EXEC_SUFFIX) $(FTDILIBS) $(LIBS) >/dev/null 2>&1 && \
- ( echo "found."; echo "FT232H := yes" >> .features.tmp ) || \
- ( echo "not found."; echo "FT232H := no" >> .features.tmp )
- endif
diff --git a/gnu/packages/patches/gnupg-fix-expired-test.patch b/gnu/packages/patches/gnupg-fix-expired-test.patch
new file mode 100644
index 0000000000..ac2564f50c
--- /dev/null
+++ b/gnu/packages/patches/gnupg-fix-expired-test.patch
@@ -0,0 +1,78 @@
+Fix a test that has an expiration date of 2016-09-17:
+
+https://bugs.gnupg.org/gnupg/issue2393
+
+Patch adapted from upstream source repository:
+
+https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=commit;h=e584d6468a2e72cd01e55f46104f9f96b56c0b66
+
+The patch has been altered by commenting out a diff that does not apply
+to the version of GnuPG that we are applying it to, 2.1.13. This is
+what the patch author refers to below with "This commit includes changes
+to the old test as well, for those who need to backport it." We keep the
+old test and comment out the new test.
+
+From e584d6468a2e72cd01e55f46104f9f96b56c0b66 Mon Sep 17 00:00:00 2001
+From: Justus Winter <justus@g10code.com>
+Date: Thu, 23 Jun 2016 17:24:23 +0200
+Subject: [PATCH] tests/openpgp: Fake the system time for the tofu test.
+
+The keys in the tofu test are set to expire on 2016-09-17. Fake the
+system time for this test.
+
+This commit includes changes to the old test as well, for those who
+need to backport it.
+
+* tests/openpgp/gpg-agent.conf.tmpl: Drop trailing newlines.
+* tests/openpgp/tofu.scm: Fake system time.
+* tests/openpgp/tofu.test: Likewise.
+
+GnuPG-bug-id: 2393
+Signed-off-by: Justus Winter <justus@g10code.com>
+---
+ tests/openpgp/gpg-agent.conf.tmpl | 2 --
+ tests/openpgp/tofu.scm | 4 +++-
+ tests/openpgp/tofu.test | 3 +++
+ 3 files changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/tests/openpgp/gpg-agent.conf.tmpl b/tests/openpgp/gpg-agent.conf.tmpl
+index b3cb54f..70e1633 100644
+--- a/tests/openpgp/gpg-agent.conf.tmpl
++++ b/tests/openpgp/gpg-agent.conf.tmpl
+@@ -1,4 +1,2 @@
+ allow-preset-passphrase
+ no-grab
+-
+-
+#diff --git a/tests/openpgp/tofu.scm b/tests/openpgp/tofu.scm
+#index 24fa9df..38b6a0f 100755
+#--- a/tests/openpgp/tofu.scm
+#+++ b/tests/openpgp/tofu.scm
+#@@ -19,7 +19,9 @@
+#
+# (load (with-path "defs.scm"))
+#
+#-(define GPG `(,(tool 'gpg) --no-permission-warning)) ;; w/o --always-trust
+#+ ;; Redefine GPG without --always-trust and a fixed time.
+#+(define GPG `(,(tool 'gpg) --no-permission-warning
+#+ --faked-system-time=1466684990))
+# (define GNUPGHOME (getenv "GNUPGHOME"))
+# (if (string=? "" GNUPGHOME)
+# (error "GNUPGHOME not set"))
+diff --git a/tests/openpgp/tofu.test b/tests/openpgp/tofu.test
+index 18c1756..0d34af4 100755
+--- a/tests/openpgp/tofu.test
++++ b/tests/openpgp/tofu.test
+@@ -4,6 +4,9 @@
+
+ # set -x
+
++# Redefine GPG with a fixed time.
++GPG="$GPG --faked-system-time=1466684990"
++
+ KEYS="2183839A BC15C85A EE37CF96"
+
+ # Make sure $srcdir is set.
+--
+2.10.0
+
diff --git a/gnu/packages/patches/gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch b/gnu/packages/patches/gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch
new file mode 100644
index 0000000000..f399024f1d
--- /dev/null
+++ b/gnu/packages/patches/gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch
@@ -0,0 +1,15 @@
+This patch replaces the environment variable "GTK_IM_MODULE" with
+"GUIX_GTK2_IM_MODULE_FILE" to prevent this version of GTK+ from loading input
+method modules for other major versions of GTK+.
+
+--- gtk+-2.24.30/gtk/gtkrc.c 2016-08-21 22:40:22.339660438 +0200
++++ gtk+-2.24.30/gtk/gtkrc.c 2016-08-23 10:11:11.080822710 +0200
+@@ -439,7 +439,7 @@
+ gchar *
+ gtk_rc_get_im_module_file (void)
+ {
+- const gchar *var = g_getenv ("GTK_IM_MODULE_FILE");
++ const gchar *var = g_getenv ("GUIX_GTK2_IM_MODULE_FILE");
+ gchar *result = NULL;
+
+ if (var)
diff --git a/gnu/packages/patches/gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch b/gnu/packages/patches/gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch
new file mode 100644
index 0000000000..aa63a54402
--- /dev/null
+++ b/gnu/packages/patches/gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch
@@ -0,0 +1,15 @@
+This patch replaces the environment variable "GTK_IM_MODULE" with
+"GUIX_GTK3_IM_MODULE_FILE" to prevent this version of GTK+ from loading input
+method modules for other major versions of GTK+.
+
+--- gtk+-3.20.3/gtk/deprecated/gtkrc.c 2016-08-21 22:40:48.168437905 +0200
++++ gtk+-3.20.3/gtk/deprecated/gtkrc.c 2016-08-23 10:12:09.097070097 +0200
+@@ -768,7 +768,7 @@
+ gchar *
+ gtk_rc_get_im_module_file (void)
+ {
+- const gchar *var = g_getenv ("GTK_IM_MODULE_FILE");
++ const gchar *var = g_getenv ("GUIX_GTK3_IM_MODULE_FILE");
+ gchar *result = NULL;
+
+ if (var)
diff --git a/gnu/packages/patches/hydra-automake-1.15.patch b/gnu/packages/patches/hydra-automake-1.15.patch
deleted file mode 100644
index 91c7b9202b..0000000000
--- a/gnu/packages/patches/hydra-automake-1.15.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-This patch takes a slightly different approach to solving the issue reported
-at https://github.com/NixOS/hydra/issues/200. This fix allows us to use
-Automake's parallel test harness.
-
---- source/configure.ac.orig 1969-12-31 18:00:01.000000000 -0600
-+++ source/configure.ac 2015-04-15 10:58:15.974679278 -0500
-@@ -33,7 +33,7 @@
- fi
- ])
-
--NEED_PROG(perl, perl)
-+NEED_PROG([PERL], perl)
-
- NEED_PROG([NIX_STORE_PROGRAM], [nix-store])
-
---- source/tests/Makefile.am.orig 1969-12-31 18:00:01.000000000 -0600
-+++ source/tests/Makefile.am 2015-04-15 11:00:35.846682904 -0500
-@@ -1,19 +1,20 @@
--TESTS_ENVIRONMENT = \
-- BZR_HOME="$(abs_builddir)/data" \
-- HYDRA_DBI="dbi:SQLite:db.sqlite" \
-- HYDRA_DATA="$(abs_builddir)/data" \
-- HYDRA_HOME="$(top_srcdir)/src" \
-- HYDRA_CONFIG= \
-- NIX_REMOTE= \
-- GUIX_CONFIGURATION_DIRECTORY="$(abs_builddir)/nix/etc/nix" \
-- NIX_STATE_DIR="$(abs_builddir)/nix/var/nix" \
-- NIX_MANIFESTS_DIR="$(abs_builddir)/nix/var/nix/manifests" \
-- NIX_STORE_DIR="$(abs_builddir)/nix/store" \
-- NIX_LOG_DIR="$(abs_builddir)/nix/var/log/nix" \
-- NIX_BUILD_HOOK= \
-- PERL5LIB="$(srcdir):$(top_srcdir)/src/lib:$$PERL5LIB" \
-- PATH=$(abs_top_srcdir)/src/script:$(abs_top_srcdir)/src/c:$$PATH \
-- perl -w
-+AM_TESTS_ENVIRONMENT = \
-+ BZR_HOME="$(abs_builddir)/data"; export BZR_HOME; \
-+ HYDRA_DBI="dbi:SQLite:db.sqlite"; export HYDRA_DBI; \
-+ HYDRA_DATA="$(abs_builddir)/data"; export HYDRA_DATA; \
-+ HYDRA_HOME="$(top_srcdir)/src"; export HYDRA_HOME; \
-+ HYDRA_CONFIG=; export HYDRA_CONFIG; \
-+ NIX_REMOTE=; export NIX_REMOTE; \
-+ GUIX_CONFIGURATION_DIRECTORY="$(abs_builddir)/nix/etc/nix"; export GUIX_CONFIGURATION_DIRECTORY; \
-+ NIX_STATE_DIR="$(abs_builddir)/nix/var/nix"; export NIX_STATE_DIR; \
-+ NIX_MANIFESTS_DIR="$(abs_builddir)/nix/var/nix/manifests"; export NIX_MANIFESTS_DIR; \
-+ NIX_STORE_DIR="$(abs_builddir)/nix/store"; export NIX_STORE_DIR; \
-+ NIX_LOG_DIR="$(abs_builddir)/nix/var/log/nix"; export NIX_LOG_DIR; \
-+ NIX_BUILD_HOOK=; export NIX_BUILD_HOOK; \
-+ PERL5LIB="$(srcdir):$(top_srcdir)/src/lib:$$PERL5LIB"; export PERL5LIB; \
-+ PATH=$(abs_top_srcdir)/src/script:$(abs_top_srcdir)/src/c:$$PATH; export PATH;
-+LOG_COMPILER = $(PERL)
-+AM_LOG_FLAGS = -w
-
- EXTRA_DIST = \
- $(wildcard *.pm) \
-@@ -33,7 +34,7 @@
- check_SCRIPTS = db.sqlite repos
-
- db.sqlite: $(top_srcdir)/src/sql/hydra-sqlite.sql
-- $(TESTS_ENVIRONMENT) $(top_srcdir)/src/script/hydra-init
-+ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) $(top_srcdir)/src/script/hydra-init
-
- repos: dirs
-
diff --git a/gnu/packages/patches/jbig2dec-ignore-testtest.patch b/gnu/packages/patches/jbig2dec-ignore-testtest.patch
index 1bf8f7ad76..1efde8628c 100644
--- a/gnu/packages/patches/jbig2dec-ignore-testtest.patch
+++ b/gnu/packages/patches/jbig2dec-ignore-testtest.patch
@@ -1,14 +1,16 @@
Do not run the "testtest script", it doesn't seem to do anything and reports
failiute. TODO: Actually fix the test instead of ignoring it.
---- a/Makefile.in 2010-02-02 20:13:56.000000000 +0100
-+++ b/Makefile.in 2014-09-13 17:50:10.957816767 +0200
-@@ -181,7 +181,7 @@
-
- MAINTAINERCLEANFILES = config_types.h.in
-
--TESTS = test_sha1 test_jbig2dec.py test_huffman test_arith
-+TESTS = test_sha1 test_huffman test_arith
-
- test_sha1_SOURCES = sha1.c sha1.h
- test_sha1_CFLAGS = -DTEST
+diff --git a/Makefile.in b/Makefile.in
+index 0573592..1a5de77 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -93,7 +93,7 @@ host_triplet = @host@
+ bin_PROGRAMS = jbig2dec$(EXEEXT)
+ noinst_PROGRAMS = test_sha1$(EXEEXT) test_huffman$(EXEEXT) \
+ test_arith$(EXEEXT)
+-TESTS = test_sha1$(EXEEXT) test_jbig2dec.py test_huffman$(EXEEXT) \
++TESTS = test_sha1$(EXEEXT) test_huffman$(EXEEXT) \
+ test_arith$(EXEEXT)
+ subdir = .
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
diff --git a/gnu/packages/patches/llvm-for-extempore.patch b/gnu/packages/patches/llvm-for-extempore.patch
new file mode 100644
index 0000000000..614682c6cb
--- /dev/null
+++ b/gnu/packages/patches/llvm-for-extempore.patch
@@ -0,0 +1,118 @@
+This patch to LLVM is required by the developers of the Extempore language.
+The following explanation was posted to the extemporelang@googlegroups.com
+mailing list:
+
+"There is an assumption in the parser that all definitions occur within the
+same compilation unit - i.e. the parser has local state about what has been
+parsed in this unit of work. Extempore obviously does lots of little units
+rather than one big unit and this causes problems for named types that were
+defined in another unit - which they always are. The patch simply checks the
+current module to see if the type has been previously defined, and intervenes
+appropriately if it has."
+
+Message-ID: <CAOjrPOqoreXuZo4ZpDBvHE7M_tgAR_V8Txq5JFjh1HnGRn2EsA@mail.gmail.com>
+
+--- llvm-3.7.1.src/include/llvm/MC/MCSectionCOFF.h 2015-04-11 12:11:45.000000000 +1000
++++ llvm-3.7.1.src/include/llvm/MC/MCSectionCOFF.h 2015-09-14 09:22:56.000000000 +1000
+@@ -16,7 +16,6 @@
+
+ #include "llvm/ADT/StringRef.h"
+ #include "llvm/MC/MCSection.h"
+-#include "llvm/Support/COFF.h"
+
+ namespace llvm {
+ class MCSymbol;
+
+--- llvm-3.7.1.src/lib/AsmParser/LLParser.cpp 2015-07-11 20:30:36.000000000 +1000
++++ llvm-3.7.1.src/lib/AsmParser/LLParser.cpp 2015-09-14 09:20:57.000000000 +1000
+@@ -1754,8 +1754,14 @@
+ // If the type hasn't been defined yet, create a forward definition and
+ // remember where that forward def'n was seen (in case it never is defined).
+ if (!Entry.first) {
+- Entry.first = StructType::create(Context, Lex.getStrVal());
+- Entry.second = Lex.getLoc();
++ // this here for extempore
++ if (M->getTypeByName(Lex.getStrVal())) {
++ Entry.first = M->getTypeByName(Lex.getStrVal());
++ Entry.second = SMLoc();
++ } else {
++ Entry.first = StructType::create(Context, Lex.getStrVal());
++ Entry.second = Lex.getLoc();
++ }
+ }
+ Result = Entry.first;
+ Lex.Lex();
+
+--- llvm-3.7.1.src/lib/CodeGen/TargetLoweringObjectFileImpl.cpp 2015-07-01 05:10:31.000000000 +1000
++++ llvm-3.7.1.src/lib/CodeGen/TargetLoweringObjectFileImpl.cpp 2015-09-14 09:23:40.000000000 +1000
+@@ -32,6 +32,7 @@
+ #include "llvm/MC/MCStreamer.h"
+ #include "llvm/MC/MCSymbolELF.h"
+ #include "llvm/MC/MCValue.h"
++#include "llvm/Support/COFF.h"
+ #include "llvm/Support/Dwarf.h"
+ #include "llvm/Support/ELF.h"
+ #include "llvm/Support/ErrorHandling.h"
+
+--- llvm-3.7.1.src/lib/ExecutionEngine/MCJIT/MCJIT.cpp 2015-07-31 02:31:16.000000000 +1000
++++ llvm-3.7.1.src/lib/ExecutionEngine/MCJIT/MCJIT.cpp 2015-09-14 09:21:28.000000000 +1000
+@@ -524,6 +524,17 @@
+ rv.IntVal = APInt(32, PF(ArgValues[0].IntVal.getZExtValue()));
+ return rv;
+ }
++ if (FTy->getNumParams() == 1 &&
++ RetTy->isVoidTy() &&
++ FTy->getParamType(0)->isPointerTy()) {
++ GenericValue rv;
++ //void (*PF)(char *) = (void(*)(char *))(intptr_t)FPtr;
++ //printf("are symbols available: %d\n",isSymbolSearchingDisabled());
++ void (*PF)(char *) = (void(*)(char *))FPtr;
++ char* mzone = (char*) GVTOP(ArgValues[0]);
++ PF(mzone);
++ return rv;
++ }
+ break;
+ }
+ }
+
+--- llvm-3.7.1.src/lib/MC/MCContext.cpp 2015-06-23 21:31:32.000000000 +1000
++++ llvm-3.7.1.src/lib/MC/MCContext.cpp 2015-09-14 09:24:01.000000000 +1000
+@@ -23,6 +23,7 @@
+ #include "llvm/MC/MCSymbolCOFF.h"
+ #include "llvm/MC/MCSymbolELF.h"
+ #include "llvm/MC/MCSymbolMachO.h"
++#include "llvm/Support/COFF.h"
+ #include "llvm/Support/ELF.h"
+ #include "llvm/Support/ErrorHandling.h"
+ #include "llvm/Support/FileSystem.h"
+
+--- llvm-3.7.1.src/lib/MC/MCObjectFileInfo.cpp 2015-06-25 10:28:42.000000000 +1000
++++ llvm-3.7.1.src/lib/MC/MCObjectFileInfo.cpp 2015-09-14 09:24:17.000000000 +1000
+@@ -16,6 +16,7 @@
+ #include "llvm/MC/MCSectionCOFF.h"
+ #include "llvm/MC/MCSectionELF.h"
+ #include "llvm/MC/MCSectionMachO.h"
++#include "llvm/Support/COFF.h"
+ using namespace llvm;
+
+ static bool useCompactUnwind(const Triple &T) {
+
+--- llvm-3.7.1.src/lib/MC/MCSectionCOFF.cpp 2015-06-09 10:31:39.000000000 +1000
++++ llvm-3.7.1.src/lib/MC/MCSectionCOFF.cpp 2015-09-14 09:24:25.000000000 +1000
+@@ -11,6 +11,7 @@
+ #include "llvm/MC/MCAsmInfo.h"
+ #include "llvm/MC/MCContext.h"
+ #include "llvm/MC/MCSymbol.h"
++#include "llvm/Support/COFF.h"
+ #include "llvm/Support/raw_ostream.h"
+ using namespace llvm;
+
+--- llvm-3.7.1.src/lib/Target/X86/X86TargetObjectFile.cpp 2015-06-27 04:55:48.000000000 +1000
++++ llvm-3.7.1.src/lib/Target/X86/X86TargetObjectFile.cpp 2015-09-14 09:25:03.000000000 +1000
+@@ -16,6 +16,7 @@
+ #include "llvm/MC/MCSectionCOFF.h"
+ #include "llvm/MC/MCSectionELF.h"
+ #include "llvm/MC/MCValue.h"
++#include "llvm/Support/COFF.h"
+ #include "llvm/Support/Dwarf.h"
+ #include "llvm/Target/TargetLowering.h"
diff --git a/gnu/packages/patches/lua51-pkgconfig.patch b/gnu/packages/patches/lua51-pkgconfig.patch
new file mode 100644
index 0000000000..5b03adaaaa
--- /dev/null
+++ b/gnu/packages/patches/lua51-pkgconfig.patch
@@ -0,0 +1,101 @@
+Enables generating Lua's pkg-config file.
+
+http://lua-users.org/lists/lua-l/2015-03/msg00338.html
+
+--- a/Makefile 2016-08-16 19:44:27.363614964 +0200
++++ b/Makefile 2016-08-16 19:49:22.623070005 +0200
+@@ -13,6 +13,7 @@
+ INSTALL_BIN= $(INSTALL_TOP)/bin
+ INSTALL_INC= $(INSTALL_TOP)/include
+ INSTALL_LIB= $(INSTALL_TOP)/lib
++INSTALL_PC= $(INSTALL_LIB)/pkgconfig
+ INSTALL_MAN= $(INSTALL_TOP)/man/man1
+ #
+ # You probably want to make INSTALL_LMOD and INSTALL_CMOD consistent with
+@@ -41,9 +42,12 @@
+ PLATS= aix ansi bsd freebsd generic linux macosx mingw posix solaris
+
+ # What to install.
+-TO_BIN= lua luac
++INTERPRETER= lua
++COMPILER= luac
++TO_BIN= $(INTERPRETER) $(COMPILER)
+ TO_INC= lua.h luaconf.h lualib.h lauxlib.h ../etc/lua.hpp
+ TO_LIB= liblua.a liblua.so liblua.so.${V}
++TO_PC= lua-$(V).pc
+ TO_MAN= lua.1 luac.1
+
+ # Lua version and release.
+@@ -52,17 +56,22 @@
+
+ all: $(PLAT)
+
+-$(PLATS) clean:
++$(PLATS):
+ cd src && $(MAKE) $@ V=$(V) R=$(R)
+
++clean:
++ cd src && $(MAKE) $@
++ $(RM) $(TO_PC)
++
+ test: dummy
+ src/lua test/hello.lua
+
+-install: dummy
+- cd src && $(MKDIR) $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB) $(INSTALL_MAN) $(INSTALL_LMOD) $(INSTALL_CMOD)
++install: dummy $(TO_PC)
++ cd src && $(MKDIR) $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB) $(INSTALL_PC) $(INSTALL_MAN) $(INSTALL_LMOD) $(INSTALL_CMOD)
+ cd src && $(INSTALL_EXEC) $(TO_BIN) $(INSTALL_BIN)
+ cd src && $(INSTALL_DATA) $(TO_INC) $(INSTALL_INC)
+ cd src && $(INSTALL_DATA) $(TO_LIB) $(INSTALL_LIB)
++ cd src && $(INSTALL_DATA) ../$(TO_PC) $(INSTALL_PC)
+ cd doc && $(INSTALL_DATA) $(TO_MAN) $(INSTALL_MAN)
+
+ ranlib:
+@@ -95,6 +104,7 @@
+ @echo "INSTALL_BIN = $(INSTALL_BIN)"
+ @echo "INSTALL_INC = $(INSTALL_INC)"
+ @echo "INSTALL_LIB = $(INSTALL_LIB)"
++ @echo "INSTALL_PC = $(INSTALL_PC)"
+ @echo "INSTALL_MAN = $(INSTALL_MAN)"
+ @echo "INSTALL_LMOD = $(INSTALL_LMOD)"
+ @echo "INSTALL_CMOD = $(INSTALL_CMOD)"
+@@ -111,6 +121,7 @@
+ @echo "TO_BIN = $(TO_BIN)"
+ @echo "TO_INC = $(TO_INC)"
+ @echo "TO_LIB = $(TO_LIB)"
++ @echo "TO_PC = $(TO_PC)"
+ @echo "TO_MAN = $(TO_MAN)"
+
+ # echo config parameters as Lua code
+@@ -122,7 +133,29 @@
+ @$(MAKE) echo | grep = | sed -e 's/= /= "/' -e 's/$$/"/' #-e 's/""/nil/'
+ @echo "-- EOF"
+
++pc:
++ @echo 'prefix=$(INSTALL_TOP)'
++ @echo 'libdir=$(INSTALL_LIB)'
++ @echo 'includedir=$(INSTALL_INC)'
++ @echo 'bindir=$(INSTALL_BIN)'
++ @echo
++ @echo 'INSTALL_LMOD=$(INSTALL_LMOD)'
++ @echo 'INSTALL_CMOD=$(INSTALL_CMOD)'
++ @echo 'INTERPRETER=$${bindir}/$(INTERPRETER)'
++ @echo 'COMPILER=$${bindir}/$(COMPILER)'
++ @echo
++ @echo 'Name: Lua'
++ @echo 'Description: A powerful, fast, lightweight, embeddable scripting language'
++ @echo 'Version: $(R)'
++ @echo
++ @echo 'Libs: -L$${libdir} -llua -lm'
++ @echo 'Cflags: -I$${includedir}'
++
++pkg-config: $(TO_PC)
++$(TO_PC):
++ @$(MAKE) -s pc > $@
++
+ # list targets that do not create files (but not all makes understand .PHONY)
+-.PHONY: all $(PLATS) clean test install local none dummy echo pecho lecho
++.PHONY: all $(PLATS) clean test install local none dummy echo pecho lecho pkg-config
+
+ # (end of Makefile)
diff --git a/gnu/packages/patches/mupdf-build-with-openjpeg-2.1.patch b/gnu/packages/patches/mupdf-build-with-openjpeg-2.1.patch
new file mode 100644
index 0000000000..cd8136b701
--- /dev/null
+++ b/gnu/packages/patches/mupdf-build-with-openjpeg-2.1.patch
@@ -0,0 +1,38 @@
+Make it possible to build MuPDF with OpenJPEG 2.1, which is the latest
+release series and contains many important bug fixes.
+
+Patch adapted from Debian:
+
+https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=745246
+
+And related to this upstream commit:
+
+http://git.ghostscript.com/?p=mupdf.git;a=commit;h=f88bfe2e62dbadb96d4f52d7aa025f0a516078da
+
+diff --git a/source/fitz/load-jpx.c b/source/fitz/load-jpx.c
+index 6b92e5c..72dea50 100644
+--- a/source/fitz/load-jpx.c
++++ b/source/fitz/load-jpx.c
+@@ -1,13 +1,5 @@
+ #include "mupdf/fitz.h"
+
+-/* Without the definition of OPJ_STATIC, compilation fails on windows
+- * due to the use of __stdcall. We believe it is required on some
+- * linux toolchains too. */
+-#define OPJ_STATIC
+-#ifndef _MSC_VER
+-#define OPJ_HAVE_STDINT_H
+-#endif
+-
+ #include <openjpeg.h>
+
+ static void fz_opj_error_callback(const char *msg, void *client_data)
+@@ -117,7 +109,7 @@ fz_load_jpx(fz_context *ctx, unsigned char *data, int size, fz_colorspace *defcs
+ opj_stream_set_read_function(stream, fz_opj_stream_read);
+ opj_stream_set_skip_function(stream, fz_opj_stream_skip);
+ opj_stream_set_seek_function(stream, fz_opj_stream_seek);
+- opj_stream_set_user_data(stream, &sb);
++ opj_stream_set_user_data(stream, &sb, NULL);
+ /* Set the length to avoid an assert */
+ opj_stream_set_user_data_length(stream, size);
+
diff --git a/gnu/packages/patches/mysql-fix-failing-test.patch b/gnu/packages/patches/mysql-fix-failing-test.patch
deleted file mode 100644
index 730d138c18..0000000000
--- a/gnu/packages/patches/mysql-fix-failing-test.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-Fix spurious test failure:
-https://bugs.mysql.com/bug.php?id=81868
-
-Copied from Fedora:
-https://pkgs.fedoraproject.org/cgit/rpms/community-mysql.git/diff/community-mysql-5.7.13-pfs-oom-unittest.patch?id=a51381c6f98b9cd6855bc89ba93398a949ef7098
-
-commit 6c23035b52284c2575f297311dfd0278bcbb0dd1
-Author: Christopher Powers <chris.powers@oracle.com>
-Date: Mon May 2 19:43:31 2016 +0100
-
- Bug#23186653 PERFORMANCE SCHEMA UNIT TESTS PFS_INSTR-OOM & PFS_INSTR_CLASS FAIL REGULARLY
-
- Two test cases pass on Windows but crash on Linux due to different init paths.
- Now pass on both.
-
-diff --git a/storage/perfschema/unittest/pfs_instr-oom-t.cc b/storage/perfschema/unittest/pfs_instr-oom-t.cc
-index db74c9c..b6bc818 100644
---- a/storage/perfschema/unittest/pfs_instr-oom-t.cc
-+++ b/storage/perfschema/unittest/pfs_instr-oom-t.cc
-@@ -232,12 +232,14 @@ void test_oom()
- ok(cond_2 == NULL, "oom (create cond)");
-
- /* Create file. */
-- stub_alloc_always_fails = false;
- PFS_thread fake_thread;
-+ rc = init_instruments(&param);
- fake_thread.m_filename_hash_pins= NULL;
- init_file_hash(&param);
-- rc = init_instruments(&param);
-- ok(rc == 0, "instances init");
-+
-+ stub_alloc_always_fails = true;
-+ file_2 = find_or_create_file(&fake_thread, &dummy_file_class, "dummy", 5, true);
-+ ok(file_2 == NULL, "oom (create file)");
-
- stub_alloc_always_fails= false;
- file_1= find_or_create_file(&fake_thread, &dummy_file_class, "dummy", 5, true);
-@@ -245,10 +247,6 @@ void test_oom()
- release_file(file_1);
- cleanup_instruments();
-
-- stub_alloc_always_fails= true;
-- file_2= find_or_create_file(&fake_thread, &dummy_file_class, "dummy", 5, true);
-- ok(file_2 == NULL, "oom (create file)");
--
- /* Create socket. */
- stub_alloc_always_fails = false;
- rc = init_instruments(&param);
-@@ -422,7 +420,7 @@ void do_all_tests()
-
- int main(int, char **)
- {
-- plan(28);
-+ plan(32);
- MY_INIT("pfs_instr-oom-t");
- do_all_tests();
- return 0;
diff --git a/gnu/packages/patches/onionshare-fix-install-paths.patch b/gnu/packages/patches/onionshare-fix-install-paths.patch
new file mode 100644
index 0000000000..721b89f04b
--- /dev/null
+++ b/gnu/packages/patches/onionshare-fix-install-paths.patch
@@ -0,0 +1,39 @@
+From 7afdd3366711a0c508bfb9323af8f4268ab77c9b Mon Sep 17 00:00:00 2001
+From: Efraim Flashner <efraim@flashner.co.il>
+Date: Thu, 21 Jul 2016 13:22:45 +0300
+Subject: [PATCH] patch
+
+---
+ setup.py | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index 8ae56fe..8b245c9 100644
+--- a/setup.py
++++ b/setup.py
+@@ -91,15 +91,15 @@ setup(
+ include_package_data=True,
+ scripts=['install/scripts/onionshare', 'install/scripts/onionshare-gui'],
+ data_files=[
+- (os.path.join(sys.prefix, 'share/applications'), ['install/onionshare.desktop']),
+- (os.path.join(sys.prefix, 'share/appdata'), ['install/onionshare.appdata.xml']),
+- (os.path.join(sys.prefix, 'share/pixmaps'), ['install/onionshare80.xpm']),
+- (os.path.join(sys.prefix, 'share/onionshare'), [
++ ('share/applications', ['install/onionshare.desktop']),
++ ('share/appdata', ['install/onionshare.appdata.xml']),
++ ('share/pixmaps', ['install/onionshare80.xpm']),
++ ('share/onionshare', [
+ 'resources/version.txt',
+ 'resources/wordlist.txt'
+ ]),
+- (os.path.join(sys.prefix, 'share/onionshare/images'), images),
+- (os.path.join(sys.prefix, 'share/onionshare/locale'), locale),
+- (os.path.join(sys.prefix, 'share/onionshare/html'), html)
++ ('share/onionshare/images', images),
++ ('share/onionshare/locale', locale),
++ ('share/onionshare/html', html)
+ ]
+ )
+--
+2.9.1
+
diff --git a/gnu/packages/patches/openjpeg-CVE-2016-5157.patch b/gnu/packages/patches/openjpeg-CVE-2016-5157.patch
new file mode 100644
index 0000000000..f83bd9b511
--- /dev/null
+++ b/gnu/packages/patches/openjpeg-CVE-2016-5157.patch
@@ -0,0 +1,96 @@
+Fix CVE-2016-5157 (heap overflow in opj_dwt_interleave_v() allowing execution of
+arbitrary code):
+
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5157
+https://pdfium.googlesource.com/pdfium/+/b6befb2ed2485a3805cddea86dc7574510178ea9
+http://seclists.org/oss-sec/2016/q3/441
+
+Adapted from upstream source repository:
+
+https://github.com/uclouvain/openjpeg/commit/e078172b1c3f98d2219c37076b238fb759c751ea
+
+The final hunk of the patch, affecting
+'tests/nonregression/test_suite.ctest.in', had to be adjusted, since it referred
+to some context that is not yet provided by a tagged release.
+
+From c80286a4d573ad07ccc3c8b53289c38bb8256b30 Mon Sep 17 00:00:00 2001
+From: Leo Famulari <leo@famulari.name>
+Date: Fri, 9 Sep 2016 04:37:40 -0400
+Subject: [PATCH] CVE-2016-5157 adjusted to apply to 2.1.0.
+
+---
+ src/lib/openjp2/tcd.c | 11 +++++++++++
+ tests/compare_dump_files.c | 14 +++++++-------
+ tests/nonregression/test_suite.ctest.in | 2 ++
+ 3 files changed, 20 insertions(+), 7 deletions(-)
+
+diff --git a/src/lib/openjp2/tcd.c b/src/lib/openjp2/tcd.c
+index 12da05c..7a29c49 100644
+--- a/src/lib/openjp2/tcd.c
++++ b/src/lib/openjp2/tcd.c
+@@ -696,9 +696,20 @@ static INLINE OPJ_BOOL opj_tcd_init_tile(opj_tcd_t *p_tcd, OPJ_UINT32 p_tile_no,
+ l_tx0 = l_cp->tx0 + p * l_cp->tdx; /* can't be greater than l_image->x1 so won't overflow */
+ l_tile->x0 = (OPJ_INT32)opj_uint_max(l_tx0, l_image->x0);
+ l_tile->x1 = (OPJ_INT32)opj_uint_min(opj_uint_adds(l_tx0, l_cp->tdx), l_image->x1);
++ /* all those OPJ_UINT32 are casted to OPJ_INT32, let's do some sanity check */
++ if ((l_tile->x0 < 0) || (l_tile->x1 <= l_tile->x0)) {
++ opj_event_msg(manager, EVT_ERROR, "Tile X coordinates are not supported\n");
++ return OPJ_FALSE;
++ }
+ l_ty0 = l_cp->ty0 + q * l_cp->tdy; /* can't be greater than l_image->y1 so won't overflow */
+ l_tile->y0 = (OPJ_INT32)opj_uint_max(l_ty0, l_image->y0);
+ l_tile->y1 = (OPJ_INT32)opj_uint_min(opj_uint_adds(l_ty0, l_cp->tdy), l_image->y1);
++ /* all those OPJ_UINT32 are casted to OPJ_INT32, let's do some sanity check */
++ if ((l_tile->y0 < 0) || (l_tile->y1 <= l_tile->y0)) {
++ opj_event_msg(manager, EVT_ERROR, "Tile Y coordinates are not supported\n");
++ return OPJ_FALSE;
++ }
++
+
+ /* testcase 1888.pdf.asan.35.988 */
+ if (l_tccp->numresolutions == 0) {
+diff --git a/tests/compare_dump_files.c b/tests/compare_dump_files.c
+index 946c92a..7d22270 100644
+--- a/tests/compare_dump_files.c
++++ b/tests/compare_dump_files.c
+@@ -118,10 +118,10 @@ int main(int argc, char **argv)
+ test_cmp_parameters inParam;
+ FILE *fbase=NULL, *ftest=NULL;
+ int same = 0;
+- char lbase[256];
+- char strbase[256];
+- char ltest[256];
+- char strtest[256];
++ char lbase[512];
++ char strbase[512];
++ char ltest[512];
++ char strtest[512];
+
+ if( parse_cmdline_cmp(argc, argv, &inParam) == 1 )
+ {
+@@ -154,9 +154,9 @@ int main(int argc, char **argv)
+
+ while (fgets(lbase, sizeof(lbase), fbase) && fgets(ltest,sizeof(ltest),ftest))
+ {
+- int nbase = sscanf(lbase, "%255[^\r\n]", strbase);
+- int ntest = sscanf(ltest, "%255[^\r\n]", strtest);
+- assert( nbase != 255 && ntest != 255 );
++ int nbase = sscanf(lbase, "%511[^\r\n]", strbase);
++ int ntest = sscanf(ltest, "%511[^\r\n]", strtest);
++ assert( nbase != 511 && ntest != 511 );
+ if( nbase != 1 || ntest != 1 )
+ {
+ fprintf(stderr, "could not parse line from files\n" );
+diff --git a/tests/nonregression/test_suite.ctest.in b/tests/nonregression/test_suite.ctest.in
+index d393e6c..90cfa43 100644
+--- a/tests/nonregression/test_suite.ctest.in
++++ b/tests/nonregression/test_suite.ctest.in
+@@ -564,3 +564,5 @@ opj_decompress -i @INPUT_NR_PATH@/issue726.j2k -o @TEMP_PATH@/issue726.png
+ # issue 775
+ !opj_decompress -i @INPUT_NR_PATH@/issue775.j2k -o @TEMP_PATH@/issue775.png
+ !opj_decompress -i @INPUT_NR_PATH@/issue775-2.j2k -o @TEMP_PATH@/issue775-2.png
++# issue 823 (yes, not a typo, test image is issue822)
++!opj_decompress -i @INPUT_NR_PATH@/issue822.jp2 -o @TEMP_PATH@/issue822.png
+--
+2.10.0
+
diff --git a/gnu/packages/patches/openjpeg-CVE-2016-7163.patch b/gnu/packages/patches/openjpeg-CVE-2016-7163.patch
new file mode 100644
index 0000000000..a4a24e4ff5
--- /dev/null
+++ b/gnu/packages/patches/openjpeg-CVE-2016-7163.patch
@@ -0,0 +1,71 @@
+Fix CVE-2016-7613 (Integer overflow in opj_pi_create_decode allowing execution
+of arbitrary code):
+
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-7163
+https://github.com/uclouvain/openjpeg/issues/826
+http://seclists.org/oss-sec/2016/q3/442
+
+Copied from upstream repository:
+
+https://github.com/uclouvain/openjpeg/commit/c16bc057ba3f125051c9966cf1f5b68a05681de4
+https://github.com/uclouvain/openjpeg/commit/ef01f18dfc6780b776d0674ed3e7415c6ef54d24
+
+From c16bc057ba3f125051c9966cf1f5b68a05681de4 Mon Sep 17 00:00:00 2001
+From: trylab <trylab@users.noreply.github.com>
+Date: Tue, 6 Sep 2016 13:55:49 +0800
+Subject: [PATCH] Fix an integer overflow issue (#809)
+
+Prevent an integer overflow issue in function opj_pi_create_decode of
+pi.c.
+---
+ src/lib/openjp2/pi.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/src/lib/openjp2/pi.c b/src/lib/openjp2/pi.c
+index cffad66..36e2ff0 100644
+--- a/src/lib/openjp2/pi.c
++++ b/src/lib/openjp2/pi.c
+@@ -1237,7 +1237,13 @@ opj_pi_iterator_t *opj_pi_create_decode(opj_image_t *p_image,
+ l_current_pi = l_pi;
+
+ /* memory allocation for include */
+- l_current_pi->include = (OPJ_INT16*) opj_calloc((l_tcp->numlayers +1) * l_step_l, sizeof(OPJ_INT16));
++ /* prevent an integer overflow issue */
++ l_current_pi->include = 00;
++ if (l_step_l <= (SIZE_MAX / (l_tcp->numlayers + 1U)))
++ {
++ l_current_pi->include = (OPJ_INT16*) opj_calloc((l_tcp->numlayers +1) * l_step_l, sizeof(OPJ_INT16));
++ }
++
+ if
+ (!l_current_pi->include)
+ {
+--
+2.10.0
+
+From ef01f18dfc6780b776d0674ed3e7415c6ef54d24 Mon Sep 17 00:00:00 2001
+From: Matthieu Darbois <mayeut@users.noreply.github.com>
+Date: Thu, 8 Sep 2016 07:34:46 +0200
+Subject: [PATCH] Cast to size_t before multiplication
+
+Need to cast to size_t before multiplication otherwise overflow check is useless.
+---
+ src/lib/openjp2/pi.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/lib/openjp2/pi.c b/src/lib/openjp2/pi.c
+index 36e2ff0..809b33d 100644
+--- a/src/lib/openjp2/pi.c
++++ b/src/lib/openjp2/pi.c
+@@ -1241,7 +1241,7 @@ opj_pi_iterator_t *opj_pi_create_decode(opj_image_t *p_image,
+ l_current_pi->include = 00;
+ if (l_step_l <= (SIZE_MAX / (l_tcp->numlayers + 1U)))
+ {
+- l_current_pi->include = (OPJ_INT16*) opj_calloc((l_tcp->numlayers +1) * l_step_l, sizeof(OPJ_INT16));
++ l_current_pi->include = (OPJ_INT16*) opj_calloc((size_t)(l_tcp->numlayers + 1U) * l_step_l, sizeof(OPJ_INT16));
+ }
+
+ if
+--
+2.10.0
+
diff --git a/gnu/packages/patches/openssl-1.1.0-c-rehash-in.patch b/gnu/packages/patches/openssl-1.1.0-c-rehash-in.patch
new file mode 100644
index 0000000000..e3a982b7a8
--- /dev/null
+++ b/gnu/packages/patches/openssl-1.1.0-c-rehash-in.patch
@@ -0,0 +1,19 @@
+This patch removes the explicit reference to the 'perl' binary,
+such that OpenSSL does not retain a reference to Perl.
+
+The 'c_rehash' program is seldom used, but it is used nonetheless
+to create symbolic links to certificates, for instance in the 'nss-certs'
+package.
+
+diff --git a/tools/c_rehash.in b/tools/c_rehash.in
+index 2fef627..9d40eae 100644
+--- a/tools/c_rehash.in
++++ b/tools/c_rehash.in
+@@ -1,4 +1,6 @@
+-#!{- $config{hashbangperl} -}
++eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}'
++ & eval 'exec perl -wS "$0" $argv:q'
++ if 0;
+
+ # {- join("\n# ", @autowarntext) -}
+ # Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved.
diff --git a/gnu/packages/patches/p7zip-remove-unused-code.patch b/gnu/packages/patches/p7zip-remove-unused-code.patch
new file mode 100644
index 0000000000..f9c782b93e
--- /dev/null
+++ b/gnu/packages/patches/p7zip-remove-unused-code.patch
@@ -0,0 +1,959 @@
+diff --git a/C/Sha1.c b/C/Sha1.c
+index 55c1c63..48b4c5d 100644
+--- a/C/Sha1.c
++++ b/C/Sha1.c
+@@ -104,39 +104,6 @@ void Sha1_GetBlockDigest(CSha1 *p, const UInt32 *data, UInt32 *destDigest)
+ destDigest[4] = p->state[4] + e;
+ }
+
+-void Sha1_UpdateBlock_Rar(CSha1 *p, UInt32 *data, int returnRes)
+-{
+- UInt32 a, b, c, d, e;
+- UInt32 W[kNumW];
+-
+- a = p->state[0];
+- b = p->state[1];
+- c = p->state[2];
+- d = p->state[3];
+- e = p->state[4];
+-
+- RX_15
+-
+- RX_1_4(R0, R1, 15);
+-
+- RX_20(R2, 20);
+- RX_20(R3, 40);
+- RX_20(R4, 60);
+-
+- p->state[0] += a;
+- p->state[1] += b;
+- p->state[2] += c;
+- p->state[3] += d;
+- p->state[4] += e;
+-
+- if (returnRes)
+- {
+- unsigned i;
+- for (i = 0 ; i < SHA1_NUM_BLOCK_WORDS; i++)
+- data[i] = W[kNumW - SHA1_NUM_BLOCK_WORDS + i];
+- }
+-}
+-
+ #define Sha1_UpdateBlock(p) Sha1_GetBlockDigest(p, p->buffer, p->state)
+
+ void Sha1_Update(CSha1 *p, const Byte *data, size_t size)
+@@ -212,46 +179,6 @@ void Sha1_Update(CSha1 *p, const Byte *data, size_t size)
+ }
+ }
+
+-void Sha1_Update_Rar(CSha1 *p, Byte *data, size_t size /* , int rar350Mode */)
+-{
+- int returnRes = False;
+-
+- unsigned pos = (unsigned)p->count & 0x3F;
+- p->count += size;
+-
+- while (size--)
+- {
+- unsigned pos2 = (pos & 3);
+- UInt32 v = ((UInt32)*data++) << (8 * (3 - pos2));
+- UInt32 *ref = &(p->buffer[pos >> 2]);
+- pos++;
+- if (pos2 == 0)
+- {
+- *ref = v;
+- continue;
+- }
+- *ref |= v;
+-
+- if (pos == SHA1_BLOCK_SIZE)
+- {
+- pos = 0;
+- Sha1_UpdateBlock_Rar(p, p->buffer, returnRes);
+- if (returnRes)
+- {
+- unsigned i;
+- for (i = 0; i < SHA1_NUM_BLOCK_WORDS; i++)
+- {
+- UInt32 d = p->buffer[i];
+- Byte *prev = data + i * 4 - SHA1_BLOCK_SIZE;
+- SetUi32(prev, d);
+- }
+- }
+- // returnRes = rar350Mode;
+- returnRes = True;
+- }
+- }
+-}
+-
+ void Sha1_Final(CSha1 *p, Byte *digest)
+ {
+ unsigned pos = (unsigned)p->count & 0x3F;
+diff --git a/C/Sha1.h b/C/Sha1.h
+index aa22ec3..9c45653 100644
+--- a/C/Sha1.h
++++ b/C/Sha1.h
+@@ -27,8 +27,6 @@ void Sha1_GetBlockDigest(CSha1 *p, const UInt32 *data, UInt32 *destDigest);
+ void Sha1_Update(CSha1 *p, const Byte *data, size_t size);
+ void Sha1_Final(CSha1 *p, Byte *digest);
+
+-void Sha1_Update_Rar(CSha1 *p, Byte *data, size_t size /* , int rar350Mode */);
+-
+ void Sha1_32_PrepareBlock(const CSha1 *p, UInt32 *block, unsigned size);
+ void Sha1_32_Update(CSha1 *p, const UInt32 *data, size_t size);
+ void Sha1_32_Final(CSha1 *p, UInt32 *digest);
+diff --git a/CPP/7zip/Archive/7z/7zUpdate.cpp b/CPP/7zip/Archive/7z/7zUpdate.cpp
+index a0571e7..43ad3e9 100644
+--- a/CPP/7zip/Archive/7z/7zUpdate.cpp
++++ b/CPP/7zip/Archive/7z/7zUpdate.cpp
+@@ -562,7 +562,7 @@ static int CompareEmptyItems(const unsigned *p1, const unsigned *p2, void *param
+ }
+
+ static const char *g_Exts =
+- " 7z xz lzma ace arc arj bz tbz bz2 tbz2 cab deb gz tgz ha lha lzh lzo lzx pak rar rpm sit zoo"
++ " 7z xz lzma ace arc arj bz tbz bz2 tbz2 cab deb gz tgz ha lha lzh lzo lzx pak rpm sit zoo"
+ " zip jar ear war msi"
+ " 3gp avi mov mpeg mpg mpe wmv"
+ " aac ape fla flac la mp3 m4a mp4 ofr ogg pac ra rm rka shn swa tta wv wma wav"
+diff --git a/CPP/7zip/Bundles/Format7zFree/makefile.list b/CPP/7zip/Bundles/Format7zFree/makefile.list
+index da2056b..1dcf1a5 100644
+--- a/CPP/7zip/Bundles/Format7zFree/makefile.list
++++ b/CPP/7zip/Bundles/Format7zFree/makefile.list
+@@ -87,8 +87,6 @@ SRCS=\
+ ../../../../CPP/7zip/Archive/PeHandler.cpp \
+ ../../../../CPP/7zip/Archive/PpmdHandler.cpp \
+ ../../../../CPP/7zip/Archive/QcowHandler.cpp \
+- ../../../../CPP/7zip/Archive/Rar/RarHandler.cpp \
+- ../../../../CPP/7zip/Archive/Rar/Rar5Handler.cpp \
+ ../../../../CPP/7zip/Archive/RpmHandler.cpp \
+ ../../../../CPP/7zip/Archive/SplitHandler.cpp \
+ ../../../../CPP/7zip/Archive/SquashfsHandler.cpp \
+@@ -191,9 +189,6 @@ SRCS=\
+ ../../../../CPP/7zip/Crypto/MyAesReg.cpp \
+ ../../../../CPP/7zip/Crypto/Pbkdf2HmacSha1.cpp \
+ ../../../../CPP/7zip/Crypto/RandGen.cpp \
+- ../../../../CPP/7zip/Crypto/Rar20Crypto.cpp \
+- ../../../../CPP/7zip/Crypto/Rar5Aes.cpp \
+- ../../../../CPP/7zip/Crypto/RarAes.cpp \
+ ../../../../CPP/7zip/Crypto/WzAes.cpp \
+ ../../../../CPP/7zip/Crypto/ZipCrypto.cpp \
+ ../../../../CPP/7zip/Crypto/ZipStrong.cpp \
+@@ -485,10 +480,6 @@ PpmdHandler.o : ../../../../CPP/7zip/Archive/PpmdHandler.cpp
+ $(CXX) $(CXXFLAGS) ../../../../CPP/7zip/Archive/PpmdHandler.cpp
+ QcowHandler.o : ../../../../CPP/7zip/Archive/QcowHandler.cpp
+ $(CXX) $(CXXFLAGS) ../../../../CPP/7zip/Archive/QcowHandler.cpp
+-RarHandler.o : ../../../../CPP/7zip/Archive/Rar/RarHandler.cpp
+- $(CXX) $(CXXFLAGS) ../../../../CPP/7zip/Archive/Rar/RarHandler.cpp
+-Rar5Handler.o : ../../../../CPP/7zip/Archive/Rar/Rar5Handler.cpp
+- $(CXX) $(CXXFLAGS) ../../../../CPP/7zip/Archive/Rar/Rar5Handler.cpp
+ RpmHandler.o : ../../../../CPP/7zip/Archive/RpmHandler.cpp
+ $(CXX) $(CXXFLAGS) ../../../../CPP/7zip/Archive/RpmHandler.cpp
+ SplitHandler.o : ../../../../CPP/7zip/Archive/SplitHandler.cpp
+@@ -693,12 +684,6 @@ Pbkdf2HmacSha1.o : ../../../../CPP/7zip/Crypto/Pbkdf2HmacSha1.cpp
+ $(CXX) $(CXXFLAGS) ../../../../CPP/7zip/Crypto/Pbkdf2HmacSha1.cpp
+ RandGen.o : ../../../../CPP/7zip/Crypto/RandGen.cpp
+ $(CXX) $(CXXFLAGS) ../../../../CPP/7zip/Crypto/RandGen.cpp
+-Rar20Crypto.o : ../../../../CPP/7zip/Crypto/Rar20Crypto.cpp
+- $(CXX) $(CXXFLAGS) ../../../../CPP/7zip/Crypto/Rar20Crypto.cpp
+-Rar5Aes.o : ../../../../CPP/7zip/Crypto/Rar5Aes.cpp
+- $(CXX) $(CXXFLAGS) ../../../../CPP/7zip/Crypto/Rar5Aes.cpp
+-RarAes.o : ../../../../CPP/7zip/Crypto/RarAes.cpp
+- $(CXX) $(CXXFLAGS) ../../../../CPP/7zip/Crypto/RarAes.cpp
+ WzAes.o : ../../../../CPP/7zip/Crypto/WzAes.cpp
+ $(CXX) $(CXXFLAGS) ../../../../CPP/7zip/Crypto/WzAes.cpp
+ ZipCrypto.o : ../../../../CPP/7zip/Crypto/ZipCrypto.cpp
+@@ -869,8 +854,6 @@ OBJS=\
+ PeHandler.o \
+ PpmdHandler.o \
+ QcowHandler.o \
+- RarHandler.o \
+- Rar5Handler.o \
+ RpmHandler.o \
+ SplitHandler.o \
+ SquashfsHandler.o \
+@@ -973,9 +956,6 @@ OBJS=\
+ MyAesReg.o \
+ Pbkdf2HmacSha1.o \
+ RandGen.o \
+- Rar20Crypto.o \
+- Rar5Aes.o \
+- RarAes.o \
+ WzAes.o \
+ ZipCrypto.o \
+ ZipStrong.o \
+diff --git a/CPP/7zip/CMAKE/Format7zFree/CMakeLists.txt b/CPP/7zip/CMAKE/Format7zFree/CMakeLists.txt
+index 61f41f9..adc7117 100644
+--- a/CPP/7zip/CMAKE/Format7zFree/CMakeLists.txt
++++ b/CPP/7zip/CMAKE/Format7zFree/CMakeLists.txt
+@@ -126,8 +126,6 @@ add_library(7z MODULE
+ "../../../../CPP/7zip/Archive/PeHandler.cpp"
+ "../../../../CPP/7zip/Archive/PpmdHandler.cpp"
+ "../../../../CPP/7zip/Archive/QcowHandler.cpp"
+- "../../../../CPP/7zip/Archive/Rar/RarHandler.cpp"
+- "../../../../CPP/7zip/Archive/Rar/Rar5Handler.cpp"
+ "../../../../CPP/7zip/Archive/RpmHandler.cpp"
+ "../../../../CPP/7zip/Archive/SplitHandler.cpp"
+ "../../../../CPP/7zip/Archive/SquashfsHandler.cpp"
+@@ -230,9 +228,6 @@ add_library(7z MODULE
+ "../../../../CPP/7zip/Crypto/MyAesReg.cpp"
+ "../../../../CPP/7zip/Crypto/Pbkdf2HmacSha1.cpp"
+ "../../../../CPP/7zip/Crypto/RandGen.cpp"
+- "../../../../CPP/7zip/Crypto/Rar20Crypto.cpp"
+- "../../../../CPP/7zip/Crypto/Rar5Aes.cpp"
+- "../../../../CPP/7zip/Crypto/RarAes.cpp"
+ "../../../../CPP/7zip/Crypto/WzAes.cpp"
+ "../../../../CPP/7zip/Crypto/ZipCrypto.cpp"
+ "../../../../CPP/7zip/Crypto/ZipStrong.cpp"
+diff --git a/CPP/7zip/Crypto/Sha1Cls.h b/CPP/7zip/Crypto/Sha1Cls.h
+index 71acbde..cde4a57 100644
+--- a/CPP/7zip/Crypto/Sha1Cls.h
++++ b/CPP/7zip/Crypto/Sha1Cls.h
+@@ -28,7 +28,6 @@ class CContext: public CContextBase
+ {
+ public:
+ void Update(const Byte *data, size_t size) throw() { Sha1_Update(&_s, data, size); }
+- void UpdateRar(Byte *data, size_t size /* , bool rar350Mode */) throw() { Sha1_Update_Rar(&_s, data, size /* , rar350Mode ? 1 : 0 */); }
+ void Final(Byte *digest) throw() { Sha1_Final(&_s, digest); }
+ };
+
+diff --git a/CPP/7zip/Guid.txt b/CPP/7zip/Guid.txt
+index 7edab6e..cc22992 100644
+--- a/CPP/7zip/Guid.txt
++++ b/CPP/7zip/Guid.txt
+@@ -151,7 +151,6 @@ Handler GUIDs:
+
+ 01 Zip
+ 02 BZip2
+- 03 Rar
+ 04 Arj
+ 05 Z
+ 06 Lzh
+@@ -168,7 +167,6 @@ Handler GUIDs:
+ C9 VDI
+ CA Qcow
+ CB GPT
+- CC Rar5
+ CD IHex
+ CE Hxs
+ CF TE
+diff --git a/CPP/7zip/QMAKE/Format7zFree/Format7zFree.pro b/CPP/7zip/QMAKE/Format7zFree/Format7zFree.pro
+index afa36d4..93c45c7 100644
+--- a/CPP/7zip/QMAKE/Format7zFree/Format7zFree.pro
++++ b/CPP/7zip/QMAKE/Format7zFree/Format7zFree.pro
+@@ -137,8 +137,6 @@ SOURCES += \
+ ../../../../CPP/7zip/Archive/PeHandler.cpp \
+ ../../../../CPP/7zip/Archive/PpmdHandler.cpp \
+ ../../../../CPP/7zip/Archive/QcowHandler.cpp \
+- ../../../../CPP/7zip/Archive/Rar/RarHandler.cpp \
+- ../../../../CPP/7zip/Archive/Rar/Rar5Handler.cpp \
+ ../../../../CPP/7zip/Archive/RpmHandler.cpp \
+ ../../../../CPP/7zip/Archive/SplitHandler.cpp \
+ ../../../../CPP/7zip/Archive/SquashfsHandler.cpp \
+@@ -241,9 +239,6 @@ SOURCES += \
+ ../../../../CPP/7zip/Crypto/MyAesReg.cpp \
+ ../../../../CPP/7zip/Crypto/Pbkdf2HmacSha1.cpp \
+ ../../../../CPP/7zip/Crypto/RandGen.cpp \
+- ../../../../CPP/7zip/Crypto/Rar20Crypto.cpp \
+- ../../../../CPP/7zip/Crypto/Rar5Aes.cpp \
+- ../../../../CPP/7zip/Crypto/RarAes.cpp \
+ ../../../../CPP/7zip/Crypto/WzAes.cpp \
+ ../../../../CPP/7zip/Crypto/ZipCrypto.cpp \
+ ../../../../CPP/7zip/Crypto/ZipStrong.cpp \
+diff --git a/CPP/7zip/QMAKE/all.pro b/CPP/7zip/QMAKE/all.pro
+index a565ba8..6668619 100644
+--- a/CPP/7zip/QMAKE/all.pro
++++ b/CPP/7zip/QMAKE/all.pro
+@@ -4,7 +4,6 @@ SUBDIRS = 7za \
+ 7zr \
+ 7z_ \
+ Format7zFree \
+- Rar \
+ Lzham \
+ test_lib
+
+diff --git a/CPP/7zip/UI/Client7z/Client7z.cpp b/CPP/7zip/UI/Client7z/Client7z.cpp
+index d0eca6d..7f4e6e2 100644
+--- a/CPP/7zip/UI/Client7z/Client7z.cpp
++++ b/CPP/7zip/UI/Client7z/Client7z.cpp
+@@ -32,7 +32,7 @@ HINSTANCE g_hInstance = 0;
+ #endif
+
+ // Tou can find the list of all GUIDs in Guid.txt file.
+-// use another CLSIDs, if you want to support other formats (zip, rar, ...).
++// use another CLSIDs, if you want to support other formats (zip, ...).
+ // {23170F69-40C1-278A-1000-000110070000}
+
+ DEFINE_GUID(CLSID_CFormat7z,
+diff --git a/CPP/7zip/UI/Common/LoadCodecs.h b/CPP/7zip/UI/Common/LoadCodecs.h
+index ac9eeac..076bd1c 100644
+--- a/CPP/7zip/UI/Common/LoadCodecs.h
++++ b/CPP/7zip/UI/Common/LoadCodecs.h
+@@ -158,7 +158,6 @@ struct CArcInfoEx
+ void AddExts(const UString &ext, const UString &addExt);
+
+ bool IsSplit() const { return StringsAreEqualNoCase_Ascii(Name, "Split"); }
+- // bool IsRar() const { return StringsAreEqualNoCase_Ascii(Name, "Rar"); }
+
+ CArcInfoEx():
+ Flags(0),
+diff --git a/CPP/7zip/UI/Common/OpenArchive.cpp b/CPP/7zip/UI/Common/OpenArchive.cpp
+index 7d5b0c4..88ea5ab 100644
+--- a/CPP/7zip/UI/Common/OpenArchive.cpp
++++ b/CPP/7zip/UI/Common/OpenArchive.cpp
+@@ -1063,7 +1063,6 @@ static const char * const k_Formats_with_simple_signuature[] =
+ {
+ "7z"
+ , "xz"
+- , "rar"
+ , "bzip2"
+ , "gzip"
+ , "cab"
+@@ -1720,29 +1719,6 @@ HRESULT CArc::OpenStream2(const COpenOptions &op)
+ {
+ // signature search was here
+ }
+- else if (extension.IsEqualTo("000") || extension.IsEqualTo("001"))
+- {
+- int i = FindFormatForArchiveType(op.codecs, orderIndices, "rar");
+- if (i >= 0)
+- {
+- const size_t kBufSize = (1 << 10);
+- byteBuffer.Alloc(kBufSize);
+- size_t processedSize = kBufSize;
+- RINOK(ReadStream(op.stream, byteBuffer, &processedSize));
+- if (processedSize >= 16)
+- {
+- const Byte *buf = byteBuffer;
+- const Byte kRarHeader[] = { 0x52 , 0x61, 0x72, 0x21, 0x1a, 0x07, 0x00 };
+- if (TestSignature(buf, kRarHeader, 7) && buf[9] == 0x73 && (buf[10] & 1) != 0)
+- {
+- orderIndices2.Add(orderIndices[i]);
+- orderIndices[i] = -1;
+- if (i >= (int)numFinded)
+- numFinded++;
+- }
+- }
+- }
+- }
+ else
+ {
+ const size_t kBufSize = (1 << 10);
+diff --git a/CPP/7zip/UI/FileManager/FM_rc.cpp b/CPP/7zip/UI/FileManager/FM_rc.cpp
+index 83578ed..034feed 100644
+--- a/CPP/7zip/UI/FileManager/FM_rc.cpp
++++ b/CPP/7zip/UI/FileManager/FM_rc.cpp
+@@ -821,8 +821,6 @@ REGISTER_STRINGTABLE(g_stringTable)
+
+ /////////////////////////////////////////////////////
+
+-#include "res/ParentFolder.h"
+-
+ SevenZipPanel::SevenZipPanel(MyFrame *frame, wxWindow *parent,int id,int panelIndex) :
+ wxPanel(parent,id) , m_frame(frame), _wList(0)
+ {
+@@ -840,7 +838,7 @@ REGISTER_STRINGTABLE(g_stringTable)
+ int sizes[] = {150, 250, 350, -1};
+ wxArrayString pathArray;
+ wxBoxSizer *pPathSizer = new wxBoxSizer(wxHORIZONTAL);
+- m_pBmpButtonParentFolder = new wxBitmapButton(this, kParentFolderID, wxGetBitmapFromMemory(PARENT_FOLDER), wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW);
++ m_pBmpButtonParentFolder = new wxBitmapButton(this, kParentFolderID, wxArtProvider::GetBitmap(wxART_GO_DIR_UP, wxART_TOOLBAR, wxDefaultSize), wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW);
+ m_pComboBoxPath = new wxComboBox(this, _comboBoxID, wxEmptyString, wxDefaultPosition, wxSize(300,-1), pathArray, wxCB_DROPDOWN | wxCB_SORT );
+ pPathSizer->Add(m_pBmpButtonParentFolder, 0, wxALL|wxEXPAND, 0);
+ pPathSizer->Add(m_pComboBoxPath, 1, wxALL|wxEXPAND, 5);
+diff --git a/CPP/ANDROID/Format7zFree/jni/Android.mk b/CPP/ANDROID/Format7zFree/jni/Android.mk
+index 7c74e73..48cb4fa 100644
+--- a/CPP/ANDROID/Format7zFree/jni/Android.mk
++++ b/CPP/ANDROID/Format7zFree/jni/Android.mk
+@@ -91,8 +91,6 @@ LOCAL_SRC_FILES := \
+ ../../../../CPP/7zip/Archive/PeHandler.cpp \
+ ../../../../CPP/7zip/Archive/PpmdHandler.cpp \
+ ../../../../CPP/7zip/Archive/QcowHandler.cpp \
+- ../../../../CPP/7zip/Archive/Rar/RarHandler.cpp \
+- ../../../../CPP/7zip/Archive/Rar/Rar5Handler.cpp \
+ ../../../../CPP/7zip/Archive/RpmHandler.cpp \
+ ../../../../CPP/7zip/Archive/SplitHandler.cpp \
+ ../../../../CPP/7zip/Archive/SquashfsHandler.cpp \
+@@ -195,9 +193,6 @@ LOCAL_SRC_FILES := \
+ ../../../../CPP/7zip/Crypto/MyAesReg.cpp \
+ ../../../../CPP/7zip/Crypto/Pbkdf2HmacSha1.cpp \
+ ../../../../CPP/7zip/Crypto/RandGen.cpp \
+- ../../../../CPP/7zip/Crypto/Rar20Crypto.cpp \
+- ../../../../CPP/7zip/Crypto/Rar5Aes.cpp \
+- ../../../../CPP/7zip/Crypto/RarAes.cpp \
+ ../../../../CPP/7zip/Crypto/WzAes.cpp \
+ ../../../../CPP/7zip/Crypto/ZipCrypto.cpp \
+ ../../../../CPP/7zip/Crypto/ZipStrong.cpp \
+diff --git a/ChangeLog b/ChangeLog
+index daabd8e..f2a01d6 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -28,7 +28,6 @@ Version 16.00 (never published)
+ - 7z update bcj bugs were fixed.
+ - split (aaa.001) fixed
+ - iso loop fix
+- - rar4 multivol -stdin kpidSize
+ - drag and drop 1<2.txt
+ - memory access violation fix
+
+@@ -80,11 +79,6 @@ Version 15.12 (never published)
+ - "There are no errors" string after "Test" operation inside archive.
+ - The bugs in LZMA SDK were fixed (but these bugs are not related directly to 7-Zip's code).
+
+-
+- - From Windows version of 7-Zip 15.11 :
+- - Some bugs were fixed.
+- - 7-Zip 15.10 showed incorrect error message about missing volume for multivolume RAR archives.
+-
+ - ..../LZHAM added
+
+
+@@ -104,9 +98,6 @@ Version 15.10 beta
+ version (-m switch).
+ - Some bugs were fixed.
+ - extracting from solid wim archives worked incorrectly in some cases,
+- - Also there are some minor changes.
+- - 7-Zip can show the name of missing volume for multivolume RAR and VMDK archives.
+- - Some internal changes with 7-Zip Benchmark.
+
+ Version 15.09 beta
+ ==================
+@@ -128,8 +119,6 @@ Version 15.08 beta
+ Version 15.07 beta
+ ==================
+
+- - "bin/Codecs/Rar29.so" renamed to "bin/Codecs/Rar.so"
+-
+ - support for cygwin 64 bits
+
+ - support for cygwin 64 bits with asm
+@@ -153,15 +142,12 @@ Version 15.07 beta
+
+ - From Windows version of 7-zip 15.06 beta:
+
+- - 7-Zip now can extract RAR5 archives.
+ - 7-Zip now doesn't sort files by type while adding to solid 7z archive.
+ new -mqs switch to sort files by type while adding to solid 7z archive.
+ - The BUG in 7-Zip File Manager was fixed:
+ The "Move" operation to open 7z archive didn't delete empty files.
+ - The BUG in 15.05 was fixed:
+ console version added some text to the end of stdout stream, is -so switch was used.
+- - The BUG in 9.30 - 15.05 was fixed:
+- 7-Zip could not open multivolume sfx RAR archive.
+ - Some bugs were fixed.
+
+ - From Windows version of 7-zip 15.05 beta:
+@@ -214,9 +200,6 @@ Version 9.38
+ - bug #139 "password from commanline is visible in processes list"
+ Now the characters of the password are replaced with *.
+
+- - From Windows version of 7-zip
+- - bug#138 If you extract the password with # program crashes
+- 7z now supports long password in RAR 3 and 4.
+
+
+
+@@ -247,12 +230,6 @@ Version 9.22
+ - #3283518 : Asm/x{32,64}/7zCrcT8U.asm introduces executable stack
+
+
+-Version 9.20.1
+-==============
+-
+- - #3211479 "p7zip 9.20 - "unsupported method" with RAR files - " fixed
+- "install.sh" installs again "bin/Codecs/Rar29.so"
+-
+ Version 9.20
+ ============
+
+@@ -325,8 +302,6 @@ Version 9.13
+ - Some bugs were fixed.
+
+
+- - #2863580 "Crash in Rar decoder on a corrupted file" fixed
+-
+ - #2860898 "Dereferencing a zero pointer in cab handler" fixed
+
+ - #2860679 "Division by zero in cab decoder" fixed
+@@ -455,7 +430,7 @@ Version 4.59 (never published)
+ - It's allowed to use -t switch for "list" and "extract" commands.
+ - Some bugs were fixed.
+
+- - Bug : wrong timestamp for files extracted from .zip or .rar archives
++ - Bug : wrong timestamp for files extracted from .zip archives
+
+
+ Version 4.58
+@@ -468,8 +443,6 @@ Version 4.58
+ 2) -mcu switch: 7-Zip uses UTF-8, if there are non-ASCII symbols.
+ 3) -mcl switch: 7-Zip uses local code page.
+ - Now it's possible to store file creation time in 7z and ZIP archives (-mtc switch).
+- - 7-Zip now can unpack multivolume RAR archives created with
+- "old style volume names" scheme and names *.001, *.002, ...
+ - Now it's possible to use -mSW- and -mSW+ switches instead of -mSW=off and -mSW=on
+ - Some bugs were fixed.
+
+@@ -685,7 +658,7 @@ Version 4.44
+
+ - From Windows version of 7-zip 4.44 :
+ - 7za : Cab support
+- - Speed optimizations for LZMA, Deflate, BZip2 and unRAR.
++ - Speed optimizations for LZMA, Deflate and BZip2.
+ - fix : now, updating a crypted header archive keeps the crypted header
+
+ - fixes in the help displayed by 7za/7z/7zr.
+@@ -805,8 +778,6 @@ Version 4.38
+
+ - patch #1465026 - Patch for install.sh for packagers
+
+- - DosDateTimeToFileTime fixed (rar format)
+-
+ - contrib/VirtualFileSystemForMidnightCommander/u7z updated
+ (thank sgh_punk)
+
+@@ -923,8 +894,6 @@ Version 4.25
+ - Some bugs were fixed
+ - DOCS/MANUAL/exit_codes.htm added
+
+- - new plugin for 7z : RAR format support (extracting only)
+-
+ - better dependencies in makefile
+
+ Version 4.23
+@@ -1112,9 +1081,6 @@ Version 4.10
+ - new port of 7za from the source of 7za 4.10Beta for Windows
+ => p7zip now work on big endian CPU.
+
+- - 7z for Unix is not maintain anymore (because as the source of unrar plugin for 7z
+- is not available, 7z is unless on Unix).
+-
+ Version 0.91
+ ============
+ - add support for FreeBSD 5.2.1
+diff --git a/DOC/License.txt b/DOC/License.txt
+index 0bcbe26..5b0dfaa 100644
+--- a/DOC/License.txt
++++ b/DOC/License.txt
+@@ -5,15 +5,6 @@
+
+ 7-Zip Copyright (C) 1999-2016 Igor Pavlov.
+
+- Licenses for files are:
+-
+- 1) CPP/7zip/Compress/Rar* files: GNU LGPL + unRAR restriction
+- 2) All other files: GNU LGPL
+-
+- The GNU LGPL + unRAR restriction means that you must follow both
+- GNU LGPL rules and unRAR restriction rules.
+-
+-
+ GNU LGPL information
+ --------------------
+
+@@ -33,21 +24,5 @@
+ USA
+
+
+- unRAR restriction
+- -----------------
+-
+- The decompression engine for RAR archives was developed using source
+- code of unRAR program.
+- All copyrights to original unRAR code are owned by Alexander Roshal.
+-
+- The license for original unRAR code has the following restriction:
+-
+- The unRAR sources cannot be used to re-create the RAR compression algorithm,
+- which is proprietary. Distribution of modified unRAR sources in separate form
+- or as a part of other software is permitted, provided that it is clearly
+- stated in the documentation and source comments that the code may
+- not be used to develop a RAR (WinRAR) compatible archiver.
+-
+-
+ --
+ Igor Pavlov
+diff --git a/DOC/MANUAL/cmdline/switches/update.htm b/DOC/MANUAL/cmdline/switches/update.htm
+index 27385b1..0190fc1 100644
+--- a/DOC/MANUAL/cmdline/switches/update.htm
++++ b/DOC/MANUAL/cmdline/switches/update.htm
+@@ -139,7 +139,7 @@ someone in another time zone.</P>
+ <LI>UTC file systems: NTFS
+ <LI>UTC archive formats: .zip with -mtc switch, 7z, tar, gzip2, iso, wim
+ <LI>Local time file systems : FAT, FAT32
+-<LI>Local time archive formats : rar, zip, cab
++<LI>Local time archive formats : zip, cab
+ </UL>
+
+ <H4>Examples</H4>
+diff --git a/DOC/MANUAL/general/formats.htm b/DOC/MANUAL/general/formats.htm
+index 7996c5c..cd01bd6 100644
+--- a/DOC/MANUAL/general/formats.htm
++++ b/DOC/MANUAL/general/formats.htm
+@@ -47,7 +47,6 @@
+ <TR> <TD align="center">NSIS</TD> <TD></TD> <TD>nsis</TD> </TR>
+ <TR> <TD align="center">NTFS</TD> <TD></TD> <TD>ntfs img</TD> </TR>
+ <TR> <TD align="center">MBR</TD> <TD></TD> <TD>mbr</TD> </TR>
+- <TR> <TD align="center">RAR</TD> <TD></TD> <TD>rar r00</TD> </TR>
+ <TR> <TD align="center">RPM</TD> <TD></TD> <TD>rpm</TD></TR>
+ <TR> <TD align="center">PPMD</TD> <TD></TD> <TD>ppmd</TD> </TR>
+ <TR> <TD align="center">QCOW2</TD> <TD></TD> <TD>qcow qcow2 qcow2c</TD> </TR>
+diff --git a/DOC/Methods.txt b/DOC/Methods.txt
+index 1a1c54c..daa94e2 100644
+--- a/DOC/Methods.txt
++++ b/DOC/Methods.txt
+@@ -97,12 +97,6 @@ List of defined IDs
+ 02 -
+ 02 - BZip2
+
+- 03 - [Rar]
+- 01 - Rar1
+- 02 - Rar2
+- 03 - Rar3
+- 05 - Rar5
+-
+ 04 - [Arj]
+ 01 - Arj(1,2,3)
+ 02 - Arj4
+@@ -146,10 +140,6 @@ List of defined IDs
+ 01 - [Zip]
+ 01 - ZipCrypto (Main Zip crypto algo)
+
+- 03 - [RAR]
+- 02 -
+- 03 - Rar29AES (AES-128 + modified SHA-1)
+-
+ 07 - [7z]
+ 01 - 7zAES (AES-256 + SHA-256)
+
+diff --git a/DOC/readme.txt b/DOC/readme.txt
+index 4a6998c..00591d4 100644
+--- a/DOC/readme.txt
++++ b/DOC/readme.txt
+@@ -9,30 +9,9 @@
+ License Info
+ ------------
+
+-7-Zip is free software distributed under the GNU LGPL
+-(except for unRar code).
++7-Zip is free software distributed under the GNU LGPL.
+ read License.txt for more infomation about license.
+
+-Notes about unRAR license:
+-
+-Please check main restriction from unRar license:
+-
+- 2. The unRAR sources may be used in any software to handle RAR
+- archives without limitations free of charge, but cannot be used
+- to re-create the RAR compression algorithm, which is proprietary.
+- Distribution of modified unRAR sources in separate form or as a
+- part of other software is permitted, provided that it is clearly
+- stated in the documentation and source comments that the code may
+- not be used to develop a RAR (WinRAR) compatible archiver.
+-
+-In brief it means:
+-1) You can compile and use compiled files under GNU LGPL rules, since
+- unRAR license almost has no restrictions for compiled files.
+- You can link these compiled files to LGPL programs.
+-2) You can fix bugs in source code and use compiled fixed version.
+-3) You can not use unRAR sources to re-create the RAR compression algorithm.
+-
+-
+ LZMA SDK
+ --------
+
+@@ -96,7 +75,6 @@ DOC Documentation
+ ---
+ 7zFormat.txt - 7z format description
+ copying.txt - GNU LGPL license
+- unRarLicense.txt - License for unRAR part of source code
+ src-history.txt - Sources history
+ Methods.txt - Compression method IDs
+ readme.txt - Readme file
+diff --git a/DOC/src-history.txt b/DOC/src-history.txt
+index 6b48c80..dda8057 100644
+--- a/DOC/src-history.txt
++++ b/DOC/src-history.txt
+@@ -188,8 +188,6 @@ HISTORY of the 7-Zip source code
+ - 7-Zip now has 128 MB dictionary limit for 32-bit version:
+ It's for speed optimization: kNumLogBits = 9 + sizeof(size_t) / 2;
+ - TAR: 'D' link flag support.
+-- 7-Zip now can unpack multivolume RAR archives created with
+- "old style volume names" scheme (-vn switch) and names *.001, *.002, ...
+ - Fixed bugs:
+ - 7-Zip FM could not copy / move files to root network folders like \\COMPNAME\FOLDERNAME\
+ In case of move it removed original files.
+@@ -200,8 +198,6 @@ HISTORY of the 7-Zip source code
+ 7-zip tries to delete all extra fileds (except for WzAES).
+ And that code could hang.
+ - 7-Zip GUI didn't suggest BZip2 dictionary size used in previous run.
+- - If creation time stamp was included in .RAR archive, 7-zip used creation time stamp
+- as modification time stamp.
+
+ 4.58 alpha 2 2007-12-31
+ -------------------------
+@@ -251,7 +247,6 @@ HISTORY of the 7-Zip source code
+ stratup code, or you must add CPP/Common/CRC.cpp to your project.
+ - Method ID in .7z now is 63-bit integer (UInt64).
+ - Open error messages
+-- unRar 1.5 fixed
+ - unShrink fixed
+ - BUG of 4.43 beta and 4.44 beta was fixed.
+ 7-Zip compressing to .zip in multi-threading mode didn't work in some cases.
+@@ -433,11 +428,6 @@ HISTORY of the 7-Zip source code
+ contains common resurces
+
+
+-2.30 Beta 19 2002-04-11
+--------------------------
+-- SDK/Archive/Rar/Handler.cpp
+- supporting RAR29
+-
+ 2.30 Beta 18 2002-03-25
+ -------------------------
+ - SDK/Archive/Cab/MSZipDecoder.cpp
+diff --git a/GUI/Contents/Info.plist b/GUI/Contents/Info.plist
+index 71650e1..d60b262 100644
+--- a/GUI/Contents/Info.plist
++++ b/GUI/Contents/Info.plist
+@@ -311,24 +311,6 @@
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+- <string>rar</string>
+- <string>RAR</string>
+- <string>.r00</string>
+- </array>
+- <key>CFBundleTypeIconFile</key>
+- <string>p7zip</string>
+- <key>CFBundleTypeName</key>
+- <string>Rar</string>
+- <key>CFBundleTypeRole</key>
+- <string>Viewer</string>
+- <key>LSTypeIsPackage</key>
+- <false/>
+- <key>NSPersistentStoreTypeKey</key>
+- <string>XML</string>
+- </dict>
+- <dict>
+- <key>CFBundleTypeExtensions</key>
+- <array>
+ <string>ace</string>
+ <string>ACE</string>
+ <string>.c00</string>
+diff --git a/README b/README
+index b76407f..c03917b 100644
+--- a/README
++++ b/README
+@@ -8,7 +8,7 @@ p7zip is a port of the Windows programs 7z.exe and 7za.exe provided by 7-zip.
+ 7-zip is a file archiver with the highest compression ratio.
+ Homepage : www.7-zip.org
+
+- 7z uses plugins (7z.so and Codecs/Rar.so) to handle archives.
++ 7z uses plugins (7z.so) to handle archives.
+ 7za is a stand-alone executable (7za handles less archive formats than 7z).
+ 7zr is a light stand-alone executable that supports only 7z/LZMA/BCJ/BCJ2.
+
+@@ -63,7 +63,6 @@ BUILD :
+ make sfx : to build bin/7zCon.sfx (7za can now create SFX archive)
+ make 7z : to build bin/7z and its plugins :
+ - "bin/7z.so" (GNU LGPL + AES code license)
+- - "bin/Codecs/Rar.so" (GNU LGPL + unRAR restriction)
+ make 7zr : to build bin/7zr
+ make all : to build bin/7za and bin/7zCon.sfx
+ make all2 : to build bin/7za, bin/7z (with its plugins) and bin/7zCon.sfx
+@@ -74,7 +73,6 @@ BUILD :
+
+ make 7zG : to build bin/7zG and its plugins :
+ - "bin/7z.so" (GNU LGPL + AES code license)
+- - "bin/Codecs/Rar.so" (GNU LGPL + unRAR restriction)
+ make test_7zG : to test bin/7zG (extracting, archiving, ...)
+
+
+diff --git a/Utils/bin_to_sources.py b/Utils/bin_to_sources.py
+index 1be72ec..7da359a 100644
+--- a/Utils/bin_to_sources.py
++++ b/Utils/bin_to_sources.py
+@@ -13,9 +13,6 @@ file0='Utils/file_7zCon_sfx.py'
+ dir0='CPP/7zip/UI/Console'
+ file0='Utils/file_7z.py'
+
+-dir0='CPP/7zip/Compress/Rar'
+-file0='Utils/file_Codecs_Rar_so.py'
+-
+ dir0='CPP/7zip/Bundles/Format7zFree'
+ file0='Utils/file_7z_so.py'
+
+diff --git a/Utils/file_7z_so.py b/Utils/file_7z_so.py
+index 7ca9fff..43edb87 100644
+--- a/Utils/file_7z_so.py
++++ b/Utils/file_7z_so.py
+@@ -111,8 +111,6 @@ files_cpp=[
+ 'CPP/7zip/Archive/PeHandler.cpp',
+ 'CPP/7zip/Archive/PpmdHandler.cpp',
+ 'CPP/7zip/Archive/QcowHandler.cpp',
+- 'CPP/7zip/Archive/Rar/RarHandler.cpp',
+- 'CPP/7zip/Archive/Rar/Rar5Handler.cpp',
+ 'CPP/7zip/Archive/RpmHandler.cpp',
+ 'CPP/7zip/Archive/SplitHandler.cpp',
+ 'CPP/7zip/Archive/SquashfsHandler.cpp',
+@@ -215,9 +213,6 @@ files_cpp=[
+ 'CPP/7zip/Crypto/MyAesReg.cpp',
+ 'CPP/7zip/Crypto/Pbkdf2HmacSha1.cpp',
+ 'CPP/7zip/Crypto/RandGen.cpp',
+- 'CPP/7zip/Crypto/Rar20Crypto.cpp',
+- 'CPP/7zip/Crypto/Rar5Aes.cpp',
+- 'CPP/7zip/Crypto/RarAes.cpp',
+ 'CPP/7zip/Crypto/WzAes.cpp',
+ 'CPP/7zip/Crypto/ZipCrypto.cpp',
+ 'CPP/7zip/Crypto/ZipStrong.cpp',
+diff --git a/Utils/generate.py b/Utils/generate.py
+index 132024a..62c0456 100755
+--- a/Utils/generate.py
++++ b/Utils/generate.py
+@@ -281,7 +281,6 @@ import file_7zr
+ import file_7zG
+ import file_7zFM
+ import file_7z_so
+-import file_Codecs_Rar_so
+ import file_Codecs_Lzham_so
+ import file_LzmaCon
+ import file_Client7z
+@@ -440,43 +439,6 @@ LOCAL_CFLAGS := -DANDROID_NDK -fexceptions \
+ -I../../../include_windows
+ ''')
+
+-project_Codecs_Rar=Structure(name="Rar",name2="Rar",
+- type=TYPE_DLL,
+- need_AES=False,
+- includedirs=includedirs_7za,
+- defines=[ "EXTERNAL_CODECS", "_FILE_OFFSET_BITS=64", "_LARGEFILE_SOURCE", "_REENTRANT", "ENV_UNIX", "BREAK_HANDLER", "UNICODE", "_UNICODE", "UNIX_USE_WIN_FILE" ],
+- files_c=file_Codecs_Rar_so.files_c,
+- files_cpp=file_Codecs_Rar_so.files_cpp,
+- cmake_end='''
+-
+-find_library(DL_LIB dl)
+-
+-link_directories(${DL_LIB_PATH})
+-
+-IF(APPLE)
+- TARGET_LINK_LIBRARIES(Rar ${COREFOUNDATION_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
+-ELSE(APPLE)
+- IF(HAVE_PTHREADS)
+- TARGET_LINK_LIBRARIES(Rar ${CMAKE_THREAD_LIBS_INIT} dl)
+- ENDIF(HAVE_PTHREADS)
+-ENDIF(APPLE)
+-
+-''',
+-android_header=r'''
+-LOCAL_CFLAGS := -DANDROID_NDK -fexceptions \
+- -DNDEBUG -D_REENTRANT -DENV_UNIX \
+- -DEXTERNAL_CODECS \
+- -DBREAK_HANDLER \
+- -DUNICODE -D_UNICODE -DUNIX_USE_WIN_FILE \
+- -I../../../Windows \
+- -I../../../Common \
+- -I../../../../C \
+--I../../../myWindows \
+--I../../../ \
+--I../../../include_windows
+-''')
+-
+-
+
+ project_Codecs_Lzham=Structure(name="Lzham",name2="Lzham",
+ type=TYPE_DLL,
+@@ -762,7 +724,6 @@ generate_makefile_list('../CPP/7zip/Bundles/Alone/makefile.list',project_7za)
+ generate_makefile_list('../CPP/7zip/Bundles/Alone7z/makefile.list',project_7zr)
+ generate_makefile_list('../CPP/7zip/UI/Console/makefile.list',project_7z)
+ generate_makefile_list('../CPP/7zip/Bundles/Format7zFree/makefile.list',project_Format7zFree)
+-generate_makefile_list('../CPP/7zip/Compress/Rar/makefile.list',project_Codecs_Rar,'../../../../bin/Codecs')
+ generate_makefile_list('../CPP/7zip/Compress/Lzham/makefile.list',project_Codecs_Lzham,'../../../../bin/Codecs')
+ generate_makefile_list('../CPP/7zip/Bundles/SFXCon/makefile.list',project_7zCon_sfx)
+ generate_makefile_list('../CPP/7zip/UI/GUI/makefile.list',project_7zG)
+@@ -776,7 +737,6 @@ generate_pro('../CPP/7zip/QMAKE/7za/7za.pro',project_7za)
+ generate_pro('../CPP/7zip/QMAKE/7zr/7zr.pro',project_7zr)
+ generate_pro('../CPP/7zip/QMAKE/7z_/7z_.pro',project_7z)
+ generate_pro('../CPP/7zip/QMAKE/Format7zFree/Format7zFree.pro',project_Format7zFree)
+-generate_pro('../CPP/7zip/QMAKE/Rar/Rar.pro',project_Codecs_Rar)
+ generate_pro('../CPP/7zip/QMAKE/Lzham/Lzham.pro',project_Codecs_Lzham)
+
+ generate_premake4('../CPP/7zip/PREMAKE/premake4.lua',project_7za)
+diff --git a/contrib/qnx630sp3/qnx630sp3-shared b/contrib/qnx630sp3/qnx630sp3-shared
+index 6f5481f..ea07114 100644
+--- a/contrib/qnx630sp3/qnx630sp3-shared
++++ b/contrib/qnx630sp3/qnx630sp3-shared
+@@ -8,7 +8,7 @@ mv ./bin/7z ../${BIN} && mv ./bin/7za ../${BIN} && mv ./bin/7zr ../${BIN} && mv
+ make clean && \
+ cp makefile.qnx_shared.so makefile.machine && \
+ make 7z && \
+-mv ./bin/7z.so ../${BIN} && mv ./bin/Codecs/Rar.so ../${BIN}/Codecs && \
++mv ./bin/7z.so ../${BIN} && \
+ make clean && \
+ mv makefile.machine.bak makefile.machine
+ echo "All done - look for binaries in ../${BIN}"
+diff --git a/makefile b/makefile
+index 745c8ed..f8e8e33 100644
+--- a/makefile
++++ b/makefile
+@@ -31,7 +31,6 @@ depend:
+ $(MAKE) -C CPP/7zip/UI/Client7z depend
+ $(MAKE) -C CPP/7zip/UI/Console depend
+ $(MAKE) -C CPP/7zip/Bundles/Format7zFree depend
+- $(MAKE) -C CPP/7zip/Compress/Rar depend
+ $(MAKE) -C CPP/7zip/UI/GUI depend
+ $(MAKE) -C CPP/7zip/UI/FileManager depend
+
+@@ -42,7 +41,6 @@ sfx: common
+ common7z:common
+ $(MKDIR) bin/Codecs
+ $(MAKE) -C CPP/7zip/Bundles/Format7zFree all
+- $(MAKE) -C CPP/7zip/Compress/Rar all
+
+ lzham:common
+ $(MKDIR) bin/Codecs
+@@ -67,7 +65,6 @@ clean_C:
+ $(MAKE) -C CPP/7zip/UI/FileManager clean
+ $(MAKE) -C CPP/7zip/UI/GUI clean
+ $(MAKE) -C CPP/7zip/Bundles/Format7zFree clean
+- $(MAKE) -C CPP/7zip/Compress/Rar clean
+ $(MAKE) -C CPP/7zip/Compress/Lzham clean
+ $(MAKE) -C CPP/7zip/Bundles/LzmaCon clean2
+ $(MAKE) -C CPP/7zip/Bundles/AloneGCOV clean
+diff --git a/makefile.oldmake b/makefile.oldmake
+index afc681c..690af08 100644
+--- a/makefile.oldmake
++++ b/makefile.oldmake
+@@ -31,7 +31,6 @@ depend:
+ cd CPP/7zip/UI/Client7z ; $(MAKE) depend
+ cd CPP/7zip/UI/Console ; $(MAKE) depend
+ cd CPP/7zip/Bundles/Format7zFree ; $(MAKE) depend
+- cd CPP/7zip/Compress/Rar ; $(MAKE) depend
+ cd CPP/7zip/UI/GUI ; $(MAKE) depend
+ cd CPP/7zip/UI/FileManager ; $(MAKE) depend
+
+@@ -42,7 +41,6 @@ sfx: common
+ common7z:common
+ $(MKDIR) bin/Codecs
+ cd CPP/7zip/Bundles/Format7zFree ; $(MAKE) all
+- cd CPP/7zip/Compress/Rar ; $(MAKE) all
+
+ lzham:common
+ $(MKDIR) bin/Codecs
+@@ -67,7 +65,6 @@ clean_C:
+ cd CPP/7zip/UI/FileManager ; $(MAKE) clean
+ cd CPP/7zip/UI/GUI ; $(MAKE) clean
+ cd CPP/7zip/Bundles/Format7zFree ; $(MAKE) clean
+- cd CPP/7zip/Compress/Rar ; $(MAKE) clean
+ cd CPP/7zip/Compress/Lzham ; $(MAKE) clean
+ cd CPP/7zip/Bundles/LzmaCon ; $(MAKE) clean2
+ cd CPP/7zip/Bundles/AloneGCOV ; $(MAKE) clean
+diff --git a/makefile.qnx_shared.so b/makefile.qnx_shared.so
+index abd1caf..cff5485 100644
+--- a/makefile.qnx_shared.so
++++ b/makefile.qnx_shared.so
+@@ -1,5 +1,5 @@
+ ###################################################
+-# makefile.machine for "7z.so , Codecs/Rar.so" :
++# makefile.machine for "7z.so" :
+ # tested with p7zip-4.47_beta on qnx-6.3.0 sp3 x86 target
+
+ OPTFLAGS=-O -s
diff --git a/gnu/packages/patches/plink-endian-detection.patch b/gnu/packages/patches/plink-endian-detection.patch
new file mode 100644
index 0000000000..4d6185512f
--- /dev/null
+++ b/gnu/packages/patches/plink-endian-detection.patch
@@ -0,0 +1,30 @@
+This patch is borrowed from Debian's patches for plink
+
+Author: Peter Green <plugwash@p10link.net>
+Puropose: Fallback to endian.h if all else fails on 64bit machines
+Closes: #528659
+Forwarded: Shaun Purcell <plink@chgr.mgh.harvard.edu>
+License: same as plink itself.
+===================================================================
+--- plink-1.06.orig/Rsrv.h 2009-05-15 03:35:29.000000000 +0100
++++ plink-1.06/Rsrv.h 2009-05-15 03:35:41.000000000 +0100
+@@ -313,7 +313,18 @@
+ #define __BIG_ENDIAN__ 1
+ #define SWAPEND 1
+ #elif ! defined Win32 /* Windows is little-endian is most cases, anywhere else we're stuck */
+-#error "Cannot determine endianness. Make sure config.h is included or __{BIG|LITTLE}_ENDIAN__ is defined ."
++ //try endian.h before we finally bail out
++ #include <endian.h>
++ #if __BYTE_ORDER == __LITTLE_ENDIAN
++ #warning using little endian based on information from endian.h
++ #define __LITTLE_ENDIAN__ 1
++ #elif __BYTE_ORDER == __BIG_ENDIAN
++ #warning using big endian based on information from endian.h
++ #define __BIG_ENDIAN__ 1
++ #define SWAPEND 1
++ #else
++ #error "Cannot determine endianness. Make sure config.h is included or __{BIG|LITTLE}_ENDIAN__ is defined ."
++ #endif
+ #endif
+
+ /* FIXME: all the mess below needs more efficient implementation - the current one is so messy to work around alignment problems on some platforms like Sun and HP 9000 */
diff --git a/gnu/packages/patches/python-django-fix-testcase.patch b/gnu/packages/patches/python-django-fix-testcase.patch
new file mode 100644
index 0000000000..4c1f9806d7
--- /dev/null
+++ b/gnu/packages/patches/python-django-fix-testcase.patch
@@ -0,0 +1,42 @@
+From 24123c31362b5f3783d84d133c160e9fe16805fe Mon Sep 17 00:00:00 2001
+From: Tim Graham <timograham@gmail.com>
+Date: Mon, 1 Aug 2016 15:40:46 -0400
+Subject: [PATCH] Fixed admin_utils test failures due to translation updates.
+
+https://github.com/django/django/commit/24123c31362b5f3783d84d133c160e9fe16805fe
+
+---
+ tests/admin_utils/test_logentry.py | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/tests/admin_utils/test_logentry.py b/tests/admin_utils/test_logentry.py
+index 7798373..8259bf0 100644
+--- a/tests/admin_utils/test_logentry.py
++++ b/tests/admin_utils/test_logentry.py
+@@ -59,7 +59,7 @@ class LogEntryTests(TestCase):
+ logentry = LogEntry.objects.filter(content_type__model__iexact='article').latest('id')
+ self.assertEqual(logentry.get_change_message(), 'Changed title and hist.')
+ with translation.override('fr'):
+- self.assertEqual(logentry.get_change_message(), 'Modification de title et hist.')
++ self.assertEqual(logentry.get_change_message(), 'Title et hist modifié(s).')
+
+ add_url = reverse('admin:admin_utils_article_add')
+ post_data['title'] = 'New'
+@@ -117,11 +117,12 @@ class LogEntryTests(TestCase):
+ 'Changed domain. Added article "Article object". '
+ 'Changed title for article "Article object". Deleted article "Article object".'
+ )
++
+ with translation.override('fr'):
+ self.assertEqual(
+ logentry.get_change_message(),
+- 'Modification de domain. Article « Article object » ajouté. '
+- 'Modification de title pour l\'objet article « Article object ». Article « Article object » supprimé.'
++ "Domain modifié(s). Article « Article object » ajouté. "
++ "Title modifié(s) pour l'objet article « Article object ». Article « Article object » supprimé."
+ )
+
+ def test_logentry_get_edited_object(self):
+--
+2.7.4
+
diff --git a/gnu/packages/patches/slock-CVE-2016-6866.patch b/gnu/packages/patches/slock-CVE-2016-6866.patch
new file mode 100644
index 0000000000..2f94b8c1a9
--- /dev/null
+++ b/gnu/packages/patches/slock-CVE-2016-6866.patch
@@ -0,0 +1,51 @@
+Fix CVE-2016-6866.
+
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6866
+https://security-tracker.debian.org/tracker/CVE-2016-6866
+
+Copied from upstream source repository:
+http://git.suckless.org/slock/commit/?id=d8bec0f6fdc8a246d78cb488a0068954b46fcb29
+
+From d8bec0f6fdc8a246d78cb488a0068954b46fcb29 Mon Sep 17 00:00:00 2001
+From: Markus Teich <markus.teich@stusta.mhn.de>
+Date: Tue, 30 Aug 2016 22:59:06 +0000
+Subject: fix CVE-2016-6866
+
+---
+diff --git a/slock.c b/slock.c
+index 847b328..8ed59ca 100644
+--- a/slock.c
++++ b/slock.c
+@@ -123,7 +123,7 @@ readpw(Display *dpy)
+ readpw(Display *dpy, const char *pws)
+ #endif
+ {
+- char buf[32], passwd[256];
++ char buf[32], passwd[256], *encrypted;
+ int num, screen;
+ unsigned int len, color;
+ KeySym ksym;
+@@ -159,7 +159,11 @@ readpw(Display *dpy, const char *pws)
+ #ifdef HAVE_BSD_AUTH
+ running = !auth_userokay(getlogin(), NULL, "auth-slock", passwd);
+ #else
+- running = !!strcmp(crypt(passwd, pws), pws);
++ errno = 0;
++ if (!(encrypted = crypt(passwd, pws)))
++ fprintf(stderr, "slock: crypt: %s\n", strerror(errno));
++ else
++ running = !!strcmp(encrypted, pws);
+ #endif
+ if (running) {
+ XBell(dpy, 100);
+@@ -312,6 +316,8 @@ main(int argc, char **argv) {
+
+ #ifndef HAVE_BSD_AUTH
+ pws = getpw();
++ if (strlen(pws) < 2)
++ die("slock: failed to get user password hash.\n");
+ #endif
+
+ if (!(dpy = XOpenDisplay(NULL)))
+--
+cgit v0.9.0.3-65-g4555
diff --git a/gnu/packages/patches/steghide-fixes.patch b/gnu/packages/patches/steghide-fixes.patch
new file mode 100644
index 0000000000..4e7f447f9a
--- /dev/null
+++ b/gnu/packages/patches/steghide-fixes.patch
@@ -0,0 +1,71 @@
+--- steghide-0.5.1/src/AuData.h
++++ steghide-0.5.1/src/AuData.h
+@@ -26,22 +26,22 @@
+
+ // AuMuLawAudioData
+ typedef AudioDataImpl<AuMuLaw,BYTE> AuMuLawAudioData ;
+-inline BYTE AuMuLawAudioData::readValue (BinaryIO* io) const { return (io->read8()) ; }
+-inline void AuMuLawAudioData::writeValue (BinaryIO* io, BYTE v) const { io->write8(v) ; }
++template<> inline BYTE AuMuLawAudioData::readValue (BinaryIO* io) const { return (io->read8()) ; }
++template<> inline void AuMuLawAudioData::writeValue (BinaryIO* io, BYTE v) const { io->write8(v) ; }
+
+ // AuPCM8AudioData
+ typedef AudioDataImpl<AuPCM8,SBYTE> AuPCM8AudioData ;
+-inline SBYTE AuPCM8AudioData::readValue (BinaryIO* io) const { return ((SBYTE) io->read8()) ; }
+-inline void AuPCM8AudioData::writeValue (BinaryIO* io, SBYTE v) const { io->write8((BYTE) v) ; }
++template<> inline SBYTE AuPCM8AudioData::readValue (BinaryIO* io) const { return ((SBYTE) io->read8()) ; }
++template<> inline void AuPCM8AudioData::writeValue (BinaryIO* io, SBYTE v) const { io->write8((BYTE) v) ; }
+
+ // AuPCM16AudioData
+ typedef AudioDataImpl<AuPCM16,SWORD16> AuPCM16AudioData ;
+-inline SWORD16 AuPCM16AudioData::readValue (BinaryIO* io) const { return ((SWORD16) io->read16_be()) ; }
+-inline void AuPCM16AudioData::writeValue (BinaryIO* io, SWORD16 v) const { io->write16_be((UWORD16) v) ; }
++template<> inline SWORD16 AuPCM16AudioData::readValue (BinaryIO* io) const { return ((SWORD16) io->read16_be()) ; }
++template<> inline void AuPCM16AudioData::writeValue (BinaryIO* io, SWORD16 v) const { io->write16_be((UWORD16) v) ; }
+
+ // AuPCM32AudioData
+ typedef AudioDataImpl<AuPCM32,SWORD32> AuPCM32AudioData ;
+-inline SWORD32 AuPCM32AudioData::readValue (BinaryIO* io) const { return ((SWORD32) io->read32_be()) ; }
+-inline void AuPCM32AudioData::writeValue (BinaryIO* io, SWORD32 v) const { io->write32_be((UWORD32) v) ; }
++template<> inline SWORD32 AuPCM32AudioData::readValue (BinaryIO* io) const { return ((SWORD32) io->read32_be()) ; }
++template<> inline void AuPCM32AudioData::writeValue (BinaryIO* io, SWORD32 v) const { io->write32_be((UWORD32) v) ; }
+
+ #endif // ndef SH_AUDATA_H
+--- steghide-0.5.1/src/AuSampleValues.cc
++++ steghide-0.5.1/src/AuSampleValues.cc
+@@ -21,17 +21,17 @@
+ #include "AuSampleValues.h"
+
+ // AuMuLawSampleValue
+-const BYTE AuMuLawSampleValue::MinValue = 0 ;
+-const BYTE AuMuLawSampleValue::MaxValue = BYTE_MAX ;
++template<> const BYTE AuMuLawSampleValue::MinValue = 0 ;
++template<> const BYTE AuMuLawSampleValue::MaxValue = BYTE_MAX ;
+
+ // AuPCM8SampleValue
+-const SBYTE AuPCM8SampleValue::MinValue = SBYTE_MIN ;
+-const SBYTE AuPCM8SampleValue::MaxValue = SBYTE_MAX ;
++template<> const SBYTE AuPCM8SampleValue::MinValue = SBYTE_MIN ;
++template<> const SBYTE AuPCM8SampleValue::MaxValue = SBYTE_MAX ;
+
+ // AuPCM16SampleValue
+-const SWORD16 AuPCM16SampleValue::MinValue = SWORD16_MIN ;
+-const SWORD16 AuPCM16SampleValue::MaxValue = SWORD16_MAX ;
++template<> const SWORD16 AuPCM16SampleValue::MinValue = SWORD16_MIN ;
++template<> const SWORD16 AuPCM16SampleValue::MaxValue = SWORD16_MAX ;
+
+ // AuPCM32SampleValue
+-const SWORD32 AuPCM32SampleValue::MinValue = SWORD32_MIN ;
+-const SWORD32 AuPCM32SampleValue::MaxValue = SWORD32_MAX ;
++template<> const SWORD32 AuPCM32SampleValue::MinValue = SWORD32_MIN ;
++template<> const SWORD32 AuPCM32SampleValue::MaxValue = SWORD32_MAX ;
+--- steghide-0.5.1/src/Graph.cc
++++ steghide-0.5.1/src/Graph.cc
+@@ -18,6 +18,7 @@
+ *
+ */
+
++#include <climits>
+ #include <ctime>
+ #include <list>
+ #include <map>
diff --git a/gnu/packages/patches/swish-e-format-security.patch b/gnu/packages/patches/swish-e-format-security.patch
new file mode 100644
index 0000000000..be9d7cb8a9
--- /dev/null
+++ b/gnu/packages/patches/swish-e-format-security.patch
@@ -0,0 +1,33 @@
+Borrowed from Debian.
+
+--- swish-e-2.4.7/src/parser.c 2009-04-05 03:58:32.000000000 +0200
++++ swish-e-2.4.7/src/parser.c 2013-06-11 13:53:08.196559035 +0200
+@@ -1760,7 +1760,7 @@
+ va_start(args, msg);
+ vsnprintf(str, 1000, msg, args );
+ va_end(args);
+- xmlParserError(parse_data->ctxt, str);
++ xmlParserError(parse_data->ctxt, "%s", str);
+ }
+
+ static void warning(void *data, const char *msg, ...)
+@@ -1772,7 +1772,7 @@
+ va_start(args, msg);
+ vsnprintf(str, 1000, msg, args );
+ va_end(args);
+- xmlParserWarning(parse_data->ctxt, str);
++ xmlParserWarning(parse_data->ctxt, "%s", str);
+ }
+
+
+--- swish-e-2.4.7/src/result_output.c 2009-04-05 03:58:32.000000000 +0200
++++ swish-e-2.4.7/src/result_output.c 2013-06-11 13:53:38.593550825 +0200
+@@ -752,7 +752,7 @@
+ s = (char *) emalloc(MAXWORDLEN + 1);
+ n = strftime(s, (size_t) MAXWORDLEN, fmt, localtime(&(pv->value.v_date)));
+ if (n && f)
+- fprintf(f, s);
++ fprintf(f, "%s", s);
+ efree(s);
+ }
+ break;
diff --git a/gnu/packages/patches/swish-e-search.patch b/gnu/packages/patches/swish-e-search.patch
new file mode 100644
index 0000000000..2a57a31a08
--- /dev/null
+++ b/gnu/packages/patches/swish-e-search.patch
@@ -0,0 +1,43 @@
+From http://swish-e.org/archive/2015-09/13295.html
+
+--- a/src/compress.c
++++ a/src/compress.c
+@@ -995,7 +995,7 @@ void remove_worddata_longs(unsigned char *worddata,int *sz_worddata)
+ progerr("Internal error in remove_worddata_longs");
+
+ /* dst may be smaller than src. So move the data */
+- memcpy(dst,src,data_len);
++ memmove(dst,src,data_len);
+
+ /* Increase pointers */
+ src += data_len;
+--- a/src/headers.c
++++ a/src/headers.c
+@@ -280,7 +280,7 @@ static SWISH_HEADER_VALUE fetch_single_header( IndexFILE *indexf, HEADER_MAP *he
+
+ case SWISH_NUMBER:
+ case SWISH_BOOL:
+- value.number = *(unsigned long *) data_pointer;
++ value.number = *(unsigned int *) data_pointer;
+
+ /* $$$ Ugly hack alert! */
+ /* correct for removed files */
+--- a/src/swishspider
++++ a/src/swishspider
+@@ -27,6 +27,7 @@ use LWP::UserAgent;
+ use HTTP::Status;
+ use HTML::Parser 3.00;
+ use HTML::LinkExtor;
++use Encode;
+
+ if (scalar(@ARGV) != 2) {
+ print STDERR "Usage: $0 localpath url\n";
+@@ -94,7 +95,7 @@ use HTML::LinkExtor;
+ # Don't allow links above the base
+ $URI::ABS_REMOTE_LEADING_DOTS = 1;
+
+- $p->parse( $$content_ref );
++ $p->parse( decode_utf8 $$content_ref );
+ close( LINKS );
+
+ exit;