gnu: Separate Python core packages from the rest.
[jackhill/guix/guix.git] / gnu / packages / gnuzilla.scm
CommitLineData
be0f6112 1;;; GNU Guix --- Functional package management for GNU
5deea4fc 2;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
1b321229 3;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
c1c2e1d7 4;;; Copyright © 2014, 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org>
1aaaff1a 5;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
89f9df6c 6;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
88a8ce87 7;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
8db94716 8;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
4a78fd46 9;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
71a96ecb 10;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
192a59d0 11;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
be0f6112
AE
12;;;
13;;; This file is part of GNU Guix.
14;;;
15;;; GNU Guix is free software; you can redistribute it and/or modify it
16;;; under the terms of the GNU General Public License as published by
17;;; the Free Software Foundation; either version 3 of the License, or (at
18;;; your option) any later version.
19;;;
20;;; GNU Guix is distributed in the hope that it will be useful, but
21;;; WITHOUT ANY WARRANTY; without even the implied warranty of
22;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23;;; GNU General Public License for more details.
24;;;
25;;; You should have received a copy of the GNU General Public License
26;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
27
28(define-module (gnu packages gnuzilla)
07d4d9b7 29 #:use-module ((srfi srfi-1) #:hide (zip))
1461dd24 30 #:use-module (ice-9 match)
be0f6112 31 #:use-module (gnu packages)
b5b73a82 32 #:use-module ((guix licenses) #:prefix license:)
be0f6112
AE
33 #:use-module (guix packages)
34 #:use-module (guix download)
192a59d0 35 #:use-module (guix git-download)
aaac423c 36 #:use-module (guix utils)
be0f6112 37 #:use-module (guix build-system gnu)
e67ad553 38 #:use-module (guix build-system cargo)
94e96f7f 39 #:use-module (gnu packages audio)
002c3e6d 40 #:use-module (gnu packages autotools)
bfb48f4f 41 #:use-module (gnu packages base)
bc9aa60b 42 #:use-module (gnu packages check)
1aaaff1a 43 #:use-module (gnu packages databases)
be0f6112 44 #:use-module (gnu packages glib)
be0f6112 45 #:use-module (gnu packages gtk)
90e1cdae
MW
46 #:use-module (gnu packages gnome)
47 #:use-module (gnu packages libcanberra)
48 #:use-module (gnu packages cups)
89e34644 49 #:use-module (gnu packages kerberos)
be0f6112
AE
50 #:use-module (gnu packages linux)
51 #:use-module (gnu packages perl)
52 #:use-module (gnu packages pkg-config)
1ae6df81 53 #:use-module (gnu packages compression)
74c7af9f 54 #:use-module (gnu packages fontutils)
1ae6df81 55 #:use-module (gnu packages libevent)
90e1cdae 56 #:use-module (gnu packages libreoffice) ;for hunspell
e55354b8 57 #:use-module (gnu packages image)
1ae6df81 58 #:use-module (gnu packages libffi)
74c7af9f 59 #:use-module (gnu packages pulseaudio)
be0f6112 60 #:use-module (gnu packages python)
44d10b1f 61 #:use-module (gnu packages python-xyz)
be0f6112 62 #:use-module (gnu packages xorg)
200726ed 63 #:use-module (gnu packages gl)
01497dfe 64 #:use-module (gnu packages assembly)
e67ad553 65 #:use-module (gnu packages rust)
8d956d86 66 #:use-module (gnu packages llvm)
13b284d9
MW
67 #:use-module (gnu packages icu4c)
68 #:use-module (gnu packages video)
94e96f7f 69 #:use-module (gnu packages xiph)
13b284d9 70 #:use-module (gnu packages xdisorg)
29f381ba 71 #:use-module (gnu packages readline))
be0f6112 72
4923e06f
SB
73(define-public mozjs
74 (package
75 (name "mozjs")
76 (version "17.0.0")
77 (source (origin
78 (method url-fetch)
79 (uri (string-append
80 "https://ftp.mozilla.org/pub/mozilla.org/js/"
81 name version ".tar.gz"))
82 (sha256
83 (base32
68716289 84 "1fig2wf4f10v43mqx67y68z6h77sy900d1w0pz9qarrqx57rc7ij"))
a64b7da5 85 (patches (search-patches "mozjs17-aarch64-support.patch"))
68716289
SB
86 (modules '((guix build utils)))
87 (snippet
88 ;; Fix incompatibility with Perl 5.22+.
6cbee49d
MW
89 '(begin
90 (substitute* '("js/src/config/milestone.pl")
91 (("defined\\(@TEMPLATE_FILE)") "@TEMPLATE_FILE"))
92 #t))))
4923e06f
SB
93 (build-system gnu-build-system)
94 (native-inputs
f403c676
EF
95 `(("perl" ,perl)
96 ("pkg-config" ,pkg-config)
97 ("python" ,python-2)))
98 (propagated-inputs
99 `(("nspr" ,nspr))) ; in the Requires.private field of mozjs-17.0.pc
100 (inputs
101 `(("zlib" ,zlib)))
4923e06f 102 (arguments
56486b3a
EF
103 `(;; XXX: parallel build fails, lacking:
104 ;; mkdir -p "system_wrapper_js/"
105 #:parallel-build? #f
106 #:phases
107 (modify-phases %standard-phases
108 (add-after 'unpack 'delete-timedout-test
a64b7da5 109 ;; This test times out on slower hardware.
e15793c8
MW
110 (lambda _
111 (delete-file "js/src/jit-test/tests/basic/bug698584.js")
112 #t))
56486b3a 113 (add-before 'configure 'chdir
4923e06f 114 (lambda _
56486b3a
EF
115 (chdir "js/src")
116 #t))
117 (replace 'configure
118 ;; configure fails if it is followed by SHELL and CONFIG_SHELL
119 (lambda* (#:key outputs #:allow-other-keys)
120 (let ((out (assoc-ref outputs "out")))
121 (setenv "SHELL" (which "sh"))
122 (setenv "CONFIG_SHELL" (which "sh"))
e15793c8
MW
123 (invoke "./configure" (string-append "--prefix=" out)
124 ,@(if (string=? "aarch64-linux"
125 (%current-system))
126 '("--host=aarch64-unknown-linux-gnu")
127 '()))))))))
4923e06f
SB
128 (home-page
129 "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey")
130 (synopsis "Mozilla javascript engine")
131 (description "SpiderMonkey is Mozilla's JavaScript engine written
132in C/C++.")
87158e85 133 (license license:mpl2.0))) ; and others for some files
4923e06f 134
cefdcb38
SB
135(define-public mozjs-24
136 (package (inherit mozjs)
137 (name "mozjs")
138 (version "24.2.0")
139 (source (origin
140 (method url-fetch)
141 (uri (string-append
142 "https://ftp.mozilla.org/pub/mozilla.org/js/"
143 name "-" version ".tar.bz2"))
144 (sha256
145 (base32
68716289
SB
146 "1n1phk8r3l8icqrrap4czplnylawa0ddc2cc4cgdz46x3lrkybz6"))
147 (modules '((guix build utils)))
26f38d31 148 (patches (search-patches "mozjs24-aarch64-support.patch"))
68716289
SB
149 (snippet
150 ;; Fix incompatibility with Perl 5.22+.
6cbee49d
MW
151 '(begin
152 (substitute* '("js/src/config/milestone.pl")
153 (("defined\\(@TEMPLATE_FILE)") "@TEMPLATE_FILE"))
154 #t))))
cefdcb38 155 (arguments
aaac423c
EF
156 (substitute-keyword-arguments (package-arguments mozjs)
157 ((#:phases phases)
158 `(modify-phases ,phases
159 (replace 'configure
160 (lambda* (#:key outputs #:allow-other-keys)
161 (let ((out (assoc-ref outputs "out")))
162 ;; configure fails if it is followed by SHELL and CONFIG_SHELL
163 (setenv "SHELL" (which "sh"))
164 (setenv "CONFIG_SHELL" (which "sh"))
6073ef75
MW
165 (invoke "./configure"
166 (string-append "--prefix=" out)
167 "--with-system-nspr"
168 "--enable-system-ffi"
169 "--enable-threadsafe"
170 ,@(if (string=? "aarch64-linux"
171 (%current-system))
172 '("--host=aarch64-unknown-linux-gnu")
173 '())))))))))
cefdcb38
SB
174 (inputs
175 `(("libffi" ,libffi)
176 ("zlib" ,zlib)))))
177
29f381ba
CL
178(define-public mozjs-38
179 (package
180 (inherit mozjs)
181 (name "mozjs")
182 (version "38.2.1.rc0")
183 (source (origin
184 (method url-fetch)
185 (uri (string-append
186 "https://people.mozilla.org/~sstangl/"
187 name "-" version ".tar.bz2"))
188 (sha256
189 (base32
190 "0p4bmbpgkfsj54xschcny0a118jdrdgg0q29rwxigg3lh5slr681"))
191 (patches
192 (search-patches
193 ;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1269317 for
194 ;; GCC 6 compatibility.
195
196 "mozjs38-version-detection.patch" ; for 0ad
197 "mozjs38-tracelogger.patch"
198
199 ;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1339931.
200 "mozjs38-pkg-config-version.patch"
201 "mozjs38-shell-version.patch"))
202 (modules '((guix build utils)))
203 (snippet
204 '(begin
205 ;; Fix incompatibility with sed 4.4.
206 (substitute* "js/src/configure"
207 (("\\^\\[:space:\\]") "^[[:space:]]"))
208
209 ;; The headers are symlinks to files that are in /tmp, so they
210 ;; end up broken. Copy them instead.
211 (substitute*
212 "python/mozbuild/mozbuild/backend/recursivemake.py"
213 (("\\['dist_include'\\].add_symlink")
214 "['dist_include'].add_copy"))
215
216 ;; Remove bundled libraries.
217 (for-each delete-file-recursively
218 '("intl"
219 "js/src/ctypes/libffi"
220 "js/src/ctypes/libffi-patches"
221 "modules/zlib"))
222 #t))))
223 (arguments
224 `(;; XXX: parallel build fails, lacking:
225 ;; mkdir -p "system_wrapper_js/"
226 #:parallel-build? #f
227 ;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1008470.
228 #:tests? #f
229 #:phases
230 (modify-phases %standard-phases
231 (replace 'configure
232 (lambda* (#:key outputs #:allow-other-keys)
233 (let ((out (assoc-ref outputs "out")))
234 (chdir "js/src")
235 (setenv "SHELL" (which "sh"))
236 (setenv "CONFIG_SHELL" (which "sh"))
5f70b6d4
MW
237 (invoke "./configure"
238 (string-append "--prefix=" out)
239 "--enable-ctypes"
240 "--enable-gcgenerational"
241 "--enable-optimize"
242 "--enable-pie"
243 "--enable-readline"
244 "--enable-shared-js"
245 "--enable-system-ffi"
246 "--enable-threadsafe"
247 "--enable-xterm-updates"
248 "--with-system-icu"
249 "--with-system-nspr"
250 "--with-system-zlib"
29f381ba 251
5f70b6d4
MW
252 ;; Intl API requires bundled ICU.
253 "--without-intl-api")))))))
29f381ba
CL
254 (native-inputs
255 `(("perl" ,perl)
256 ("pkg-config" ,pkg-config)
257 ("python-2" ,python-2)))
258 (inputs
259 `(("libffi" ,libffi)
260 ("readline" ,readline)
261 ("icu4c" ,icu4c)
262 ("zlib" ,zlib)))))
263
192a59d0
RW
264(define-public mozjs-52
265 ;; No releases yet at <https://archive.mozilla.org/pub/spidermonkey/releases/>.
266 ;; While we could take a snapshot of the complete mozilla-esr52 repository at
267 ;; <https://treeherder.mozilla.org/#/jobs?repo=mozilla-esr52&filter-searchStr=sm-tc>,
268 ;; we take the Debian version instead, because it is easier to work with.
269 (let ((commit "6507e63cc416fd7a3269e390efe712f8b56f374a")
270 (revision "1"))
271 (package (inherit mozjs-38)
272 (version (git-version "52.0" revision commit))
273 (source (origin
274 (method git-fetch)
275 (uri (git-reference
276 (url "https://salsa.debian.org/gnome-team/mozjs52.git")
277 (commit commit)))
278 (file-name (git-file-name "mozjs" version))
279 (sha256
280 (base32
281 "1ny0s53r8wn4byys87h784xrq1xg767akmfm6gqrbvrz57mlm3q2"))))
282 (arguments
283 `(#:tests? #f ; depends on repository metadata
284 #:configure-flags
285 '("--enable-ctypes"
286 "--enable-optimize"
287 "--enable-pie"
288 "--enable-readline"
289 "--enable-shared-js"
290 "--enable-system-ffi"
291 "--with-system-icu"
292 "--with-system-nspr"
293 "--with-system-zlib"
294
295 ;; Intl API requires bundled ICU.
296 "--without-intl-api")
297 #:phases
298 (modify-phases %standard-phases
299 (add-after 'unpack 'patch-and-chdir
300 (lambda* (#:key inputs #:allow-other-keys)
301 ;; This patch prevents a segfault when executing JS_Init().
302 ;; The build does not fail without this patch, but the
303 ;; configure phase of the gjs package would fail.
304 ;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1176787
305 (make-file-writable "js/src/old-configure.in")
306 (make-file-writable "js/src/old-configure")
307 (make-file-writable "mozglue/build/moz.build")
308 (invoke "patch" "-p1" "--force"
309 "--input" "debian/patches/disable-mozglue.patch")
310 (invoke "touch" "js/src/configure")
311 (chdir "js/src")
312 #t))
313 (replace 'configure
314 (lambda* (#:key inputs outputs configure-flags #:allow-other-keys)
315 ;; The configure script does not accept environment variables
316 ;; as arguments.
317 (let ((out (assoc-ref outputs "out")))
318 (setenv "SHELL" (which "sh"))
319 (setenv "CONFIG_SHELL" (which "sh"))
320 (setenv "AUTOCONF" (string-append (assoc-ref inputs "autoconf")
321 "/bin/autoconf"))
322 (apply invoke "./configure"
323 (cons (string-append "--prefix=" out)
324 configure-flags))))))))
325 (native-inputs
326 `(("autoconf" ,autoconf-2.13)
327 ("automake" ,automake)
328 ,@(package-native-inputs mozjs-38))))))
329
4923e06f
SB
330(define-public nspr
331 (package
332 (name "nspr")
7ea90c21 333 (version "4.20")
4923e06f
SB
334 (source (origin
335 (method url-fetch)
336 (uri (string-append
337 "https://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v"
338 version "/src/nspr-" version ".tar.gz"))
339 (sha256
340 (base32
7ea90c21 341 "0vjms4j75zvv5b2siyafg7hh924ysx2cwjad8spzp7x87n8n929c"))))
4923e06f
SB
342 (build-system gnu-build-system)
343 (native-inputs
84fb4bd9 344 `(("perl" ,perl)))
4923e06f 345 (arguments
8550894b
LC
346 `(#:tests? #f ; no check target
347 #:configure-flags (list "--enable-64bit"
348 (string-append "LDFLAGS=-Wl,-rpath="
349 (assoc-ref %outputs "out")
350 "/lib"))
6d7786ff
MB
351 ;; Use fixed timestamps for reproducibility.
352 #:make-flags '("SH_DATE='1970-01-01 00:00:01'"
353 ;; This is epoch 1 in microseconds.
354 "SH_NOW=100000")
04952bd7
EF
355 #:phases (modify-phases %standard-phases
356 (add-before 'configure 'chdir
357 (lambda _ (chdir "nspr") #t)))))
4923e06f
SB
358 (home-page
359 "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR")
360 (synopsis "Netscape API for system level and libc-like functions")
a440a6af 361 (description "Netscape Portable Runtime (@dfn{NSPR}) provides a
4923e06f
SB
362platform-neutral API for system level and libc-like functions. It is used
363in the Mozilla clients.")
364 (license license:mpl2.0)))
365
1aaaff1a
SB
366(define-public nss
367 (package
368 (name "nss")
e5958848 369 (version "3.39")
1aaaff1a
SB
370 (source (origin
371 (method url-fetch)
2bb9b5de
MW
372 (uri (let ((version-with-underscores
373 (string-join (string-split version #\.) "_")))
374 (string-append
fe88f636 375 "https://ftp.mozilla.org/pub/mozilla.org/security/nss/"
2bb9b5de
MW
376 "releases/NSS_" version-with-underscores "_RTM/src/"
377 "nss-" version ".tar.gz")))
1aaaff1a
SB
378 (sha256
379 (base32
e5958848 380 "0jw6qlfl2g47hhx056nvnj6h92bk3sn46hy3ig61a911dzblvrkb"))
1aaaff1a 381 ;; Create nss.pc and nss-config.
d027b001
MB
382 (patches (search-patches "nss-pkgconfig.patch"
383 "nss-increase-test-timeout.patch"))))
1aaaff1a
SB
384 (build-system gnu-build-system)
385 (outputs '("out" "bin"))
386 (arguments
1461dd24 387 `(#:parallel-build? #f ; not supported
1aaaff1a
SB
388 #:make-flags
389 (let* ((out (assoc-ref %outputs "out"))
390 (nspr (string-append (assoc-ref %build-inputs "nspr")))
391 (rpath (string-append "-Wl,-rpath=" out "/lib/nss")))
392 (list "-C" "nss" (string-append "PREFIX=" out)
393 "NSDISTMODE=copy"
394 "NSS_USE_SYSTEM_SQLITE=1"
395 (string-append "NSPR_INCLUDE_DIR=" nspr "/include/nspr")
396 ;; Add $out/lib/nss to RPATH.
397 (string-append "RPATH=" rpath)
398 (string-append "LDFLAGS=" rpath)))
399 #:modules ((guix build gnu-build-system)
400 (guix build utils)
401 (ice-9 ftw)
402 (ice-9 match)
403 (srfi srfi-26))
1aaaff1a 404 #:phases
db3c06d5
MB
405 (modify-phases %standard-phases
406 (replace 'configure
1461dd24 407 (lambda _
db3c06d5
MB
408 (setenv "CC" "gcc")
409 ;; Tells NSS to build for the 64-bit ABI if we are 64-bit system.
1461dd24
MB
410 ,@(match (%current-system)
411 ((or "x86_64-linux" "aarch64-linux")
412 `((setenv "USE_64" "1")))
413 (_
414 '()))
db3c06d5
MB
415 #t))
416 (replace 'check
417 (lambda _
418 ;; Use 127.0.0.1 instead of $HOST.$DOMSUF as HOSTADDR for testing.
419 ;; The later requires a working DNS or /etc/hosts.
420 (setenv "DOMSUF" "(none)")
421 (setenv "USE_IP" "TRUE")
422 (setenv "IP_ADDRESS" "127.0.0.1")
bc9aa60b
LC
423
424 ;; The "PayPalEE.cert" certificate expires every six months,
425 ;; leading to test failures:
426 ;; <https://bugzilla.mozilla.org/show_bug.cgi?id=609734>. To
427 ;; work around that, set the time to roughly the release date.
428 (invoke "faketime" "2018-09-01" "./nss/tests/all.sh")))
db3c06d5
MB
429 (replace 'install
430 (lambda* (#:key outputs #:allow-other-keys)
431 (let* ((out (assoc-ref outputs "out"))
432 (bin (string-append (assoc-ref outputs "bin") "/bin"))
433 (inc (string-append out "/include/nss"))
434 (lib (string-append out "/lib/nss"))
435 (obj (match (scandir "dist" (cut string-suffix? "OBJ" <>))
436 ((obj) (string-append "dist/" obj)))))
437 ;; Install nss-config to $out/bin.
438 (install-file (string-append obj "/bin/nss-config")
439 (string-append out "/bin"))
440 (delete-file (string-append obj "/bin/nss-config"))
441 ;; Install nss.pc to $out/lib/pkgconfig.
442 (install-file (string-append obj "/lib/pkgconfig/nss.pc")
443 (string-append out "/lib/pkgconfig"))
444 (delete-file (string-append obj "/lib/pkgconfig/nss.pc"))
445 (rmdir (string-append obj "/lib/pkgconfig"))
446 ;; Install other files.
447 (copy-recursively "dist/public/nss" inc)
448 (copy-recursively (string-append obj "/bin") bin)
449 (copy-recursively (string-append obj "/lib") lib)
3161f6a4 450
db3c06d5
MB
451 ;; FIXME: libgtest1.so is installed in the above step, and it's
452 ;; (unnecessarily) linked with several NSS libraries, but
453 ;; without the needed rpaths, causing the 'validate-runpath'
454 ;; phase to fail. Here we simply delete libgtest1.so, since it
455 ;; seems to be used only during the tests.
456 (delete-file (string-append lib "/libgtest1.so"))
bd512249 457 (delete-file (string-append lib "/libgtestutil.so"))
3161f6a4 458
db3c06d5 459 #t))))))
1aaaff1a
SB
460 (inputs
461 `(("sqlite" ,sqlite)
462 ("zlib" ,zlib)))
463 (propagated-inputs `(("nspr" ,nspr))) ; required by nss.pc.
bc9aa60b
LC
464 (native-inputs `(("perl" ,perl)
465 ("libfaketime" ,libfaketime))) ;for tests
86e3e370 466
e9b718a0
MW
467 ;; The NSS test suite takes around 48 hours on Loongson 3A (MIPS) when
468 ;; another build is happening concurrently on the same machine.
469 (properties '((timeout . 216000))) ; 60 hours
86e3e370 470
1aaaff1a
SB
471 (home-page
472 "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS")
473 (synopsis "Network Security Services")
474 (description
e26e55c8
TGR
475 "Network Security Services (@dfn{NSS}) is a set of libraries designed to
476support cross-platform development of security-enabled client and server
477applications. Applications built with NSS can support SSL v2 and v3, TLS,
478PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other
479security standards.")
1aaaff1a
SB
480 (license license:mpl2.0)))
481
bfb48f4f 482(define (mozilla-patch file-name changeset hash)
ae71cd8a 483 "Return an origin for CHANGESET from the mozilla-esr60 repository."
bfb48f4f
MW
484 (origin
485 (method url-fetch)
ae71cd8a 486 (uri (string-append "https://hg.mozilla.org/releases/mozilla-esr60/raw-rev/"
bfb48f4f
MW
487 changeset))
488 (sha256 (base32 hash))
489 (file-name file-name)))
490
be0f6112
AE
491(define-public icecat
492 (package
493 (name "icecat")
3b144946 494 (version "60.3.0-gnu1")
be0f6112
AE
495 (source
496 (origin
497 (method url-fetch)
5bdec7d6
MW
498 (uri (string-append "mirror://gnu/gnuzilla/"
499 (first (string-split version #\-))
500 "/" name "-" version ".tar.bz2"))
be0f6112
AE
501 (sha256
502 (base32
3b144946 503 "0icnl64nxcyf7dprpdpygxhabsvyhps8c3ixysj9bcdlj9q34ib1"))
bfb48f4f 504 (patches
5bdec7d6 505 (list
257e3247
MW
506 (search-patch "icecat-avoid-bundled-libraries.patch")
507 (search-patch "icecat-use-system-graphite2+harfbuzz.patch")
717d29e2
MW
508 (search-patch "icecat-use-system-media-libs.patch")
509 (mozilla-patch "icecat-bug-1464061.patch" "d28761dbff18" "1f58rzwx4s1af66fdwn9lgkcd1ksmq8kn8imvf78p90jqi24h7b4")
510 (mozilla-patch "icecat-bug-1479853.patch" "4faeb696dd06" "12891xx9c15s6kby6d3zk64v5nqgaq7sw597zv1fkd3a6x69hlva")
29eb0bc7
MW
511 (mozilla-patch "icecat-CVE-2018-17466.patch" "12ba39f69876" "1piyq44f0xa0a9z2748aqwpaziaxwp61d86gyhalbyag8lcxfb3p")
512 (mozilla-patch "icecat-CVE-2018-18498.patch" "a0adabeedf26" "0f5wazha3zxzhy2j8f93hx62l9p02b1p40vi07qah3ar67h4ccj9")
513 (mozilla-patch "icecat-CVE-2018-12405-pt01.patch" "19604eb26230" "1wqxgph4z14ijhk2j2m4av5p6gx72d02lzz83q6yy0k065kw8psb")
514 (mozilla-patch "icecat-CVE-2018-18492.patch" "98737ab09270" "0fyl6wv0jxcxpkfpsff46y93k49n8lrw0k7c1p45g8da015dx27a")
515 (mozilla-patch "icecat-CVE-2018-18493.patch" "1cf7d80355d5" "19jp4x32vyxam54d1r9fm7jwf6krhhf3xazfqmxb9aw4iwdil7dl")
516 (mozilla-patch "icecat-CVE-2018-12405-pt02.patch" "c264774b8913" "1hxyi131x8jwawrq90cgkph833iv9ixrdrgzl1r978gbzwq10xz2")
717d29e2 517 (mozilla-patch "icecat-bug-1477773.patch" "ec13fda7c9b0" "0zj7aylgw55g0y7plaafn5gq8jwcsdr1bpdxacs0hq914nm8zy9z")
29eb0bc7 518 (mozilla-patch "icecat-CVE-2018-12405-pt03.patch" "5e1a9644aeef" "1qimrpgyrd8zkiri7w57j0aymk20y9b34am5w7rvr6qj1lhrbfla")
717d29e2 519 (mozilla-patch "icecat-bug-1485655.patch" "9055726e2d89" "1pppxr94zqh6zmi2mn1ih21qap09vk5ivbhnwxqr8iszvygjg44g")
46e613e3 520 (mozilla-patch "icecat-bug-1410214.patch" "9e641345e2ef" "0542xss2jdb8drh4g50cfy32l300x69dyywgx3dqs03vgr3qplxy")
46e613e3
MW
521 (mozilla-patch "icecat-CVE-2018-12405-pt04.patch" "6398541ec302" "1c2yi7mkg3d5afxsgj9fp3zq8yhkmphrll5d60d5xsdv88kqqiyf")
522 (mozilla-patch "icecat-bug-1496736.patch" "3bed863ee656" "038k7jk3yp16410crwfdvhyb2vis49c6bplrfr83v51885cqldar")
523 (mozilla-patch "icecat-bug-1498765.patch" "a08c8493ba19" "0bwg4vg03j962lb9q8ihpiy4rmygykf1q9ij8x7h34q7hg43yjya")
524 (mozilla-patch "icecat-CVE-2018-12405-pt05.patch" "ee204e26690e" "1scs45xhlr1mwv6x2q6n22363f42by8cjmifqwzlikggs21f5mcq")
525 (mozilla-patch "icecat-bug-1507035.patch" "cec8b58ab3fe" "1f131ibpkrhsa44l822hnm5qgvapbs3i9pj25iimdwvr933winz8")
526 (mozilla-patch "icecat-bug-1501680.patch" "282c6bb81562" "1zgw7l5zmni8468y3f6cip1nlw63cfdd9vv9b00cbrgy96d1q2cp")
527 (mozilla-patch "icecat-bug-1500310.patch" "b3a439a26186" "0mrjxcmrlv04fyl36dwxk97dw08g2hlikvw2hfa1l0y8zsc4bgw8")
528 (mozilla-patch "icecat-bug-1500366.patch" "abd59256c4e3" "1jgwh2v4kwb6kf2h7mwf128w1k1jj119bfhlgqpmn9ami35wpzf3")
529 (mozilla-patch "icecat-bug-1493080.patch" "a7cabf306d05" "1n7wv67rcaz8wj31jc77ssjdj3kb61gdg7pigj828c5z2cgns1k5")
530 (mozilla-patch "icecat-CVE-2018-12405-pt06.patch" "8bbf80948b50" "1nvc69zgz9nvbw1pwxkil1fx4cxxpr6bsjrpp6l2kv7jhgax1bqk")
531 (mozilla-patch "icecat-bug-1507564.patch" "60619cc47b10" "09fanqr08kqgraw4xp7y2az4jc7ia8nn200rqjfj20vmkyjz97j3")
532 (mozilla-patch "icecat-bug-1507730.patch" "dd0f01818b9c" "14ziq1bm72n58xrvsgzpjj5z6ifpvi70r5jfhbkbj69mf4y4cx2z")
533 (mozilla-patch "icecat-CVE-2018-12405-pt07.patch" "a73a46ddc848" "1bvvyav3xyn6rgn6haicinxn0dasl9dyc1i37fyb7wr5wcpahybs")
46e613e3
MW
534 (mozilla-patch "icecat-CVE-2018-18494.patch" "a72ec8e21577" "095zghmwdcbaid5426p9vpl757d8sfbsvgn201bjm7nhm03m4z7i")
535 (mozilla-patch "icecat-CVE-2018-12405-pt08.patch" "b6d0fc61fd0b" "0059avawxi4s4747plybjsjq8j2h4z7amw05p28xyg95a2njwnaa")
536 (mozilla-patch "icecat-bug-1499028.patch" "a62ede2dd3bc" "0ikmnibni8bdvpr9p42wskyyic08vzqdz5qr028bqzyg5119gily")
537 (mozilla-patch "icecat-bug-1426574.patch" "0db86656655b" "0kmccb4ccdzbzncwklx7w1bg7r61zwl2wnfp67vl27hm9xykbck7")
538 (mozilla-patch "icecat-CVE-2018-12405-pt09.patch" "20e31905de62" "0b5a441645wy3q4asaygvdq0inrxmxrh33cpgdp6ngflq9p2i6h0")
539 (mozilla-patch "icecat-CVE-2018-12405-pt10.patch" "c2832f98fe51" "0b4jfjfdyrihwjdfavd54hn9kdg2f017lmfr7mj2llp71flxwwj7")
540 (mozilla-patch "icecat-bug-1511495.patch" "d428d2b8f585" "1f9xs0bjhbphvkv60cnvz34sr2rv38jzvi47wh3nablg41yjpdrk")))
90e1cdae
MW
541 (modules '((guix build utils)))
542 (snippet
543 '(begin
bfb48f4f 544 (use-modules (ice-9 ftw))
90e1cdae
MW
545 ;; Remove bundled libraries that we don't use, since they may
546 ;; contain unpatched security flaws, they waste disk space and
547 ;; network bandwidth, and may cause confusion.
548 (for-each delete-file-recursively
549 '(;; FIXME: Removing the bundled icu breaks configure.
550 ;; * The bundled icu headers are used in some places.
551 ;; * The version number is taken from the bundled copy.
552 ;;"intl/icu"
553 ;;
554 ;; FIXME: A script from the bundled nspr is used.
555 ;;"nsprpub"
556 ;;
6d328879
MW
557 ;; FIXME: With the update to IceCat 60, using system NSS
558 ;; broke certificate validation. See
559 ;; <https://bugs.gnu.org/32833>. For now, we use
560 ;; the bundled NSPR and NSS. TODO: Investigate,
561 ;; and try to unbundle these libraries again.
562 ;; UNBUNDLE-ME! "security/nss"
563 ;;
94e96f7f 564 ;; TODO: Use more system media libraries. See:
90e1cdae 565 ;; <https://bugzilla.mozilla.org/show_bug.cgi?id=517422>
94e96f7f
MW
566 ;; * libtheora: esr60 wants v1.2, not yet released.
567 ;; * soundtouch: avoiding the bundled library would
568 ;; result in some loss of functionality. There's
569 ;; also an issue with exception handling
570 ;; configuration. It seems that this is needed in
571 ;; some moz.build:
572 ;; DEFINES['ST_NO_EXCEPTION_HANDLING'] = 1
90e1cdae
MW
573 ;; * libopus
574 ;; * speex
90e1cdae 575 ;;
90e1cdae
MW
576 "modules/freetype2"
577 "modules/zlib"
578 "modules/libbz2"
94e96f7f 579 "ipc/chromium/src/third_party/libevent"
7cba7647 580 "media/libjpeg"
90e1cdae 581 "media/libvpx"
94e96f7f
MW
582 "media/libogg"
583 "media/libvorbis"
584 ;; "media/libtheora" ; wants theora-1.2, not yet released
585 "media/libtremor"
257e3247
MW
586 "gfx/harfbuzz"
587 "gfx/graphite2"
90e1cdae
MW
588 "js/src/ctypes/libffi"
589 "db/sqlite3"))
bfb48f4f
MW
590 ;; Delete .pyc files, typically present in icecat source tarballs
591 (for-each delete-file (find-files "." "\\.pyc$"))
5bdec7d6 592 ;; Delete obj-* directories, sometimes present in icecat tarballs
bfb48f4f
MW
593 (for-each delete-file-recursively
594 (scandir "." (lambda (name)
595 (string-prefix? "obj-" name))))
a5e55dfb 596 #t))))
be0f6112
AE
597 (build-system gnu-build-system)
598 (inputs
599 `(("alsa-lib" ,alsa-lib)
1ae6df81 600 ("bzip2" ,bzip2)
90e1cdae 601 ("cups" ,cups)
be0f6112 602 ("dbus-glib" ,dbus-glib)
90e1cdae
MW
603 ("gdk-pixbuf" ,gdk-pixbuf)
604 ("glib" ,glib)
002c3e6d
MW
605 ("gtk+" ,gtk+)
606 ("gtk+-2" ,gtk+-2)
257e3247 607 ("graphite2" ,graphite2)
74c7af9f
MW
608 ("pango" ,pango)
609 ("freetype" ,freetype)
257e3247 610 ("harfbuzz" ,harfbuzz)
90e1cdae
MW
611 ("hunspell" ,hunspell)
612 ("libcanberra" ,libcanberra)
613 ("libgnome" ,libgnome)
7cba7647 614 ("libjpeg-turbo" ,libjpeg-turbo)
94e96f7f
MW
615 ("libogg" ,libogg)
616 ;; ("libtheora" ,libtheora) ; wants theora-1.2, not yet released
617 ("libvorbis" ,libvorbis)
74c7af9f 618 ("libxft" ,libxft)
94e96f7f 619 ("libevent" ,libevent)
90e1cdae
MW
620 ("libxinerama" ,libxinerama)
621 ("libxscrnsaver" ,libxscrnsaver)
9f7ae77f 622 ("libxcomposite" ,libxcomposite)
be0f6112 623 ("libxt" ,libxt)
1ae6df81 624 ("libffi" ,libffi)
e67ad553 625 ("ffmpeg" ,ffmpeg)
13b284d9
MW
626 ("libvpx" ,libvpx)
627 ("icu4c" ,icu4c)
628 ("pixman" ,pixman)
74c7af9f 629 ("pulseaudio" ,pulseaudio)
be0f6112 630 ("mesa" ,mesa)
90e1cdae 631 ("mit-krb5" ,mit-krb5)
6d328879
MW
632 ;; See <https://bugs.gnu.org/32833>
633 ;; and related comments in the 'snippet' above.
634 ;; UNBUNDLE-ME! ("nspr" ,nspr)
635 ;; UNBUNDLE-ME! ("nss" ,nss)
9bc79c11 636 ("sqlite" ,sqlite)
90e1cdae 637 ("startup-notification" ,startup-notification)
be0f6112 638 ("unzip" ,unzip)
1ae6df81
LC
639 ("zip" ,zip)
640 ("zlib" ,zlib)))
c4c4cc05 641 (native-inputs
89f9df6c
EF
642 ;; Icecat 60 checkes for rust>=1.24
643 `(("rust" ,rust-1.24)
644 ("cargo" ,rust-1.24 "cargo")
8d956d86
MW
645 ("llvm" ,llvm-3.9.1)
646 ("clang" ,clang-3.9.1)
e67ad553 647 ("perl" ,perl)
c4c4cc05
JD
648 ("python" ,python-2) ; Python 3 not supported
649 ("python2-pysqlite" ,python2-pysqlite)
002c3e6d 650 ("yasm" ,yasm)
bfb48f4f 651 ("pkg-config" ,pkg-config)
002c3e6d 652 ("autoconf" ,autoconf-2.13)
bfb48f4f 653 ("which" ,which)))
be0f6112 654 (arguments
74c7af9f
MW
655 `(#:tests? #f ; no check target
656 #:out-of-source? #t ; must be built outside of the source directory
73b1b4eb
LC
657
658 ;; XXX: There are RUNPATH issues such as
659 ;; $prefix/lib/icecat-31.6.0/plugin-container NEEDing libmozalloc.so,
660 ;; which is not in its RUNPATH, but they appear to be harmless in
661 ;; practice somehow. See <http://hydra.gnu.org/build/378133>.
662 #:validate-runpath? #f
663
e67ad553
MW
664 #:imported-modules ,%cargo-build-system-modules ;for `generate-checksums'
665
8d956d86 666 #:configure-flags `("--enable-default-toolkit=cairo-gtk3"
9502ea3e
MW
667
668 "--with-distribution-id=org.gnu"
669
90e1cdae
MW
670 "--enable-startup-notification"
671 "--enable-pulseaudio"
90e1cdae 672
9502ea3e
MW
673 "--disable-tests"
674 "--disable-updater"
675 "--disable-crashreporter"
676 "--disable-maintenance-service"
677 "--disable-eme"
90e1cdae 678 "--disable-gconf"
e67ad553 679
90e1cdae 680 ;; Building with debugging symbols takes ~5GiB, so
1ae6df81
LC
681 ;; disable it.
682 "--disable-debug"
683 "--disable-debug-symbols"
684
8d956d86
MW
685 ;; Clang is needed to build Stylo, Mozilla's new
686 ;; CSS engine. We must specify the clang paths
687 ;; manually, because otherwise the Mozilla build
688 ;; system looks in the directories returned by
689 ;; llvm-config --bindir and llvm-config --libdir,
690 ;; which return paths in the llvm package where
691 ;; clang is not found.
692 ,(string-append "--with-clang-path="
693 (assoc-ref %build-inputs "clang")
694 "/bin/clang")
695 ,(string-append "--with-libclang-path="
696 (assoc-ref %build-inputs "clang")
697 "/lib")
698
5bdec7d6
MW
699 ;; Hack to work around missing
700 ;; "unofficial" branding in icecat.
bfb48f4f
MW
701 "--enable-official-branding"
702
90e1cdae 703 ;; Avoid bundled libraries.
1ae6df81 704 "--with-system-zlib"
90e1cdae 705 "--with-system-bz2"
7cba7647 706 "--with-system-jpeg" ; must be libjpeg-turbo
94e96f7f
MW
707 "--with-system-libevent"
708 "--with-system-ogg"
709 "--with-system-vorbis"
710 ;; "--with-system-theora" ; wants theora-1.2, not yet released
13b284d9 711 "--with-system-libvpx"
483ab08f 712 "--with-system-icu"
6d328879
MW
713
714 ;; See <https://bugs.gnu.org/32833>
715 ;; and related comments in the 'snippet' above.
716 ;; UNBUNDLE-ME! "--with-system-nspr"
717 ;; UNBUNDLE-ME! "--with-system-nss"
718
257e3247
MW
719 "--with-system-harfbuzz"
720 "--with-system-graphite2"
13b284d9 721 "--enable-system-pixman"
5b17fabc 722 "--enable-system-ffi"
90e1cdae 723 "--enable-system-hunspell"
9128e323 724 "--enable-system-sqlite"
1ae6df81 725
98a046cd
AE
726 ;; Fails with "--with-system-png won't work because
727 ;; the system's libpng doesn't have APNG support".
728 ;; According to
729 ;; http://sourceforge.net/projects/libpng-apng/ ,
730 ;; "the Animated Portable Network Graphics (APNG)
731 ;; is an unofficial extension of the Portable
732 ;; Network Graphics (PNG) format";
733 ;; we probably do not wish to support it.
1ae6df81 734 ;; "--with-system-png"
5b17fabc 735 )
1ae6df81 736
9f7ae77f 737 #:modules ((ice-9 ftw)
6cde5c34
LC
738 (ice-9 rdelim)
739 (ice-9 match)
9f7ae77f 740 ,@%gnu-build-system-modules)
be0f6112 741 #:phases
90e1cdae 742 (modify-phases %standard-phases
9f7ae77f
MW
743 (add-after
744 'unpack 'ensure-no-mtimes-pre-1980
745 (lambda _
746 ;; Without this, the 'source/test/addons/packed.xpi' and
747 ;; 'source/test/addons/simple-prefs.xpi' targets fail while trying
748 ;; to create zip archives.
749 (let ((early-1980 315619200)) ; 1980-01-02 UTC
750 (ftw "." (lambda (file stat flag)
751 (unless (<= early-1980 (stat:mtime stat))
752 (utime file early-1980 early-1980))
753 #t))
754 #t)))
90e1cdae 755 (add-after
9502ea3e 756 'unpack 'link-libxul-with-libraries
90e1cdae
MW
757 (lambda _
758 ;; libxul.so dynamically opens libraries, so here we explicitly
759 ;; link them into libxul.so instead.
760 ;;
761 ;; TODO: It might be preferable to patch in absolute file names in
762 ;; calls to dlopen or PR_LoadLibrary, but that didn't seem to
763 ;; work. More investigation is needed.
9f7ae77f 764 (substitute* "toolkit/library/moz.build"
002c3e6d
MW
765 (("^# This library needs to be last" all)
766 (string-append "OS_LIBS += [
9f7ae77f 767 'GL', 'gnome-2', 'canberra', 'Xss', 'cups', 'gssapi_krb5',
002c3e6d
MW
768 'avcodec', 'avutil', 'pulse' ]\n\n"
769 all)))
9f7ae77f 770 #t))
94e96f7f
MW
771 (replace 'bootstrap
772 (lambda _
773 (invoke "sh" "-c" "autoconf old-configure.in > old-configure")))
e67ad553 774 (add-after 'patch-source-shebangs 'patch-cargo-checksums
257e3247 775 (lambda _
e67ad553
MW
776 (use-modules (guix build cargo-build-system))
777 (let ((null-file "/dev/null")
778 (null-hash "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"))
779 (substitute* '("Cargo.lock" "servo/Cargo.lock")
780 (("(\"checksum .* = )\".*\"" all name)
781 (string-append name "\"" null-hash "\"")))
782 (for-each
783 (lambda (filename)
784 (delete-file filename)
785 (let ((dir (dirname filename)))
786 (display (string-append
787 "patch-cargo-checksums: generate-checksums for "
788 dir "\n"))
789 (generate-checksums dir null-file)))
790 (find-files "third_party/rust" ".cargo-checksum.json")))
791 #t))
8d956d86
MW
792 (add-before 'configure 'augment-CPLUS_INCLUDE_PATH
793 (lambda* (#:key build inputs #:allow-other-keys)
794 ;; Here, we add additional entries to CPLUS_INCLUDE_PATH, to work
795 ;; around a problem that otherwise occurs when attempting to
796 ;; build Stylo, which requires Rust and Clang. Without these
797 ;; additional entries, errors occur during the build indicating
798 ;; that the <cstddef> and "c++config.h" headers cannot be found.
799 ;; Note that the 'build' keyword argument contains the GNU
800 ;; triplet, e.g. "x86_64-unknown-linux-gnu".
801 (let ((gcc (assoc-ref inputs "gcc")))
802 (setenv "CPLUS_INCLUDE_PATH"
803 (string-append gcc "/include/c++" ":"
804 gcc "/include/c++/" build ":"
805 (getenv "CPLUS_INCLUDE_PATH"))))))
90e1cdae
MW
806 (replace
807 'configure
808 ;; configure does not work followed by both "SHELL=..." and
809 ;; "CONFIG_SHELL=..."; set environment variables instead
810 (lambda* (#:key outputs configure-flags #:allow-other-keys)
811 (let* ((out (assoc-ref outputs "out"))
812 (bash (which "bash"))
813 (abs-srcdir (getcwd))
814 (srcdir (string-append "../" (basename abs-srcdir)))
815 (flags `(,(string-append "--prefix=" out)
816 ,(string-append "--with-l10n-base="
817 abs-srcdir "/l10n")
818 ,@configure-flags)))
819 (setenv "SHELL" bash)
820 (setenv "CONFIG_SHELL" bash)
002c3e6d 821 (setenv "AUTOCONF" (which "autoconf")) ; must be autoconf-2.13
8d956d86 822 (setenv "CC" "gcc") ; apparently needed when Stylo is enabled
90e1cdae
MW
823 (mkdir "../build")
824 (chdir "../build")
825 (format #t "build directory: ~s~%" (getcwd))
826 (format #t "configure flags: ~s~%" flags)
3f27124e
MW
827 (apply invoke bash
828 (string-append srcdir "/configure")
829 flags))))
6cde5c34
LC
830 (add-before 'configure 'install-desktop-entry
831 (lambda* (#:key outputs #:allow-other-keys)
832 ;; Install the '.desktop' file.
833 (define (swallow-%%-directives input output)
834 ;; Interpret '%%ifdef' directives found in the '.desktop' file.
835 (let loop ((state 'top))
836 (match (read-line input 'concat)
837 ((? eof-object?)
838 #t)
839 ((? string? line)
840 (cond ((string-prefix? "%%ifdef" line)
841 (loop 'ifdef))
842 ((string-prefix? "%%else" line)
843 (loop 'else))
844 ((string-prefix? "%%endif" line)
845 (loop 'top))
846 (else
847 (case state
848 ((top else)
849 (display line output)
850 (loop state))
851 (else
852 (loop state)))))))))
853
854 (let* ((out (assoc-ref outputs "out"))
855 (applications (string-append out "/share/applications")))
856 (call-with-input-file "debian/icecat.desktop.in"
857 (lambda (input)
858 (call-with-output-file "debian/icecat.desktop"
859 (lambda (output)
860 (swallow-%%-directives input output)))))
861
862 (substitute* "debian/icecat.desktop"
863 (("@MOZ_DISPLAY_NAME@")
864 "GNU IceCat")
865 (("^Exec=@MOZ_APP_NAME@")
866 (string-append "Exec=" out "/bin/icecat"))
867 (("@MOZ_APP_NAME@")
868 "icecat"))
869 (install-file "debian/icecat.desktop" applications)
88a8ce87
AG
870 #t)))
871 (add-after 'install-desktop-entry 'install-icons
872 (lambda* (#:key outputs #:allow-other-keys)
873 (let ((out (assoc-ref outputs "out")))
874 (with-directory-excursion "browser/branding/official"
875 (for-each
876 (lambda (file)
877 (let* ((size (string-filter char-numeric? file))
878 (icons (string-append out "/share/icons/hicolor/"
879 size "x" size "/apps")))
880 (mkdir-p icons)
881 (copy-file file (string-append icons "/icecat.png"))))
882 '("default16.png" "default22.png" "default24.png"
883 "default32.png" "default48.png" "content/icon64.png"
3f27124e
MW
884 "mozicon128.png" "default256.png"))
885 #t))))
6e75740f
CL
886 ;; This fixes the file chooser crash that happens with GTK 3.
887 (add-after 'install 'wrap-program
888 (lambda* (#:key inputs outputs #:allow-other-keys)
889 (let* ((out (assoc-ref outputs "out"))
890 (lib (string-append out "/lib"))
891 (gtk (assoc-ref inputs "gtk+"))
892 (gtk-share (string-append gtk "/share")))
893 (wrap-program (car (find-files lib "^icecat$"))
3f27124e
MW
894 `("XDG_DATA_DIRS" ":" prefix (,gtk-share)))
895 #t))))))
6fd52309 896 (home-page "https://www.gnu.org/software/gnuzilla/")
be0f6112
AE
897 (synopsis "Entirely free browser derived from Mozilla Firefox")
898 (description
899 "IceCat is the GNU version of the Firefox browser. It is entirely free
c5779c93 900software, which does not recommend non-free plugins and addons. It also
79c311b8 901features built-in privacy-protecting features.")
63e8bb12 902 (license license:mpl2.0) ;and others, see toolkit/content/license.html
99effc8f
LC
903 (properties
904 `((ftp-directory . "/gnu/gnuzilla")
905 (cpe-name . "firefox_esr")
bfb48f4f 906 (cpe-version . ,(first (string-split version #\-)))))))
f5301f00
LC
907
908(define-public conkeror
909 ;; The Conkeror web browser relied on XULRunner, which IceCat > 50 no longer
910 ;; provides. See <http://conkeror.org> for the original web page.
911 (deprecated-package "conkeror" icecat))