gnu-build-system: Add 'patch-usr-bin-file' to %standard-phases.
[jackhill/guix/guix.git] / gnu / packages / gnuzilla.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
3 ;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
4 ;;;
5 ;;; This file is part of GNU Guix.
6 ;;;
7 ;;; GNU Guix is free software; you can redistribute it and/or modify it
8 ;;; under the terms of the GNU General Public License as published by
9 ;;; the Free Software Foundation; either version 3 of the License, or (at
10 ;;; your option) any later version.
11 ;;;
12 ;;; GNU Guix is distributed in the hope that it will be useful, but
13 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
14 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 ;;; GNU General Public License for more details.
16 ;;;
17 ;;; You should have received a copy of the GNU General Public License
18 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
19
20 (define-module (gnu packages gnuzilla)
21 #:use-module (gnu packages)
22 #:use-module ((guix licenses)
23 #:renamer (symbol-prefix-proc 'license:))
24 #:use-module (guix packages)
25 #:use-module (guix download)
26 #:use-module (guix build-system gnu)
27 #:use-module (gnu packages glib)
28 #:use-module (gnu packages gstreamer)
29 #:use-module (gnu packages gtk)
30 #:use-module (gnu packages linux)
31 #:use-module (gnu packages perl)
32 #:use-module (gnu packages pkg-config)
33 #:use-module (gnu packages compression)
34 #:use-module (gnu packages libevent)
35 #:use-module (gnu packages image)
36 #:use-module (gnu packages libffi)
37 #:use-module (gnu packages python)
38 #:use-module (gnu packages xorg)
39 #:use-module (gnu packages gl)
40 #:use-module (gnu packages yasm)
41 #:use-module (gnu packages zip))
42
43 (define-public icecat
44 (package
45 (name "icecat")
46 (version "24.0")
47 (source
48 (origin
49 (method url-fetch)
50 (uri (string-append "mirror://gnu/gnuzilla/"
51 (substring version 0 (string-index version #\.))
52 "/icecat-" version ".tar.gz"))
53 (sha256
54 (base32
55 "1vxzjwmhad6yxx4sk9zvapjgv5salcv10id061q0991ii3dycy9a"))))
56 (build-system gnu-build-system)
57 (inputs
58 `(("alsa-lib" ,alsa-lib)
59 ("bzip2" ,bzip2)
60 ("dbus" ,dbus)
61 ("dbus-glib" ,dbus-glib)
62 ("glib" ,glib)
63 ("gstreamer" ,gstreamer-0.10)
64 ("gst-plugins-base" ,gst-plugins-base-0.10)
65 ("gtk+" ,gtk+-2)
66 ("libevent" ,libevent)
67 ("libxt" ,libxt)
68 ("libffi" ,libffi)
69 ("mesa" ,mesa)
70 ("unzip" ,unzip)
71 ("yasm" ,yasm)
72 ("zip" ,zip)
73 ("zlib" ,zlib)))
74 (native-inputs
75 `(("perl" ,perl)
76 ("python" ,python-2) ; Python 3 not supported
77 ("python2-pysqlite" ,python2-pysqlite)
78 ("pkg-config" ,pkg-config)))
79 (arguments
80 `(#:tests? #f ; no check target
81
82 #:configure-flags '(;; Building with debugging symbols takes ~5GiB, so
83 ;; disable it.
84 "--disable-debug"
85 "--disable-debug-symbols"
86
87 "--disable-webrtc" ; webrtc fails to build
88
89 "--with-system-zlib"
90 "--with-system-bz2" ; FIXME: not used
91 "--with-system-libevent"
92
93 ;; Fails with "--with-system-png won't work because
94 ;; the system's libpng doesn't have APNG support".
95 ;; According to
96 ;; http://sourceforge.net/projects/libpng-apng/ ,
97 ;; "the Animated Portable Network Graphics (APNG)
98 ;; is an unofficial extension of the Portable
99 ;; Network Graphics (PNG) format";
100 ;; we probably do not wish to support it.
101 ;; "--with-system-png"
102
103 ;; Fails with "libjpeg-turbo JCS_EXTENSIONS
104 ;; required".
105 ;; According to
106 ;; http://sourceforge.net/projects/libjpeg-turbo/ ,
107 ;; "libjpeg-turbo is a derivative of libjpeg that
108 ;; uses MMX, SSE, SSE2, and NEON SIMD instructions
109 ;; to accelerate baseline JPEG compression/
110 ;; decompression", so we had better not use it
111 ;; "--with-system-jpeg"
112
113 "--enable-system-ffi")
114
115 #:phases
116 (alist-cons-before
117 'patch-source-shebangs 'sanitise
118 (lambda _
119 ;; delete dangling symlinks
120 (delete-file "browser/base/content/.#aboutDialog.xul")
121 (delete-file "browser/base/content/abouthome/.#aboutHome.xhtml")
122 (delete-file "browser/branding/unofficial/content/.#aboutHome.xhtml")
123 (delete-file "toolkit/crashreporter/google-breakpad/autotools/compile"))
124 (alist-replace
125 'configure
126 ;; configure does not work followed by both "SHELL=..." and
127 ;; "CONFIG_SHELL=..."; set environment variables instead
128 (lambda* (#:key outputs configure-flags #:allow-other-keys)
129 (let ((out (assoc-ref outputs "out")))
130 (setenv "SHELL" (which "bash"))
131 (setenv "CONFIG_SHELL" (which "bash"))
132 (zero? (apply system* "./configure"
133 (string-append "--prefix=" out)
134 configure-flags))))
135 %standard-phases))))
136 (home-page "http://www.gnu.org/software/gnuzilla/")
137 (synopsis "Entirely free browser derived from Mozilla Firefox")
138 (description
139 "IceCat is the GNU version of the Firefox browser. It is entirely free
140 software, which does not recommend non-free plugins and addons. It also
141 features built-in privacy-protecting features.")
142 (license license:mpl2.0))) ; and others, see toolkit/content/license.html