aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/patches
diff options
context:
space:
mode:
authorMarius Bakke <mbakke@fastmail.com>2018-09-26 01:11:32 +0200
committerMarius Bakke <mbakke@fastmail.com>2018-09-26 01:11:32 +0200
commit6a0427af6cc3d52c0efc09262e90c1858ae6f40e (patch)
treeafedf3a5728dfac46c20aed448326debccf96562 /gnu/packages/patches
parent985d542e028517b2888fa61831233a2b60dc7d48 (diff)
parent3b97a1779f3b65d582b8edc8c154b6414314b946 (diff)
downloadguix-6a0427af6cc3d52c0efc09262e90c1858ae6f40e.tar
guix-6a0427af6cc3d52c0efc09262e90c1858ae6f40e.tar.gz
Merge branch 'master' into core-updates
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r--gnu/packages/patches/hmmer-remove-cpu-specificity.patch22
-rw-r--r--gnu/packages/patches/icecat-CVE-2018-12383.patch103
-rw-r--r--gnu/packages/patches/icecat-CVE-2018-5157-and-CVE-2018-5158.patch441
-rw-r--r--gnu/packages/patches/icecat-avoid-bundled-libraries.patch20
-rw-r--r--gnu/packages/patches/icecat-bug-1413868-pt1.patch663
-rw-r--r--gnu/packages/patches/libvpx-use-after-free-in-postproc.patch34
-rw-r--r--gnu/packages/patches/rsem-makefile.patch682
7 files changed, 147 insertions, 1818 deletions
diff --git a/gnu/packages/patches/hmmer-remove-cpu-specificity.patch b/gnu/packages/patches/hmmer-remove-cpu-specificity.patch
deleted file mode 100644
index ba98db4d0e..0000000000
--- a/gnu/packages/patches/hmmer-remove-cpu-specificity.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-This patch removes compilation flags which make the build for the machine
-where compilation takes place, rendering the build not reproducible.
-
-diff --git a/configure b/configure
-index 8b6aaef..49a6afc 100755
---- a/configure
-+++ b/configure
-@@ -6125,14 +6125,6 @@ fi # guess arch
-
- if test "x$ax_gcc_arch" != x -a "x$ax_gcc_arch" != xno; then
- for arch in $ax_gcc_arch; do
-- if test "x$acx_maxopt_portable" = xyes; then # if we require portable code
-- flags="-mtune=$arch"
-- # -mcpu=$arch and m$arch generate nonportable code on every arch except
-- # x86. And some other arches (e.g. Alpha) don't accept -mtune. Grrr.
-- case $host_cpu in i*86|x86_64*) flags="$flags -mcpu=$arch -m$arch";; esac
-- else
-- flags="-march=$arch -mcpu=$arch -m$arch"
-- fi
- for flag in $flags; do
- as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh`
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
diff --git a/gnu/packages/patches/icecat-CVE-2018-12383.patch b/gnu/packages/patches/icecat-CVE-2018-12383.patch
new file mode 100644
index 0000000000..17ca0f3773
--- /dev/null
+++ b/gnu/packages/patches/icecat-CVE-2018-12383.patch
@@ -0,0 +1,103 @@
+Based on upstream changeset:
+ https://hg.mozilla.org/releases/mozilla-esr60/rev/300efdbc9fe1
+but with the git binary patch and related test changes omitted,
+and adapted to apply cleanly to GNU IceCat.
+
+# HG changeset patch
+# User David Keeler <dkeeler@mozilla.com>
+# Date 1531860660 25200
+# Node ID 300efdbc9fe1f9165428c7934861033935b5abfa
+# Parent 80a4a7ef281374dbb2afda8edac54665b14b9ef8
+Bug 1475775 - Clean up old NSS DB file after upgrade if necessary. r=franziskus, r=mattn, a=RyanVM
+
+Reviewers: franziskus, mattn
+
+Bug #: 1475775
+
+Differential Revision: https://phabricator.services.mozilla.com/D2202
+
+diff --git a/security/manager/ssl/nsNSSComponent.cpp b/security/manager/ssl/nsNSSComponent.cpp
+--- a/security/manager/ssl/nsNSSComponent.cpp
++++ b/security/manager/ssl/nsNSSComponent.cpp
+@@ -1935,16 +1935,61 @@ AttemptToRenameBothPKCS11ModuleDBVersion
+ NS_NAMED_LITERAL_CSTRING(sqlModuleDBFilename, "pkcs11.txt");
+ nsresult rv = AttemptToRenamePKCS11ModuleDB(profilePath,
+ legacyModuleDBFilename);
+ if (NS_FAILED(rv)) {
+ return rv;
+ }
+ return AttemptToRenamePKCS11ModuleDB(profilePath, sqlModuleDBFilename);
+ }
++
++// When we changed from the old dbm database format to the newer sqlite
++// implementation, the upgrade process left behind the existing files. Suppose a
++// user had not set a password for the old key3.db (which is about 99% of
++// users). After upgrading, both the old database and the new database are
++// unprotected. If the user then sets a password for the new database, the old
++// one will not be protected. In this scenario, we should probably just remove
++// the old database (it would only be relevant if the user downgraded to a
++// version of IceCat before 58, but we have to trade this off against the
++// user's old private keys being unexpectedly unprotected after setting a
++// password).
++// This was never an issue on Android because we always used the new
++// implementation.
++static void
++MaybeCleanUpOldNSSFiles(const nsACString& profilePath)
++{
++ UniquePK11SlotInfo slot(PK11_GetInternalKeySlot());
++ if (!slot) {
++ return;
++ }
++ // Unfortunately we can't now tell the difference between "there already was a
++ // password when the upgrade happened" and "there was not a password but then
++ // the user added one after upgrading".
++ bool hasPassword = PK11_NeedLogin(slot.get()) &&
++ !PK11_NeedUserInit(slot.get());
++ if (!hasPassword) {
++ return;
++ }
++ nsCOMPtr<nsIFile> dbFile = do_CreateInstance("@mozilla.org/file/local;1");
++ if (!dbFile) {
++ return;
++ }
++ nsresult rv = dbFile->InitWithNativePath(profilePath);
++ if (NS_FAILED(rv)) {
++ return;
++ }
++ NS_NAMED_LITERAL_CSTRING(keyDBFilename, "key3.db");
++ rv = dbFile->AppendNative(keyDBFilename);
++ if (NS_FAILED(rv)) {
++ return;
++ }
++ // Since this isn't a directory, the `recursive` argument to `Remove` is
++ // irrelevant.
++ Unused << dbFile->Remove(false);
++}
+ #endif // ifndef ANDROID
+
+ // Given a profile directory, attempt to initialize NSS. If nocertdb is true,
+ // (or if we don't have a profile directory) simply initialize NSS in no DB mode
+ // and return. Otherwise, first attempt to initialize in read/write mode, and
+ // then read-only mode if that fails. If both attempts fail, we may be failing
+ // to initialize an NSS DB collection that has FIPS mode enabled. Attempt to
+ // ascertain if this is the case, and if so, rename the offending PKCS#11 module
+@@ -1966,16 +2011,19 @@ InitializeNSSWithFallbacks(const nsACStr
+
+ // Try read/write mode. If we're in safeMode, we won't load PKCS#11 modules.
+ #ifndef ANDROID
+ PRErrorCode savedPRErrorCode1;
+ #endif // ifndef ANDROID
+ SECStatus srv = ::mozilla::psm::InitializeNSS(profilePath, false, !safeMode);
+ if (srv == SECSuccess) {
+ MOZ_LOG(gPIPNSSLog, LogLevel::Debug, ("initialized NSS in r/w mode"));
++#ifndef ANDROID
++ MaybeCleanUpOldNSSFiles(profilePath);
++#endif // ifndef ANDROID
+ return NS_OK;
+ }
+ #ifndef ANDROID
+ savedPRErrorCode1 = PR_GetError();
+ PRErrorCode savedPRErrorCode2;
+ #endif // ifndef ANDROID
+ // That failed. Try read-only mode.
+ srv = ::mozilla::psm::InitializeNSS(profilePath, true, !safeMode);
diff --git a/gnu/packages/patches/icecat-CVE-2018-5157-and-CVE-2018-5158.patch b/gnu/packages/patches/icecat-CVE-2018-5157-and-CVE-2018-5158.patch
deleted file mode 100644
index b776640133..0000000000
--- a/gnu/packages/patches/icecat-CVE-2018-5157-and-CVE-2018-5158.patch
+++ /dev/null
@@ -1,441 +0,0 @@
-Based on <https://hg.mozilla.org/releases/mozilla-esr52/rev/608e76ec5ba2>
-Adapted to apply cleanly to GNU IceCat.
-
-# HG changeset patch
-# User Ryan VanderMeulen <ryanvm@gmail.com>
-# Date 1523630807 14400
-# Node ID 608e76ec5ba25cec2271d2b400c7bce2d4c5ef79
-# Parent 10b7f43b536f93151201d44d304c991aa9af5d0c
-Bug 1452075 - Backport some upstream pdf.js fixes to ESR52. r=bdahl, r=yury, a=RyanVM
-
-diff --git a/browser/extensions/pdfjs/content/PdfStreamConverter.jsm b/browser/extensions/pdfjs/content/PdfStreamConverter.jsm
---- a/browser/extensions/pdfjs/content/PdfStreamConverter.jsm
-+++ b/browser/extensions/pdfjs/content/PdfStreamConverter.jsm
-@@ -24,17 +24,18 @@ const Cc = Components.classes;
- const Ci = Components.interfaces;
- const Cr = Components.results;
- const Cu = Components.utils;
- // True only if this is the version of pdf.js that is included with icecat.
- const MOZ_CENTRAL = JSON.parse('true');
- const PDFJS_EVENT_ID = 'pdf.js.message';
- const PDF_CONTENT_TYPE = 'application/pdf';
- const PREF_PREFIX = 'pdfjs';
--const PDF_VIEWER_WEB_PAGE = 'resource://pdf.js/web/viewer.html';
-+const PDF_VIEWER_ORIGIN = "resource://pdf.js";
-+const PDF_VIEWER_WEB_PAGE = "resource://pdf.js/web/viewer.html";
- const MAX_NUMBER_OF_PREFS = 50;
- const MAX_STRING_PREF_LENGTH = 128;
-
- Cu.import('resource://gre/modules/XPCOMUtils.jsm');
- Cu.import('resource://gre/modules/Services.jsm');
- Cu.import('resource://gre/modules/NetUtil.jsm');
-
- XPCOMUtils.defineLazyModuleGetter(this, 'NetworkManager',
-@@ -105,21 +106,25 @@ function log(aMsg) {
- if (!getBoolPref(PREF_PREFIX + '.pdfBugEnabled', false)) {
- return;
- }
- var msg = 'PdfStreamConverter.js: ' + (aMsg.join ? aMsg.join('') : aMsg);
- Services.console.logStringMessage(msg);
- dump(msg + '\n');
- }
-
--function getDOMWindow(aChannel) {
-+function getDOMWindow(aChannel, aPrincipal) {
- var requestor = aChannel.notificationCallbacks ?
- aChannel.notificationCallbacks :
- aChannel.loadGroup.notificationCallbacks;
- var win = requestor.getInterface(Components.interfaces.nsIDOMWindow);
-+ // Ensure the window wasn't navigated to something that is not PDF.js.
-+ if (!win.document.nodePrincipal.equals(aPrincipal)) {
-+ return null;
-+ }
- return win;
- }
-
- function getLocalizedStrings(path) {
- var stringBundle = Cc['@mozilla.org/intl/stringbundle;1'].
- getService(Ci.nsIStringBundleService).
- createBundle('chrome://pdf.js/locale/' + path);
-
-@@ -627,31 +632,31 @@ var RangedChromeActions = (function Rang
- data = this.dataListener.readData();
-
- this.dataListener.onprogress = function (loaded, total) {
- self.domWindow.postMessage({
- pdfjsLoadAction: 'progressiveRead',
- loaded: loaded,
- total: total,
- chunk: self.dataListener.readData()
-- }, '*');
-+ }, PDF_VIEWER_ORIGIN);
- };
- this.dataListener.oncomplete = function () {
- self.dataListener = null;
- };
- }
-
- this.domWindow.postMessage({
- pdfjsLoadAction: 'supportsRangedLoading',
- rangeEnabled: this.rangeEnabled,
- streamingEnabled: this.streamingEnabled,
- pdfUrl: this.pdfUrl,
- length: this.contentLength,
- data: data
-- }, '*');
-+ }, PDF_VIEWER_ORIGIN);
-
- return true;
- };
-
- proto.requestDataRange = function RangedChromeActions_requestDataRange(args) {
- if (!this.rangeEnabled) {
- return;
- }
-@@ -663,23 +668,23 @@ var RangedChromeActions = (function Rang
- // errors from chrome code for non-range requests, so this doesn't
- // seem high-pri
- this.networkManager.requestRange(begin, end, {
- onDone: function RangedChromeActions_onDone(args) {
- domWindow.postMessage({
- pdfjsLoadAction: 'range',
- begin: args.begin,
- chunk: args.chunk
-- }, '*');
-+ }, PDF_VIEWER_ORIGIN);
- },
- onProgress: function RangedChromeActions_onProgress(evt) {
- domWindow.postMessage({
- pdfjsLoadAction: 'rangeProgress',
- loaded: evt.loaded,
-- }, '*');
-+ }, PDF_VIEWER_ORIGIN);
- }
- });
- };
-
- proto.abortLoading = function RangedChromeActions_abortLoading() {
- this.networkManager.abortAllRequests();
- if (this.originalRequest) {
- this.originalRequest.cancel(Cr.NS_BINDING_ABORTED);
-@@ -718,26 +723,26 @@ var StandardChromeActions = (function St
- var self = this;
-
- this.dataListener.onprogress = function ChromeActions_dataListenerProgress(
- loaded, total) {
- self.domWindow.postMessage({
- pdfjsLoadAction: 'progress',
- loaded: loaded,
- total: total
-- }, '*');
-+ }, PDF_VIEWER_ORIGIN);
- };
-
- this.dataListener.oncomplete =
- function StandardChromeActions_dataListenerComplete(data, errorCode) {
- self.domWindow.postMessage({
- pdfjsLoadAction: 'complete',
- data: data,
- errorCode: errorCode
-- }, '*');
-+ }, PDF_VIEWER_ORIGIN);
-
- self.dataListener = null;
- self.originalRequest = null;
- };
-
- return true;
- };
-
-@@ -972,31 +977,35 @@ PdfStreamConverter.prototype = {
- var proxy = {
- onStartRequest: function(request, context) {
- listener.onStartRequest(aRequest, aContext);
- },
- onDataAvailable: function(request, context, inputStream, offset, count) {
- listener.onDataAvailable(aRequest, aContext, inputStream,
- offset, count);
- },
-- onStopRequest: function(request, context, statusCode) {
-- // We get the DOM window here instead of before the request since it
-- // may have changed during a redirect.
-- var domWindow = getDOMWindow(channel);
-+ onStopRequest(request, context, statusCode) {
-+ var domWindow = getDOMWindow(channel, resourcePrincipal);
-+ if (!Components.isSuccessCode(statusCode) || !domWindow) {
-+ // The request may have been aborted and the document may have been
-+ // replaced with something that is not PDF.js, abort attaching.
-+ listener.onStopRequest(aRequest, context, statusCode);
-+ return;
-+ }
- var actions;
- if (rangeRequest || streamRequest) {
- actions = new RangedChromeActions(
- domWindow, contentDispositionFilename, aRequest,
- rangeRequest, streamRequest, dataListener);
- } else {
- actions = new StandardChromeActions(
- domWindow, contentDispositionFilename, aRequest, dataListener);
- }
- var requestListener = new RequestListener(actions);
-- domWindow.addEventListener(PDFJS_EVENT_ID, function(event) {
-+ domWindow.document.addEventListener(PDFJS_EVENT_ID, function(event) {
- requestListener.receive(event);
- }, false, true);
- if (actions.supportsIntegratedFind()) {
- var findEventManager = new FindEventManager(domWindow);
- findEventManager.bind();
- }
- listener.onStopRequest(aRequest, aContext, statusCode);
-
-diff --git a/browser/extensions/pdfjs/content/build/pdf.worker.js b/browser/extensions/pdfjs/content/build/pdf.worker.js
---- a/browser/extensions/pdfjs/content/build/pdf.worker.js
-+++ b/browser/extensions/pdfjs/content/build/pdf.worker.js
-@@ -41648,16 +41648,32 @@
- var error = sharedUtil.error;
- var info = sharedUtil.info;
- var isArray = sharedUtil.isArray;
- var isBool = sharedUtil.isBool;
- var isDict = corePrimitives.isDict;
- var isStream = corePrimitives.isStream;
- var PostScriptLexer = corePsParser.PostScriptLexer;
- var PostScriptParser = corePsParser.PostScriptParser;
-+ function toNumberArray(arr) {
-+ if (!Array.isArray(arr)) {
-+ return null;
-+ }
-+ var length = arr.length;
-+ for (var i = 0; i < length; i++) {
-+ if (typeof arr[i] !== 'number') {
-+ var result = new Array(length);
-+ for (var j = 0; j < length; j++) {
-+ result[j] = +arr[j];
-+ }
-+ return result;
-+ }
-+ }
-+ return arr;
-+ }
- var PDFFunction = function PDFFunctionClosure() {
- var CONSTRUCT_SAMPLED = 0;
- var CONSTRUCT_INTERPOLATED = 2;
- var CONSTRUCT_STICHED = 3;
- var CONSTRUCT_POSTSCRIPT = 4;
- return {
- getSampleArray: function PDFFunction_getSampleArray(size, outputSize, bps, str) {
- var i, ii;
-@@ -41747,43 +41763,43 @@
- out[index] = [
- arr[i],
- arr[i + 1]
- ];
- ++index;
- }
- return out;
- }
-- var domain = dict.getArray('Domain');
-- var range = dict.getArray('Range');
-+ var domain = toNumberArray(dict.getArray('Domain'));
-+ var range = toNumberArray(dict.getArray('Range'));
- if (!domain || !range) {
- error('No domain or range');
- }
- var inputSize = domain.length / 2;
- var outputSize = range.length / 2;
- domain = toMultiArray(domain);
- range = toMultiArray(range);
-- var size = dict.get('Size');
-+ var size = toNumberArray(dict.get('Size'));
- var bps = dict.get('BitsPerSample');
- var order = dict.get('Order') || 1;
- if (order !== 1) {
- // No description how cubic spline interpolation works in PDF32000:2008
- // As in poppler, ignoring order, linear interpolation may work as good
- info('No support for cubic spline interpolation: ' + order);
- }
-- var encode = dict.getArray('Encode');
-+ var encode = toNumberArray(dict.getArray('Encode'));
- if (!encode) {
- encode = [];
- for (var i = 0; i < inputSize; ++i) {
-- encode.push(0);
-- encode.push(size[i] - 1);
-- }
-- }
-- encode = toMultiArray(encode);
-- var decode = dict.getArray('Decode');
-+ encode.push([0, size[i] - 1]);
-+ }
-+ } else {
-+ encode = toMultiArray(encode);
-+ }
-+ var decode = toNumberArray(dict.getArray('Decode'));
- if (!decode) {
- decode = range;
- } else {
- decode = toMultiArray(decode);
- }
- var samples = this.getSampleArray(size, outputSize, bps, str);
- return [
- CONSTRUCT_SAMPLED,
-@@ -41868,22 +41884,19 @@
- // Decode_2j, Decode_2j+1)
- rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);
- // y_j = min(max(r_j, range_2j), range_2j+1)
- dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]);
- }
- };
- },
- constructInterpolated: function PDFFunction_constructInterpolated(str, dict) {
-- var c0 = dict.getArray('C0') || [0];
-- var c1 = dict.getArray('C1') || [1];
-+ var c0 = toNumberArray(dict.getArray('C0')) || [0];
-+ var c1 = toNumberArray(dict.getArray('C1')) || [1];
- var n = dict.get('N');
-- if (!isArray(c0) || !isArray(c1)) {
-- error('Illegal dictionary for interpolated function');
-- }
- var length = c0.length;
- var diff = [];
- for (var i = 0; i < length; ++i) {
- diff.push(c1[i] - c0[i]);
- }
- return [
- CONSTRUCT_INTERPOLATED,
- c0,
-@@ -41899,49 +41912,45 @@
- return function constructInterpolatedFromIRResult(src, srcOffset, dest, destOffset) {
- var x = n === 1 ? src[srcOffset] : Math.pow(src[srcOffset], n);
- for (var j = 0; j < length; ++j) {
- dest[destOffset + j] = c0[j] + x * diff[j];
- }
- };
- },
- constructStiched: function PDFFunction_constructStiched(fn, dict, xref) {
-- var domain = dict.getArray('Domain');
-+ var domain = toNumberArray(dict.getArray('Domain'));
- if (!domain) {
- error('No domain');
- }
- var inputSize = domain.length / 2;
- if (inputSize !== 1) {
- error('Bad domain for stiched function');
- }
- var fnRefs = dict.get('Functions');
- var fns = [];
- for (var i = 0, ii = fnRefs.length; i < ii; ++i) {
-- fns.push(PDFFunction.getIR(xref, xref.fetchIfRef(fnRefs[i])));
-- }
-- var bounds = dict.getArray('Bounds');
-- var encode = dict.getArray('Encode');
-+ fns.push(PDFFunction.parse(xref, xref.fetchIfRef(fnRefs[i])));
-+ }
-+ var bounds = toNumberArray(dict.getArray('Bounds'));
-+ var encode = toNumberArray(dict.getArray('Encode'));
- return [
- CONSTRUCT_STICHED,
- domain,
- bounds,
- encode,
- fns
- ];
- },
- constructStichedFromIR: function PDFFunction_constructStichedFromIR(IR) {
- var domain = IR[1];
- var bounds = IR[2];
- var encode = IR[3];
-- var fnsIR = IR[4];
-- var fns = [];
-+ var fns = IR[4];
- var tmpBuf = new Float32Array(1);
-- for (var i = 0, ii = fnsIR.length; i < ii; i++) {
-- fns.push(PDFFunction.fromIR(fnsIR[i]));
-- }
- return function constructStichedFromIRResult(src, srcOffset, dest, destOffset) {
- var clip = function constructStichedFromIRClip(v, min, max) {
- if (v > max) {
- v = max;
- } else if (v < min) {
- v = min;
- }
- return v;
-@@ -41968,18 +41977,18 @@
- // Prevent the value from becoming NaN as a result
- // of division by zero (fixes issue6113.pdf).
- tmpBuf[0] = dmin === dmax ? rmin : rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin);
- // call the appropriate function
- fns[i](tmpBuf, 0, dest, destOffset);
- };
- },
- constructPostScript: function PDFFunction_constructPostScript(fn, dict, xref) {
-- var domain = dict.getArray('Domain');
-- var range = dict.getArray('Range');
-+ var domain = toNumberArray(dict.getArray('Domain'));
-+ var range = toNumberArray(dict.getArray('Range'));
- if (!domain) {
- error('No domain.');
- }
- if (!range) {
- error('No range.');
- }
- var lexer = new PostScriptLexer(fn);
- var parser = new PostScriptParser(lexer);
-@@ -42928,18 +42937,18 @@
- case 'IndexedCS':
- var baseIndexedCS = IR[1];
- var hiVal = IR[2];
- var lookup = IR[3];
- return new IndexedCS(ColorSpace.fromIR(baseIndexedCS), hiVal, lookup);
- case 'AlternateCS':
- var numComps = IR[1];
- var alt = IR[2];
-- var tintFnIR = IR[3];
-- return new AlternateCS(numComps, ColorSpace.fromIR(alt), PDFFunction.fromIR(tintFnIR));
-+ var tintFn = IR[3];
-+ return new AlternateCS(numComps, ColorSpace.fromIR(alt), tintFn);
- case 'LabCS':
- whitePoint = IR[1];
- blackPoint = IR[2];
- var range = IR[3];
- return new LabCS(whitePoint, blackPoint, range);
- default:
- error('Unknown name ' + name);
- }
-@@ -43067,22 +43076,22 @@
- var name = xref.fetchIfRef(cs[1]);
- numComps = 1;
- if (isName(name)) {
- numComps = 1;
- } else if (isArray(name)) {
- numComps = name.length;
- }
- alt = ColorSpace.parseToIR(cs[2], xref, res);
-- var tintFnIR = PDFFunction.getIR(xref, xref.fetchIfRef(cs[3]));
-+ var tintFn = PDFFunction.parse(xref, xref.fetchIfRef(cs[3]));
- return [
- 'AlternateCS',
- numComps,
- alt,
-- tintFnIR
-+ tintFn
- ];
- case 'Lab':
- params = xref.fetchIfRef(cs[1]);
- whitePoint = params.getArray('WhitePoint');
- blackPoint = params.getArray('BlackPoint');
- var range = params.getArray('Range');
- return [
- 'LabCS',
-@@ -52483,9 +52492,9 @@
- initializeWorker();
- }
- exports.setPDFNetworkStreamClass = setPDFNetworkStreamClass;
- exports.WorkerTask = WorkerTask;
- exports.WorkerMessageHandler = WorkerMessageHandler;
- }));
- }.call(pdfjsLibs));
- exports.WorkerMessageHandler = pdfjsLibs.pdfjsCoreWorker.WorkerMessageHandler;
--}));
-\ No newline at end of file
-+}));
-
diff --git a/gnu/packages/patches/icecat-avoid-bundled-libraries.patch b/gnu/packages/patches/icecat-avoid-bundled-libraries.patch
index 114631517a..b5e9fb887e 100644
--- a/gnu/packages/patches/icecat-avoid-bundled-libraries.patch
+++ b/gnu/packages/patches/icecat-avoid-bundled-libraries.patch
@@ -1,8 +1,8 @@
Fixes needed when avoiding bundled libraries.
---- icecat-52.0.2/xpcom/build/moz.build.orig
-+++ icecat-52.0.2/xpcom/build/moz.build
-@@ -93,10 +93,5 @@
+--- icecat-60.2.0/xpcom/build/moz.build.orig 2018-09-13 17:46:49.000000000 -0400
++++ icecat-60.2.0/xpcom/build/moz.build 2018-09-22 04:26:50.659564554 -0400
+@@ -99,10 +99,5 @@
'/docshell/base',
]
@@ -13,9 +13,9 @@ Fixes needed when avoiding bundled libraries.
-
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
CXXFLAGS += CONFIG['TK_CFLAGS']
---- icecat-52.0.2/storage/moz.build.orig
-+++ icecat-52.0.2/storage/moz.build
-@@ -114,7 +114,6 @@
+--- icecat-60.2.0/storage/moz.build.orig 2018-09-13 17:51:11.000000000 -0400
++++ icecat-60.2.0/storage/moz.build 2018-09-22 04:26:50.659564554 -0400
+@@ -117,7 +117,6 @@
DEFINES['MOZ_MEMORY_TEMP_STORE_PRAGMA'] = True
LOCAL_INCLUDES += [
@@ -23,13 +23,13 @@ Fixes needed when avoiding bundled libraries.
'/dom/base',
]
---- icecat-52.0.2/dom/indexedDB/moz.build.orig
-+++ icecat-52.0.2/dom/indexedDB/moz.build
-@@ -101,7 +101,6 @@
+--- icecat-60.2.0/dom/indexedDB/moz.build.orig 2018-09-13 17:49:42.000000000 -0400
++++ icecat-60.2.0/dom/indexedDB/moz.build 2018-09-22 04:26:50.663564574 -0400
+@@ -102,7 +102,6 @@
CXXFLAGS += ['-Wno-error=shadow']
LOCAL_INCLUDES += [
- '/db/sqlite3/src',
'/dom/base',
'/dom/storage',
- '/dom/workers',
+ '/ipc/glue',
diff --git a/gnu/packages/patches/icecat-bug-1413868-pt1.patch b/gnu/packages/patches/icecat-bug-1413868-pt1.patch
deleted file mode 100644
index 18382dc33a..0000000000
--- a/gnu/packages/patches/icecat-bug-1413868-pt1.patch
+++ /dev/null
@@ -1,663 +0,0 @@
-Based on <https://hg.mozilla.org/releases/mozilla-esr52/rev/431fa5dd4016>
-Adapted to apply cleanly to GNU IceCat.
-
-# HG changeset patch
-# User Honza Bambas <honzab.moz@firemni.cz>
-# Date 1528830658 14400
-# Node ID 431fa5dd4016bdab7e4bb0d3c4df85468fe337b0
-# Parent e8e9e1ef79f2a18c61ec1b87cfb214c8d4960f8e
-Bug 1413868. r=valentin, a=RyanVM
-
-diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
---- a/toolkit/xre/nsAppRunner.cpp
-+++ b/toolkit/xre/nsAppRunner.cpp
-@@ -4,16 +4,17 @@
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
- #include "mozilla/dom/ContentParent.h"
- #include "mozilla/dom/ContentChild.h"
- #include "mozilla/ipc/GeckoChildProcessHost.h"
-
- #include "mozilla/ArrayUtils.h"
- #include "mozilla/Attributes.h"
-+#include "mozilla/FilePreferences.h"
- #include "mozilla/ChaosMode.h"
- #include "mozilla/IOInterposer.h"
- #include "mozilla/Likely.h"
- #include "mozilla/MemoryChecking.h"
- #include "mozilla/Poison.h"
- #include "mozilla/Preferences.h"
- #include "mozilla/ScopeExit.h"
- #include "mozilla/Services.h"
-@@ -4304,16 +4305,20 @@ XREMain::XRE_mainRun()
- // Need to write out the fact that the profile has been removed and potentially
- // that the selected/default profile changed.
- mProfileSvc->Flush();
- }
- }
-
- mDirProvider.DoStartup();
-
-+ // As FilePreferences need the profile directory, we must initialize right here.
-+ mozilla::FilePreferences::InitDirectoriesWhitelist();
-+ mozilla::FilePreferences::InitPrefs();
-+
- OverrideDefaultLocaleIfNeeded();
-
- #ifdef MOZ_CRASHREPORTER
- nsCString userAgentLocale;
- // Try a localized string first. This pref is always a localized string in
- // IceCatMobile, and might be elsewhere, too.
- if (NS_SUCCEEDED(Preferences::GetLocalizedCString("general.useragent.locale", &userAgentLocale))) {
- CrashReporter::AnnotateCrashReport(NS_LITERAL_CSTRING("useragent_locale"), userAgentLocale);
-diff --git a/toolkit/xre/nsEmbedFunctions.cpp b/toolkit/xre/nsEmbedFunctions.cpp
---- a/toolkit/xre/nsEmbedFunctions.cpp
-+++ b/toolkit/xre/nsEmbedFunctions.cpp
-@@ -46,16 +46,17 @@
- #include "nsX11ErrorHandler.h"
- #include "nsGDKErrorHandler.h"
- #include "base/at_exit.h"
- #include "base/command_line.h"
- #include "base/message_loop.h"
- #include "base/process_util.h"
- #include "chrome/common/child_process.h"
-
-+#include "mozilla/FilePreferences.h"
- #include "mozilla/ipc/BrowserProcessSubThread.h"
- #include "mozilla/ipc/GeckoChildProcessHost.h"
- #include "mozilla/ipc/IOThreadChild.h"
- #include "mozilla/ipc/ProcessChild.h"
- #include "ScopedXREEmbed.h"
-
- #include "mozilla/plugins/PluginProcessChild.h"
- #include "mozilla/dom/ContentProcess.h"
-@@ -680,16 +681,18 @@ XRE_InitChildProcess(int aArgc,
- ::SetProcessShutdownParameters(0x280 - 1, SHUTDOWN_NORETRY);
- #endif
-
- #if defined(MOZ_SANDBOX) && defined(XP_WIN)
- // We need to do this after the process has been initialised, as
- // InitLoggingIfRequired may need access to prefs.
- mozilla::sandboxing::InitLoggingIfRequired(aChildData->ProvideLogFunction);
- #endif
-+ mozilla::FilePreferences::InitDirectoriesWhitelist();
-+ mozilla::FilePreferences::InitPrefs();
-
- OverrideDefaultLocaleIfNeeded();
-
- #if defined(MOZ_CRASHREPORTER)
- #if defined(MOZ_CONTENT_SANDBOX) && !defined(MOZ_WIDGET_GONK)
- AddContentSandboxLevelAnnotation();
- #endif
- #endif
-diff --git a/xpcom/io/FilePreferences.cpp b/xpcom/io/FilePreferences.cpp
-new file mode 100644
---- /dev/null
-+++ b/xpcom/io/FilePreferences.cpp
-@@ -0,0 +1,271 @@
-+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-+/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-+/* This Source Code Form is subject to the terms of the Mozilla Public
-+* License, v. 2.0. If a copy of the MPL was not distributed with this
-+* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-+
-+#include "FilePreferences.h"
-+
-+#include "mozilla/Preferences.h"
-+#include "nsAppDirectoryServiceDefs.h"
-+#include "nsDirectoryServiceDefs.h"
-+#include "nsDirectoryServiceUtils.h"
-+
-+namespace mozilla {
-+namespace FilePreferences {
-+
-+static bool sBlockUNCPaths = false;
-+typedef nsTArray<nsString> Paths;
-+
-+static Paths& PathArray()
-+{
-+ static Paths sPaths;
-+ return sPaths;
-+}
-+
-+static void AllowDirectory(char const* directory)
-+{
-+ nsCOMPtr<nsIFile> file;
-+ NS_GetSpecialDirectory(directory, getter_AddRefs(file));
-+ if (!file) {
-+ return;
-+ }
-+
-+ nsString path;
-+ if (NS_FAILED(file->GetTarget(path))) {
-+ return;
-+ }
-+
-+ // The whitelist makes sense only for UNC paths, because this code is used
-+ // to block only UNC paths, hence, no need to add non-UNC directories here
-+ // as those would never pass the check.
-+ if (!StringBeginsWith(path, NS_LITERAL_STRING("\\\\"))) {
-+ return;
-+ }
-+
-+ if (!PathArray().Contains(path)) {
-+ PathArray().AppendElement(path);
-+ }
-+}
-+
-+void InitPrefs()
-+{
-+ sBlockUNCPaths = Preferences::GetBool("network.file.disable_unc_paths", false);
-+}
-+
-+void InitDirectoriesWhitelist()
-+{
-+ // NS_GRE_DIR is the installation path where the binary resides.
-+ AllowDirectory(NS_GRE_DIR);
-+ // NS_APP_USER_PROFILE_50_DIR and NS_APP_USER_PROFILE_LOCAL_50_DIR are the two
-+ // parts of the profile we store permanent and local-specific data.
-+ AllowDirectory(NS_APP_USER_PROFILE_50_DIR);
-+ AllowDirectory(NS_APP_USER_PROFILE_LOCAL_50_DIR);
-+}
-+
-+namespace { // anon
-+
-+class Normalizer
-+{
-+public:
-+ Normalizer(const nsAString& aFilePath, const char16_t aSeparator);
-+ bool Get(nsAString& aNormalizedFilePath);
-+
-+private:
-+ bool ConsumeItem();
-+ bool ConsumeSeparator();
-+ bool IsEOF() { return mFilePathCursor == mFilePathEnd; }
-+
-+ bool ConsumeName();
-+ bool CheckParentDir();
-+ bool CheckCurrentDir();
-+
-+ nsString::const_char_iterator mFilePathCursor;
-+ nsString::const_char_iterator mFilePathEnd;
-+
-+ nsDependentSubstring mItem;
-+ char16_t const mSeparator;
-+ nsTArray<nsDependentSubstring> mStack;
-+};
-+
-+Normalizer::Normalizer(const nsAString& aFilePath, const char16_t aSeparator)
-+ : mFilePathCursor(aFilePath.BeginReading())
-+ , mFilePathEnd(aFilePath.EndReading())
-+ , mSeparator(aSeparator)
-+{
-+}
-+
-+bool Normalizer::ConsumeItem()
-+{
-+ if (IsEOF()) {
-+ return false;
-+ }
-+
-+ nsString::const_char_iterator nameBegin = mFilePathCursor;
-+ while (mFilePathCursor != mFilePathEnd) {
-+ if (*mFilePathCursor == mSeparator) {
-+ break; // don't include the separator
-+ }
-+ ++mFilePathCursor;
-+ }
-+
-+ mItem.Rebind(nameBegin, mFilePathCursor);
-+ return true;
-+}
-+
-+bool Normalizer::ConsumeSeparator()
-+{
-+ if (IsEOF()) {
-+ return false;
-+ }
-+
-+ if (*mFilePathCursor != mSeparator) {
-+ return false;
-+ }
-+
-+ ++mFilePathCursor;
-+ return true;
-+}
-+
-+bool Normalizer::Get(nsAString& aNormalizedFilePath)
-+{
-+ aNormalizedFilePath.Truncate();
-+
-+ if (IsEOF()) {
-+ return true;
-+ }
-+ if (ConsumeSeparator()) {
-+ aNormalizedFilePath.Append(mSeparator);
-+ }
-+
-+ if (IsEOF()) {
-+ return true;
-+ }
-+ if (ConsumeSeparator()) {
-+ aNormalizedFilePath.Append(mSeparator);
-+ }
-+
-+ while (!IsEOF()) {
-+ if (!ConsumeName()) {
-+ return false;
-+ }
-+ }
-+
-+ for (auto const& name : mStack) {
-+ aNormalizedFilePath.Append(name);
-+ }
-+
-+ return true;
-+}
-+
-+bool Normalizer::ConsumeName()
-+{
-+ if (!ConsumeItem()) {
-+ return true;
-+ }
-+
-+ if (CheckCurrentDir()) {
-+ return true;
-+ }
-+
-+ if (CheckParentDir()) {
-+ if (!mStack.Length()) {
-+ // This means there are more \.. than valid names
-+ return false;
-+ }
-+
-+ mStack.RemoveElementAt(mStack.Length() - 1);
-+ return true;
-+ }
-+
-+ if (mItem.IsEmpty()) {
-+ // this means an empty name (a lone slash), which is illegal
-+ return false;
-+ }
-+
-+ if (ConsumeSeparator()) {
-+ mItem.Rebind(mItem.BeginReading(), mFilePathCursor);
-+ }
-+ mStack.AppendElement(mItem);
-+
-+ return true;
-+}
-+
-+bool Normalizer::CheckCurrentDir()
-+{
-+ if (mItem == NS_LITERAL_STRING(".")) {
-+ ConsumeSeparator();
-+ // EOF is acceptable
-+ return true;
-+ }
-+
-+ return false;
-+}
-+
-+bool Normalizer::CheckParentDir()
-+{
-+ if (mItem == NS_LITERAL_STRING("..")) {
-+ ConsumeSeparator();
-+ // EOF is acceptable
-+ return true;
-+ }
-+
-+ return false;
-+}
-+
-+} // anon
-+
-+bool IsBlockedUNCPath(const nsAString& aFilePath)
-+{
-+ if (!sBlockUNCPaths) {
-+ return false;
-+ }
-+
-+ if (!StringBeginsWith(aFilePath, NS_LITERAL_STRING("\\\\"))) {
-+ return false;
-+ }
-+
-+ nsAutoString normalized;
-+ if (!Normalizer(aFilePath, L'\\').Get(normalized)) {
-+ // Broken paths are considered invalid and thus inaccessible
-+ return true;
-+ }
-+
-+ for (const auto& allowedPrefix : PathArray()) {
-+ if (StringBeginsWith(normalized, allowedPrefix)) {
-+ if (normalized.Length() == allowedPrefix.Length()) {
-+ return false;
-+ }
-+ if (normalized[allowedPrefix.Length()] == L'\\') {
-+ return false;
-+ }
-+
-+ // When we are here, the path has a form "\\path\prefixevil"
-+ // while we have an allowed prefix of "\\path\prefix".
-+ // Note that we don't want to add a slash to the end of a prefix
-+ // so that opening the directory (no slash at the end) still works.
-+ break;
-+ }
-+ }
-+
-+ return true;
-+}
-+
-+void testing::SetBlockUNCPaths(bool aBlock)
-+{
-+ sBlockUNCPaths = aBlock;
-+}
-+
-+void testing::AddDirectoryToWhitelist(nsAString const & aPath)
-+{
-+ PathArray().AppendElement(aPath);
-+}
-+
-+bool testing::NormalizePath(nsAString const & aPath, nsAString & aNormalized)
-+{
-+ Normalizer normalizer(aPath, L'\\');
-+ return normalizer.Get(aNormalized);
-+}
-+
-+} // ::FilePreferences
-+} // ::mozilla
-diff --git a/xpcom/io/FilePreferences.h b/xpcom/io/FilePreferences.h
-new file mode 100644
---- /dev/null
-+++ b/xpcom/io/FilePreferences.h
-@@ -0,0 +1,25 @@
-+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-+/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-+/* This Source Code Form is subject to the terms of the Mozilla Public
-+* License, v. 2.0. If a copy of the MPL was not distributed with this
-+* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-+
-+#include "nsIObserver.h"
-+
-+namespace mozilla {
-+namespace FilePreferences {
-+
-+void InitPrefs();
-+void InitDirectoriesWhitelist();
-+bool IsBlockedUNCPath(const nsAString& aFilePath);
-+
-+namespace testing {
-+
-+void SetBlockUNCPaths(bool aBlock);
-+void AddDirectoryToWhitelist(nsAString const& aPath);
-+bool NormalizePath(nsAString const & aPath, nsAString & aNormalized);
-+
-+}
-+
-+} // FilePreferences
-+} // mozilla
-diff --git a/xpcom/io/moz.build b/xpcom/io/moz.build
---- a/xpcom/io/moz.build
-+++ b/xpcom/io/moz.build
-@@ -79,24 +79,26 @@ EXPORTS += [
- 'nsUnicharInputStream.h',
- 'nsWildCard.h',
- 'SlicedInputStream.h',
- 'SpecialSystemDirectory.h',
- ]
-
- EXPORTS.mozilla += [
- 'Base64.h',
-+ 'FilePreferences.h',
- 'SnappyCompressOutputStream.h',
- 'SnappyFrameUtils.h',
- 'SnappyUncompressInputStream.h',
- ]
-
- UNIFIED_SOURCES += [
- 'Base64.cpp',
- 'crc32c.c',
-+ 'FilePreferences.cpp',
- 'nsAnonymousTemporaryFile.cpp',
- 'nsAppFileLocationProvider.cpp',
- 'nsBinaryStream.cpp',
- 'nsDirectoryService.cpp',
- 'nsEscape.cpp',
- 'nsInputStreamTee.cpp',
- 'nsIOUtil.cpp',
- 'nsLinebreakConverter.cpp',
-diff --git a/xpcom/io/nsLocalFileWin.cpp b/xpcom/io/nsLocalFileWin.cpp
---- a/xpcom/io/nsLocalFileWin.cpp
-+++ b/xpcom/io/nsLocalFileWin.cpp
-@@ -41,16 +41,17 @@
- #include <stdio.h>
- #include <stdlib.h>
- #include <mbstring.h>
-
- #include "nsXPIDLString.h"
- #include "prproces.h"
- #include "prlink.h"
-
-+#include "mozilla/FilePreferences.h"
- #include "mozilla/Mutex.h"
- #include "SpecialSystemDirectory.h"
-
- #include "nsTraceRefcnt.h"
- #include "nsXPCOMCIDInternal.h"
- #include "nsThreadUtils.h"
- #include "nsXULAppAPI.h"
-
-@@ -1162,16 +1163,20 @@ nsLocalFile::InitWithPath(const nsAStrin
- char16_t secondChar = *(++begin);
-
- // just do a sanity check. if it has any forward slashes, it is not a Native path
- // on windows. Also, it must have a colon at after the first char.
- if (FindCharInReadable(L'/', begin, end)) {
- return NS_ERROR_FILE_UNRECOGNIZED_PATH;
- }
-
-+ if (FilePreferences::IsBlockedUNCPath(aFilePath)) {
-+ return NS_ERROR_FILE_ACCESS_DENIED;
-+ }
-+
- if (secondChar != L':' && (secondChar != L'\\' || firstChar != L'\\')) {
- return NS_ERROR_FILE_UNRECOGNIZED_PATH;
- }
-
- if (secondChar == L':') {
- // Make sure we have a valid drive, later code assumes the drive letter
- // is a single char a-z or A-Z.
- if (PathGetDriveNumberW(aFilePath.Data()) == -1) {
-@@ -1974,16 +1979,20 @@ nsLocalFile::CopySingleFile(nsIFile* aSo
- bool path1Remote, path2Remote;
- if (!IsRemoteFilePath(filePath.get(), path1Remote) ||
- !IsRemoteFilePath(destPath.get(), path2Remote) ||
- path1Remote || path2Remote) {
- dwCopyFlags |= COPY_FILE_NO_BUFFERING;
- }
- }
-
-+ if (FilePreferences::IsBlockedUNCPath(destPath)) {
-+ return NS_ERROR_FILE_ACCESS_DENIED;
-+ }
-+
- if (!move) {
- copyOK = ::CopyFileExW(filePath.get(), destPath.get(), nullptr,
- nullptr, nullptr, dwCopyFlags);
- } else {
- copyOK = ::MoveFileExW(filePath.get(), destPath.get(),
- MOVEFILE_REPLACE_EXISTING);
-
- // Check if copying the source file to a different volume,
-diff --git a/xpcom/tests/gtest/TestFilePreferencesWin.cpp b/xpcom/tests/gtest/TestFilePreferencesWin.cpp
-new file mode 100644
---- /dev/null
-+++ b/xpcom/tests/gtest/TestFilePreferencesWin.cpp
-@@ -0,0 +1,141 @@
-+#include "gtest/gtest.h"
-+
-+#include "mozilla/FilePreferences.h"
-+#include "nsIFile.h"
-+#include "nsXPCOMCID.h"
-+
-+TEST(FilePreferencesWin, Normalization)
-+{
-+ nsAutoString normalized;
-+
-+ mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("foo"), normalized);
-+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("foo"));
-+
-+ mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("\\foo"), normalized);
-+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\foo"));
-+
-+ mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("\\\\foo"), normalized);
-+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\foo"));
-+
-+ mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("foo\\some"), normalized);
-+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("foo\\some"));
-+
-+ mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("\\\\.\\foo"), normalized);
-+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\foo"));
-+
-+ mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("\\\\."), normalized);
-+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\"));
-+
-+ mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("\\\\.\\"), normalized);
-+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\"));
-+
-+ mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("\\\\.\\."), normalized);
-+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\"));
-+
-+ mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("\\\\foo\\bar"), normalized);
-+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\foo\\bar"));
-+
-+ mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("\\\\foo\\bar\\"), normalized);
-+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\foo\\bar\\"));
-+
-+ mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("\\\\foo\\bar\\."), normalized);
-+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\foo\\bar\\"));
-+
-+ mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("\\\\foo\\bar\\.\\"), normalized);
-+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\foo\\bar\\"));
-+
-+ mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("\\\\foo\\bar\\..\\"), normalized);
-+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\foo\\"));
-+
-+ mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("\\\\foo\\bar\\.."), normalized);
-+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\foo\\"));
-+
-+ mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("\\\\foo\\..\\bar\\..\\"), normalized);
-+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\"));
-+
-+ mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("\\\\foo\\..\\bar"), normalized);
-+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\bar"));
-+
-+ mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("\\\\foo\\bar\\..\\..\\"), normalized);
-+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\"));
-+
-+ mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("\\\\foo\\bar\\.\\..\\.\\..\\"), normalized);
-+ ASSERT_TRUE(normalized == NS_LITERAL_STRING("\\\\"));
-+
-+ bool result;
-+
-+ result = mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("\\\\.."), normalized);
-+ ASSERT_FALSE(result);
-+
-+ result = mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("\\\\..\\"), normalized);
-+ ASSERT_FALSE(result);
-+
-+ result = mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("\\\\.\\..\\"), normalized);
-+ ASSERT_FALSE(result);
-+
-+ result = mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("\\\\foo\\\\bar"), normalized);
-+ ASSERT_FALSE(result);
-+
-+ result = mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("\\\\foo\\bar\\..\\..\\..\\..\\"), normalized);
-+ ASSERT_FALSE(result);
-+
-+ result = mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("\\\\\\"), normalized);
-+ ASSERT_FALSE(result);
-+
-+ result = mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("\\\\.\\\\"), normalized);
-+ ASSERT_FALSE(result);
-+
-+ result = mozilla::FilePreferences::testing::NormalizePath(
-+ NS_LITERAL_STRING("\\\\..\\\\"), normalized);
-+ ASSERT_FALSE(result);
-+}
-+
-+TEST(FilePreferencesWin, AccessUNC)
-+{
-+ nsCOMPtr<nsIFile> lf = do_CreateInstance(NS_LOCAL_FILE_CONTRACTID);
-+
-+ nsresult rv;
-+
-+ mozilla::FilePreferences::testing::SetBlockUNCPaths(false);
-+
-+ rv = lf->InitWithPath(NS_LITERAL_STRING("\\\\nice\\..\\evil\\share"));
-+ ASSERT_EQ(rv, NS_OK);
-+
-+ mozilla::FilePreferences::testing::SetBlockUNCPaths(true);
-+
-+ rv = lf->InitWithPath(NS_LITERAL_STRING("\\\\nice\\..\\evil\\share"));
-+ ASSERT_EQ(rv, NS_ERROR_FILE_ACCESS_DENIED);
-+
-+ mozilla::FilePreferences::testing::AddDirectoryToWhitelist(NS_LITERAL_STRING("\\\\nice"));
-+
-+ rv = lf->InitWithPath(NS_LITERAL_STRING("\\\\nice\\share"));
-+ ASSERT_EQ(rv, NS_OK);
-+
-+ rv = lf->InitWithPath(NS_LITERAL_STRING("\\\\nice\\..\\evil\\share"));
-+ ASSERT_EQ(rv, NS_ERROR_FILE_ACCESS_DENIED);
-+}
-diff --git a/xpcom/tests/gtest/moz.build b/xpcom/tests/gtest/moz.build
---- a/xpcom/tests/gtest/moz.build
-+++ b/xpcom/tests/gtest/moz.build
-@@ -51,16 +51,21 @@ UNIFIED_SOURCES += [
- if CONFIG['MOZ_DEBUG'] and CONFIG['OS_ARCH'] not in ('WINNT') and CONFIG['OS_TARGET'] != 'Android':
- # FIXME bug 523392: TestDeadlockDetector doesn't like Windows
- # Bug 1054249: Doesn't work on Android
- UNIFIED_SOURCES += [
- 'TestDeadlockDetector.cpp',
- 'TestDeadlockDetectorScalability.cpp',
- ]
-
-+if CONFIG['OS_TARGET'] == 'WINNT':
-+ UNIFIED_SOURCES += [
-+ 'TestFilePreferencesWin.cpp',
-+ ]
-+
- if CONFIG['WRAP_STL_INCLUDES'] and not CONFIG['CLANG_CL']:
- UNIFIED_SOURCES += [
- 'TestSTLWrappers.cpp',
- ]
-
- # Compile TestAllocReplacement separately so Windows headers don't pollute
- # the global namespace for other files.
- SOURCES += [
-
diff --git a/gnu/packages/patches/libvpx-use-after-free-in-postproc.patch b/gnu/packages/patches/libvpx-use-after-free-in-postproc.patch
new file mode 100644
index 0000000000..04f2a953b7
--- /dev/null
+++ b/gnu/packages/patches/libvpx-use-after-free-in-postproc.patch
@@ -0,0 +1,34 @@
+From 52add5896661d186dec284ed646a4b33b607d2c7 Mon Sep 17 00:00:00 2001
+From: Jerome Jiang <jianj@google.com>
+Date: Wed, 23 May 2018 15:43:00 -0700
+Subject: [PATCH] VP8: Fix use-after-free in postproc.
+
+The pointer in vp8 postproc refers to show_frame_mi which is only
+updated on show frame. However, when there is a no-show frame which also
+changes the size (thus new frame buffers allocated), show_frame_mi is
+not updated with new frame buffer memory.
+
+Change the pointer in postproc to mi which is always updated.
+
+Bug: 842265
+Change-Id: I33874f2112b39f74562cba528432b5f239e6a7bd
+---
+ vp8/common/postproc.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/vp8/common/postproc.c b/vp8/common/postproc.c
+index d67ee8a57..8c292d616 100644
+--- a/vp8/common/postproc.c
++++ b/vp8/common/postproc.c
+@@ -65,7 +65,7 @@ void vp8_deblock(VP8_COMMON *cm, YV12_BUFFER_CONFIG *source,
+ double level = 6.0e-05 * q * q * q - .0067 * q * q + .306 * q + .0065;
+ int ppl = (int)(level + .5);
+
+- const MODE_INFO *mode_info_context = cm->show_frame_mi;
++ const MODE_INFO *mode_info_context = cm->mi;
+ int mbr, mbc;
+
+ /* The pixel thresholds are adjusted according to if or not the macroblock
+--
+2.19.0
+
diff --git a/gnu/packages/patches/rsem-makefile.patch b/gnu/packages/patches/rsem-makefile.patch
deleted file mode 100644
index 5481dc685f..0000000000
--- a/gnu/packages/patches/rsem-makefile.patch
+++ /dev/null
@@ -1,682 +0,0 @@
-This patch simplifies the Makefile, making it much easier to build rsem
-without the bundled version of samtools. It has already been submitted
-upstream: https://github.com/bli25wisc/RSEM/pull/11
-
-From 161894e91a16c7e15af57e4fcfe8cb613711c7fa Mon Sep 17 00:00:00 2001
-From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
-Date: Wed, 22 Apr 2015 14:51:07 +0200
-Subject: [PATCH 1/7] remove all headers from Makefile
-
----
- Makefile | 95 +++++++++++-----------------------------------------------------
- 1 file changed, 16 insertions(+), 79 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index 54e2603..3a55ed8 100644
---- a/Makefile
-+++ b/Makefile
-@@ -10,133 +10,70 @@ all : $(PROGRAMS)
- sam/libbam.a :
- cd sam ; ${MAKE} all
-
--Transcript.h : utils.h
--
--Transcripts.h : utils.h my_assert.h Transcript.h
--
--rsem-extract-reference-transcripts : utils.h my_assert.h GTFItem.h Transcript.h Transcripts.h extractRef.cpp
-+rsem-extract-reference-transcripts : extractRef.cpp
- $(CC) -Wall -O3 extractRef.cpp -o rsem-extract-reference-transcripts
-
--rsem-synthesis-reference-transcripts : utils.h my_assert.h Transcript.h Transcripts.h synthesisRef.cpp
-+rsem-synthesis-reference-transcripts : synthesisRef.cpp
- $(CC) -Wall -O3 synthesisRef.cpp -o rsem-synthesis-reference-transcripts
-
--BowtieRefSeqPolicy.h : RefSeqPolicy.h
--
--RefSeq.h : utils.h
--
--Refs.h : utils.h RefSeq.h RefSeqPolicy.h PolyARules.h
--
--
- rsem-preref : preRef.o
- $(CC) preRef.o -o rsem-preref
-
--preRef.o : utils.h RefSeq.h Refs.h PolyARules.h RefSeqPolicy.h AlignerRefSeqPolicy.h preRef.cpp
-+preRef.o : preRef.cpp
- $(CC) $(COFLAGS) preRef.cpp
-
--
--SingleRead.h : Read.h
--
--SingleReadQ.h : Read.h
--
--PairedEndRead.h : Read.h SingleRead.h
--
--PairedEndReadQ.h : Read.h SingleReadQ.h
--
--
--PairedEndHit.h : SingleHit.h
--
--HitContainer.h : GroupInfo.h
--
--
--SamParser.h : sam/sam.h sam/bam.h utils.h my_assert.h SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h SingleHit.h PairedEndHit.h Transcripts.h
--
--
- rsem-parse-alignments : parseIt.o sam/libbam.a
- $(CC) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread
-
--parseIt.o : utils.h GroupInfo.h Read.h SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h SingleHit.h PairedEndHit.h HitContainer.h SamParser.h Transcripts.h sam/sam.h sam/bam.h parseIt.cpp
-+parseIt.o : parseIt.cpp
- $(CC) -Wall -O2 -c -I. parseIt.cpp
-
--
--rsem-build-read-index : utils.h buildReadIndex.cpp
-+rsem-build-read-index : buildReadIndex.cpp
- $(CC) -O3 buildReadIndex.cpp -o rsem-build-read-index
-
--
--simul.h : boost/random.hpp
--
--ReadReader.h : SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h ReadIndex.h
--
--SingleModel.h : utils.h my_assert.h Orientation.h LenDist.h RSPD.h Profile.h NoiseProfile.h ModelParams.h RefSeq.h Refs.h SingleRead.h SingleHit.h ReadReader.h simul.h
--
--SingleQModel.h : utils.h my_assert.h Orientation.h LenDist.h RSPD.h QualDist.h QProfile.h NoiseQProfile.h ModelParams.h RefSeq.h Refs.h SingleReadQ.h SingleHit.h ReadReader.h simul.h
--
--PairedEndModel.h : utils.h my_assert.h Orientation.h LenDist.h RSPD.h Profile.h NoiseProfile.h ModelParams.h RefSeq.h Refs.h SingleRead.h PairedEndRead.h PairedEndHit.h ReadReader.h simul.h
--
--PairedEndQModel.h : utils.h my_assert.h Orientation.h LenDist.h RSPD.h QualDist.h QProfile.h NoiseQProfile.h ModelParams.h RefSeq.h Refs.h SingleReadQ.h PairedEndReadQ.h PairedEndHit.h ReadReader.h simul.h
--
--HitWrapper.h : HitContainer.h
--
--sam_rsem_aux.h : sam/bam.h
--
--sam_rsem_cvt.h : sam/bam.h Transcript.h Transcripts.h
--
--BamWriter.h : sam/sam.h sam/bam.h sam_rsem_aux.h sam_rsem_cvt.h SingleHit.h PairedEndHit.h HitWrapper.h Transcript.h Transcripts.h
--
--sampling.h : boost/random.hpp
--
--WriteResults.h : utils.h my_assert.h GroupInfo.h Transcript.h Transcripts.h RefSeq.h Refs.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h
--
- rsem-run-em : EM.o sam/libbam.a
- $(CC) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread
-
--EM.o : utils.h my_assert.h Read.h SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h SingleHit.h PairedEndHit.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h Refs.h GroupInfo.h HitContainer.h ReadIndex.h ReadReader.h Orientation.h LenDist.h RSPD.h QualDist.h QProfile.h NoiseQProfile.h ModelParams.h RefSeq.h RefSeqPolicy.h PolyARules.h Profile.h NoiseProfile.h Transcript.h Transcripts.h HitWrapper.h BamWriter.h sam/bam.h sam/sam.h simul.h sam_rsem_aux.h sampling.h boost/random.hpp WriteResults.h EM.cpp
-+EM.o : EM.cpp
- $(CC) $(COFLAGS) EM.cpp
-
--bc_aux.h : sam/bam.h
--
--BamConverter.h : utils.h my_assert.h sam/sam.h sam/bam.h sam_rsem_aux.h sam_rsem_cvt.h bc_aux.h Transcript.h Transcripts.h
--
--rsem-tbam2gbam : utils.h Transcripts.h Transcript.h bc_aux.h BamConverter.h sam/sam.h sam/bam.h sam/libbam.a sam_rsem_aux.h sam_rsem_cvt.h tbam2gbam.cpp sam/libbam.a
-+rsem-tbam2gbam : tbam2gbam.cpp sam/libbam.a
- $(CC) -O3 -Wall tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@
-
--rsem-bam2wig : utils.h my_assert.h wiggle.h wiggle.o sam/libbam.a bam2wig.cpp
-+rsem-bam2wig : wiggle.o sam/libbam.a bam2wig.cpp
- $(CC) -O3 -Wall bam2wig.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@
-
--rsem-bam2readdepth : utils.h my_assert.h wiggle.h wiggle.o sam/libbam.a bam2readdepth.cpp
-+rsem-bam2readdepth : wiggle.o sam/libbam.a bam2readdepth.cpp
- $(CC) -O3 -Wall bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@
-
--wiggle.o: sam/bam.h sam/sam.h wiggle.cpp wiggle.h
-+wiggle.o: wiggle.cpp
- $(CC) $(COFLAGS) wiggle.cpp
-
- rsem-simulate-reads : simulation.o
- $(CC) -o rsem-simulate-reads simulation.o
-
--simulation.o : utils.h Read.h SingleRead.h SingleReadQ.h PairedEndRead.h PairedEndReadQ.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h Refs.h RefSeq.h GroupInfo.h Transcript.h Transcripts.h Orientation.h LenDist.h RSPD.h QualDist.h QProfile.h NoiseQProfile.h Profile.h NoiseProfile.h simul.h boost/random.hpp WriteResults.h simulation.cpp
-+simulation.o : simulation.cpp
- $(CC) $(COFLAGS) simulation.cpp
-
- rsem-run-gibbs : Gibbs.o
- $(CC) -o rsem-run-gibbs Gibbs.o -lpthread
-
--#some header files are omitted
--Gibbs.o : utils.h my_assert.h boost/random.hpp sampling.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h RefSeq.h RefSeqPolicy.h PolyARules.h Refs.h GroupInfo.h WriteResults.h Gibbs.cpp
-+Gibbs.o : Gibbs.cpp
- $(CC) $(COFLAGS) Gibbs.cpp
-
--Buffer.h : my_assert.h
--
- rsem-calculate-credibility-intervals : calcCI.o
- $(CC) -o rsem-calculate-credibility-intervals calcCI.o -lpthread
-
--#some header files are omitted
--calcCI.o : utils.h my_assert.h boost/random.hpp sampling.h Model.h SingleModel.h SingleQModel.h PairedEndModel.h PairedEndQModel.h RefSeq.h RefSeqPolicy.h PolyARules.h Refs.h GroupInfo.h WriteResults.h Buffer.h calcCI.cpp
-+calcCI.o : calcCI.cpp
- $(CC) $(COFLAGS) calcCI.cpp
-
--rsem-get-unique : sam/bam.h sam/sam.h getUnique.cpp sam/libbam.a
-+rsem-get-unique : getUnique.cpp sam/libbam.a
- $(CC) -O3 -Wall getUnique.cpp sam/libbam.a -lz -lpthread -o $@
-
--rsem-sam-validator : sam/bam.h sam/sam.h my_assert.h samValidator.cpp sam/libbam.a
-+rsem-sam-validator : samValidator.cpp sam/libbam.a
- $(CC) -O3 -Wall samValidator.cpp sam/libbam.a -lz -lpthread -o $@
-
--rsem-scan-for-paired-end-reads : sam/bam.h sam/sam.h my_assert.h scanForPairedEndReads.cpp sam/libbam.a
-+rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp sam/libbam.a
- $(CC) -O3 -Wall scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@
-
- ebseq :
-
-From ec136638a727632e20abfaeb65c22c46d15ca8c4 Mon Sep 17 00:00:00 2001
-From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
-Date: Wed, 22 Apr 2015 15:06:41 +0200
-Subject: [PATCH 2/7] include current dir, ./sam and ./boost by default
-
----
- Makefile | 48 ++++++++++++++++++++++++------------------------
- 1 file changed, 24 insertions(+), 24 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index 3a55ed8..1dd97ca 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,6 +1,6 @@
- CC = g++
--CFLAGS = -Wall -c -I.
--COFLAGS = -Wall -O3 -ffast-math -c -I.
-+CFLAGS = -Wall -I. -I./sam -I./boost
-+COFLAGS = -O3 -ffast-math -c
- PROGRAMS = rsem-extract-reference-transcripts rsem-synthesis-reference-transcripts rsem-preref rsem-parse-alignments rsem-build-read-index rsem-run-em rsem-tbam2gbam rsem-run-gibbs rsem-calculate-credibility-intervals rsem-simulate-reads rsem-bam2wig rsem-get-unique rsem-bam2readdepth rsem-sam-validator rsem-scan-for-paired-end-reads
-
- .PHONY : all ebseq clean
-@@ -11,70 +11,70 @@ sam/libbam.a :
- cd sam ; ${MAKE} all
-
- rsem-extract-reference-transcripts : extractRef.cpp
-- $(CC) -Wall -O3 extractRef.cpp -o rsem-extract-reference-transcripts
-+ $(CC) $(CFLAGS) -O3 extractRef.cpp -o rsem-extract-reference-transcripts
-
- rsem-synthesis-reference-transcripts : synthesisRef.cpp
-- $(CC) -Wall -O3 synthesisRef.cpp -o rsem-synthesis-reference-transcripts
-+ $(CC) $(CFLAGS) -O3 synthesisRef.cpp -o rsem-synthesis-reference-transcripts
-
- rsem-preref : preRef.o
-- $(CC) preRef.o -o rsem-preref
-+ $(CC) $(CFLAGS) preRef.o -o rsem-preref
-
- preRef.o : preRef.cpp
-- $(CC) $(COFLAGS) preRef.cpp
-+ $(CC) $(CFLAGS) $(COFLAGS) preRef.cpp
-
- rsem-parse-alignments : parseIt.o sam/libbam.a
-- $(CC) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread
-+ $(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread
-
- parseIt.o : parseIt.cpp
-- $(CC) -Wall -O2 -c -I. parseIt.cpp
-+ $(CC) $(CFLAGS) -O2 -c parseIt.cpp
-
- rsem-build-read-index : buildReadIndex.cpp
-- $(CC) -O3 buildReadIndex.cpp -o rsem-build-read-index
-+ $(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o rsem-build-read-index
-
- rsem-run-em : EM.o sam/libbam.a
-- $(CC) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread
-+ $(CC) $(CFLAGS) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread
-
- EM.o : EM.cpp
-- $(CC) $(COFLAGS) EM.cpp
-+ $(CC) $(CFLAGS) $(COFLAGS) EM.cpp
-
- rsem-tbam2gbam : tbam2gbam.cpp sam/libbam.a
-- $(CC) -O3 -Wall tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@
-+ $(CC) $(CFLAGS) -O3 tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@
-
- rsem-bam2wig : wiggle.o sam/libbam.a bam2wig.cpp
-- $(CC) -O3 -Wall bam2wig.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@
-+ $(CC) $(CFLAGS) -O3 bam2wig.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@
-
- rsem-bam2readdepth : wiggle.o sam/libbam.a bam2readdepth.cpp
-- $(CC) -O3 -Wall bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@
-+ $(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@
-
- wiggle.o: wiggle.cpp
-- $(CC) $(COFLAGS) wiggle.cpp
-+ $(CC) $(CFLAGS) $(COFLAGS) wiggle.cpp
-
- rsem-simulate-reads : simulation.o
-- $(CC) -o rsem-simulate-reads simulation.o
-+ $(CC) $(CFLAGS) -o rsem-simulate-reads simulation.o
-
- simulation.o : simulation.cpp
-- $(CC) $(COFLAGS) simulation.cpp
-+ $(CC) $(CFLAGS) $(COFLAGS) simulation.cpp
-
- rsem-run-gibbs : Gibbs.o
-- $(CC) -o rsem-run-gibbs Gibbs.o -lpthread
-+ $(CC) $(CFLAGS) -o rsem-run-gibbs Gibbs.o -lpthread
-
- Gibbs.o : Gibbs.cpp
-- $(CC) $(COFLAGS) Gibbs.cpp
-+ $(CC) $(CFLAGS) $(COFLAGS) Gibbs.cpp
-
- rsem-calculate-credibility-intervals : calcCI.o
-- $(CC) -o rsem-calculate-credibility-intervals calcCI.o -lpthread
-+ $(CC) $(CFLAGS) -o rsem-calculate-credibility-intervals calcCI.o -lpthread
-
- calcCI.o : calcCI.cpp
-- $(CC) $(COFLAGS) calcCI.cpp
-+ $(CC) $(CFLAGS) $(COFLAGS) calcCI.cpp
-
- rsem-get-unique : getUnique.cpp sam/libbam.a
-- $(CC) -O3 -Wall getUnique.cpp sam/libbam.a -lz -lpthread -o $@
-+ $(CC) $(CFLAGS) -O3 getUnique.cpp sam/libbam.a -lz -lpthread -o $@
-
- rsem-sam-validator : samValidator.cpp sam/libbam.a
-- $(CC) -O3 -Wall samValidator.cpp sam/libbam.a -lz -lpthread -o $@
-+ $(CC) $(CFLAGS) -O3 samValidator.cpp sam/libbam.a -lz -lpthread -o $@
-
- rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp sam/libbam.a
-- $(CC) -O3 -Wall scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@
-+ $(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@
-
- ebseq :
- cd EBSeq ; ${MAKE} all
-
-From d366614ea50f79fdd93e3c76383ccb6fcdeaa8e0 Mon Sep 17 00:00:00 2001
-From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
-Date: Wed, 22 Apr 2015 15:10:49 +0200
-Subject: [PATCH 3/7] separate object rules from rules for executables
-
----
- Makefile | 50 ++++++++++++++++++++++++++------------------------
- 1 file changed, 26 insertions(+), 24 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index 1dd97ca..ae4de3b 100644
---- a/Makefile
-+++ b/Makefile
-@@ -10,6 +10,32 @@ all : $(PROGRAMS)
- sam/libbam.a :
- cd sam ; ${MAKE} all
-
-+ebseq :
-+ cd EBSeq ; ${MAKE} all
-+
-+
-+calcCI.o : calcCI.cpp
-+ $(CC) $(CFLAGS) $(COFLAGS) calcCI.cpp
-+
-+EM.o : EM.cpp
-+ $(CC) $(CFLAGS) $(COFLAGS) EM.cpp
-+
-+Gibbs.o : Gibbs.cpp
-+ $(CC) $(CFLAGS) $(COFLAGS) Gibbs.cpp
-+
-+preRef.o : preRef.cpp
-+ $(CC) $(CFLAGS) $(COFLAGS) preRef.cpp
-+
-+parseIt.o : parseIt.cpp
-+ $(CC) $(CFLAGS) -O2 -c parseIt.cpp
-+
-+simulation.o : simulation.cpp
-+ $(CC) $(CFLAGS) $(COFLAGS) simulation.cpp
-+
-+wiggle.o: wiggle.cpp
-+ $(CC) $(CFLAGS) $(COFLAGS) wiggle.cpp
-+
-+
- rsem-extract-reference-transcripts : extractRef.cpp
- $(CC) $(CFLAGS) -O3 extractRef.cpp -o rsem-extract-reference-transcripts
-
-@@ -19,24 +45,15 @@ rsem-synthesis-reference-transcripts : synthesisRef.cpp
- rsem-preref : preRef.o
- $(CC) $(CFLAGS) preRef.o -o rsem-preref
-
--preRef.o : preRef.cpp
-- $(CC) $(CFLAGS) $(COFLAGS) preRef.cpp
--
- rsem-parse-alignments : parseIt.o sam/libbam.a
- $(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread
-
--parseIt.o : parseIt.cpp
-- $(CC) $(CFLAGS) -O2 -c parseIt.cpp
--
- rsem-build-read-index : buildReadIndex.cpp
- $(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o rsem-build-read-index
-
- rsem-run-em : EM.o sam/libbam.a
- $(CC) $(CFLAGS) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread
-
--EM.o : EM.cpp
-- $(CC) $(CFLAGS) $(COFLAGS) EM.cpp
--
- rsem-tbam2gbam : tbam2gbam.cpp sam/libbam.a
- $(CC) $(CFLAGS) -O3 tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@
-
-@@ -46,27 +63,15 @@ rsem-bam2wig : wiggle.o sam/libbam.a bam2wig.cpp
- rsem-bam2readdepth : wiggle.o sam/libbam.a bam2readdepth.cpp
- $(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@
-
--wiggle.o: wiggle.cpp
-- $(CC) $(CFLAGS) $(COFLAGS) wiggle.cpp
--
- rsem-simulate-reads : simulation.o
- $(CC) $(CFLAGS) -o rsem-simulate-reads simulation.o
-
--simulation.o : simulation.cpp
-- $(CC) $(CFLAGS) $(COFLAGS) simulation.cpp
--
- rsem-run-gibbs : Gibbs.o
- $(CC) $(CFLAGS) -o rsem-run-gibbs Gibbs.o -lpthread
-
--Gibbs.o : Gibbs.cpp
-- $(CC) $(CFLAGS) $(COFLAGS) Gibbs.cpp
--
- rsem-calculate-credibility-intervals : calcCI.o
- $(CC) $(CFLAGS) -o rsem-calculate-credibility-intervals calcCI.o -lpthread
-
--calcCI.o : calcCI.cpp
-- $(CC) $(CFLAGS) $(COFLAGS) calcCI.cpp
--
- rsem-get-unique : getUnique.cpp sam/libbam.a
- $(CC) $(CFLAGS) -O3 getUnique.cpp sam/libbam.a -lz -lpthread -o $@
-
-@@ -76,9 +81,6 @@ rsem-sam-validator : samValidator.cpp sam/libbam.a
- rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp sam/libbam.a
- $(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@
-
--ebseq :
-- cd EBSeq ; ${MAKE} all
--
- clean :
- rm -f *.o *~ $(PROGRAMS)
- cd sam ; ${MAKE} clean
-
-From 6ba1c33cccdf7c8e7df7a3189e7db204be3b1e8d Mon Sep 17 00:00:00 2001
-From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
-Date: Wed, 22 Apr 2015 15:28:30 +0200
-Subject: [PATCH 4/7] add ./sam to library directories, link with -lbam
-
----
- Makefile | 36 ++++++++++++++++++------------------
- 1 file changed, 18 insertions(+), 18 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index ae4de3b..a87cc4d 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,11 +1,11 @@
- CC = g++
--CFLAGS = -Wall -I. -I./sam -I./boost
-+CFLAGS = -Wall -I. -I./sam -I./boost -L./sam
- COFLAGS = -O3 -ffast-math -c
- PROGRAMS = rsem-extract-reference-transcripts rsem-synthesis-reference-transcripts rsem-preref rsem-parse-alignments rsem-build-read-index rsem-run-em rsem-tbam2gbam rsem-run-gibbs rsem-calculate-credibility-intervals rsem-simulate-reads rsem-bam2wig rsem-get-unique rsem-bam2readdepth rsem-sam-validator rsem-scan-for-paired-end-reads
-
- .PHONY : all ebseq clean
-
--all : $(PROGRAMS)
-+all : sam/libbam.a $(PROGRAMS)
-
- sam/libbam.a :
- cd sam ; ${MAKE} all
-@@ -45,23 +45,23 @@ rsem-synthesis-reference-transcripts : synthesisRef.cpp
- rsem-preref : preRef.o
- $(CC) $(CFLAGS) preRef.o -o rsem-preref
-
--rsem-parse-alignments : parseIt.o sam/libbam.a
-- $(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o sam/libbam.a -lz -lpthread
-+rsem-parse-alignments : parseIt.o
-+ $(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o -lbam -lz -lpthread
-
- rsem-build-read-index : buildReadIndex.cpp
- $(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o rsem-build-read-index
-
--rsem-run-em : EM.o sam/libbam.a
-- $(CC) $(CFLAGS) -o rsem-run-em EM.o sam/libbam.a -lz -lpthread
-+rsem-run-em : EM.o
-+ $(CC) $(CFLAGS) -o rsem-run-em EM.o -lbam -lz -lpthread
-
--rsem-tbam2gbam : tbam2gbam.cpp sam/libbam.a
-- $(CC) $(CFLAGS) -O3 tbam2gbam.cpp sam/libbam.a -lz -lpthread -o $@
-+rsem-tbam2gbam : tbam2gbam.cpp
-+ $(CC) $(CFLAGS) -O3 tbam2gbam.cpp -lbam -lz -lpthread -o $@
-
--rsem-bam2wig : wiggle.o sam/libbam.a bam2wig.cpp
-- $(CC) $(CFLAGS) -O3 bam2wig.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@
-+rsem-bam2wig : wiggle.o bam2wig.cpp
-+ $(CC) $(CFLAGS) -O3 bam2wig.cpp wiggle.o -lbam -lz -lpthread -o $@
-
--rsem-bam2readdepth : wiggle.o sam/libbam.a bam2readdepth.cpp
-- $(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o sam/libbam.a -lz -lpthread -o $@
-+rsem-bam2readdepth : wiggle.o bam2readdepth.cpp
-+ $(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o -lbam -lz -lpthread -o $@
-
- rsem-simulate-reads : simulation.o
- $(CC) $(CFLAGS) -o rsem-simulate-reads simulation.o
-@@ -72,14 +72,14 @@ rsem-run-gibbs : Gibbs.o
- rsem-calculate-credibility-intervals : calcCI.o
- $(CC) $(CFLAGS) -o rsem-calculate-credibility-intervals calcCI.o -lpthread
-
--rsem-get-unique : getUnique.cpp sam/libbam.a
-- $(CC) $(CFLAGS) -O3 getUnique.cpp sam/libbam.a -lz -lpthread -o $@
-+rsem-get-unique : getUnique.cpp
-+ $(CC) $(CFLAGS) -O3 getUnique.cpp -lbam -lz -lpthread -o $@
-
--rsem-sam-validator : samValidator.cpp sam/libbam.a
-- $(CC) $(CFLAGS) -O3 samValidator.cpp sam/libbam.a -lz -lpthread -o $@
-+rsem-sam-validator : samValidator.cpp
-+ $(CC) $(CFLAGS) -O3 samValidator.cpp -lbam -lz -lpthread -o $@
-
--rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp sam/libbam.a
-- $(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp sam/libbam.a -lz -lpthread -o $@
-+rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp
-+ $(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp -lbam -lz -lpthread -o $@
-
- clean :
- rm -f *.o *~ $(PROGRAMS)
-
-From 5402b88c269df79ee245c1c59e15f3c8282a0220 Mon Sep 17 00:00:00 2001
-From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
-Date: Wed, 22 Apr 2015 15:33:02 +0200
-Subject: [PATCH 5/7] do not repeat target name, use $@ instead
-
----
- Makefile | 18 +++++++++---------
- 1 file changed, 9 insertions(+), 9 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index a87cc4d..7ec90a3 100644
---- a/Makefile
-+++ b/Makefile
-@@ -37,22 +37,22 @@ wiggle.o: wiggle.cpp
-
-
- rsem-extract-reference-transcripts : extractRef.cpp
-- $(CC) $(CFLAGS) -O3 extractRef.cpp -o rsem-extract-reference-transcripts
-+ $(CC) $(CFLAGS) -O3 extractRef.cpp -o $@
-
- rsem-synthesis-reference-transcripts : synthesisRef.cpp
-- $(CC) $(CFLAGS) -O3 synthesisRef.cpp -o rsem-synthesis-reference-transcripts
-+ $(CC) $(CFLAGS) -O3 synthesisRef.cpp -o $@
-
- rsem-preref : preRef.o
-- $(CC) $(CFLAGS) preRef.o -o rsem-preref
-+ $(CC) $(CFLAGS) preRef.o -o $@
-
- rsem-parse-alignments : parseIt.o
-- $(CC) $(CFLAGS) -o rsem-parse-alignments parseIt.o -lbam -lz -lpthread
-+ $(CC) $(CFLAGS) -o $@ parseIt.o -lbam -lz -lpthread
-
- rsem-build-read-index : buildReadIndex.cpp
-- $(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o rsem-build-read-index
-+ $(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o $@
-
- rsem-run-em : EM.o
-- $(CC) $(CFLAGS) -o rsem-run-em EM.o -lbam -lz -lpthread
-+ $(CC) $(CFLAGS) -o $@ EM.o -lbam -lz -lpthread
-
- rsem-tbam2gbam : tbam2gbam.cpp
- $(CC) $(CFLAGS) -O3 tbam2gbam.cpp -lbam -lz -lpthread -o $@
-@@ -64,13 +64,13 @@ rsem-bam2readdepth : wiggle.o bam2readdepth.cpp
- $(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o -lbam -lz -lpthread -o $@
-
- rsem-simulate-reads : simulation.o
-- $(CC) $(CFLAGS) -o rsem-simulate-reads simulation.o
-+ $(CC) $(CFLAGS) -o $@ simulation.o
-
- rsem-run-gibbs : Gibbs.o
-- $(CC) $(CFLAGS) -o rsem-run-gibbs Gibbs.o -lpthread
-+ $(CC) $(CFLAGS) -o $@ Gibbs.o -lpthread
-
- rsem-calculate-credibility-intervals : calcCI.o
-- $(CC) $(CFLAGS) -o rsem-calculate-credibility-intervals calcCI.o -lpthread
-+ $(CC) $(CFLAGS) -o $@ calcCI.o -lpthread
-
- rsem-get-unique : getUnique.cpp
- $(CC) $(CFLAGS) -O3 getUnique.cpp -lbam -lz -lpthread -o $@
-
-From f60784bc7aa303cc825bd87dd3f5d7d26c51bded Mon Sep 17 00:00:00 2001
-From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
-Date: Wed, 22 Apr 2015 15:44:53 +0200
-Subject: [PATCH 6/7] use automatic variables to refer to prerequisites
-
----
- Makefile | 44 ++++++++++++++++++++++----------------------
- 1 file changed, 22 insertions(+), 22 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index 7ec90a3..6540d81 100644
---- a/Makefile
-+++ b/Makefile
-@@ -15,71 +15,71 @@ ebseq :
-
-
- calcCI.o : calcCI.cpp
-- $(CC) $(CFLAGS) $(COFLAGS) calcCI.cpp
-+ $(CC) $(CFLAGS) $(COFLAGS) $<
-
- EM.o : EM.cpp
-- $(CC) $(CFLAGS) $(COFLAGS) EM.cpp
-+ $(CC) $(CFLAGS) $(COFLAGS) $<
-
- Gibbs.o : Gibbs.cpp
-- $(CC) $(CFLAGS) $(COFLAGS) Gibbs.cpp
-+ $(CC) $(CFLAGS) $(COFLAGS) $<
-
- preRef.o : preRef.cpp
-- $(CC) $(CFLAGS) $(COFLAGS) preRef.cpp
-+ $(CC) $(CFLAGS) $(COFLAGS) $<
-
- parseIt.o : parseIt.cpp
-- $(CC) $(CFLAGS) -O2 -c parseIt.cpp
-+ $(CC) $(CFLAGS) -O2 -c $<
-
- simulation.o : simulation.cpp
-- $(CC) $(CFLAGS) $(COFLAGS) simulation.cpp
-+ $(CC) $(CFLAGS) $(COFLAGS) $<
-
- wiggle.o: wiggle.cpp
-- $(CC) $(CFLAGS) $(COFLAGS) wiggle.cpp
-+ $(CC) $(CFLAGS) $(COFLAGS) $<
-
-
- rsem-extract-reference-transcripts : extractRef.cpp
-- $(CC) $(CFLAGS) -O3 extractRef.cpp -o $@
-+ $(CC) $(CFLAGS) -O3 $< -o $@
-
- rsem-synthesis-reference-transcripts : synthesisRef.cpp
-- $(CC) $(CFLAGS) -O3 synthesisRef.cpp -o $@
-+ $(CC) $(CFLAGS) -O3 $< -o $@
-
- rsem-preref : preRef.o
-- $(CC) $(CFLAGS) preRef.o -o $@
-+ $(CC) $(CFLAGS) $< -o $@
-
- rsem-parse-alignments : parseIt.o
-- $(CC) $(CFLAGS) -o $@ parseIt.o -lbam -lz -lpthread
-+ $(CC) $(CFLAGS) -o $@ $< -lbam -lz -lpthread
-
- rsem-build-read-index : buildReadIndex.cpp
-- $(CC) $(CFLAGS) -O3 buildReadIndex.cpp -o $@
-+ $(CC) $(CFLAGS) -O3 $< -o $@
-
- rsem-run-em : EM.o
-- $(CC) $(CFLAGS) -o $@ EM.o -lbam -lz -lpthread
-+ $(CC) $(CFLAGS) -o $@ $< -lbam -lz -lpthread
-
- rsem-tbam2gbam : tbam2gbam.cpp
-- $(CC) $(CFLAGS) -O3 tbam2gbam.cpp -lbam -lz -lpthread -o $@
-+ $(CC) $(CFLAGS) -O3 $< -lbam -lz -lpthread -o $@
-
- rsem-bam2wig : wiggle.o bam2wig.cpp
-- $(CC) $(CFLAGS) -O3 bam2wig.cpp wiggle.o -lbam -lz -lpthread -o $@
-+ $(CC) $(CFLAGS) -O3 $^ -lbam -lz -lpthread -o $@
-
- rsem-bam2readdepth : wiggle.o bam2readdepth.cpp
-- $(CC) $(CFLAGS) -O3 bam2readdepth.cpp wiggle.o -lbam -lz -lpthread -o $@
-+ $(CC) $(CFLAGS) -O3 $^ -lbam -lz -lpthread -o $@
-
- rsem-simulate-reads : simulation.o
-- $(CC) $(CFLAGS) -o $@ simulation.o
-+ $(CC) $(CFLAGS) -o $@ $<
-
- rsem-run-gibbs : Gibbs.o
-- $(CC) $(CFLAGS) -o $@ Gibbs.o -lpthread
-+ $(CC) $(CFLAGS) -o $@ $< -lpthread
-
- rsem-calculate-credibility-intervals : calcCI.o
-- $(CC) $(CFLAGS) -o $@ calcCI.o -lpthread
-+ $(CC) $(CFLAGS) -o $@ $< -lpthread
-
- rsem-get-unique : getUnique.cpp
-- $(CC) $(CFLAGS) -O3 getUnique.cpp -lbam -lz -lpthread -o $@
-+ $(CC) $(CFLAGS) -O3 $< -lbam -lz -lpthread -o $@
-
- rsem-sam-validator : samValidator.cpp
-- $(CC) $(CFLAGS) -O3 samValidator.cpp -lbam -lz -lpthread -o $@
-+ $(CC) $(CFLAGS) -O3 $< -lbam -lz -lpthread -o $@
-
- rsem-scan-for-paired-end-reads : scanForPairedEndReads.cpp
-- $(CC) $(CFLAGS) -O3 scanForPairedEndReads.cpp -lbam -lz -lpthread -o $@
-+ $(CC) $(CFLAGS) -O3 $< -lbam -lz -lpthread -o $@
-
- clean :
- rm -f *.o *~ $(PROGRAMS)
-
-From 0cf9721077f67fb4ca15fdc59cbfbf24a944debd Mon Sep 17 00:00:00 2001
-From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
-Date: Wed, 22 Apr 2015 15:49:19 +0200
-Subject: [PATCH 7/7] split long line
-
----
- Makefile | 17 ++++++++++++++++-
- 1 file changed, 16 insertions(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 6540d81..0ab04a5 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,7 +1,22 @@
- CC = g++
- CFLAGS = -Wall -I. -I./sam -I./boost -L./sam
- COFLAGS = -O3 -ffast-math -c
--PROGRAMS = rsem-extract-reference-transcripts rsem-synthesis-reference-transcripts rsem-preref rsem-parse-alignments rsem-build-read-index rsem-run-em rsem-tbam2gbam rsem-run-gibbs rsem-calculate-credibility-intervals rsem-simulate-reads rsem-bam2wig rsem-get-unique rsem-bam2readdepth rsem-sam-validator rsem-scan-for-paired-end-reads
-+PROGRAMS = \
-+ rsem-extract-reference-transcripts \
-+ rsem-synthesis-reference-transcripts \
-+ rsem-preref \
-+ rsem-parse-alignments \
-+ rsem-build-read-index \
-+ rsem-run-em \
-+ rsem-tbam2gbam \
-+ rsem-run-gibbs \
-+ rsem-calculate-credibility-intervals \
-+ rsem-simulate-reads \
-+ rsem-bam2wig \
-+ rsem-get-unique \
-+ rsem-bam2readdepth \
-+ rsem-sam-validator \
-+ rsem-scan-for-paired-end-reads
-
- .PHONY : all ebseq clean
-