summary refs log tree commit diff
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;