summary refs log tree commit diff
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2015-10-13 15:56:32 -0400
committerMark H Weaver <mhw@netris.org>2015-10-14 01:41:56 -0400
commit9f7ae77fe287d7856718c5dfd60891be9b561b1d (patch)
treebe9b00c7f6110d41c5e3450bc784ffe81ef1805b
parent837294b7a431eaecbaf9336e574fe23d55d40d42 (diff)
downloadguix-9f7ae77fe287d7856718c5dfd60891be9b561b1d.tar.gz
gnu: icecat: Update to 38.3.0-gnu1.
* gnu/packages/patches/icecat-CVE-2015-4473-partial.patch,
  gnu/packages/patches/icecat-CVE-2015-4482.patch,
  gnu/packages/patches/icecat-CVE-2015-4488.patch,
  gnu/packages/patches/icecat-CVE-2015-4489.patch,
  gnu/packages/patches/icecat-CVE-2015-4491.patch,
  gnu/packages/patches/icecat-CVE-2015-4492.patch,
  gnu/packages/patches/icecat-CVE-2015-4495.patch,
  gnu/packages/patches/icecat-enable-acceleration-and-webgl.patch,
  gnu/packages/patches/icecat-libvpx-1.4.patch: Delete files.
* gnu/packages/patches/icecat-avoid-bundled-includes.patch: New file.
* gnu-system.am (dist_patch_DATA): Add new patch.  Remove the deleted ones.
* gnu/packages/gnuzilla.scm (icecat): Update to 38.3.0-gnu1.
  [source]: Add new patch.  Remove the deleted ones.
  [inputs]: Add libxcomposite.
  [arguments]: Add 'ensure-no-mtimes-pre-1980' phase.  Adapt
  'remove-h264parse-from-blacklist' and
  'arrange-to-link-libxul-with-libraries-it-might-dlopen' phases to the
  new version.
-rw-r--r--gnu-system.am10
-rw-r--r--gnu/packages/gnuzilla.scm46
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-4473-partial.patch120
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-4482.patch28
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-4488.patch21
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-4489.patch21
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-4491.patch41
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-4492.patch81
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-4495.patch28
-rw-r--r--gnu/packages/patches/icecat-avoid-bundled-includes.patch35
-rw-r--r--gnu/packages/patches/icecat-enable-acceleration-and-webgl.patch12
-rw-r--r--gnu/packages/patches/icecat-libvpx-1.4.patch78
12 files changed, 62 insertions, 459 deletions
diff --git a/gnu-system.am b/gnu-system.am
index 35b3235005..d846bcecde 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -500,16 +500,8 @@ dist_patch_DATA =						\
   gnu/packages/patches/hwloc-gather-topology-lstopo.patch	\
   gnu/packages/patches/hydra-automake-1.15.patch		\
   gnu/packages/patches/hydra-disable-darcs-test.patch		\
-  gnu/packages/patches/icecat-CVE-2015-4473-partial.patch	\
-  gnu/packages/patches/icecat-CVE-2015-4482.patch		\
-  gnu/packages/patches/icecat-CVE-2015-4488.patch		\
-  gnu/packages/patches/icecat-CVE-2015-4489.patch		\
-  gnu/packages/patches/icecat-CVE-2015-4491.patch		\
-  gnu/packages/patches/icecat-CVE-2015-4492.patch		\
-  gnu/packages/patches/icecat-CVE-2015-4495.patch		\
-  gnu/packages/patches/icecat-enable-acceleration-and-webgl.patch \
+  gnu/packages/patches/icecat-avoid-bundled-includes.patch	\
   gnu/packages/patches/icecat-freetype-2.6.patch		\
-  gnu/packages/patches/icecat-libvpx-1.4.patch			\
   gnu/packages/patches/icu4c-CVE-2014-6585.patch		\
   gnu/packages/patches/icu4c-CVE-2015-1270.patch		\
   gnu/packages/patches/icu4c-CVE-2015-4760.patch		\
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 53e6ea7787..3e933e7ec5 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -228,7 +228,7 @@ standards.")
 (define-public icecat
   (package
     (name "icecat")
-    (version "31.8.0-gnu1")
+    (version "38.3.0-gnu1")
     (source
      (origin
       (method url-fetch)
@@ -237,17 +237,9 @@ standards.")
                           name "-" version ".tar.bz2"))
       (sha256
        (base32
-        "11wx29mb5pcg4mgk07a6vjwh52ca90k0x4m9wv0v3y5dmp88f01p"))
-      (patches (map search-patch '("icecat-CVE-2015-4473-partial.patch"
-                                   "icecat-CVE-2015-4482.patch"
-                                   "icecat-CVE-2015-4488.patch"
-                                   "icecat-CVE-2015-4489.patch"
-                                   "icecat-CVE-2015-4491.patch"
-                                   "icecat-CVE-2015-4492.patch"
-                                   "icecat-CVE-2015-4495.patch"
-                                   "icecat-enable-acceleration-and-webgl.patch"
-                                   "icecat-freetype-2.6.patch"
-                                   "icecat-libvpx-1.4.patch")))
+        "0vm6f7f1i5vkq2713mgzjdfnm8rpz9l0q8sv4s123vsam0j9gzh8"))
+      (patches (map search-patch '("icecat-avoid-bundled-includes.patch"
+                                   "icecat-freetype-2.6.patch")))
       (modules '((guix build utils)))
       (snippet
        '(begin
@@ -307,6 +299,7 @@ standards.")
        ("libevent" ,libevent)
        ("libxinerama" ,libxinerama)
        ("libxscrnsaver" ,libxscrnsaver)
+       ("libxcomposite" ,libxcomposite)
        ("libxt" ,libxt)
        ("libffi" ,libffi)
        ("libvpx" ,libvpx)
@@ -393,16 +386,30 @@ standards.")
                            ;; "--with-system-jpeg"
                            )
 
+       #:modules ((ice-9 ftw)
+                  ,@%gnu-build-system-modules)
        #:phases
        (modify-phases %standard-phases
          (add-after
+          'unpack 'ensure-no-mtimes-pre-1980
+          (lambda _
+            ;; Without this, the 'source/test/addons/packed.xpi' and
+            ;; 'source/test/addons/simple-prefs.xpi' targets fail while trying
+            ;; to create zip archives.
+            (let ((early-1980 315619200)) ; 1980-01-02 UTC
+              (ftw "." (lambda (file stat flag)
+                         (unless (<= early-1980 (stat:mtime stat))
+                           (utime file early-1980 early-1980))
+                         #t))
+              #t)))
+         (add-after
           'unpack 'remove-h264parse-from-blacklist
           (lambda _
             ;; Remove h264parse from gstreamer format helper blacklist.  It
             ;; was put there to work around a bug in a pre-1.0 version of
             ;; gstreamer.  See:
             ;; https://www.mozilla.org/en-US/security/advisories/mfsa2015-47/
-            (substitute* "content/media/gstreamer/GStreamerFormatHelper.cpp"
+            (substitute* "dom/media/gstreamer/GStreamerFormatHelper.cpp"
               (("^  \"h264parse\",\n") ""))
             #t))
          (add-after
@@ -414,13 +421,12 @@ standards.")
             ;; TODO: It might be preferable to patch in absolute file names in
             ;; calls to dlopen or PR_LoadLibrary, but that didn't seem to
             ;; work.  More investigation is needed.
-            (let ((p (open-file "toolkit/library/libxul.mk" "a")))
-              (display "\nOS_LIBS += -lGL -lgnome-2 -lcanberra -lXss \\
-                                     -lcups -lgssapi_krb5 -lgstreamer-1.0 \\
-                                     -lgstapp-1.0 -lgstvideo-1.0\n"
-                       p)
-              (close-port p)
-              #t)))
+            (substitute* "toolkit/library/moz.build"
+              (("^# This needs to be last")
+               "OS_LIBS += [
+    'GL', 'gnome-2', 'canberra', 'Xss', 'cups', 'gssapi_krb5',
+    'gstreamer-1.0', 'gstapp-1.0', 'gstvideo-1.0' ]\n\n"))
+            #t))
          (replace
           'configure
           ;; configure does not work followed by both "SHELL=..." and
diff --git a/gnu/packages/patches/icecat-CVE-2015-4473-partial.patch b/gnu/packages/patches/icecat-CVE-2015-4473-partial.patch
deleted file mode 100644
index 184a8c5092..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-4473-partial.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-Backported to icecat-31.8 from the upstream esr38 branch.
-
-From 1a7eac06fab3b8ffca09936498887f99e233bcba Mon Sep 17 00:00:00 2001
-From: Randell Jesup <rjesup@jesup.org>
-Date: Thu, 9 Jul 2015 20:18:34 -0400
-Subject: [PATCH] Bug 1178890 - Update timer arrays after sleep to account for
- time sleeping. r=bwc, r=froydnj, a=sledru
-
---- icecat-31.8.0/xpcom/threads/TimerThread.cpp.orig	1969-12-31 19:00:00.000000000 -0500
-+++ icecat-31.8.0/xpcom/threads/TimerThread.cpp	2015-08-12 16:38:11.789371171 -0400
-@@ -28,7 +28,8 @@
-   mShutdown(false),
-   mWaiting(false),
-   mNotified(false),
--  mSleeping(false)
-+  mSleeping(false),
-+  mLastTimerEventLoopRun(TimeStamp::Now())
- {
- }
- 
-@@ -222,6 +223,7 @@
-     } else {
-       waitFor = PR_INTERVAL_NO_TIMEOUT;
-       TimeStamp now = TimeStamp::Now();
-+      mLastTimerEventLoopRun = now;
-       nsTimerImpl *timer = nullptr;
- 
-       if (!mTimers.IsEmpty()) {
-@@ -411,6 +413,7 @@
- // This function must be called from within a lock
- int32_t TimerThread::AddTimerInternal(nsTimerImpl *aTimer)
- {
-+  mMonitor.AssertCurrentThreadOwns();
-   if (mShutdown)
-     return -1;
- 
-@@ -434,6 +437,7 @@
- 
- bool TimerThread::RemoveTimerInternal(nsTimerImpl *aTimer)
- {
-+  mMonitor.AssertCurrentThreadOwns();
-   if (!mTimers.RemoveElement(aTimer))
-     return false;
- 
-@@ -443,6 +447,10 @@
- 
- void TimerThread::ReleaseTimerInternal(nsTimerImpl *aTimer)
- {
-+  if (!mShutdown) {
-+    // copied to a local array before releasing in shutdown
-+    mMonitor.AssertCurrentThreadOwns();
-+  }
-   // Order is crucial here -- see nsTimerImpl::Release.
-   aTimer->mArmed = false;
-   NS_RELEASE(aTimer);
-@@ -450,21 +458,39 @@
- 
- void TimerThread::DoBeforeSleep()
- {
-+  // Mainthread
-+  MonitorAutoLock lock(mMonitor);
-+  mLastTimerEventLoopRun = TimeStamp::Now();
-   mSleeping = true;
- }
- 
-+// Note: wake may be notified without preceding sleep notification
- void TimerThread::DoAfterSleep()
- {
--  mSleeping = true; // wake may be notified without preceding sleep notification
-+  // Mainthread
-+  TimeStamp now = TimeStamp::Now();
-+
-+  MonitorAutoLock lock(mMonitor);
-+
-+  // an over-estimate of time slept, usually small
-+  TimeDuration slept = now - mLastTimerEventLoopRun;
-+
-+  // Adjust all old timers to expire roughly similar times in the future
-+  // compared to when we went to sleep, by adding the time we slept to the
-+  // target time. It's slightly possible a few will end up slightly in the
-+  // past and fire immediately, but ordering should be preserved.  All
-+  // timers retain the exact same order (and relative times) as before
-+  // going to sleep.
-   for (uint32_t i = 0; i < mTimers.Length(); i ++) {
-     nsTimerImpl *timer = mTimers[i];
--    // get and set the delay to cause its timeout to be recomputed
--    uint32_t delay;
--    timer->GetDelay(&delay);
--    timer->SetDelay(delay);
-+    timer->mTimeout += slept;
-   }
--
-   mSleeping = false;
-+  mLastTimerEventLoopRun = now;
-+
-+  // Wake up the timer thread to process the updated array
-+  mNotified = true;
-+  mMonitor.Notify();
- }
- 
- 
---- icecat-31.8.0/xpcom/threads/TimerThread.h.orig	1969-12-31 19:00:00.000000000 -0500
-+++ icecat-31.8.0/xpcom/threads/TimerThread.h	2015-08-12 16:38:38.542408062 -0400
-@@ -59,7 +59,7 @@
-   mozilla::Atomic<bool> mInitInProgress;
-   bool    mInitialized;
- 
--  // These two internal helper methods must be called while mLock is held.
-+  // These two internal helper methods must be called while mMonitor is held.
-   // AddTimerInternal returns the position where the timer was added in the
-   // list, or -1 if it failed.
-   int32_t AddTimerInternal(nsTimerImpl *aTimer);
-@@ -73,6 +73,7 @@
-   bool mWaiting;
-   bool mNotified;
-   bool mSleeping;
-+  TimeStamp mLastTimerEventLoopRun;
- 
-   nsTArray<nsTimerImpl*> mTimers;
- };
diff --git a/gnu/packages/patches/icecat-CVE-2015-4482.patch b/gnu/packages/patches/icecat-CVE-2015-4482.patch
deleted file mode 100644
index 41f0a3d0fc..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-4482.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 932a017c745d40d661602f6145c95c9226d8450d Mon Sep 17 00:00:00 2001
-From: Stephen Pohl <spohl.mozilla.bugs@gmail.com>
-Date: Sat, 18 Jul 2015 18:42:15 -0700
-Subject: [PATCH] Bug 1184500 - Improve handling of index names in MAR files.
- r=rstrong, a=lmandel
-
----
- modules/libmar/src/mar_read.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/modules/libmar/src/mar_read.c b/modules/libmar/src/mar_read.c
-index c647370..2013b0f 100644
---- a/modules/libmar/src/mar_read.c
-+++ b/modules/libmar/src/mar_read.c
-@@ -96,6 +96,10 @@ static int mar_consume_index(MarFile *mar, char **buf, const char *buf_end) {
-     ++(*buf);
-   }
-   namelen = (*buf - name);
-+  /* must ensure that namelen is valid */
-+  if (namelen < 0) {
-+    return -1;
-+  }
-   /* consume null byte */
-   if (*buf == buf_end)
-     return -1;
--- 
-2.4.3
-
diff --git a/gnu/packages/patches/icecat-CVE-2015-4488.patch b/gnu/packages/patches/icecat-CVE-2015-4488.patch
deleted file mode 100644
index cee0905be0..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-4488.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Backported to icecat-31.8 from the upstream esr38 branch.
-
-From 103fb14ff54753305508448ba0e374247a463552 Mon Sep 17 00:00:00 2001
-From: Daniel Holbert <dholbert@cs.stanford.edu>
-Date: Fri, 19 Jun 2015 15:56:12 -0700
-Subject: [PATCH] Bug 1176270 - Handle self-assignment in
- StyleAnimationValue::operator=. r=dbaron, a=sledru
-
---- icecat-31.8.0/layout/style/nsStyleAnimation.cpp.orig	1969-12-31 19:00:00.000000000 -0500
-+++ icecat-31.8.0/layout/style/nsStyleAnimation.cpp	2015-08-12 16:00:39.418122049 -0400
-@@ -3517,6 +3517,10 @@
- nsStyleAnimation::Value&
- nsStyleAnimation::Value::operator=(const Value& aOther)
- {
-+  if (this == &aOther) {
-+    return *this;
-+  }
-+
-   FreeValue();
- 
-   mUnit = aOther.mUnit;
diff --git a/gnu/packages/patches/icecat-CVE-2015-4489.patch b/gnu/packages/patches/icecat-CVE-2015-4489.patch
deleted file mode 100644
index 4140891e3a..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-4489.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Backported to icecat-31.8 from the upstream esr38 branch.
-
-From 95231c1bca9c9495393b795513bea71a21a6ec2f Mon Sep 17 00:00:00 2001
-From: Birunthan Mohanathas <birunthan@mohanathas.com>
-Date: Tue, 21 Jul 2015 09:42:58 -0700
-Subject: [PATCH] Bug 1182723 - Properly handle self-assignment in
- nsTArray::operator=. r=mccr8, a=abillings
-
---- icecat-31.8.0/xpcom/glue/nsTArray.h.orig	2015-08-12 16:03:56.353746969 -0400
-+++ icecat-31.8.0/xpcom/glue/nsTArray.h	2015-08-12 16:06:52.144553848 -0400
-@@ -811,7 +811,9 @@
-   // array.  It is optimized to reuse existing storage if possible.
-   // @param other  The array object to copy.
-   self_type& operator=(const self_type& other) {
--    ReplaceElementsAt(0, Length(), other.Elements(), other.Length());
-+    if (this != &other) {
-+      ReplaceElementsAt(0, Length(), other.Elements(), other.Length());
-+    }
-     return *this;
-   }
- 
diff --git a/gnu/packages/patches/icecat-CVE-2015-4491.patch b/gnu/packages/patches/icecat-CVE-2015-4491.patch
deleted file mode 100644
index c16885cfc7..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-4491.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From c154557bc0aa7e310824717f3e829dd82e6726e4 Mon Sep 17 00:00:00 2001
-From: Lee Salzman <lsalzman@mozilla.com>
-Date: Tue, 21 Jul 2015 13:16:44 -0400
-Subject: [PATCH] Bug 1184009 - Limit image preview sizes. r=acomminos,
- a=lmandel
-
---HG--
-extra : transplant_source : %9B%86%13%60%B2%97%F1%8Fb%CB%9C%8D%FBWo%C9%EBPs1
----
- widget/gtk/nsFilePicker.cpp | 13 ++++++++-----
- 1 file changed, 8 insertions(+), 5 deletions(-)
-
-diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
-index 0b5a8dc..3c0d543 100644
---- a/widget/gtk/nsFilePicker.cpp
-+++ b/widget/gtk/nsFilePicker.cpp
-@@ -101,13 +101,16 @@ UpdateFilePreviewWidget(GtkFileChooser *file_chooser,
-     return;
-   }
- 
--  GdkPixbuf *preview_pixbuf;
-+  GdkPixbuf *preview_pixbuf = nullptr;
-   // Only scale down images that are too big
-   if (preview_width > MAX_PREVIEW_SIZE || preview_height > MAX_PREVIEW_SIZE) {
--    preview_pixbuf = gdk_pixbuf_new_from_file_at_size(image_filename,
--                                                      MAX_PREVIEW_SIZE,
--                                                      MAX_PREVIEW_SIZE,
--                                                      nullptr);
-+    if (ceil(preview_width / double(MAX_PREVIEW_SIZE) + 1.0) *
-+          ceil(preview_height / double(MAX_PREVIEW_SIZE) + 1.0) < 0x7FFFFF) {
-+      preview_pixbuf = gdk_pixbuf_new_from_file_at_size(image_filename,
-+                                                        MAX_PREVIEW_SIZE,
-+                                                        MAX_PREVIEW_SIZE,
-+                                                        nullptr);
-+    }
-   }
-   else {
-     preview_pixbuf = gdk_pixbuf_new_from_file(image_filename, nullptr);
--- 
-2.4.3
-
diff --git a/gnu/packages/patches/icecat-CVE-2015-4492.patch b/gnu/packages/patches/icecat-CVE-2015-4492.patch
deleted file mode 100644
index 5d401f5a32..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-4492.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From 9d5f21ee3a754d20bca4513f55553ea6694a7b25 Mon Sep 17 00:00:00 2001
-From: Andrea Marchesini <amarchesini@mozilla.com>
-Date: Wed, 29 Jul 2015 16:10:15 -0400
-Subject: [PATCH] Bug 1185820 - XMLHttpRequest::Open() in worker should count
- the recursion using a uint32_t and not a boolean. r=khuey, a=lmandel
-
---HG--
-extra : transplant_source : %8F%89%24%FF%A1%F7d%5B%BE%E9%FC3%C6%E1%AC%27r%5Eq%16
-extra : histedit_source : 5857f0cedf1cfb5361e6f404a094719814a2b415
----
- dom/workers/XMLHttpRequest.cpp | 20 +++++++++++---------
- 1 file changed, 11 insertions(+), 9 deletions(-)
-
-diff --git a/dom/workers/XMLHttpRequest.cpp b/dom/workers/XMLHttpRequest.cpp
-index aac97ab..7099279 100644
---- a/dom/workers/XMLHttpRequest.cpp
-+++ b/dom/workers/XMLHttpRequest.cpp
-@@ -100,6 +100,7 @@ public:
-   // Only touched on the worker thread.
-   uint32_t mOuterEventStreamId;
-   uint32_t mOuterChannelId;
-+  uint32_t mOpenCount;
-   uint64_t mLastLoaded;
-   uint64_t mLastTotal;
-   uint64_t mLastUploadLoaded;
-@@ -109,7 +110,6 @@ public:
-   bool mLastUploadLengthComputable;
-   bool mSeenLoadStart;
-   bool mSeenUploadLoadStart;
--  bool mOpening;
- 
-   // Only touched on the main thread.
-   bool mUploadEventListenersAttached;
-@@ -122,10 +122,10 @@ public:
-   : mWorkerPrivate(nullptr), mXMLHttpRequestPrivate(aXHRPrivate),
-     mMozAnon(aMozAnon), mMozSystem(aMozSystem),
-     mInnerEventStreamId(0), mInnerChannelId(0), mOutstandingSendCount(0),
--    mOuterEventStreamId(0), mOuterChannelId(0), mLastLoaded(0), mLastTotal(0),
--    mLastUploadLoaded(0), mLastUploadTotal(0), mIsSyncXHR(false),
-+    mOuterEventStreamId(0), mOuterChannelId(0), mOpenCount(0), mLastLoaded(0),
-+    mLastTotal(0), mLastUploadLoaded(0), mLastUploadTotal(0), mIsSyncXHR(false),
-     mLastLengthComputable(false), mLastUploadLengthComputable(false),
--    mSeenLoadStart(false), mSeenUploadLoadStart(false), mOpening(false),
-+    mSeenLoadStart(false), mSeenUploadLoadStart(false),
-     mUploadEventListenersAttached(false), mMainThreadSeenLoadStart(false),
-     mInOpen(false), mArrayBufferResponseWasTransferred(false)
-   { }
-@@ -1850,7 +1850,7 @@ XMLHttpRequest::SendInternal(const nsAString& aStringBody,
-   mWorkerPrivate->AssertIsOnWorkerThread();
- 
-   // No send() calls when open is running.
--  if (mProxy->mOpening) {
-+  if (mProxy->mOpenCount) {
-     aRv.Throw(NS_ERROR_FAILURE);
-     return;
-   }
-@@ -1945,15 +1945,17 @@ XMLHttpRequest::Open(const nsACString& aMethod, const nsAString& aUrl,
-                      mBackgroundRequest, mWithCredentials,
-                      mTimeout);
- 
--  mProxy->mOpening = true;
-+  ++mProxy->mOpenCount;
-   if (!runnable->Dispatch(mWorkerPrivate->GetJSContext())) {
--    mProxy->mOpening = false;
--    ReleaseProxy();
-+    if (!--mProxy->mOpenCount) {
-+      ReleaseProxy();
-+    }
-+
-     aRv.Throw(NS_ERROR_FAILURE);
-     return;
-   }
- 
--  mProxy->mOpening = false;
-+  --mProxy->mOpenCount;
-   mProxy->mIsSyncXHR = !aAsync;
- }
- 
--- 
-2.4.3
-
diff --git a/gnu/packages/patches/icecat-CVE-2015-4495.patch b/gnu/packages/patches/icecat-CVE-2015-4495.patch
deleted file mode 100644
index e7514d9a5e..0000000000
--- a/gnu/packages/patches/icecat-CVE-2015-4495.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-Backported from upstream commits labelled "Bug 1178058" from the esr38 branch
-by Boris Zbarsky <bzbarsky@mit.edu> and Bobby Holley <bobbyholley@gmail.com>.
-
---- icecat-31.8.0/docshell/base/nsDocShell.cpp
-+++ icecat-31.8.0/docshell/base/nsDocShell.cpp
-@@ -1546,12 +1546,21 @@
- 
-     if (owner && mItemType != typeChrome) {
-         nsCOMPtr<nsIPrincipal> ownerPrincipal = do_QueryInterface(owner);
--        if (nsContentUtils::IsSystemOrExpandedPrincipal(ownerPrincipal)) {
-+        if (nsContentUtils::IsSystemPrincipal(ownerPrincipal)) {
-             if (ownerIsExplicit) {
-                 return NS_ERROR_DOM_SECURITY_ERR;
-             }
-             owner = nullptr;
-             inheritOwner = true;
-+        } else if (nsContentUtils::IsExpandedPrincipal(ownerPrincipal)) {
-+            if (ownerIsExplicit) {
-+                return NS_ERROR_DOM_SECURITY_ERR;
-+            }
-+            // Don't inherit from the current page.  Just do the safe thing
-+            // and pretend that we were loaded by a nullprincipal.
-+            owner = do_CreateInstance("@mozilla.org/nullprincipal;1");
-+            NS_ENSURE_TRUE(owner, NS_ERROR_FAILURE);
-+            inheritOwner = false;
-         }
-     }
-     if (!owner && !inheritOwner && !ownerIsExplicit) {
diff --git a/gnu/packages/patches/icecat-avoid-bundled-includes.patch b/gnu/packages/patches/icecat-avoid-bundled-includes.patch
new file mode 100644
index 0000000000..d11b528b8e
--- /dev/null
+++ b/gnu/packages/patches/icecat-avoid-bundled-includes.patch
@@ -0,0 +1,35 @@
+Do not use headers from bundled libraries.
+
+--- icecat-38.3.0/xpcom/build/moz.build.orig	2015-10-12 19:33:43.000000000 -0400
++++ icecat-38.3.0/xpcom/build/moz.build	2015-10-13 16:37:28.693224858 -0400
+@@ -92,10 +92,5 @@
+     '/docshell/base',
+ ]
+ 
+-if CONFIG['MOZ_VPX']:
+-    LOCAL_INCLUDES += [
+-        '/media/libvpx',
+-    ]
+-
+ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
+     CXXFLAGS += CONFIG['TK_CFLAGS']
+--- icecat-38.3.0/storage/src/moz.build.orig	2015-10-12 19:34:45.000000000 -0400
++++ icecat-38.3.0/storage/src/moz.build	2015-10-13 18:48:26.584724518 -0400
+@@ -66,7 +66,6 @@
+ DEFINES['SQLITE_MAX_LIKE_PATTERN_LENGTH'] = 50000
+ 
+ LOCAL_INCLUDES += [
+-    '/db/sqlite3/src',
+     '/dom/base',
+ ]
+ 
+--- icecat-38.3.0/dom/indexedDB/moz.build.orig	2015-10-12 19:35:00.000000000 -0400
++++ icecat-38.3.0/dom/indexedDB/moz.build	2015-10-13 19:10:10.528756487 -0400
+@@ -91,7 +91,6 @@
+ FAIL_ON_WARNINGS = True
+ 
+ LOCAL_INCLUDES += [
+-    '/db/sqlite3/src',
+     '/dom/base',
+     '/dom/storage',
+     '/dom/workers',
diff --git a/gnu/packages/patches/icecat-enable-acceleration-and-webgl.patch b/gnu/packages/patches/icecat-enable-acceleration-and-webgl.patch
deleted file mode 100644
index 3d3c4c592a..0000000000
--- a/gnu/packages/patches/icecat-enable-acceleration-and-webgl.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Re-enable hardware acceleration and WebGL.
-
---- icecat-31.8.0/browser/app/profile/icecat.js.orig	2015-07-13 18:14:27.000000000 -0400
-+++ icecat-31.8.0/browser/app/profile/icecat.js	2015-07-15 13:55:39.273124982 -0400
-@@ -1756,7 +1756,3 @@
- pref("security.ssl3.dhe_rsa_aes_256_sha", false);
- pref("security.ssl3.dhe_dss_aes_128_sha", false);
- pref("security.ssl3.dhe_rsa_des_ede3_sha", false);
--
--// Disable hardware acceleration and WebGL
--pref("layers.acceleration.disabled", true);
--pref("webgl.disabled", true);
diff --git a/gnu/packages/patches/icecat-libvpx-1.4.patch b/gnu/packages/patches/icecat-libvpx-1.4.patch
deleted file mode 100644
index 94b2b3a5a1..0000000000
--- a/gnu/packages/patches/icecat-libvpx-1.4.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-The libvpx package 1.4.0 brings new names for various constants.
-
-Based on a patch by Carsten Schoenert <c.schoenert@t-online.de>.
-
---- a/media/webrtc/trunk/webrtc/modules/video_coding/codecs/vp8/vp8_impl.cc
-+++ b/media/webrtc/trunk/webrtc/modules/video_coding/codecs/vp8/vp8_impl.cc
-@@ -180,7 +180,7 @@ int VP8EncoderImpl::InitEncode(const VideoCodec* inst,
-   // Creating a wrapper to the image - setting image data to NULL. Actual
-   // pointer will be set in encode. Setting align to 1, as it is meaningless
-   // (actual memory is not allocated).
--  raw_ = vpx_img_wrap(NULL, IMG_FMT_I420, codec_.width, codec_.height,
-+  raw_ = vpx_img_wrap(NULL, VPX_IMG_FMT_I420, codec_.width, codec_.height,
-                       1, NULL);
-   // populate encoder configuration with default values
-   if (vpx_codec_enc_config_default(vpx_codec_vp8_cx(), config_, 0)) {
-@@ -349,9 +349,9 @@ int VP8EncoderImpl::Encode(const I420VideoFrame& input_image,
-   }
-   // Image in vpx_image_t format.
-   // Input image is const. VP8's raw image is not defined as const.
--  raw_->planes[PLANE_Y] = const_cast<uint8_t*>(input_image.buffer(kYPlane));
--  raw_->planes[PLANE_U] = const_cast<uint8_t*>(input_image.buffer(kUPlane));
--  raw_->planes[PLANE_V] = const_cast<uint8_t*>(input_image.buffer(kVPlane));
-+  raw_->planes[VPX_PLANE_Y] = const_cast<uint8_t*>(input_image.buffer(kYPlane));
-+  raw_->planes[VPX_PLANE_U] = const_cast<uint8_t*>(input_image.buffer(kUPlane));
-+  raw_->planes[VPX_PLANE_V] = const_cast<uint8_t*>(input_image.buffer(kVPlane));
-   // TODO(mikhal): Stride should be set in initialization.
-   raw_->stride[VPX_PLANE_Y] = input_image.stride(kYPlane);
-   raw_->stride[VPX_PLANE_U] = input_image.stride(kUPlane);
---- a/content/media/encoder/VP8TrackEncoder.cpp
-+++ b/content/media/encoder/VP8TrackEncoder.cpp
-@@ -84,7 +84,7 @@
-   // Creating a wrapper to the image - setting image data to NULL. Actual
-   // pointer will be set in encode. Setting align to 1, as it is meaningless
-   // (actual memory is not allocated).
--  vpx_img_wrap(mVPXImageWrapper, IMG_FMT_I420,
-+  vpx_img_wrap(mVPXImageWrapper, VPX_IMG_FMT_I420,
-                mFrameWidth, mFrameHeight, 1, nullptr);
- 
-   config.g_w = mFrameWidth;
-@@ -239,9 +239,9 @@
-   uint8_t *cb = mMuteFrame.Elements() + yPlaneSize;
-   uint8_t *cr = mMuteFrame.Elements() + yPlaneSize + uvPlaneSize;
- 
--  mVPXImageWrapper->planes[PLANE_Y] = y;
--  mVPXImageWrapper->planes[PLANE_U] = cb;
--  mVPXImageWrapper->planes[PLANE_V] = cr;
-+  mVPXImageWrapper->planes[VPX_PLANE_Y] = y;
-+  mVPXImageWrapper->planes[VPX_PLANE_U] = cb;
-+  mVPXImageWrapper->planes[VPX_PLANE_V] = cr;
-   mVPXImageWrapper->stride[VPX_PLANE_Y] = mFrameWidth;
-   mVPXImageWrapper->stride[VPX_PLANE_U] = halfWidth;
-   mVPXImageWrapper->stride[VPX_PLANE_V] = halfWidth;
-@@ -297,9 +297,9 @@
-     const PlanarYCbCrImage::Data *data = yuv->GetData();
- 
-     if (isYUV420(data) && !data->mCbSkip) { // 420 planar
--      mVPXImageWrapper->planes[PLANE_Y] = data->mYChannel;
--      mVPXImageWrapper->planes[PLANE_U] = data->mCbChannel;
--      mVPXImageWrapper->planes[PLANE_V] = data->mCrChannel;
-+      mVPXImageWrapper->planes[VPX_PLANE_Y] = data->mYChannel;
-+      mVPXImageWrapper->planes[VPX_PLANE_U] = data->mCbChannel;
-+      mVPXImageWrapper->planes[VPX_PLANE_V] = data->mCrChannel;
-       mVPXImageWrapper->stride[VPX_PLANE_Y] = data->mYStride;
-       mVPXImageWrapper->stride[VPX_PLANE_U] = data->mCbCrStride;
-       mVPXImageWrapper->stride[VPX_PLANE_V] = data->mCbCrStride;
-@@ -355,9 +355,9 @@
-         return NS_ERROR_NOT_IMPLEMENTED;
-       }
- 
--      mVPXImageWrapper->planes[PLANE_Y] = y;
--      mVPXImageWrapper->planes[PLANE_U] = cb;
--      mVPXImageWrapper->planes[PLANE_V] = cr;
-+      mVPXImageWrapper->planes[VPX_PLANE_Y] = y;
-+      mVPXImageWrapper->planes[VPX_PLANE_U] = cb;
-+      mVPXImageWrapper->planes[VPX_PLANE_V] = cr;
-       mVPXImageWrapper->stride[VPX_PLANE_Y] = mFrameWidth;
-       mVPXImageWrapper->stride[VPX_PLANE_U] = halfWidth;
-       mVPXImageWrapper->stride[VPX_PLANE_V] = halfWidth;