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