gnu: nss: Include -L$libdir in output of "nss-config --libs".
[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>
46a3e00b 3;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
2a666e9c 4;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
1aaaff1a 5;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
be0f6112
AE
6;;;
7;;; This file is part of GNU Guix.
8;;;
9;;; GNU Guix is free software; you can redistribute it and/or modify it
10;;; under the terms of the GNU General Public License as published by
11;;; the Free Software Foundation; either version 3 of the License, or (at
12;;; your option) any later version.
13;;;
14;;; GNU Guix is distributed in the hope that it will be useful, but
15;;; WITHOUT ANY WARRANTY; without even the implied warranty of
16;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17;;; GNU General Public License for more details.
18;;;
19;;; You should have received a copy of the GNU General Public License
20;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
21
22(define-module (gnu packages gnuzilla)
23 #:use-module (gnu packages)
b5b73a82 24 #:use-module ((guix licenses) #:prefix license:)
be0f6112
AE
25 #:use-module (guix packages)
26 #:use-module (guix download)
27 #:use-module (guix build-system gnu)
1aaaff1a 28 #:use-module (gnu packages databases)
be0f6112
AE
29 #:use-module (gnu packages glib)
30 #:use-module (gnu packages gstreamer)
31 #:use-module (gnu packages gtk)
32 #:use-module (gnu packages linux)
33 #:use-module (gnu packages perl)
34 #:use-module (gnu packages pkg-config)
1ae6df81 35 #:use-module (gnu packages compression)
74c7af9f 36 #:use-module (gnu packages fontutils)
1ae6df81 37 #:use-module (gnu packages libevent)
e55354b8 38 #:use-module (gnu packages image)
1ae6df81 39 #:use-module (gnu packages libffi)
74c7af9f 40 #:use-module (gnu packages pulseaudio)
be0f6112
AE
41 #:use-module (gnu packages python)
42 #:use-module (gnu packages xorg)
200726ed 43 #:use-module (gnu packages gl)
be0f6112 44 #:use-module (gnu packages yasm)
13b284d9
MW
45 #:use-module (gnu packages icu4c)
46 #:use-module (gnu packages video)
47 #:use-module (gnu packages xdisorg)
be0f6112
AE
48 #:use-module (gnu packages zip))
49
4923e06f
SB
50(define-public mozjs
51 (package
52 (name "mozjs")
53 (version "17.0.0")
54 (source (origin
55 (method url-fetch)
56 (uri (string-append
57 "https://ftp.mozilla.org/pub/mozilla.org/js/"
58 name version ".tar.gz"))
59 (sha256
60 (base32
61 "1fig2wf4f10v43mqx67y68z6h77sy900d1w0pz9qarrqx57rc7ij"))))
62 (build-system gnu-build-system)
63 (native-inputs
64 `(("perl", perl)
65 ("python" ,python-2)))
66 (arguments
67 `(#:phases
68 (alist-cons-before
69 'configure 'chdir
70 (lambda _
71 (chdir "js/src"))
72 (alist-replace
73 'configure
74 ;; configure fails if it is followed by SHELL and CONFIG_SHELL
75 (lambda* (#:key outputs #:allow-other-keys)
76 (let ((out (assoc-ref outputs "out")))
77 (setenv "SHELL" (which "sh"))
78 (setenv "CONFIG_SHELL" (which "sh"))
79 (zero? (system*
80 "./configure" (string-append "--prefix=" out)))))
81 %standard-phases))))
82 (home-page
83 "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey")
84 (synopsis "Mozilla javascript engine")
85 (description "SpiderMonkey is Mozilla's JavaScript engine written
86in C/C++.")
87 (license license:mpl2.0))) ; and others for some files
88
89(define-public nspr
90 (package
91 (name "nspr")
61427c8d 92 (version "4.10.8")
4923e06f
SB
93 (source (origin
94 (method url-fetch)
95 (uri (string-append
96 "https://ftp.mozilla.org/pub/mozilla.org/nspr/releases/v"
97 version "/src/nspr-" version ".tar.gz"))
98 (sha256
99 (base32
61427c8d 100 "05aaakz24ba2hdzlqx8qamwrsp7gni1acms8mr6m432wa9yaazjh"))))
4923e06f
SB
101 (build-system gnu-build-system)
102 (native-inputs
103 `(("perl", perl)))
104 (arguments
105 `(#:tests? #f ; no check target
106 #:configure-flags
107 `("--enable-64bit")
108 #:phases
109 (alist-cons-before
110 'configure 'chdir
111 (lambda _
112 (chdir "nspr"))
113 %standard-phases)))
114 (home-page
115 "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR")
116 (synopsis "Netscape API for system level and libc-like functions")
117 (description "Netscape Portable Runtime (NSPR) provides a
118platform-neutral API for system level and libc-like functions. It is used
119in the Mozilla clients.")
120 (license license:mpl2.0)))
121
1aaaff1a
SB
122(define-public nss
123 (package
124 (name "nss")
5deea4fc 125 (version "3.17.4")
1aaaff1a
SB
126 (source (origin
127 (method url-fetch)
128 (uri (string-append
129 "ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/"
5deea4fc 130 "releases/NSS_3_17_4_RTM/src/nss-3.17.4.tar.gz"))
1aaaff1a
SB
131 (sha256
132 (base32
5deea4fc 133 "0ycxzybgn4bq0i6j5zjdjl70n3s8a742yixyik4pw8x4h4cav60x"))
1aaaff1a
SB
134 ;; Create nss.pc and nss-config.
135 (patches (list (search-patch "nss-pkgconfig.patch")))))
136 (build-system gnu-build-system)
137 (outputs '("out" "bin"))
138 (arguments
139 '(#:parallel-build? #f ; failed
140 #:make-flags
141 (let* ((out (assoc-ref %outputs "out"))
142 (nspr (string-append (assoc-ref %build-inputs "nspr")))
143 (rpath (string-append "-Wl,-rpath=" out "/lib/nss")))
144 (list "-C" "nss" (string-append "PREFIX=" out)
145 "NSDISTMODE=copy"
146 "NSS_USE_SYSTEM_SQLITE=1"
147 (string-append "NSPR_INCLUDE_DIR=" nspr "/include/nspr")
148 ;; Add $out/lib/nss to RPATH.
149 (string-append "RPATH=" rpath)
150 (string-append "LDFLAGS=" rpath)))
151 #:modules ((guix build gnu-build-system)
152 (guix build utils)
153 (ice-9 ftw)
154 (ice-9 match)
155 (srfi srfi-26))
156 #:imported-modules ((guix build gnu-build-system)
157 (guix build utils))
158 #:phases
159 (alist-replace
160 'configure
161 (lambda* (#:key system inputs #:allow-other-keys)
162 ;; Tells NSS to build for the 64-bit ABI if we are 64-bit system.
163 (when (string-prefix? "x86_64" system)
164 (setenv "USE_64" "1"))
165 #t)
166 (alist-replace
167 'check
168 (lambda _
169 ;; Use 127.0.0.1 instead of $HOST.$DOMSUF as HOSTADDR for testing.
170 ;; The later requires a working DNS or /etc/hosts.
171 (setenv "DOMSUF" "(none)")
172 (setenv "USE_IP" "TRUE")
173 (setenv "IP_ADDRESS" "127.0.0.1")
174 (zero? (system* "./nss/tests/all.sh")))
175 (alist-replace
176 'install
177 (lambda* (#:key outputs #:allow-other-keys)
178 (let* ((out (assoc-ref outputs "out"))
179 (bin (string-append (assoc-ref outputs "bin") "/bin"))
180 (inc (string-append out "/include/nss"))
181 (lib (string-append out "/lib/nss"))
182 (obj (match (scandir "dist" (cut string-suffix? "OBJ" <>))
183 ((obj) (string-append "dist/" obj)))))
184 ;; Install nss-config to $out/bin.
185 (mkdir-p (string-append out "/bin"))
186 (copy-file (string-append obj "/bin/nss-config")
187 (string-append out "/bin/nss-config"))
188 (delete-file (string-append obj "/bin/nss-config"))
189 ;; Install nss.pc to $out/lib/pkgconfig.
190 (mkdir-p (string-append out "/lib/pkgconfig"))
191 (copy-file (string-append obj "/lib/pkgconfig/nss.pc")
192 (string-append out "/lib/pkgconfig/nss.pc"))
193 (delete-file (string-append obj "/lib/pkgconfig/nss.pc"))
194 (rmdir (string-append obj "/lib/pkgconfig"))
195 ;; Install other files.
196 (copy-recursively "dist/public/nss" inc)
197 (copy-recursively (string-append obj "/bin") bin)
198 (copy-recursively (string-append obj "/lib") lib)))
199 %standard-phases)))))
200 (inputs
201 `(("sqlite" ,sqlite)
202 ("zlib" ,zlib)))
203 (propagated-inputs `(("nspr" ,nspr))) ; required by nss.pc.
204 (native-inputs `(("perl" ,perl)))
205 (home-page
206 "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS")
207 (synopsis "Network Security Services")
208 (description
209 "Network Security Services (NSS) is a set of libraries designed to support
210cross-platform development of security-enabled client and server applications.
211Applications built with NSS can support SSL v2 and v3, TLS, PKCS #5, PKCS #7,
212PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other security
213standards.")
214 (license license:mpl2.0)))
215
be0f6112
AE
216(define-public icecat
217 (package
218 (name "icecat")
582100a0 219 (version "31.4.0")
be0f6112
AE
220 (source
221 (origin
222 (method url-fetch)
47bc885c 223 (uri (string-append "mirror://gnu/gnuzilla/"
582100a0 224 version "/" name "-" version ".tar.bz2"))
be0f6112
AE
225 (sha256
226 (base32
88307406
MW
227 "0q5ilgfybcrbwf9hq9zc1cpnlhq1pddnnjmdrxrcrrg8lgx5kkc2"))
228 (patches (map search-patch
229 '("icecat-CVE-2015-0822.patch"
230 "icecat-CVE-2015-0827-pt-1.patch"
231 "icecat-CVE-2015-0827-pt-2.patch"
232 "icecat-CVE-2015-0827-pt-3.patch"
233 "icecat-CVE-2015-0831-pt-1.patch"
234 "icecat-CVE-2015-0831-pt-2.patch"
235 "icecat-CVE-2015-0836-pt-01.patch"
236 "icecat-CVE-2015-0836-pt-02.patch"
237 "icecat-CVE-2015-0836-pt-03.patch"
238 "icecat-CVE-2015-0836-pt-04.patch"
239 "icecat-CVE-2015-0836-pt-05.patch"
240 "icecat-CVE-2015-0836-pt-06.patch"
241 "icecat-CVE-2015-0836-pt-07.patch"
242 "icecat-CVE-2015-0836-pt-08.patch"
243 "icecat-CVE-2015-0836-pt-09.patch"
244 "icecat-CVE-2015-0836-pt-10.patch"
245 "icecat-CVE-2015-0836-pt-11.patch")))))
be0f6112
AE
246 (build-system gnu-build-system)
247 (inputs
248 `(("alsa-lib" ,alsa-lib)
1ae6df81 249 ("bzip2" ,bzip2)
be0f6112
AE
250 ("dbus" ,dbus)
251 ("dbus-glib" ,dbus-glib)
252 ("glib" ,glib)
43cc5c5e
MW
253 ("gstreamer" ,gstreamer)
254 ("gst-plugins-base" ,gst-plugins-base)
be0f6112 255 ("gtk+" ,gtk+-2)
74c7af9f
MW
256 ("pango" ,pango)
257 ("freetype" ,freetype)
258 ("libxft" ,libxft)
1ae6df81 259 ("libevent" ,libevent)
be0f6112 260 ("libxt" ,libxt)
1ae6df81 261 ("libffi" ,libffi)
13b284d9
MW
262 ("libvpx" ,libvpx)
263 ("icu4c" ,icu4c)
264 ("pixman" ,pixman)
74c7af9f 265 ("pulseaudio" ,pulseaudio)
be0f6112 266 ("mesa" ,mesa)
be0f6112
AE
267 ("unzip" ,unzip)
268 ("yasm" ,yasm)
1ae6df81
LC
269 ("zip" ,zip)
270 ("zlib" ,zlib)))
c4c4cc05
JD
271 (native-inputs
272 `(("perl" ,perl)
273 ("python" ,python-2) ; Python 3 not supported
274 ("python2-pysqlite" ,python2-pysqlite)
030daf71 275 ("pkg-config" ,pkg-config)))
be0f6112 276 (arguments
74c7af9f
MW
277 `(#:tests? #f ; no check target
278 #:out-of-source? #t ; must be built outside of the source directory
1ae6df81
LC
279
280 #:configure-flags '(;; Building with debugging symbols takes ~5GiB, so
281 ;; disable it.
282 "--disable-debug"
283 "--disable-debug-symbols"
284
46a3e00b 285 "--enable-pulseaudio"
43cc5c5e 286 "--enable-gstreamer=1.0"
1ae6df81
LC
287
288 "--with-system-zlib"
289 "--with-system-bz2" ; FIXME: not used
290 "--with-system-libevent"
13b284d9
MW
291 "--with-system-libvpx"
292 "--with-system-icu"
293 "--enable-system-pixman"
294
295 ;; XXX unsure whether to use these.
296 ;; "--with-system-nspr"
297 ;; "--with-system-nss"
298
299 ;; Fails with "configure: error: Library requirements
300 ;; (cairo-tee >= 1.10) not met".
301 ;; "--enable-system-cairo"
302
303 ;; Fails with "configure: error: System
304 ;; SQLite library is not compiled with
305 ;; SQLITE_SECURE_DELETE."
306 ;; "--enable-system-sqlite"
1ae6df81 307
98a046cd
AE
308 ;; Fails with "--with-system-png won't work because
309 ;; the system's libpng doesn't have APNG support".
310 ;; According to
311 ;; http://sourceforge.net/projects/libpng-apng/ ,
312 ;; "the Animated Portable Network Graphics (APNG)
313 ;; is an unofficial extension of the Portable
314 ;; Network Graphics (PNG) format";
315 ;; we probably do not wish to support it.
1ae6df81
LC
316 ;; "--with-system-png"
317
98a046cd
AE
318 ;; Fails with "libjpeg-turbo JCS_EXTENSIONS
319 ;; required".
320 ;; According to
321 ;; http://sourceforge.net/projects/libjpeg-turbo/ ,
322 ;; "libjpeg-turbo is a derivative of libjpeg that
323 ;; uses MMX, SSE, SSE2, and NEON SIMD instructions
324 ;; to accelerate baseline JPEG compression/
325 ;; decompression", so we had better not use it
1ae6df81
LC
326 ;; "--with-system-jpeg"
327
328 "--enable-system-ffi")
329
be0f6112 330 #:phases
74c7af9f
MW
331 (alist-replace
332 'configure
333 ;; configure does not work followed by both "SHELL=..." and
334 ;; "CONFIG_SHELL=..."; set environment variables instead
335 (lambda* (#:key outputs configure-flags #:allow-other-keys)
336 (let* ((out (assoc-ref outputs "out"))
337 (bash (which "bash"))
338 (abs-srcdir (getcwd))
339 (srcdir (string-append "../" (basename abs-srcdir)))
340 (flags `(,(string-append "--prefix=" out)
341 ,(string-append "--with-l10n-base="
342 abs-srcdir "/l10n")
343 ,@configure-flags)))
344 (setenv "SHELL" bash)
345 (setenv "CONFIG_SHELL" bash)
346 (mkdir "../build")
347 (chdir "../build")
348 (format #t "build directory: ~s~%" (getcwd))
349 (format #t "configure flags: ~s~%" flags)
350 (zero? (apply system* bash
351 (string-append srcdir "/configure")
352 flags))))
353 %standard-phases)))
be0f6112
AE
354 (home-page "http://www.gnu.org/software/gnuzilla/")
355 (synopsis "Entirely free browser derived from Mozilla Firefox")
356 (description
357 "IceCat is the GNU version of the Firefox browser. It is entirely free
c5779c93 358software, which does not recommend non-free plugins and addons. It also
79c311b8 359features built-in privacy-protecting features.")
be0f6112 360 (license license:mpl2.0))) ; and others, see toolkit/content/license.html