Merge branch 'master' into staging
[jackhill/guix/guix.git] / gnu / packages / gnuzilla.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
3 ;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
4 ;;; Copyright © 2014, 2015, 2016, 2017 Mark H Weaver <mhw@netris.org>
5 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
6 ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
7 ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
8 ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
9 ;;; Copyright © 2017 ng0 <ng0@no-reply.pragmatique.xyz>
10 ;;;
11 ;;; This file is part of GNU Guix.
12 ;;;
13 ;;; GNU Guix is free software; you can redistribute it and/or modify it
14 ;;; under the terms of the GNU General Public License as published by
15 ;;; the Free Software Foundation; either version 3 of the License, or (at
16 ;;; your option) any later version.
17 ;;;
18 ;;; GNU Guix is distributed in the hope that it will be useful, but
19 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
20 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 ;;; GNU General Public License for more details.
22 ;;;
23 ;;; You should have received a copy of the GNU General Public License
24 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
25
26 (define-module (gnu packages gnuzilla)
27 #:use-module ((srfi srfi-1) #:hide (zip))
28 #:use-module (ice-9 match)
29 #:use-module (gnu packages)
30 #:use-module ((guix licenses) #:prefix license:)
31 #:use-module (guix packages)
32 #:use-module (guix download)
33 #:use-module (guix utils)
34 #:use-module (guix build-system gnu)
35 #:use-module (gnu packages autotools)
36 #:use-module (gnu packages base)
37 #:use-module (gnu packages databases)
38 #:use-module (gnu packages glib)
39 #:use-module (gnu packages gtk)
40 #:use-module (gnu packages gnome)
41 #:use-module (gnu packages libcanberra)
42 #:use-module (gnu packages cups)
43 #:use-module (gnu packages kerberos)
44 #:use-module (gnu packages linux)
45 #:use-module (gnu packages perl)
46 #:use-module (gnu packages pkg-config)
47 #:use-module (gnu packages compression)
48 #:use-module (gnu packages fontutils)
49 #:use-module (gnu packages libevent)
50 #:use-module (gnu packages libreoffice) ;for hunspell
51 #:use-module (gnu packages image)
52 #:use-module (gnu packages libffi)
53 #:use-module (gnu packages pulseaudio)
54 #:use-module (gnu packages python)
55 #:use-module (gnu packages xorg)
56 #:use-module (gnu packages gl)
57 #:use-module (gnu packages assembly)
58 #:use-module (gnu packages icu4c)
59 #:use-module (gnu packages video)
60 #:use-module (gnu packages xdisorg)
61 #:use-module (gnu packages readline))
62
63 (define-public mozjs
64 (package
65 (name "mozjs")
66 (version "17.0.0")
67 (source (origin
68 (method url-fetch)
69 (uri (string-append
70 "https://ftp.mozilla.org/pub/mozilla.org/js/"
71 name version ".tar.gz"))
72 (sha256
73 (base32
74 "1fig2wf4f10v43mqx67y68z6h77sy900d1w0pz9qarrqx57rc7ij"))
75 (patches (search-patches "mozjs17-aarch64-support.patch"))
76 (modules '((guix build utils)))
77 (snippet
78 ;; Fix incompatibility with Perl 5.22+.
79 '(substitute* '("js/src/config/milestone.pl")
80 (("defined\\(@TEMPLATE_FILE)") "@TEMPLATE_FILE")))))
81 (build-system gnu-build-system)
82 (native-inputs
83 `(("perl" ,perl)
84 ("pkg-config" ,pkg-config)
85 ("python" ,python-2)))
86 (propagated-inputs
87 `(("nspr" ,nspr))) ; in the Requires.private field of mozjs-17.0.pc
88 (inputs
89 `(("zlib" ,zlib)))
90 (arguments
91 `(;; XXX: parallel build fails, lacking:
92 ;; mkdir -p "system_wrapper_js/"
93 #:parallel-build? #f
94 #:phases
95 (modify-phases %standard-phases
96 (add-after 'unpack 'delete-timedout-test
97 ;; This test times out on slower hardware.
98 (lambda _ (delete-file "js/src/jit-test/tests/basic/bug698584.js")))
99 (add-before 'configure 'chdir
100 (lambda _
101 (chdir "js/src")
102 #t))
103 (replace 'configure
104 ;; configure fails if it is followed by SHELL and CONFIG_SHELL
105 (lambda* (#:key outputs #:allow-other-keys)
106 (let ((out (assoc-ref outputs "out")))
107 (setenv "SHELL" (which "sh"))
108 (setenv "CONFIG_SHELL" (which "sh"))
109 (zero? (system*
110 "./configure" (string-append "--prefix=" out)
111 ,@(if (string=? "aarch64-linux"
112 (%current-system))
113 '("--host=aarch64-unknown-linux-gnu")
114 '())))))))))
115 (home-page
116 "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey")
117 (synopsis "Mozilla javascript engine")
118 (description "SpiderMonkey is Mozilla's JavaScript engine written
119 in C/C++.")
120 (license license:mpl2.0))) ; and others for some files
121
122 (define-public mozjs-24
123 (package (inherit mozjs)
124 (name "mozjs")
125 (version "24.2.0")
126 (source (origin
127 (method url-fetch)
128 (uri (string-append
129 "https://ftp.mozilla.org/pub/mozilla.org/js/"
130 name "-" version ".tar.bz2"))
131 (sha256
132 (base32
133 "1n1phk8r3l8icqrrap4czplnylawa0ddc2cc4cgdz46x3lrkybz6"))
134 (modules '((guix build utils)))
135 (patches (search-patches "mozjs24-aarch64-support.patch"))
136 (snippet
137 ;; Fix incompatibility with Perl 5.22+.
138 '(substitute* '("js/src/config/milestone.pl")
139 (("defined\\(@TEMPLATE_FILE)") "@TEMPLATE_FILE")))))
140 (arguments
141 (substitute-keyword-arguments (package-arguments mozjs)
142 ((#:phases phases)
143 `(modify-phases ,phases
144 (replace 'configure
145 (lambda* (#:key outputs #:allow-other-keys)
146 (let ((out (assoc-ref outputs "out")))
147 ;; configure fails if it is followed by SHELL and CONFIG_SHELL
148 (setenv "SHELL" (which "sh"))
149 (setenv "CONFIG_SHELL" (which "sh"))
150 (zero? (system* "./configure"
151 (string-append "--prefix=" out)
152 "--with-system-nspr"
153 "--enable-system-ffi"
154 "--enable-threadsafe"
155 ,@(if (string=? "aarch64-linux"
156 (%current-system))
157 '("--host=aarch64-unknown-linux-gnu")
158 '()))))))))))
159 (inputs
160 `(("libffi" ,libffi)
161 ("zlib" ,zlib)))))
162
163 (define-public mozjs-38
164 (package
165 (inherit mozjs)
166 (name "mozjs")
167 (version "38.2.1.rc0")
168 (source (origin
169 (method url-fetch)
170 (uri (string-append
171 "https://people.mozilla.org/~sstangl/"
172 name "-" version ".tar.bz2"))
173 (sha256
174 (base32
175 "0p4bmbpgkfsj54xschcny0a118jdrdgg0q29rwxigg3lh5slr681"))
176 (patches
177 (search-patches
178 ;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1269317 for
179 ;; GCC 6 compatibility.
180
181 "mozjs38-version-detection.patch" ; for 0ad
182 "mozjs38-tracelogger.patch"
183
184 ;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1339931.
185 "mozjs38-pkg-config-version.patch"
186 "mozjs38-shell-version.patch"))
187 (modules '((guix build utils)))
188 (snippet
189 '(begin
190 ;; Fix incompatibility with sed 4.4.
191 (substitute* "js/src/configure"
192 (("\\^\\[:space:\\]") "^[[:space:]]"))
193
194 ;; The headers are symlinks to files that are in /tmp, so they
195 ;; end up broken. Copy them instead.
196 (substitute*
197 "python/mozbuild/mozbuild/backend/recursivemake.py"
198 (("\\['dist_include'\\].add_symlink")
199 "['dist_include'].add_copy"))
200
201 ;; Remove bundled libraries.
202 (for-each delete-file-recursively
203 '("intl"
204 "js/src/ctypes/libffi"
205 "js/src/ctypes/libffi-patches"
206 "modules/zlib"))
207 #t))))
208 (arguments
209 `(;; XXX: parallel build fails, lacking:
210 ;; mkdir -p "system_wrapper_js/"
211 #:parallel-build? #f
212 ;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1008470.
213 #:tests? #f
214 #:phases
215 (modify-phases %standard-phases
216 (replace 'configure
217 (lambda* (#:key outputs #:allow-other-keys)
218 (let ((out (assoc-ref outputs "out")))
219 (chdir "js/src")
220 (setenv "SHELL" (which "sh"))
221 (setenv "CONFIG_SHELL" (which "sh"))
222 (zero? (system* "./configure"
223 (string-append "--prefix=" out)
224 "--enable-ctypes"
225 "--enable-gcgenerational"
226 "--enable-optimize"
227 "--enable-pie"
228 "--enable-readline"
229 "--enable-shared-js"
230 "--enable-system-ffi"
231 "--enable-threadsafe"
232 "--enable-xterm-updates"
233 "--with-system-icu"
234 "--with-system-nspr"
235 "--with-system-zlib"
236
237 ;; Intl API requires bundled ICU.
238 "--without-intl-api"))))))))
239 (native-inputs
240 `(("perl" ,perl)
241 ("pkg-config" ,pkg-config)
242 ("python-2" ,python-2)))
243 (inputs
244 `(("libffi" ,libffi)
245 ("readline" ,readline)
246 ("icu4c" ,icu4c)
247 ("zlib" ,zlib)))))
248
249 (define-public nspr
250 (package
251 (name "nspr")
252 (version "4.16")
253 (source (origin
254 (method url-fetch)
255 (uri (string-append
256 "https://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v"
257 version "/src/nspr-" version ".tar.gz"))
258 (sha256
259 (base32
260 "1l9wlnb9y0bzicv448jjl9kssqn044dc2qrkwzp4ll35fvch4ccv"))))
261 (build-system gnu-build-system)
262 (native-inputs
263 `(("perl" ,perl)))
264 (arguments
265 `(#:tests? #f ; no check target
266 #:configure-flags (list "--enable-64bit"
267 (string-append "LDFLAGS=-Wl,-rpath="
268 (assoc-ref %outputs "out")
269 "/lib"))
270 #:phases (modify-phases %standard-phases
271 (add-before 'configure 'chdir
272 (lambda _ (chdir "nspr") #t)))))
273 (home-page
274 "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR")
275 (synopsis "Netscape API for system level and libc-like functions")
276 (description "Netscape Portable Runtime (NSPR) provides a
277 platform-neutral API for system level and libc-like functions. It is used
278 in the Mozilla clients.")
279 (license license:mpl2.0)))
280
281 (define-public nss
282 (package
283 (name "nss")
284 (version "3.32")
285 (source (origin
286 (method url-fetch)
287 (uri (let ((version-with-underscores
288 (string-join (string-split version #\.) "_")))
289 (string-append
290 "https://ftp.mozilla.org/pub/mozilla.org/security/nss/"
291 "releases/NSS_" version-with-underscores "_RTM/src/"
292 "nss-" version ".tar.gz")))
293 (sha256
294 (base32
295 "0dfkgvah0ji8b8lpxyy2w0b3lyz5ldmryii4z7j2bfwnrj0z7iim"))
296 ;; Create nss.pc and nss-config.
297 (patches (search-patches "nss-pkgconfig.patch"
298 "nss-increase-test-timeout.patch"))))
299 (build-system gnu-build-system)
300 (outputs '("out" "bin"))
301 (arguments
302 `(#:parallel-build? #f ; not supported
303 #:make-flags
304 (let* ((out (assoc-ref %outputs "out"))
305 (nspr (string-append (assoc-ref %build-inputs "nspr")))
306 (rpath (string-append "-Wl,-rpath=" out "/lib/nss")))
307 (list "-C" "nss" (string-append "PREFIX=" out)
308 "NSDISTMODE=copy"
309 "NSS_USE_SYSTEM_SQLITE=1"
310 (string-append "NSPR_INCLUDE_DIR=" nspr "/include/nspr")
311 ;; Add $out/lib/nss to RPATH.
312 (string-append "RPATH=" rpath)
313 (string-append "LDFLAGS=" rpath)))
314 #:modules ((guix build gnu-build-system)
315 (guix build utils)
316 (ice-9 ftw)
317 (ice-9 match)
318 (srfi srfi-26))
319 #:phases
320 (modify-phases %standard-phases
321 (replace 'configure
322 (lambda _
323 (setenv "CC" "gcc")
324 ;; Tells NSS to build for the 64-bit ABI if we are 64-bit system.
325 ,@(match (%current-system)
326 ((or "x86_64-linux" "aarch64-linux")
327 `((setenv "USE_64" "1")))
328 (_
329 '()))
330 #t))
331 (replace 'check
332 (lambda _
333 ;; Use 127.0.0.1 instead of $HOST.$DOMSUF as HOSTADDR for testing.
334 ;; The later requires a working DNS or /etc/hosts.
335 (setenv "DOMSUF" "(none)")
336 (setenv "USE_IP" "TRUE")
337 (setenv "IP_ADDRESS" "127.0.0.1")
338 (zero? (system* "./nss/tests/all.sh"))))
339 (replace 'install
340 (lambda* (#:key outputs #:allow-other-keys)
341 (let* ((out (assoc-ref outputs "out"))
342 (bin (string-append (assoc-ref outputs "bin") "/bin"))
343 (inc (string-append out "/include/nss"))
344 (lib (string-append out "/lib/nss"))
345 (obj (match (scandir "dist" (cut string-suffix? "OBJ" <>))
346 ((obj) (string-append "dist/" obj)))))
347 ;; Install nss-config to $out/bin.
348 (install-file (string-append obj "/bin/nss-config")
349 (string-append out "/bin"))
350 (delete-file (string-append obj "/bin/nss-config"))
351 ;; Install nss.pc to $out/lib/pkgconfig.
352 (install-file (string-append obj "/lib/pkgconfig/nss.pc")
353 (string-append out "/lib/pkgconfig"))
354 (delete-file (string-append obj "/lib/pkgconfig/nss.pc"))
355 (rmdir (string-append obj "/lib/pkgconfig"))
356 ;; Install other files.
357 (copy-recursively "dist/public/nss" inc)
358 (copy-recursively (string-append obj "/bin") bin)
359 (copy-recursively (string-append obj "/lib") lib)
360
361 ;; FIXME: libgtest1.so is installed in the above step, and it's
362 ;; (unnecessarily) linked with several NSS libraries, but
363 ;; without the needed rpaths, causing the 'validate-runpath'
364 ;; phase to fail. Here we simply delete libgtest1.so, since it
365 ;; seems to be used only during the tests.
366 (delete-file (string-append lib "/libgtest1.so"))
367 (delete-file (string-append lib "/libgtestutil.so"))
368
369 #t))))))
370 (inputs
371 `(("sqlite" ,sqlite)
372 ("zlib" ,zlib)))
373 (propagated-inputs `(("nspr" ,nspr))) ; required by nss.pc.
374 (native-inputs `(("perl" ,perl)))
375
376 ;; The NSS test suite takes around 48 hours on Loongson 3A (MIPS) when
377 ;; another build is happening concurrently on the same machine.
378 (properties '((timeout . 216000))) ; 60 hours
379
380 (home-page
381 "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS")
382 (synopsis "Network Security Services")
383 (description
384 "Network Security Services (NSS) is a set of libraries designed to support
385 cross-platform development of security-enabled client and server applications.
386 Applications built with NSS can support SSL v2 and v3, TLS, PKCS #5, PKCS #7,
387 PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other security
388 standards.")
389 (license license:mpl2.0)))
390
391 (define (mozilla-patch file-name changeset hash)
392 "Return an origin for CHANGESET from the mozilla-esr52 repository."
393 (origin
394 (method url-fetch)
395 (uri (string-append "https://hg.mozilla.org/releases/mozilla-esr52/raw-rev/"
396 changeset))
397 (sha256 (base32 hash))
398 (file-name file-name)))
399
400 (define-public icecat
401 (package
402 (name "icecat")
403 (version "52.1.0-gnu1")
404 (source
405 (origin
406 (method url-fetch)
407 (uri (string-append "mirror://gnu/gnuzilla/"
408 (first (string-split version #\-))
409 "/" name "-" version ".tar.bz2"))
410 (sha256
411 (base32
412 "1wr4bc5806xzyqpi6m4rjaf61za6ylpx4g0kfk95c6yw9yhg5vqb"))
413 (patches
414 (list
415 (search-patch "icecat-avoid-bundled-libraries.patch")
416 (mozilla-patch "icecat-bug-1342366.patch" "fb43f6690a26" "1vnkjpq2bcqwzmjkgyqv8wj0ndrrsyix3qy1rsb5is6pjmi9sbaa")
417 (mozilla-patch "icecat-bug-1343818.patch" "90f870bbec29" "0mbki955f71n4yr9p0yc7kh5jwq7vs4bs4rhaazdncirbr564hm6")
418 (mozilla-patch "icecat-bug-1348454.patch" "c1cd8a02669f" "1wf0107763rw45kxkak7478vlax06ay7076cbm7ysxl7vijbr52w")
419 (mozilla-patch "icecat-CVE-2017-5470-pt01.patch" "2553531f83b9" "0ibf59pa8czdyhc25sas6zhh2gf1k8vr8fklis2b1ms3n1qnzrha")
420 (mozilla-patch "icecat-bug-1355873.patch" "9ee455ddcd68" "0d38hi4556635g9ag805vfyffdgfsp4a8v3d9ldffdp99ypv2ixj")
421 (mozilla-patch "icecat-CVE-2017-5470-pt02.patch" "6472c7006a73" "1fgydas23fzj49n4g43133bgjn98b2h38bii4knl7z7pm3fs2wws")
422 (mozilla-patch "icecat-CVE-2017-5470-pt03.patch" "0d5a26b29816" "03mkghl9i83jk1axr8bvw8la6shbggkabf23if8a9vi5jdv8182x")
423 (mozilla-patch "icecat-bug-1357092.patch" "e78c943af07f" "0r830k6hja8z9rjk2nqjg8zfzr0wjcnic8rddh7jmc1inr1w3crm")
424 (mozilla-patch "icecat-CVE-2017-5470-pt04.patch" "d7c06f2d0d13" "1ahyns5v37w91bilvb3pa8kkdzkkn3fcxmi49jr5bycjlawljrm4")
425 (mozilla-patch "icecat-CVE-2017-5470-pt05.patch" "9071c7d4cc9c" "12128sf8s3zwv2w16kfl5jry9d6ky7hvps2006184rg23p32aj6n")
426 (mozilla-patch "icecat-bug-1336979.patch" "8bbc7b586d68" "0c13imyp1nq18in3yb1zcyi41b69svh4fn8msyj0c2lhbf8qnqcw")
427 (mozilla-patch "icecat-CVE-2017-5470-pt06.patch" "6d80ca63ff8b" "0s893fn6v0p323lcnl4cbkg1zd7gs1p0bw76ki6cmiapkn63gs13")
428 (mozilla-patch "icecat-CVE-2017-7752.patch" "43d7b98d8743" "1dhgy1jkvn3c4k27hbv8p16w7l09b8hd4w9zzpk8dpn4h78ncs3h")
429 (mozilla-patch "icecat-CVE-2017-5031.patch" "bd4fcdee9a06" "0xz1r342023a0bsllhjbzn6v75lpqznwacqyikb7q8i4hxkxh78a")
430 (mozilla-patch "icecat-bug-1346499.patch" "747fd6c81983" "00iscyn4wr69205ppiaghlnd32845f5lcsl303v0fcdd4d1v04vc")
431 (mozilla-patch "icecat-bug-1334443-pt1.patch" "16201e8478df" "1k91xaai25vn1svkaldnsd2s8br3fgvnk5l54k3n3lk3m5vj55hv")
432 (mozilla-patch "icecat-bug-1334443-pt2.patch" "f100e5cf3bcb" "1cgbbbnkrd3ydfw99rhnpqdp5zq65537mg8sa1s9ajxkjjd1dkwj")
433 (mozilla-patch "icecat-bug-1354810.patch" "e579ef6e8d11" "0cmrh8dl85lzjxpbni08xbs8qq15sljnpg70a7rsl0jdbgih3mdx")
434 (mozilla-patch "icecat-bug-1356755.patch" "4a3fce67b52d" "126i9nwxsb3sjwb7dvhafacq86glnhx7r7jjv0h9v21s1w0kx4wj")
435 (mozilla-patch "icecat-CVE-2017-7765.patch" "7902fea300b8" "1jkrl8hdycsi17dd1m1vvl6gm1skhpf10q2m29zwfr8l40fd6a3q")
436 (mozilla-patch "icecat-bug-1353204.patch" "b5a21502aeff" "13rbrhvr37w95av9d4hkgi913nq0j6k2iijydylvprcn18cwibp0")
437 (mozilla-patch "icecat-bug-1028195.patch" "69a5ca2bf867" "0q8cgi6837ikpg7gsvywmzhq0i102845apcbrd6mw0205qqsnw5c")
438 (mozilla-patch "icecat-bug-1347835.patch" "bc635f45af37" "1fny422l6yc80901x6swybr8nk0in1wxfgy97ky4bdkcqlnmzpqv")
439 (mozilla-patch "icecat-bug-1241066.patch" "b922ca70cce5" "09hcf9rm7ng3vj5y267w0c9h6pqinnz8gjlkwx1337xh43mdvqjv")
440 (mozilla-patch "icecat-CVE-2017-5470-pt07.patch" "1ce6d0652921" "163ji64a86h682frh1jq016w1mjf8g24r8cni0irsdmiihis7zxc")
441 (mozilla-patch "icecat-bug-1324140.patch" "8886f9cd5dd3" "0byabs9md8r3pc4r67sv2759427n1za0gfayln40nx47n2p52kmg")
442 (mozilla-patch "icecat-CVE-2017-5470-pt08.patch" "ad995e90916b" "02nq9sg675p26z99nr2pykbz51hi2phf0gmrb1bjpq9pjbll7gsa")
443 (mozilla-patch "icecat-CVE-2017-7749.patch" "4ae71415fecf" "0yfkkdkkimad9a3w734xx85lb7hrl870c8k8an7w78fq3vl3fjnd")
444 (mozilla-patch "icecat-CVE-2017-7751.patch" "24cbb7f2e0ff" "006f0zhz5nxs72q9plwzhq4l79b47svzizvv510m5g2krsfrccza")
445 (mozilla-patch "icecat-CVE-2017-7750.patch" "89c7fb6c5be3" "19650nmc4vn1prbpn5h06kz9d1al279xkc23v39577h4zhdrknkj")
446 (mozilla-patch "icecat-bug-1337810.patch" "0f6dd3564c76" "1sxajqh6r7fjs45xhvjwg94smpvyvplh3rdvq11d3q5m9v4kg7mz")
447 (mozilla-patch "icecat-CVE-2017-5470-pt09.patch" "145905da25d3" "0c2q9f000snpm9x0qda2y0awrsm313iwxbv0kh33ca0kpza49a76")
448 (mozilla-patch "icecat-bug-1345355.patch" "c5012009a0b2" "0m772bgrwb8iwv2bdgx694ybg5wgbf58xg5v245x0p7gwhgwiwmr")
449 (mozilla-patch "icecat-bug-1351340.patch" "047f19a1b9a0" "0qjnhybibs3cpcba3ga4g7d4c0w716xa9jf87y2ir8yz7dw1f9vl")
450 (mozilla-patch "icecat-bug-1056322.patch" "f076a30f6c29" "0xgskjl6zmxi3v4l0f3wlas0qb2403fin5lv1hi3jf2142ihpaml")
451 (mozilla-patch "icecat-bug-1355414.patch" "28e09d4ac3e9" "06clr2kwz28nyjlj13y036x6rxwh6frdh11aq6kbm1nj6s01i9zl")
452 (mozilla-patch "icecat-bug-1313977.patch" "4c0b09f70aea" "04jq1xrlhj04n5bgh93xkbqwnh01pswfjhv81zk7i87c7xz6h92q")
453 (mozilla-patch "icecat-bug-1357366.patch" "0b855945ce34" "0va8kqlgx6qhq2qrawkcm66kqrwwpmxblyjp3c7ifplxd0j0ijaf")
454 (mozilla-patch "icecat-bug-1338574-pt0.patch" "243d7bffa4f1" "1d1v68amhnygc0g4w1afs374pjs7z5fx5inyq8idawbh4kxfncq7")
455 (mozilla-patch "icecat-bug-1338574-pt1.patch" "337398a83aa5" "1141n7dhy9rh70sww8v58cbkba74xm5i75j1sgm5qwvkhh69qr5h")
456 (mozilla-patch "icecat-bug-1338574-pt2.patch" "50e120d7ac64" "0dbcaq27vsjlh7vm30c88rlhkx8c1195rnr01six40mymh09rhym")
457 (mozilla-patch "icecat-bug-1338574-pt3.patch" "2d4da5a366e8" "1761npkpw5zsm4q8rzfrg8m1ayrf8c857iq3vdd8rbqcswzv6xq0")
458 (mozilla-patch "icecat-bug-1338574-pt4.patch" "b10d9b0c187f" "044zq9gzw4v5r3ki8dwfjg9dznai0jch29y0xrxzb2rfr6yvx0sb")
459 (mozilla-patch "icecat-bug-1338574-pt5.patch" "697713a6841c" "1m9q4rh4ny945xsx3p3f5bg1izs9q58d71la5drj31z6kvbhnsi2")
460 (mozilla-patch "icecat-bug-1338574-pt6.patch" "1d14abf37cf8" "1xyja9hjb7qfqi7kh85bw5nxkhyzw1rijjhnh5pgr5z0v718kjyc")
461 (mozilla-patch "icecat-bug-1338574-pt7.patch" "5e85bc599d0c" "1pmhs3hmhkgj6q19padcbpi5qvgnhx6ib09zpcwxr8ll6lllxhig")
462 (mozilla-patch "icecat-bug-1152353.patch" "d893dea8e7b4" "1pbayv7np6z7hlkk1dhvx3ppkni7f8n3cz8hs67l3nssw214c1ih")
463 (mozilla-patch "icecat-bug-1345893.patch" "3a747480ead1" "0sxd23y9g77mx5indjs9isxnnrkin835qrh6dn62dlvbll8lgqi2")
464 (mozilla-patch "icecat-bug-1343172.patch" "c7b064f6b93a" "1sh10j3h8cnqi3rpr70lv2yz14zhy1v9ms4f64fmrbjlz7q09j6q")
465 (mozilla-patch "icecat-bug-1352348.patch" "1d86e96610a1" "02ybn2608v57pjh8kjgnhkg157asawjk5xia59qb63m5vfvrinwv")
466 (mozilla-patch "icecat-bug-1354308.patch" "c8ba3f911eb1" "0w70b8dmvqjn1d8sphfkwnbwii8nh2q5k48clkvbhn7kpc2890mi")
467 (mozilla-patch "icecat-bug-1335904.patch" "366cdd623cfb" "0gcmld4bplaakx6d50gw223lg1jjcni7866q1f2hxm0h1r9wwd3k")
468 (mozilla-patch "icecat-bug-1355340.patch" "6b174b41fa44" "0zdgfy0zsrs3cvfkmrhxw0mrfibpnb58xp3z8fapx5ja59wmcabs")
469 (mozilla-patch "icecat-bug-1360574-pt1.patch" "237eee780619" "1iw6z762zdc42kwjvv58a2cjc0s4kzwwy7838apl7y7cq85g0jg2")
470 (mozilla-patch "icecat-bug-1360574-pt2.patch" "46a5a4aac189" "1i553f9qvav0fn5avbp8912995pqbhzbzamxxfz8gn2ik17y3xly")
471 (mozilla-patch "icecat-bug-1358776.patch" "bd35fa23f79a" "12nicgwhcn63knmlcl0c2askn9sj35bfclaab3826pkd9yq5g4p5")
472 (mozilla-patch "icecat-CVE-2017-5470-pt10.patch" "c1314a709b41" "0klgrcyc20fig6rbm9znjpcnfsz6xnlp1v03fbvaww0riy2qm42k")
473 (mozilla-patch "icecat-bug-1359859.patch" "e38948fb79d6" "1sfyc5s9ndv6q72k8n9x0rvj4sz40k51iljrs42gwykzkjm2fx5m")
474 (mozilla-patch "icecat-bug-1342057.patch" "278bef1d7a64" "0zk18s9pnbwz9ankmc9mj4197s55j1jvax04ansqymmmc3a5ciif")
475 (mozilla-patch "icecat-CVE-2017-5470-pt11.patch" "218e0963406f" "0wqms5nany4sx2g4p01lbam7la2dyazz87dhv5hcsf8ifxrfww11")
476 (mozilla-patch "icecat-bug-1304566.patch" "188e39630fcd" "1bfxfgj5ywx4bcf91kwyrjh5ppiv59gadx4445achyabdi639l8d")
477 (mozilla-patch "icecat-bug-1356601.patch" "8191e403fedf" "1k4zmq0923f5dc3dwbz1q0bkcbm90ldwkczym366hgwadb2305nd")
478 (mozilla-patch "icecat-bug-1334097.patch" "fe2a2c7e88cb" "1rppaivaddigwk65krn8m9f9mcdkiiv28ws9n9zj62n0rc1shyvc")
479 (mozilla-patch "icecat-bug-1359051.patch" "8d7dbe5c6587" "14zh74bbld4s0jy0a48fi9acxkc236mh9wjid3vrf72yj6bi5xnp")
480 (mozilla-patch "icecat-bug-1359697.patch" "ca2b5274549f" "1ns7v70i1hfkxqnjhf9fp0lk9095hdcllg94j3dl1nfaif4w6vbf")
481 (mozilla-patch "icecat-bug-1343256.patch" "a30dd7dd6617" "1k078176fp8vz871wirjz9d3yx9l2lfl8p75c4905n3j3zv2297q")
482 (mozilla-patch "icecat-CVE-2017-7778.patch" "81b3ce7d37b3" "0ad0wqczy4kpggj6m3b8bzxi6ax340mik1mfawhkq89a1h2sfpxv")
483 (mozilla-patch "icecat-bug-1356179.patch" "66d8893f37f0" "0izl31lagvdv4qpb9gkjxvgpmxzw50x5bviap4l7bbnb56cv7d8p")
484 (mozilla-patch "icecat-CVE-2017-5472.patch" "aad883966edd" "058axnrwrbvy2h9r9pb766lyky45hb92rap142sbp17yz0sxfmww")
485 (mozilla-patch "icecat-bug-1355520.patch" "7ca2d8839f7a" "1xbmpvr2x720x9ghd5wgbg6lknbnhcyqmkkfamdf97mqcyizyr21")
486 (mozilla-patch "icecat-bug-1358469.patch" "4d432638c0f9" "0qpjmwik3dryjwmgfwmkqk0rs9rb2lafb2k9fc3pkjnrq5y0l9xg")
487 (mozilla-patch "icecat-CVE-2017-5470-pt12.patch" "f5967db0a0f3" "045wbvkm21kbm314dd6lbq2disiaf26kmsxi6brf442fd0028gwq")
488 (mozilla-patch "icecat-bug-1345910.patch" "ec6b6720e54e" "0lm15jl46mdlsds6947jsiyvhf9agb8hcdrqj2svc3kn9kzvyr2n")
489 (mozilla-patch "icecat-CVE-2017-5470-pt13.patch" "a4f8d8a12afa" "0d7sjc21af074rvgvijj42gmpjvcb1v1zlpgb3s7ky7w6wjr35vx")
490 (mozilla-patch "icecat-CVE-2017-7754.patch" "d07f24a72ce4" "1qbwska76b2zslb95wnx9v04znb6k9fqylr4ajyfqpwk1sr363hg")
491 (mozilla-patch "icecat-CVE-2017-7764.patch" "a6caa7628e36" "1yv5f4h8js9bry9krcx130w6ic8rdmmq4fap6va24kfx8qflg70h")
492 (mozilla-patch "icecat-bug-1237868.patch" "41138235d4ea" "0mcj4x2kmagwf5hp8xhczf04sxm995pk1zarc9yffk84z7fcrxkj")
493 (mozilla-patch "icecat-bug-1331335.patch" "b724283e3b31" "1xbb1vcdzfpcmrmxm8ihwzslh2vz15k0k601nvyhh6vgx270h1wn")
494 (mozilla-patch "icecat-bug-1367267.patch" "4c2f4d8b693e" "1hrndhfnz0vnjnspwh5mbvgl2j8d1cs62awp04wx2w6z4l4wrmbv")
495 (mozilla-patch "icecat-CVE-2017-7756.patch" "cce3fd607206" "1z97jw8jpfyx61jxf0j8nsplnna2c5bwihwnl9cvlc2cspp3kgp5")
496 (mozilla-patch "icecat-CVE-2017-5470-pt14.patch" "dc4e3c64d781" "1zd666k4qpdamly3av09k602pmirjcs9l6la6ba0qq9w9vfan3g5")
497 (mozilla-patch "icecat-CVE-2017-5470-pt15.patch" "379c348250e8" "0kvsyhi9j3bjx14ffr13dslqp8ghcgrz6ds2fikdkrrrk4syskd5")
498 (mozilla-patch "icecat-bug-1349531.patch" "70cd711c6ae8" "07hlby5xdvqy6jdqxydv5pwap8hhsycb19fgw5fan2xf9dhrfpb8")
499 (mozilla-patch "icecat-CVE-2017-5470-pt16.patch" "6e644bc1a57f" "1xp8b74wijfz198q4hdybldnwh3hh0vh33dc5s7489abmz4s5zjg")
500 (mozilla-patch "icecat-CVE-2017-7758.patch" "279bffa85beb" "0shf77l9id6s8cs8xbc0ii0ccd7n09jv20410kkqqz11m296dcjr")
501 (mozilla-patch "icecat-CVE-2017-7757.patch" "0abcbc6ef8f3" "045arb1b83a3yv358naznl15bnr4wgxxayv8d5gcxarcbrrvm5q4")
502 (mozilla-patch "icecat-CVE-2017-5470-pt17.patch" "e0261afd69b9" "0a19b24iq57430kpbsdvka9vyg6kwhnnqis1xsd6wh8gz0bw5l79")
503 (mozilla-patch "icecat-CVE-2017-5470-pt18.patch" "4ec931d4bf29" "0bq0hq41xhy9aqjra5m0flmpilinlkb088r6w1kly561ckjl1f9f")
504 (mozilla-patch "icecat-bug-1339826-pt1.patch" "9c29579fffe2" "0yfc764qrynh441wwim18cr6k0sazgrm77frcdnyks0hzf0y44d1")
505 (mozilla-patch "icecat-bug-1339826-pt2.patch" "be946ea1a75a" "0pw0y1sdckn5brm39sdg47hbda5432aw32c3xq26ism23im85191")
506 (mozilla-patch "icecat-bug-1339826-pt2.patch" "44b2fe592a90" "1v8mz3b40dp6l5qrgha4yibmrnx80pxsvdll6ky1k937yhbzjk4a")
507 (mozilla-patch "icecat-CVE-2017-5470-pt19.patch" "f68e0d98a22a" "063z4a7gyhzy85fc2j2yr7kmk2zf7v875hjw4485civazydysw4j")
508 (mozilla-patch "icecat-bug-1353625.patch" "c41f37d913e2" "1s997c1hj4ywnlfbhvi1y96vd6bxl74wcrb0nly611h51h8xnyxm")
509 (mozilla-patch "icecat-CVE-2017-5470-pt20.patch" "38273203b827" "12p9r4spdp09d6ic9sqspvdr50lmc1p86ydz2fxdifb1f95njhx0")
510 (mozilla-patch "icecat-bug-1357022.patch" "5bd51bc3f587" "0z5drxpfjvb7s43qgcr404h8ckchgakwwwi4nxpx2i653w22a743")
511 (mozilla-patch "icecat-bug-1318845.patch" "512efd480dac" "13cmqap795ayh6gh3b5bc6002pz0wp92qngs7fh5qqklc7a0gkzv")
512 (mozilla-patch "icecat-CVE-2017-7798-pt1.patch" "d0c92199b9ed" "0qmsm7d4h6ysx3an247kpx9qpksfms7hrjgpdrghdbxla1hc4nc9")
513 (mozilla-patch "icecat-bug-1364513.patch" "88e9c2137640" "1mh4l745q1wlabn9sz47n0vy3h7c66fcay2b9dwa16iqwvh3lpiw")
514 (mozilla-patch "icecat-bug-1366203.patch" "08dd87b6bb8f" "15bfwfwwd978mlcpk1d6m7506k8c2y402md7wzf6piabxl5kk6cf")
515 (mozilla-patch "icecat-CVE-2017-7779-pt01.patch" "5a51a9ef8149" "0j0f9j0pryv3ik4bizhv8s6rr4dl1mjm01c23msayr0vbnpcagcs")
516 (mozilla-patch "icecat-CVE-2017-7779-pt02.patch" "f47eaebc0c5c" "1b52xm3awpigasaz0hk5b13l7v4ry9vrawf571lzy2wwhphs4nxx")
517 (mozilla-patch "icecat-CVE-2017-7779-pt03.patch" "40ce248a8c15" "1b722fiifr999ga0991cg5mlhidcnvf3zx2aiq5zjaabqn0f4dzk")
518 (mozilla-patch "icecat-CVE-2017-7798-pt2.patch" "0c8359ac6718" "1w0v2p5jnhzvcsx8h1bglwjhp5y5bg1g8pzpvjw7pg1wlq2frccr")
519 (mozilla-patch "icecat-CVE-2017-7779-pt04.patch" "8c27a68ee87e" "0kn05q8nvp26w5rnj8r0byw89h2awmwn04l9l3xv2i5w2a7zmjzf")
520 (mozilla-patch "icecat-CVE-2017-7779-pt05.patch" "b2ee0c5466da" "0jgwsppq0606lwg5jk9q69lqa14q3j7h3c7q6mxbz7zqrcg7d0zg")
521 (mozilla-patch "icecat-CVE-2017-7779-pt06.patch" "25f6ec16e501" "1yqd5ndwgd8x2pj9k2bnaq3rb1g7wikq0ii7l4dm6bqwabi2rdsg")
522 (mozilla-patch "icecat-CVE-2017-7779-pt07.patch" "30443b4f758e" "0riszl3xnpfq5ffywygrc12nsvx0ffd36d5rf4vp87r8lj3fr55r")
523 (mozilla-patch "icecat-CVE-2017-7779-pt08.patch" "1b934ab92c59" "114cvfzfxgkwwd4zpnrmm2kx6m94k0b3xcraba9aawwwhdxj6a1d")
524 (mozilla-patch "icecat-CVE-2017-7779-pt09.patch" "830a345dc0e7" "01riivv033w3mr8b2myaw38rz2za1bdlhybny737ly68hhc67xdz")
525 (mozilla-patch "icecat-CVE-2017-7786.patch" "5c26df489768" "1fdw4zbn0ilfghanxky4y7qcmkpkks2q1aqkzv26dnhhrr8350a1")
526 (mozilla-patch "icecat-CVE-2017-7791.patch" "f21e4d78a0a8" "0szsc3zm3wgrw8pxm0rz54whkrc14yy4d8vwmxgqsdns43qjgkpk")
527 (mozilla-patch "icecat-CVE-2017-7779-pt10.patch" "f19b6c6a0c6c" "0wkr010qnh4127z1j7fp45sqdk2da9x7j2k405r0x5bgqdd09qzp")
528 (mozilla-patch "icecat-CVE-2017-7784.patch" "8353a3fa4106" "0kzs8pl6spjwgdsmiw702zvbvz73ng9zf184clsfr82l8kmggbgw")
529 (mozilla-patch "icecat-bug-1371889.patch" "b38fed9a9772" "14vzsldlv4hjpxgnl6fjjbzhgcwsmd52v06cgmv0a7y3lnggj3hp"); XXX backed out upstream
530 (mozilla-patch "icecat-CVE-2017-7787.patch" "c254d3cc826c" "0pixwr18qik87c8qf4irg6hdffd8rbwpng73jxg05h7s827nfw3g")
531 (mozilla-patch "icecat-CVE-2017-7792.patch" "6356dbf20658" "0a0hsxkik7ysfa48w8k21lidaabwpmxi1d3214r5zqkqqfhn9qjm")
532 (mozilla-patch "icecat-bug-1358073.patch" "8d6e685d061b" "0430gwg7zzbg0q9w2m04s5ljh47bc8x1gxvmkzbn23bh1wy4d4sq")
533 (mozilla-patch "icecat-bug-1370869.patch" "3b8fde840188" "0vkymvzkfpzpg86npa5vpvvf564k18hkfdz8857rl0z4dp4rybzx")
534 (mozilla-patch "icecat-CVE-2017-7779-pt11.patch" "267b649087ff" "04wzazdm0kvbfcgmlhx8qs1ibqn8sbvqdsd237rja5wpr761xxf1")
535 (mozilla-patch "icecat-bug-1354796.patch" "69d1a9de76b9" "1q0p4kf8pvnkwwff3lz526pjj15a25pf724awblkcnzamwbib5ns")
536 (mozilla-patch "icecat-bug-1363027.patch" "c5eaa2d51b9f" "1xyj5n1vqhscc369q6wxibs2igbilaiwyc0q9cq64j2qx8q0yqah")
537 (mozilla-patch "icecat-bug-1364189.patch" "852a7781259e" "12y344p54avz5mrqirq14zp4csx8ydilnjv9nsw48kpa9y0l5xsg")
538 (mozilla-patch "icecat-bug-1342417.patch" "37ccdc5fff2b" "1acywg8girplbs7wjrjbvkximhiyizddmnkkq1ldd0l3qbx9nihc")
539 (mozilla-patch "icecat-CVE-2017-7779-pt12.patch" "057ed884ecb0" "1m49bqkq5lzc2j59wgwy0gbzvqj50p9lfn7cbc2n01v6d7m8rc2j")
540 (mozilla-patch "icecat-CVE-2017-7779-pt13.patch" "dd7ed649b82f" "1fama1l2vx4p6ahhrsrpysfbk9nh5gwbi4pdnclpyxd42idsdqxs")
541 (mozilla-patch "icecat-CVE-2017-7753.patch" "731958f7ff4d" "0l3i3mkb6rslnjag3caf4xyhjzxn91wfs0g6dbika4sxnhfs5d4i")
542 (mozilla-patch "icecat-bug-1364870.patch" "de8deecbcb02" "048ic1vk7fd7wxqjgjqlnb7kv03ynaa4wkrk0ka8m39pkjh3yyxj")
543 (mozilla-patch "icecat-bug-1365333.patch" "e3d13b270f45" "0jr8hpxpmfgrbh09xd9nj597cdnc6kl6gs5nir4zlzbbn8kp3429")
544 (mozilla-patch "icecat-bug-1372063.patch" "58a144bf9677" "12y8vikbzcfcfiidjdq67dvdhhvylx68wdgnypsafrd1q8dx9jza")
545 (mozilla-patch "icecat-bug-1373970.patch" "8321ef71adb5" "1wk8kq9n2vhqlinvvw01avv3c7qj0k3qnn7dj0whnl08a5yrqhpl")
546 (mozilla-patch "icecat-bug-1338646.patch" "322c18d011af" "1yqb7zmjz211ryb98pjj7axbj6bwkj63rmfyifsybdy3zpb4nf48")
547 (mozilla-patch "icecat-CVE-2017-7779-pt14.patch" "f9bc084fbb8a" "1ssml15yzx9s0wraq4n0xvq5bw7j8xq0p2y39h8j3f1c448n0j50")
548 (mozilla-patch "icecat-bug-1359477.patch" "9b70b5b852e4" "0z2bi7w46g7mm8msav8vz28mgvnv21z3a5876n9gpw317gns4d6a")
549 (mozilla-patch "icecat-CVE-2017-7779-pt15.patch" "6785c2a852da" "0p9jr171qi59scr5lrj6g0mv8mgm1i1wglr3jd16xywb0ymynnn5")
550 (mozilla-patch "icecat-CVE-2017-7779-pt16.patch" "11c8e23f0fd7" "0zcikv6dn7biii4gspv2kfvma5hc76hk86jahm3zl2zlkk8ikfm9")
551 (mozilla-patch "icecat-bug-1355168.patch" "f45ba43512ad" "0p28q5acns5zjj7ks2x5lrmwzzps741507sq31xvrpzan5yav37x")
552 (mozilla-patch "icecat-bug-1308820.patch" "e9a10fac6aae" "1s2zaka6ik1rmylamyh38vsqnqlblbqdhjpp0cv08fjb9flh5sbw")
553 (mozilla-patch "icecat-bug-1305036.patch" "c42a348f2ed0" "1pz7qbdv9xvyd1dy7g9h047c0gmrgp5qdy2360qjk6879n74h1zb")
554 (mozilla-patch "icecat-bug-1342913.patch" "f02db36497d2" "0g1kg418l1cibh5k1sjqj2vs2jcblpbn7b06qazk2kzcg70vf5gv")
555 (mozilla-patch "icecat-CVE-2017-7800.patch" "0a44ed156da5" "1y8z1czm7f91p9bpd32b9k43nl0b9g4fzwv4w0khby9y38xgvcbs")
556 (mozilla-patch "icecat-CVE-2017-7801.patch" "0a86729d653e" "0wyh7qskjwq9274d25p2ajylaab5mj5h8by58rz9lxsz06zrnz9f")
557 (mozilla-patch "icecat-CVE-2017-7779-pt17.patch" "98ff43fb228a" "0ih0nsmk8rzdrajzlnryqiqb71jg7v4p71hfla2hrlvn41r3709m")
558 (mozilla-patch "icecat-CVE-2017-7802.patch" "09f62bfc5800" "07q18qzxja1cywihr5vhhws328zghrwc6ldx8kcsawia1r1i5gp7")
559 (mozilla-patch "icecat-bug-1321803-pt1.patch" "cfb75012cfbd" "1bwwfm1vhr7ddsvmi1cinwdq6f4nd71fkd9lbnlhmh4ix63gz2yl")
560 (mozilla-patch "icecat-bug-1321803-pt2.patch" "0f3f951461d7" "1rp1cj4c0dkhd4pda88kx499h7ycw3037yh2khff78y61ckg2a85")
561 (mozilla-patch "icecat-bug-1321803-pt3.patch" "b654a39db998" "1v79mh8lrnn7q40c8zj24byrqyw3x8fwcw25w90wqajnbf0ixskx")
562 (mozilla-patch "icecat-bug-1334338.patch" "1be1fe3c9622" "1mhd9nyp8map76hgwrhm1k955fz8y5iszdvvgrv3z1r1h77k0nz0")
563 (mozilla-patch "icecat-bug-1379538.patch" "8fa66bc91b07" "1l44rwkdrv9y41nfb9h3fkykk3ci7xclp6rfwbbzm4293l00adrd")
564 (mozilla-patch "icecat-CVE-2017-7779-pt18.patch" "7c095249ef8a" "05dbvxlmh7jljjmis540nfgk2nn968prmxrm96674avn33989sqy")
565 (mozilla-patch "icecat-bug-1073952.patch" "06db7fb30689" "19qf9lrwy48fjzz3wpjfxsgqab68dnlci8jrwsljhpy6787xwxg2")
566 (mozilla-patch "icecat-CVE-2017-7803.patch" "c52d8ce8d5df" "03l9hk278b9mw75rxpn2ay1slyz21axa2l7dfxwkvj5vdn7ykdbj")
567 (mozilla-patch "icecat-CVE-2017-7779-pt19.patch" "d68c9edf056f" "0zfz0l9m675n4vvm87n8g3bdhhysla4qnywli5kwjy4krj9kq6qa")
568 (mozilla-patch "icecat-CVE-2017-7779-pt20.patch" "5dd82ab194b9" "10mdzwxibnmqs7y5arf8sjnva31i5vhbprlc63n74h8gh8k5kdlp")
569 (mozilla-patch "icecat-CVE-2017-7779-pt21.patch" "8fc70b2b57a8" "0yszfmb47x3rrzn5wncv112c1b7xw11j62adx4f7950fdj7zqr32")
570 (mozilla-patch "icecat-bug-1379444.patch" "47dd26630291" "0r2rc634sr4a5mfc53p1wx8d0zm6dsxiw2vzc7l89mac0d0cmi5n")
571 (mozilla-patch "icecat-bug-1372467.patch" "0f906e04a41d" "0f2zdpnb23yg3v5f1ha24cmagcwa01kf2xz1l2lcws4ss1w5b4a9")
572 (mozilla-patch "icecat-bug-1372383.patch" "56349462ff47" "17gc7kf0i367c1yh2w1701k8snvdm04nznc3q3yxdl3wxkh3c3sb")
573 (mozilla-patch "icecat-CVE-2017-7779-pt22.patch" "7b79969a18ee" "0ixycxbjh0wmihrhzpyjbkcnvwwrzs3ffb0lymzvqnr90yxvxhyy")
574 (mozilla-patch "icecat-CVE-2017-7779-pt23.patch" "f0ab032fd674" "04wc4i94cfj2vcawrv7hgbb70fkxggi7s6srk3i184686rczzpyw")
575 (mozilla-patch "icecat-bug-1308908.patch" "48a89721d076" "01gvdzy6whp2dqmjvx49f4mvl75dhjgr8dvx71pg4sx3xmdbkzyq")
576 (mozilla-patch "icecat-bug-1347667.patch" "ef1d17821945" "0s6gaarnvnibgf9x0xqcymaqc63lnbh9fm2g33i8cpp1xjhmywcv")
577 (mozilla-patch "icecat-bug-1367128-pt1.patch" "5a0f69630b03" "1vqbwmy58qxwfaisq0dxvvbsd5w5i4yb691i78gw1dv7kgf523qy")
578 (mozilla-patch "icecat-bug-1367128-pt2.patch" "7db52eca97b2" "081p8izjxscylfs090c9mzlmfvpdfvg1qsf5rik30hvifcpxp6lq")
579 (mozilla-patch "icecat-bug-1367128-pt3.patch" "c448439eb5dc" "18gp7mg3zh9dxi1300mcm0zk67nlmvp5q50gnyc1v2sv0gs6fdfb")
580 (mozilla-patch "icecat-bug-1377016.patch" "319a986ae1f4" "1dlmrklkpx42c72pblpw1fi91dhqarqyl3ldnd4943x2hsy3am8k")
581 (mozilla-patch "icecat-bug-1342433.patch" "09f5bd33efb8" "0dky981ggyc0237mbbyy1chndk0aznkhw00d3lrafiyxsyk6vg3z")
582 (mozilla-patch "icecat-bug-1359058-pt1.patch" "7ccb26caa02f" "1q97f4qbwjnz6f3g5dcy2v0av9jgbaplaz9pnm5yqdc250f5bhjz")
583 (mozilla-patch "icecat-bug-1359058-pt2.patch" "a93c1a40f0d8" "0gafbwv2npdjqh41fpvzmzdw3kcw1b41gm3jg9biwqxxwnvqqmfj")
584 (mozilla-patch "icecat-bug-1382303-pt1.patch" "688c9284fb12" "1rqimwkh8krihabsx7x2awvxls8n9dm2bmbl133fnkp2sjya979w")
585 (mozilla-patch "icecat-bug-1382303-pt2.patch" "7f969ba7b6e8" "036n1yrmmb6gydxcgyps89g63kj1w2rihk1zsmk7yw3crln226ai")
586 (mozilla-patch "icecat-bug-1382303-pt3.patch" "7e7b4f104462" "0wkw72qqyql528hvssrqyq72f5csfxa5fgv5s903csh97vawfl7i")
587 (mozilla-patch "icecat-bug-1383000.patch" "ce65d0641c07" "08bxn3b8rgjhkvdndc7mrd0k1715wbpa5qaxhslxlgj6lpkgk0b1")
588 (mozilla-patch "icecat-CVE-2017-7807.patch" "a86c77d533ee" "0mzfxpyk4484dk3j1sgplakx39ya0jnp3plxvcmvlc47ry60yq93")
589 (mozilla-patch "icecat-bug-1346620.patch" "d71000abc9bf" "10d632nq5zbhndrsx2vpkl7jprlnas361n1yh9s9szn8k4mj01rf")
590 (mozilla-patch "icecat-bug-1381016.patch" "c74486f87dc3" "1l938a2lhrlqfhmgrpypx13v6jw08528m4gnllr2h5sk2x65czip")
591 (mozilla-patch "icecat-bug-1371657.patch" "20a1a6ad46d5" "17yn5dpymrymgdywah403fzw0p2y9bjkccg0h4d221i3pwns4bcz")))
592 (modules '((guix build utils)))
593 (snippet
594 '(begin
595 (use-modules (ice-9 ftw))
596 ;; Remove bundled libraries that we don't use, since they may
597 ;; contain unpatched security flaws, they waste disk space and
598 ;; network bandwidth, and may cause confusion.
599 (for-each delete-file-recursively
600 '(;; FIXME: Removing the bundled icu breaks configure.
601 ;; * The bundled icu headers are used in some places.
602 ;; * The version number is taken from the bundled copy.
603 ;;"intl/icu"
604 ;;
605 ;; FIXME: A script from the bundled nspr is used.
606 ;;"nsprpub"
607 ;;
608 ;; TODO: Use system media libraries. Waiting for:
609 ;; <https://bugzilla.mozilla.org/show_bug.cgi?id=517422>
610 ;; * libogg
611 ;; * libtheora
612 ;; * libvorbis
613 ;; * libtremor (not yet in guix)
614 ;; * libopus
615 ;; * speex
616 ;; * soundtouch (not yet in guix)
617 ;;
618 ;; TODO: Use system harfbuzz. Waiting for:
619 ;; <https://bugzilla.mozilla.org/show_bug.cgi?id=847568>
620 ;;
621 ;; TODO: Use system graphite2.
622 ;;
623 "modules/freetype2"
624 "modules/zlib"
625 "modules/libbz2"
626 "ipc/chromium/src/third_party/libevent"
627 "media/libjpeg"
628 "media/libvpx"
629 "security/nss"
630 "gfx/cairo"
631 "js/src/ctypes/libffi"
632 "db/sqlite3"))
633 ;; Delete .pyc files, typically present in icecat source tarballs
634 (for-each delete-file (find-files "." "\\.pyc$"))
635 ;; Delete obj-* directories, sometimes present in icecat tarballs
636 (for-each delete-file-recursively
637 (scandir "." (lambda (name)
638 (string-prefix? "obj-" name))))
639 #t))))
640 (build-system gnu-build-system)
641 (inputs
642 `(("alsa-lib" ,alsa-lib)
643 ("bzip2" ,bzip2)
644 ("cairo" ,cairo)
645 ("cups" ,cups)
646 ("dbus-glib" ,dbus-glib)
647 ("gdk-pixbuf" ,gdk-pixbuf)
648 ("glib" ,glib)
649 ("gtk+" ,gtk+)
650 ("gtk+-2" ,gtk+-2)
651 ("pango" ,pango)
652 ("freetype" ,freetype)
653 ("hunspell" ,hunspell)
654 ("libcanberra" ,libcanberra)
655 ("libgnome" ,libgnome)
656 ("libjpeg-turbo" ,libjpeg-turbo)
657 ("libxft" ,libxft)
658 ("libevent" ,libevent-2.0)
659 ("libxinerama" ,libxinerama)
660 ("libxscrnsaver" ,libxscrnsaver)
661 ("libxcomposite" ,libxcomposite)
662 ("libxt" ,libxt)
663 ("libffi" ,libffi)
664 ("ffmpeg" ,ffmpeg)
665 ("libvpx" ,libvpx)
666 ("icu4c" ,icu4c)
667 ("pixman" ,pixman)
668 ("pulseaudio" ,pulseaudio)
669 ("mesa" ,mesa)
670 ("mit-krb5" ,mit-krb5)
671 ("nspr" ,nspr)
672 ("nss" ,nss)
673 ("sqlite" ,sqlite)
674 ("startup-notification" ,startup-notification)
675 ("unzip" ,unzip)
676 ("zip" ,zip)
677 ("zlib" ,zlib)))
678 (native-inputs
679 `(("perl" ,perl)
680 ("python" ,python-2) ; Python 3 not supported
681 ("python2-pysqlite" ,python2-pysqlite)
682 ("yasm" ,yasm)
683 ("pkg-config" ,pkg-config)
684 ("autoconf" ,autoconf-2.13)
685 ("which" ,which)))
686 (arguments
687 `(#:tests? #f ; no check target
688 #:out-of-source? #t ; must be built outside of the source directory
689
690 ;; XXX: There are RUNPATH issues such as
691 ;; $prefix/lib/icecat-31.6.0/plugin-container NEEDing libmozalloc.so,
692 ;; which is not in its RUNPATH, but they appear to be harmless in
693 ;; practice somehow. See <http://hydra.gnu.org/build/378133>.
694 #:validate-runpath? #f
695
696 #:configure-flags '("--enable-default-toolkit=cairo-gtk3"
697 "--enable-gio"
698 "--enable-startup-notification"
699 "--enable-pulseaudio"
700
701 "--disable-gconf"
702 "--disable-gnomeui"
703
704 ;; Building with debugging symbols takes ~5GiB, so
705 ;; disable it.
706 "--disable-debug"
707 "--disable-debug-symbols"
708
709 ;; Hack to work around missing
710 ;; "unofficial" branding in icecat.
711 "--enable-official-branding"
712
713 ;; Avoid bundled libraries.
714 "--with-system-zlib"
715 "--with-system-bz2"
716 "--with-system-jpeg" ; must be libjpeg-turbo
717 "--with-system-libevent"
718 "--with-system-libvpx"
719 "--with-system-icu"
720 "--with-system-nspr"
721 "--with-system-nss"
722 "--enable-system-pixman"
723 "--enable-system-cairo"
724 "--enable-system-ffi"
725 "--enable-system-hunspell"
726 "--enable-system-sqlite"
727
728 ;; Fails with "--with-system-png won't work because
729 ;; the system's libpng doesn't have APNG support".
730 ;; According to
731 ;; http://sourceforge.net/projects/libpng-apng/ ,
732 ;; "the Animated Portable Network Graphics (APNG)
733 ;; is an unofficial extension of the Portable
734 ;; Network Graphics (PNG) format";
735 ;; we probably do not wish to support it.
736 ;; "--with-system-png"
737 )
738
739 #:modules ((ice-9 ftw)
740 (ice-9 rdelim)
741 (ice-9 match)
742 ,@%gnu-build-system-modules)
743 #:phases
744 (modify-phases %standard-phases
745 (add-after
746 'unpack 'ensure-no-mtimes-pre-1980
747 (lambda _
748 ;; Without this, the 'source/test/addons/packed.xpi' and
749 ;; 'source/test/addons/simple-prefs.xpi' targets fail while trying
750 ;; to create zip archives.
751 (let ((early-1980 315619200)) ; 1980-01-02 UTC
752 (ftw "." (lambda (file stat flag)
753 (unless (<= early-1980 (stat:mtime stat))
754 (utime file early-1980 early-1980))
755 #t))
756 #t)))
757 (add-after
758 'unpack 'use-skia-by-default
759 (lambda _
760 ;; Use the bundled Skia library by default, since IceCat appears
761 ;; to be far more stable when using it than when using our system
762 ;; Cairo.
763 (let ((out (open "browser/app/profile/icecat.js"
764 (logior O_WRONLY O_APPEND))))
765 (format out "~%// Use Skia by default~%")
766 (format out "pref(~s, ~s);~%" "gfx.canvas.azure.backends" "skia")
767 (format out "pref(~s, ~s);~%" "gfx.content.azure.backends" "skia")
768 (close-port out))
769 #t))
770 (add-after
771 'unpack 'arrange-to-link-libxul-with-libraries-it-might-dlopen
772 (lambda _
773 ;; libxul.so dynamically opens libraries, so here we explicitly
774 ;; link them into libxul.so instead.
775 ;;
776 ;; TODO: It might be preferable to patch in absolute file names in
777 ;; calls to dlopen or PR_LoadLibrary, but that didn't seem to
778 ;; work. More investigation is needed.
779 (substitute* "toolkit/library/moz.build"
780 (("^# This library needs to be last" all)
781 (string-append "OS_LIBS += [
782 'GL', 'gnome-2', 'canberra', 'Xss', 'cups', 'gssapi_krb5',
783 'avcodec', 'avutil', 'pulse' ]\n\n"
784 all)))
785 #t))
786 (replace
787 'configure
788 ;; configure does not work followed by both "SHELL=..." and
789 ;; "CONFIG_SHELL=..."; set environment variables instead
790 (lambda* (#:key outputs configure-flags #:allow-other-keys)
791 (let* ((out (assoc-ref outputs "out"))
792 (bash (which "bash"))
793 (abs-srcdir (getcwd))
794 (srcdir (string-append "../" (basename abs-srcdir)))
795 (flags `(,(string-append "--prefix=" out)
796 ,(string-append "--with-l10n-base="
797 abs-srcdir "/l10n")
798 ,@configure-flags)))
799 (setenv "SHELL" bash)
800 (setenv "CONFIG_SHELL" bash)
801 (setenv "AUTOCONF" (which "autoconf")) ; must be autoconf-2.13
802 (mkdir "../build")
803 (chdir "../build")
804 (format #t "build directory: ~s~%" (getcwd))
805 (format #t "configure flags: ~s~%" flags)
806 (zero? (apply system* bash
807 (string-append srcdir "/configure")
808 flags)))))
809 (add-before 'configure 'install-desktop-entry
810 (lambda* (#:key outputs #:allow-other-keys)
811 ;; Install the '.desktop' file.
812 (define (swallow-%%-directives input output)
813 ;; Interpret '%%ifdef' directives found in the '.desktop' file.
814 (let loop ((state 'top))
815 (match (read-line input 'concat)
816 ((? eof-object?)
817 #t)
818 ((? string? line)
819 (cond ((string-prefix? "%%ifdef" line)
820 (loop 'ifdef))
821 ((string-prefix? "%%else" line)
822 (loop 'else))
823 ((string-prefix? "%%endif" line)
824 (loop 'top))
825 (else
826 (case state
827 ((top else)
828 (display line output)
829 (loop state))
830 (else
831 (loop state)))))))))
832
833 (let* ((out (assoc-ref outputs "out"))
834 (applications (string-append out "/share/applications")))
835 (call-with-input-file "debian/icecat.desktop.in"
836 (lambda (input)
837 (call-with-output-file "debian/icecat.desktop"
838 (lambda (output)
839 (swallow-%%-directives input output)))))
840
841 (substitute* "debian/icecat.desktop"
842 (("@MOZ_DISPLAY_NAME@")
843 "GNU IceCat")
844 (("^Exec=@MOZ_APP_NAME@")
845 (string-append "Exec=" out "/bin/icecat"))
846 (("@MOZ_APP_NAME@")
847 "icecat"))
848 (install-file "debian/icecat.desktop" applications)
849 #t)))
850 (add-after 'install-desktop-entry 'install-icons
851 (lambda* (#:key outputs #:allow-other-keys)
852 (let ((out (assoc-ref outputs "out")))
853 (with-directory-excursion "browser/branding/official"
854 (for-each
855 (lambda (file)
856 (let* ((size (string-filter char-numeric? file))
857 (icons (string-append out "/share/icons/hicolor/"
858 size "x" size "/apps")))
859 (mkdir-p icons)
860 (copy-file file (string-append icons "/icecat.png"))))
861 '("default16.png" "default22.png" "default24.png"
862 "default32.png" "default48.png" "content/icon64.png"
863 "mozicon128.png" "default256.png"))))))
864 ;; This fixes the file chooser crash that happens with GTK 3.
865 (add-after 'install 'wrap-program
866 (lambda* (#:key inputs outputs #:allow-other-keys)
867 (let* ((out (assoc-ref outputs "out"))
868 (lib (string-append out "/lib"))
869 (gtk (assoc-ref inputs "gtk+"))
870 (gtk-share (string-append gtk "/share")))
871 (wrap-program (car (find-files lib "^icecat$"))
872 `("XDG_DATA_DIRS" ":" prefix (,gtk-share)))))))))
873 (home-page "https://www.gnu.org/software/gnuzilla/")
874 (synopsis "Entirely free browser derived from Mozilla Firefox")
875 (description
876 "IceCat is the GNU version of the Firefox browser. It is entirely free
877 software, which does not recommend non-free plugins and addons. It also
878 features built-in privacy-protecting features.")
879 (license license:mpl2.0) ;and others, see toolkit/content/license.html
880 (properties
881 `((ftp-directory . "/gnu/gnuzilla")
882 (cpe-name . "firefox_esr")
883 (cpe-version . ,(first (string-split version #\-)))))))