[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
15/17: WIP: gnu: Add icedove.
From: |
Mark H. Weaver |
Subject: |
15/17: WIP: gnu: Add icedove. |
Date: |
Mon, 23 Apr 2018 03:07:29 -0400 (EDT) |
mhw pushed a commit to branch reproduce-bug-29774
in repository guix.
commit d16ec88b07e24a3b491e8d9143e61dde3d7c83f6
Author: Mark H Weaver <address@hidden>
Date: Wed Apr 11 17:16:56 2018 -0400
WIP: gnu: Add icedove.
---
gnu/local.mk | 5 +
gnu/packages/gnuzilla.scm | 204 ++++++++++
gnu/packages/patches/icedove-CVE-2018-5148.patch | 53 +++
.../patches/icedove-avoid-bundled-libraries.patch | 35 ++
gnu/packages/patches/icedove-libre.patch | 448 +++++++++++++++++++++
.../patches/icedove-use-system-graphite2.patch | 250 ++++++++++++
.../patches/icedove-use-system-harfbuzz.patch | 281 +++++++++++++
7 files changed, 1276 insertions(+)
diff --git a/gnu/local.mk b/gnu/local.mk
index b74373d..088d393 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -798,6 +798,11 @@ dist_patch_DATA =
\
%D%/packages/patches/icecat-avoid-bundled-libraries.patch \
%D%/packages/patches/icecat-use-system-graphite2.patch \
%D%/packages/patches/icecat-use-system-harfbuzz.patch \
+ %D%/packages/patches/icedove-CVE-2018-5148.patch \
+ %D%/packages/patches/icedove-avoid-bundled-libraries.patch \
+ %D%/packages/patches/icedove-libre.patch \
+ %D%/packages/patches/icedove-use-system-graphite2.patch \
+ %D%/packages/patches/icedove-use-system-harfbuzz.patch \
%D%/packages/patches/id3lib-CVE-2007-4460.patch \
%D%/packages/patches/ilmbase-fix-tests.patch \
%D%/packages/patches/intltool-perl-compatibility.patch \
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index f7bce74..72cd2f8 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -31,6 +31,7 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
+ #:use-module (guix git-download)
#:use-module (guix utils)
#:use-module (guix build-system gnu)
#:use-module (gnu packages autotools)
@@ -763,3 +764,206 @@ features built-in privacy-protecting features.")
`((ftp-directory . "/gnu/gnuzilla")
(cpe-name . "firefox_esr")
(cpe-version . ,(first (string-split version #\-)))))))
+
+(define-public icedove
+ (package
+ (name "icedove")
+ (version "52.7.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://ftp.mozilla.org/pub/mozilla.org/"
+ "thunderbird/releases/" version "/source/"
+ "thunderbird-" version ".source.tar.xz"))
+ (sha256
+ (base32 "18rf576mhx9sf4g0gdb22mnpnssrcrhlm4i66b07ivcksf82hil2"))
+ (patches (search-patches "icedove-avoid-bundled-libraries.patch"
+ "icedove-use-system-harfbuzz.patch"
+ "icedove-use-system-graphite2.patch"
+ "icedove-libre.patch"
+ "icedove-CVE-2018-5148.patch"))
+ (modules (origin-modules (package-source icecat)))
+ (snippet
+ `(begin
+ (with-directory-excursion "mozilla"
+ ,(origin-snippet (package-source icecat)))))))
+ (build-system gnu-build-system)
+ (arguments
+ (substitute-keyword-arguments (package-arguments icecat)
+ ((#:configure-flags icecat-configure-flags ''())
+ `(append (list "--enable-application=mail"
+ "--enable-calendar"
+ "--enable-release"
+ "--disable-official-branding"
+ "--with-branding=mail/branding/icedove"
+ "--disable-safe-browsing"
+ "--disable-url-classifier"
+ "--disable-webrtc"
+ "--disable-elf-hack")
+ (delete "--enable-official-branding"
+ ,icecat-configure-flags)))
+ ((#:make-flags icecat-make-flags ''())
+ `(append (list "-f" "client.mk"
+ "SH=sh")
+ ,icecat-make-flags))
+ ((#:out-of-source? icecat-out-of-source?)
+ #f)
+ ((#:phases icecat-phases)
+ `(let ((icecat-phases ,icecat-phases))
+ (modify-phases %standard-phases
+ (add-after 'unpack 'unpack-branding
+ (lambda* (#:key inputs native-inputs #:allow-other-keys)
+ (define (first-file directory)
+ (car (scandir directory
+ (lambda (name)
+ (not (member name '("." "..")))))))
+ (with-directory-excursion ".."
+ (let* ((native-inputs (or native-inputs inputs))
+ (tar (assoc-ref native-inputs "tar"))
+ (branding (assoc-ref native-inputs "branding"))
+ (tmp ".tmp-unpack"))
+ (mkdir tmp)
+ (with-directory-excursion tmp
+ (invoke (string-append tar "/bin/tar") "xf" branding)
+ (rename-file (first-file ".") "../branding"))
+ (rmdir tmp)))
+ #t))
+
+ (add-after 'unpack-branding 'apply-branding
+ (lambda* (#:key inputs native-inputs #:allow-other-keys)
+ (let ((native-inputs (or native-inputs inputs))
+ (branding "../branding"))
+
+ ;; Populate mail/branding/icedove.
+ (copy-recursively (string-append branding
"/icedove-branding")
+ "mail/branding/icedove")
+
+ ;; Copy the icons.
+ (let ((icons-dir (string-append branding "/app-icons")))
+ (define (copy-icons target-fmt sizes)
+ (for-each (lambda (size)
+ (copy-file (format #f "~a/icedove~a.png"
+ icons-dir size)
+ (format #f target-fmt size)))
+ sizes))
+ (copy-icons "mail/branding/icedove/mailicon~a.png"
+ '(16 22 24 32 48 64 128 256))
+ (copy-icons "mail/branding/icedove/content/icon~a.png"
+ '(48 64))
+ (copy-file (string-append branding "/preview.png")
+ "mail/themes/linux/mail/preview.png"))
+
+ ;; Fix branding in migration wizard, etc.
+ (substitute* "mail/app/profile/all-thunderbird.js"
+ (("%APP%") "thunderbird"))
+
+ ;; Apply the included patches.
+ (let* ((patch (assoc-ref native-inputs "patch"))
+ (patch-dir (string-append branding "/patches"))
+ (series-file (string-append patch-dir "/series"))
+ (file-contents (call-with-input-file series-file
+ read-string))
+ (patches (filter (negate string-null?)
+ (string-split file-contents
+ #\newline))))
+ (for-each (lambda (file)
+ (unless (string-contains file
"migration-wizard")
+ (invoke (string-append patch "/bin/patch")
+ "--force" "--no-backup-if-mismatch"
+ "-p1" "--input"
+ (string-append patch-dir "/"
file))))
+ patches))
+ #t)))
+
+ (add-after 'apply-branding 'replace-search-plugins
+ (lambda* (#:key inputs native-inputs #:allow-other-keys)
+ ;; Replace the default search plugins with those of IceCat.
+ (let* ((native-inputs (or native-inputs inputs))
+ (gnuzilla (assoc-ref native-inputs "gnuzilla"))
+ (plugins-dir "mail/locales/en-US/searchplugins"))
+ (delete-file-recursively plugins-dir)
+ (mkdir plugins-dir)
+ (copy-recursively (string-append gnuzilla
"/data/searchplugins")
+ plugins-dir))
+ #t))
+
+ (add-before 'configure 'link-libxul-with-libraries
+ (lambda args
+ (with-directory-excursion "mozilla"
+ (apply (assoc-ref icecat-phases 'link-libxul-with-libraries)
+ args))))
+
+ (add-before 'configure 'ensure-no-mtimes-pre-1980
+ (assoc-ref icecat-phases 'ensure-no-mtimes-pre-1980))
+
+ (replace 'configure
+ ;; configure does not work followed by both "SHELL=..." and
+ ;; "CONFIG_SHELL=..."; set environment variables instead
+ (lambda* (#:key outputs configure-flags #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bash (which "bash"))
+ (flags (cons (string-append "--prefix=" out)
+ configure-flags)))
+ (format #t "configure flags: ~s~%" flags)
+ (call-with-output-file ".mozconfig"
+ (lambda (port)
+ (for-each (lambda (flag)
+ (format port "ac_add_options ~a~%" flag))
+ flags)))
+ (setenv "SHELL" bash)
+ (setenv "CONFIG_SHELL" bash)
+ (setenv "AUTOCONF" (which "autoconf")) ; must be
autoconf-2.13
+ (substitute* "configure"
+ (("^SRCDIR=.*") (format #f "SRCDIR=~s~%" (getcwd))))
+ ;; The configure script is run during the 'build' phase.
+ #t)))
+
+ ;; FIXME: Add a phase to install the desktop file.
+ )))))
+ (inputs (package-inputs icecat))
+ (native-inputs
+ `(,@(package-native-inputs icecat)
+ ("patch" ,patch)
+ ("tar" ,tar)
+ ("xz" ,xz)
+ ("gnuzilla"
+ ,(let ((commit "95d8edd62741b0ef504f0c47e374c8af90650458"))
+ (origin
+ (method git-fetch)
+ (uri (git-reference (url
"git://git.savannah.gnu.org/gnuzilla.git")
+ (commit commit)))
+ (file-name (string-append "gnuzilla-source-"
+ (string-take commit 7)
+ "-checkout"))
+ (sha256
+ (base32
"0qlwad45ln318ifhh29q2aafa3g0lfhmcbdqh7ny1nzzf9i4z2ca")))))
+ ("branding"
+ ,(let ((branding-version "52.1-1"))
+ (origin
+ (method url-fetch)
+ (uri (string-append
"https://repomirror.parabola.nu/other/icedove/"
+ "icedove_" branding-version
".branding.tar.xz"))
+ (file-name (string-append "icedove-branding" branding-version))
+ (sha256
+ (base32
"0rgwvv68xbk1apkrrpqfbv2d9y12fgwjfqlyp7aymyr4cnbihr14")))))
+ ("desktop-file"
+ ,(origin
+ (method url-fetch)
+ (uri (string-append
+ "https://git.parabola.nu/abslibre.git"
+ "/plain/libre/icedove/icedove.desktop"
+ "?id=053755d6cabfc82cc3cf83042ea7b09e91d83bde"))
+ (sha256
+ (base32
"1w1jcsjli9194gf23l8f87rsyw805lgbsn1l2jfih2dy5shrk0dg"))))))
+ (home-page "https://directory.fsf.org/wiki/Icedove")
+ (synopsis "Mail/news client with RSS and integrated spam filter support")
+ (description
+ "Icedove is an unbranded Thunderbird mail client suitable for free
+distribution. It supports different mail accounts (POP, IMAP, Gmail), has an
+integrated learning Spam filter, and offers easy organization of mails with
+tagging and virtual folders. More features can be added by installing
+extensions.")
+ ;; TODO: Check licensing more carefully.
+ (license (list license:mpl1.1
+ license:mpl2.0
+ license:gpl2+
+ license:lgpl2.1+))))
diff --git a/gnu/packages/patches/icedove-CVE-2018-5148.patch
b/gnu/packages/patches/icedove-CVE-2018-5148.patch
new file mode 100644
index 0000000..a5afe64
--- /dev/null
+++ b/gnu/packages/patches/icedove-CVE-2018-5148.patch
@@ -0,0 +1,53 @@
+This changeset from the upstream mozilla-esr52 repository was adapted
+to apply to icedove, by prepending "mozilla/" to the file names.
+
+# HG changeset patch
+# User Nicolas Silva <address@hidden>
+# Date 1520858160 -3600
+# Node ID c3e447e07077412b9cfaacb2ea91974655ed753b
+# Parent bb8ae7990f45dd295b80a347b779bcc4690205fa
+Bug 1440717 - Use RefPtr for CompositingRenderTargetOGL::mGL. r=Bas, a=ritu
+
+--- a/mozilla/gfx/layers/opengl/CompositingRenderTargetOGL.cpp
++++ b/mozilla/gfx/layers/opengl/CompositingRenderTargetOGL.cpp
+@@ -55,17 +55,17 @@ CompositingRenderTargetOGL::BindRenderTa
+ mGL->RenewSurface(mCompositor->GetWidget()->RealWidget());
+ result = mGL->fCheckFramebufferStatus(LOCAL_GL_FRAMEBUFFER);
+ }
+ if (result != LOCAL_GL_FRAMEBUFFER_COMPLETE) {
+ nsAutoCString msg;
+ msg.AppendPrintf("Framebuffer not complete -- CheckFramebufferStatus
returned 0x%x, "
+ "GLContext=%p, IsOffscreen()=%d, mFBO=%d,
aFBOTextureTarget=0x%x, "
+ "aRect.width=%d, aRect.height=%d",
+- result, mGL, mGL->IsOffscreen(), mFBO,
mInitParams.mFBOTextureTarget,
++ result, mGL.get(), mGL->IsOffscreen(), mFBO,
mInitParams.mFBOTextureTarget,
+ mInitParams.mSize.width, mInitParams.mSize.height);
+ NS_WARNING(msg.get());
+ }
+ }
+
+ needsClear = mClearOnBind;
+ }
+
+--- a/mozilla/gfx/layers/opengl/CompositingRenderTargetOGL.h
++++ b/mozilla/gfx/layers/opengl/CompositingRenderTargetOGL.h
+@@ -179,17 +179,17 @@ private:
+
+ InitParams mInitParams;
+ /**
+ * There is temporary a cycle between the compositor and the render target,
+ * each having a strong ref to the other. The compositor's reference to
+ * the target is always cleared at the end of a frame.
+ */
+ RefPtr<CompositorOGL> mCompositor;
+- GLContext* mGL;
++ RefPtr<GLContext> mGL;
+ GLuint mTextureHandle;
+ GLuint mFBO;
+ };
+
+ } // namespace layers
+ } // namespace mozilla
+
+ #endif /* MOZILLA_GFX_SURFACEOGL_H */
+
diff --git a/gnu/packages/patches/icedove-avoid-bundled-libraries.patch
b/gnu/packages/patches/icedove-avoid-bundled-libraries.patch
new file mode 100644
index 0000000..56b2637
--- /dev/null
+++ b/gnu/packages/patches/icedove-avoid-bundled-libraries.patch
@@ -0,0 +1,35 @@
+Fixes needed when avoiding bundled libraries.
+
+--- icedove-52.7.0/mozilla/xpcom/build/moz.build.orig
++++ icedove-52.7.0/mozilla/xpcom/build/moz.build
+@@ -93,10 +93,5 @@
+ '/docshell/base',
+ ]
+
+-if CONFIG['MOZ_VPX']:
+- LOCAL_INCLUDES += [
+- '/media/libvpx',
+- ]
+-
+ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
+ CXXFLAGS += CONFIG['TK_CFLAGS']
+--- icedove-52.7.0/mozilla/storage/moz.build.orig
++++ icedove-52.7.0/mozilla/storage/moz.build
+@@ -114,7 +114,6 @@
+ DEFINES['MOZ_MEMORY_TEMP_STORE_PRAGMA'] = True
+
+ LOCAL_INCLUDES += [
+- '/db/sqlite3/src',
+ '/dom/base',
+ ]
+
+--- icedove-52.7.0/mozilla/dom/indexedDB/moz.build.orig
++++ icedove-52.7.0/mozilla/dom/indexedDB/moz.build
+@@ -101,7 +101,6 @@
+ CXXFLAGS += ['-Wno-error=shadow']
+
+ LOCAL_INCLUDES += [
+- '/db/sqlite3/src',
+ '/dom/base',
+ '/dom/storage',
+ '/dom/workers',
diff --git a/gnu/packages/patches/icedove-libre.patch
b/gnu/packages/patches/icedove-libre.patch
new file mode 100644
index 0000000..6e2197a
--- /dev/null
+++ b/gnu/packages/patches/icedove-libre.patch
@@ -0,0 +1,448 @@
+Based on the following patch from Parabola:
+<https://git.parabola.nu/abslibre.git/tree/libre/icedove/libre.patch?id=70c99b45b3cfd2b5f6b33b858c35dff893988875>
+
+with additional changes to mail/installer/package-manifest.in and
+mail/app/profile/all-thunderbird.js based on similar changes made by
+Parabola's PKGBUILD using 'sed'.
+
+--- a/mail/locales/search/list.json
++++ b/mail/locales/search/list.json
+@@ -1,315 +1,315 @@
+ {
+ "default": {
+ "visibleDefaultEngines": [
+- "amazondotcom", "aol-web-search", "bing", "twitter", "wikipedia",
"yahoo"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ },
+ "locales": {
+ "en-US": {
+ "default": {
+ "visibleDefaultEngines": [
+- "amazondotcom", "aol-web-search", "bing", "twitter", "wikipedia",
"yahoo"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "ar": {
+ "default": {
+ "visibleDefaultEngines": [
+- "bing", "yahoo", "twitter", "wikipedia-ar", "amazondotcom"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "ast": {
+ "default": {
+ "visibleDefaultEngines": [
+- "amazondotcom", "aol-web-search", "bing", "twitter",
"wikipedia-ast", "yahoo"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "be": {
+ "default": {
+ "visibleDefaultEngines": [
+- "google", "be.wikipedia.org", "be-x-old.wikipedia.org",
"ru.wikipedia.org-be", "tut.by", "yahoo", "yandex.by"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "br": {
+ "default": {
+ "visibleDefaultEngines": [
+- "amazondotcom", "aol-web-search", "bing", "google", "twitter",
"wikipedia", "yahoo"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "ca": {
+ "default": {
+ "visibleDefaultEngines": [
+- "bing", "huubs", "diec2", "wikipedia-ca", "llibres"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "cs": {
+ "default": {
+ "visibleDefaultEngines": [
+- "google", "seznam-cz", "duckduckgo-cz", "heureka-cz", "mapy-cz",
"wikipedia-cz"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "da": {
+ "default": {
+ "visibleDefaultEngines": [
+- "amazon-co-uk", "bing", "google", "wikipedia-da"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "de": {
+ "default": {
+ "visibleDefaultEngines": [
+- "amazondotcom-de", "bing", "twitter-de", "wikipedia-de", "yahoo-de"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "en-GB": {
+ "default": {
+ "visibleDefaultEngines": [
+- "amazon-en-GB", "aol-en-GB", "bing", "google", "twitter",
"wikipedia", "yahoo-en-GB"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "es-AR": {
+ "default": {
+ "visibleDefaultEngines": [
+- "google", "yahoo-ar", "amazondotcom", "mercadolibre-ar", "drae",
"wikipedia-es"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "es-ES": {
+ "default": {
+ "visibleDefaultEngines": [
+- "google", "yahoo-es", "bing", "drae", "twitter", "wikipedia-es"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "et": {
+ "default": {
+ "visibleDefaultEngines": [
+- "google", "neti-ee", "osta-ee", "eki-ee", "wikipedia-et"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "fi": {
+ "default": {
+ "visibleDefaultEngines": [
+- "amazondotcom", "bing", "twitter", "wikipedia-fi", "yahoo-fi"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "fr": {
+ "default": {
+ "visibleDefaultEngines": [
+- "amazon-france", "bing", "wikipedia-fr", "yahoo-france",
"cnrtl-tlfi-fr"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "ga-IE": {
+ "default": {
+ "visibleDefaultEngines": [
+- "google", "twitter", "yahoo-en-GB", "amazon-en-GB", "focal",
"wikipedia-ga-IE"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "gd": {
+ "default": {
+ "visibleDefaultEngines": [
+- "google", "yahoo-en-GB", "bbc-alba", "amazon-en-GB",
"faclair-beag", "wikipedia-gd"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "he": {
+ "default": {
+ "visibleDefaultEngines": [
+- "amazondotcom", "aol-web-search", "bing", "google", "twitter",
"wikipedia", "yahoo"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "hr": {
+ "default": {
+ "visibleDefaultEngines": [
+- "amazondotcom", "aol-web-search", "bing", "google", "twitter",
"wikipedia", "yahoo"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "hu": {
+ "default": {
+ "visibleDefaultEngines": [
+- "google", "sztaki-en-hu", "vatera", "wikipedia-hu"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "id": {
+ "default": {
+ "visibleDefaultEngines": [
+- "google", "yahoo-id", "wikipedia-id"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "is": {
+ "default": {
+ "visibleDefaultEngines": [
+- "amazondotcom", "bing", "leit-is", "wikipedia-is", "yahoo"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "it": {
+ "default": {
+ "visibleDefaultEngines": [
+- "amazon-it", "bing", "google", "twitter", "wikipedia-it", "yahoo-it"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "ja-JP-mac": {
+ "default": {
+ "visibleDefaultEngines": [
+- "google-jp", "yahoo-jp", "amazon-jp", "rakuten",
"yahoo-jp-auctions", "oshiete-goo", "twitter-ja", "wikipedia-ja"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "ja": {
+ "default": {
+ "visibleDefaultEngines": [
+- "google-jp", "yahoo-jp", "amazon-jp", "rakuten",
"yahoo-jp-auctions", "oshiete-goo", "twitter-ja", "wikipedia-ja"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "kab": {
+ "default": {
+ "visibleDefaultEngines": [
+- "amazondotcom", "aol-web-search", "bing", "twitter", "wikipedia",
"yahoo"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "ko": {
+ "default": {
+ "visibleDefaultEngines": [
+- "danawa-kr", "daum-kr", "google","naver-kr", "wikipedia-kr"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "lt": {
+ "default": {
+ "visibleDefaultEngines": [
+- "amazondotcom", "bing", "google", "twitter", "wikipedia-lt"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "nb-NO": {
+ "default": {
+ "visibleDefaultEngines": [
+- "amazondotcom", "aol-web-search", "bing", "google", "twitter",
"wikipedia", "yahoo", "gulesider-NO"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "nl": {
+ "default": {
+ "visibleDefaultEngines": [
+- "bing", "yahoo", "google", "twitter", "wikipedia-nl",
"marktplaats-nl"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "nn-NO": {
+ "default": {
+ "visibleDefaultEngines": [
+- "amazondotcom", "aol-web-search", "bing", "twitter", "wikipedia",
"yahoo", "gulesider-NO"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "pl": {
+ "default": {
+ "visibleDefaultEngines": [
+- "allegro-pl", "google", "pwn-pl", "wikipedia-pl", "wolnelektury-pl"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "pt-PT": {
+ "default": {
+ "visibleDefaultEngines": [
+- "google", "sapo", "priberam", "wikipedia-ptpt", "amazon-en-GB"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "rm": {
+ "default": {
+ "visibleDefaultEngines": [
+- "bing", "google", "leo_ende_de", "pledarigrond", "wikipedia-rm",
"yahoo-ch"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "ro": {
+ "default": {
+ "visibleDefaultEngines": [
+- "yahoo", "bing", "amazondotcom", "wikipediaro"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "ru": {
+ "default": {
+ "visibleDefaultEngines": [
+- "google", "bing", "duckduckgo-ru", "ozonru", "priceru",
"wikipedia-ru", "yandex"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "sk": {
+ "default": {
+ "visibleDefaultEngines": [
+- "atlas-sk", "azet-sk", "bing", "google", "slovnik-sk",
"wikipedia-sk", "zoznam-sk"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "sl": {
+ "default": {
+ "visibleDefaultEngines": [
+- "najdi-si", "ceneji", "google", "odpiralni", "twitter",
"wikipedia-sl"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "sq": {
+ "default": {
+ "visibleDefaultEngines": [
+- "amazondotcom", "bing", "twitter", "wikipedia-sq", "yahoo"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "sv-SE": {
+ "default": {
+ "visibleDefaultEngines": [
+- "google", "bing", "yahoo", "wikipedia-sv-SE", "tyda-sv-SE",
"prisjakt-sv-SE"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "tr": {
+ "default": {
+ "visibleDefaultEngines": [
+- "google", "yandex-tr", "wikipedia-tr"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "uk": {
+ "default": {
+ "visibleDefaultEngines": [
+- "google", "yandex", "meta-ua", "metamarket", "wikipedia-uk"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "vi": {
+ "default": {
+ "visibleDefaultEngines": [
+- "amazondotcom", "aol-web-search", "bing", "google", "twitter",
"wikipedia", "yahoo"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ },
+ "zh-TW": {
+ "default": {
+ "visibleDefaultEngines": [
+- "google", "yahoo-zh-TW", "yahoo-bid-zh-TW", "wikipedia-zh-TW",
"chunghwapost-zh-TW", "google-maps-zh-TW", "ipeen-zh-TW", "findbook-zh-TW"
++ "duckduckgo-html", "duckduckgo-lite", "internet-archive",
"parabola-packages", "parabola-wiki-en", "searx", "seeks", "wikipedia-en",
"yacy"
+ ]
+ }
+ }
+diff --git a/mail/locales/en-US/chrome/messenger-region/region.properties
b/mail/locales/en-US/chrome/messenger-region/region.properties
+index fcc870d..f810450 100644
+--- a/mail/locales/en-US/chrome/messenger-region/region.properties
++++ b/mail/locales/en-US/chrome/messenger-region/region.properties
+@@ -3,12 +3,12 @@
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+ # Default search engine
+-browser.search.defaultenginename=Bing
++browser.search.defaultenginename=searx
+
+ # Search engine order (order displayed in the search bar dropdown)s
+-browser.search.order.1=Bing
+-browser.search.order.2=Yahoo
+-browser.search.order.3=
++browser.search.order.1=searx
++browser.search.order.2=DuckDuckGo HTML
++browser.search.order.3=DuckDuckGo Lite
+
+ # To make mapit buttons to disappear in the addressbook, specify empty
string. For example:
+ # mail.addr_book.mapit_url.format=
+@@ -23,14 +23,12 @@ browser.search.order.3=
+ # @ZI == zip code
+ # @CO == country
+ # Default map service:
+-mail.addr_book.mapit_url.format=https://maps.google.com/address@hidden@address@hidden@address@hidden@CO
++mail.addr_book.mapit_url.format=https://nominatim.openstreetmap.org/search.php?polygon=1&address@hidden@address@hidden@address@hidden@CO
+ # List of available map services (up to 5 can be defined here):
+-mail.addr_book.mapit_url.1.name=Google Maps
+-mail.addr_book.mapit_url.1.format=https://maps.google.com/address@hidden@address@hidden@address@hidden@CO
+-mail.addr_book.mapit_url.2.name=OpenStreetMap
+-mail.addr_book.mapit_url.2.format=https://nominatim.openstreetmap.org/search.php?polygon=1&address@hidden@address@hidden@address@hidden@CO
++mail.addr_book.mapit_url.1.name=OpenStreetMap
++mail.addr_book.mapit_url.1.format=https://nominatim.openstreetmap.org/search.php?polygon=1&address@hidden@address@hidden@address@hidden@CO
+
+-mailnews.messageid_browser.url=http://groups.google.com/search?as_umsgid=%mid
++mailnews.messageid_browser.url=
+
+ # Recognize non-standard versions of "Re:" in subjects from localized
versions of MS Outlook et al.
+ # Specify a comma-separated list without spaces. For example:
mailnews.localizedRe=AW,SV
+--- a/mail/installer/package-manifest.in
++++ b/mail/installer/package-manifest.in
+@@ -696,12 +696,6 @@
+ ; Modules
+ @RESPATH@/modules/*
+
address@hidden@/components/nsURLClassifier.manifest
address@hidden@/components/nsUrlClassifierHashCompleter.js
address@hidden@/components/nsUrlClassifierListManager.js
address@hidden@/components/nsUrlClassifierLib.js
address@hidden@/components/url-classifier.xpt
+-
+ ; Security Reports
+ @RESPATH@/components/SecurityReporter.manifest
+ @RESPATH@/components/SecurityReporter.js
+--- a/mail/app/profile/all-thunderbird.js
++++ b/mail/app/profile/all-thunderbird.js
+@@ -156,13 +156,13 @@
+ // Preferences for AMO integration
+ pref("extensions.getAddons.cache.enabled", true);
+ pref("extensions.getAddons.maxResults", 15);
+-pref("extensions.getAddons.get.url",
"https://services.addons.mozilla.org/%LOCALE%/%APP%/api/%API_VERSION%/search/guid:%IDS%?src=thunderbird&appOS=%OS%&appVersion=%VERSION%");
+-pref("extensions.getAddons.getWithPerformance.url",
"https://services.addons.mozilla.org/%LOCALE%/%APP%/api/%API_VERSION%/search/guid:%IDS%?src=thunderbird&appOS=%OS%&appVersion=%VERSION%&tMain=%TIME_MAIN%&tFirstPaint=%TIME_FIRST_PAINT%&tSessionRestored=%TIME_SESSION_RESTORED%");
+-pref("extensions.getAddons.link.url",
"https://addons.mozilla.org/%LOCALE%/%APP%/");
+-pref("extensions.getAddons.recommended.url",
"https://services.addons.mozilla.org/%LOCALE%/%APP%/api/%API_VERSION%/list/recommended/all/%MAX_RESULTS%/%OS%/%VERSION%?src=thunderbird");
+-pref("extensions.getAddons.search.browseURL",
"https://addons.mozilla.org/%LOCALE%/%APP%/search?q=%TERMS%");
+-pref("extensions.getAddons.search.url",
"https://services.addons.mozilla.org/%LOCALE%/%APP%/api/%API_VERSION%/search/%TERMS%/all/%MAX_RESULTS%/%OS%/%VERSION%/%COMPATIBILITY_MODE%?src=thunderbird");
+-pref("extensions.webservice.discoverURL",
"https://services.addons.mozilla.org/%LOCALE%/%APP%/discovery/pane/%VERSION%/%OS%");
++pref("extensions.getAddons.get.url",
"https://directory.fsf.org/wiki/Icedove");
++pref("extensions.getAddons.getWithPerformance.url",
"https://directory.fsf.org/wiki/Icedove");
++pref("extensions.getAddons.link.url",
"https://directory.fsf.org/wiki/Icedove");
++pref("extensions.getAddons.recommended.url",
"https://directory.fsf.org/wiki/Icedove");
++pref("extensions.getAddons.search.browseURL",
"https://directory.fsf.org/wiki/Icedove");
++pref("extensions.getAddons.search.url",
"https://directory.fsf.org/wiki/Icedove");
++pref("extensions.webservice.discoverURL",
"https://directory.fsf.org/wiki/Icedove");
+
+ // Blocklist preferences
+ pref("extensions.blocklist.enabled", true);
diff --git a/gnu/packages/patches/icedove-use-system-graphite2.patch
b/gnu/packages/patches/icedove-use-system-graphite2.patch
new file mode 100644
index 0000000..9794bbe
--- /dev/null
+++ b/gnu/packages/patches/icedove-use-system-graphite2.patch
@@ -0,0 +1,250 @@
+Copied from <https://reviewboard.mozilla.org/r/90218/diff/4>
+See <https://bugzilla.mozilla.org/show_bug.cgi?id=847568>
+
+Adapted for Icedove.
+
+diff --git a/mozilla/config/Makefile.in b/config/Makefile.in
+--- a/mozilla/config/Makefile.in
++++ b/mozilla/config/Makefile.in
+@@ -36,16 +36,17 @@ ifdef WRAP_SYSTEM_INCLUDES
+ export-preqs = \
+ $(call mkdir_deps,system_wrappers) \
+ $(NULL)
+
+ export:: $(export-preqs)
+ $(PYTHON) -m mozbuild.action.preprocessor $(DEFINES) $(ACDEFINES) \
+ -DMOZ_TREE_CAIRO=$(MOZ_TREE_CAIRO) \
+ -DMOZ_TREE_PIXMAN=$(MOZ_TREE_PIXMAN) \
++ -DMOZ_SYSTEM_GRAPHITE2=$(MOZ_SYSTEM_GRAPHITE2) \
+ -DMOZ_SYSTEM_HARFBUZZ=$(MOZ_SYSTEM_HARFBUZZ) \
+ -DMOZ_SYSTEM_HUNSPELL=$(MOZ_SYSTEM_HUNSPELL) \
+ -DMOZ_SYSTEM_BZ2=$(MOZ_SYSTEM_BZ2) \
+ -DMOZ_SYSTEM_ZLIB=$(MOZ_SYSTEM_ZLIB) \
+ -DMOZ_SYSTEM_PNG=$(MOZ_SYSTEM_PNG) \
+ -DMOZ_SYSTEM_JPEG=$(MOZ_SYSTEM_JPEG) \
+ -DMOZ_SYSTEM_LIBEVENT=$(MOZ_SYSTEM_LIBEVENT) \
+ -DMOZ_SYSTEM_LIBVPX=$(MOZ_SYSTEM_LIBVPX) \
+diff --git a/mozilla/config/system-headers b/config/system-headers
+--- a/mozilla/config/system-headers
++++ b/mozilla/config/system-headers
+@@ -1260,16 +1260,20 @@ zlib.h
+ #ifdef MOZ_ENABLE_STARTUP_NOTIFICATION
+ libsn/sn.h
+ libsn/sn-common.h
+ libsn/sn-launchee.h
+ libsn/sn-launcher.h
+ libsn/sn-monitor.h
+ libsn/sn-util.h
+ #endif
++#if MOZ_SYSTEM_GRAPHITE2==1
++graphite2/Font.h
++graphite2/Segment.h
++#endif
+ #if MOZ_SYSTEM_HARFBUZZ==1
+ harfbuzz/hb-glib.h
+ harfbuzz/hb-ot.h
+ harfbuzz/hb.h
+ #endif
+ #if MOZ_SYSTEM_HUNSPELL==1
+ hunspell.hxx
+ #endif
+diff --git a/mozilla/gfx/graphite2/moz-gr-update.sh
b/gfx/graphite2/moz-gr-update.sh
+--- a/mozilla/gfx/graphite2/moz-gr-update.sh
++++ b/mozilla/gfx/graphite2/moz-gr-update.sh
+@@ -1,11 +1,12 @@
+ #!/bin/bash
+
+ # Script used to update the Graphite2 library in the mozilla source tree
++# and bump version for --with-system-graphite2
+
+ # This script lives in gfx/graphite2, along with the library source,
+ # but must be run from the top level of the mozilla-central tree.
+
+ # Run as
+ #
+ # ./gfx/graphite2/moz-gr-update.sh RELEASE
+ #
+@@ -32,22 +33,26 @@ echo "This directory contains the Graphi
+ echo "$TARBALL" >> gfx/graphite2/README.mozilla
+ echo ""
+ echo "See" $0 "for update procedure." >> gfx/graphite2/README.mozilla
+
+ # fix up includes because of bug 721839 (cstdio) and bug 803066 (Windows.h)
+ #find gfx/graphite2/ -name "*.cpp" -exec perl -p -i -e
"s/<cstdio>/<stdio.h>/;s/Windows.h/windows.h/;" {} \;
+ #find gfx/graphite2/ -name "*.h" -exec perl -p -i -e
"s/<cstdio>/<stdio.h>/;s/Windows.h/windows.h/;" {} \;
+
++# chase version for --with-system-graphite2
++perl -p -i -e "s/[0-9]+\,[0-9]+\,[0-9]+/$RELEASE/ and tr/./,/ \
++ if /GR2_VERSION_REQUIRE/" old-configure.in
++
+ # summarize what's been touched
+ echo Updated to $RELEASE.
+ echo Here is what changed in the gfx/graphite2 directory:
+ echo
+
+-hg stat gfx/graphite2
++hg stat old-configure.in gfx/graphite2
+
+ echo
+ echo If gfx/graphite2/src/files.mk has changed, please make corresponding
+ echo changes to gfx/graphite2/src/moz.build
+ echo
+
+ echo
+ echo Now use hg commands to create a patch for the mozilla tree.
+diff --git a/mozilla/gfx/moz.build b/gfx/moz.build
+--- a/mozilla/gfx/moz.build
++++ b/mozilla/gfx/moz.build
+@@ -2,28 +2,30 @@
+ # vim: set filetype=python:
+ # This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+ if CONFIG['MOZ_TREE_CAIRO']:
+ DIRS += ['cairo']
+
++if not CONFIG['MOZ_SYSTEM_GRAPHITE2']:
++ DIRS += ['graphite2/src' ]
++
+ if not CONFIG['MOZ_SYSTEM_HARFBUZZ']:
+ DIRS += ['harfbuzz/src']
+
+ DIRS += [
+ '2d',
+ 'ycbcr',
+ 'angle',
+ 'src',
+ 'qcms',
+ 'gl',
+ 'layers',
+- 'graphite2/src',
+ 'ots/src',
+ 'thebes',
+ 'ipc',
+ 'vr',
+ 'config',
+ ]
+
+ if CONFIG['MOZ_ENABLE_SKIA']:
+diff --git a/mozilla/gfx/thebes/moz.build b/gfx/thebes/moz.build
+--- a/mozilla/gfx/thebes/moz.build
++++ b/mozilla/gfx/thebes/moz.build
+@@ -261,16 +261,19 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('and
+ CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS']
+
+ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3'):
+ CXXFLAGS += CONFIG['MOZ_PANGO_CFLAGS']
+
+ LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES']
+ LOCAL_INCLUDES += ['/media/libyuv/include']
+
+-DEFINES['GRAPHITE2_STATIC'] = True
++if CONFIG['MOZ_SYSTEM_GRAPHITE2']:
++ CXXFLAGS += CONFIG['MOZ_GRAPHITE2_CFLAGS']
++else:
++ DEFINES['GRAPHITE2_STATIC'] = True
+
+ if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
+ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
+
+ if CONFIG['CLANG_CXX']:
+ # Suppress warnings from Skia header files.
+ SOURCES['gfxPlatform.cpp'].flags += ['-Wno-implicit-fallthrough']
+diff --git a/mozilla/moz.configure b/moz.configure
+--- a/mozilla/moz.configure
++++ b/mozilla/moz.configure
+@@ -260,16 +260,28 @@ def extra_programs(target):
+
+ check_prog('DSYMUTIL', delayed_getattr(extra_programs, 'DSYMUTIL'),
+ allow_missing=True)
+ check_prog('GENISOIMAGE', delayed_getattr(extra_programs, 'GENISOIMAGE'),
+ allow_missing=True)
+ check_prog('RPMBUILD', delayed_getattr(extra_programs, 'RPMBUILD'),
+ allow_missing=True)
+
++option('--with-system-graphite2',
++ help="Use system graphite2 (located with pkgconfig)")
++
address@hidden('--with-system-graphite2', compile_environment)
++def check_for_graphite2(value, compile_env):
++ return value and compile_env
++
++system_graphite2 = pkg_check_modules('MOZ_GRAPHITE2', 'graphite2',
++ check_for_graphite2)
++
++set_config('MOZ_SYSTEM_GRAPHITE2', depends_if(system_graphite2)(lambda _:
True))
++
+ option('--with-system-harfbuzz',
+ help="Use system harfbuzz (located with pkgconfig)")
+
+ @depends('--with-system-harfbuzz', compile_environment)
+ def check_for_harfbuzz(value, compile_env):
+ return value and compile_env
+
+ system_harfbuzz = pkg_check_modules('MOZ_HARFBUZZ', 'harfbuzz >= 1.3.3',
+diff --git a/mozilla/old-configure.in b/old-configure.in
+--- a/mozilla/old-configure.in
++++ b/mozilla/old-configure.in
+@@ -5060,16 +5060,37 @@ if test "$USE_FC_FREETYPE"; then
+ CPPFLAGS="$CPPFLAGS $FT2_CFLAGS $XCFLAGS"
+ MOZ_CHECK_HEADERS([fontconfig/fcfreetype.h], ,
+ [AC_MSG_ERROR(Can't find header fontconfig/fcfreetype.h.)],
[#include <fontconfig/fontconfig.h>])
+ CPPFLAGS="$_SAVE_CPPFLAGS"
+ fi
+ fi
+
+ dnl ========================================================
++dnl Check for graphite2
++dnl ========================================================
++if test -n "$MOZ_SYSTEM_GRAPHITE2"; then
++ dnl graphite2.pc has bogus version, check manually
++ _SAVE_CFLAGS=$CFLAGS
++ CFLAGS="$CFLAGS $MOZ_GRAPHITE2_CFLAGS"
++ AC_TRY_COMPILE([ #include <graphite2/Font.h>
++ #define GR2_VERSION_REQUIRE(major,minor,bugfix) \
++ ( GR2_VERSION_MAJOR * 10000 + GR2_VERSION_MINOR \
++ * 100 + GR2_VERSION_BUGFIX >= \
++ (major) * 10000 + (minor) * 100 + (bugfix) )
++ ], [
++ #if !GR2_VERSION_REQUIRE(1,3,8)
++ #error "Insufficient graphite2 version."
++ #endif
++ ], [],
++ [AC_MSG_ERROR([--with-system-graphite2 requested but no
working libgraphite2 found])])
++ CFLAGS=$_SAVE_CFLAGS
++fi
++
++dnl ========================================================
+ dnl Check for pixman and cairo
+ dnl ========================================================
+
+ MOZ_TREE_CAIRO=1
+ MOZ_ARG_ENABLE_BOOL(system-cairo,
+ [ --enable-system-cairo Use system cairo (located with pkgconfig)],
+ MOZ_TREE_CAIRO=,
+ MOZ_TREE_CAIRO=1 )
+diff --git a/mozilla/toolkit/library/moz.build b/toolkit/library/moz.build
+--- a/mozilla/toolkit/library/moz.build
++++ b/mozilla/toolkit/library/moz.build
+@@ -221,16 +221,19 @@ if CONFIG['SERVO_TARGET_DIR']:
+ OS_LIBS += ['-L%s' % CONFIG['SERVO_TARGET_DIR'], '-lgeckoservo']
+
+ if CONFIG['MOZ_SYSTEM_JPEG']:
+ OS_LIBS += CONFIG['MOZ_JPEG_LIBS']
+
+ if CONFIG['MOZ_SYSTEM_PNG']:
+ OS_LIBS += CONFIG['MOZ_PNG_LIBS']
+
++if CONFIG['MOZ_SYSTEM_GRAPHITE2']:
++ OS_LIBS += CONFIG['MOZ_GRAPHITE2_LIBS']
++
+ if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
+ OS_LIBS += CONFIG['MOZ_HARFBUZZ_LIBS']
+
+ if CONFIG['MOZ_SYSTEM_HUNSPELL']:
+ OS_LIBS += CONFIG['MOZ_HUNSPELL_LIBS']
+
+ if CONFIG['MOZ_SYSTEM_LIBEVENT']:
+ OS_LIBS += CONFIG['MOZ_LIBEVENT_LIBS']
+
diff --git a/gnu/packages/patches/icedove-use-system-harfbuzz.patch
b/gnu/packages/patches/icedove-use-system-harfbuzz.patch
new file mode 100644
index 0000000..89670a8
--- /dev/null
+++ b/gnu/packages/patches/icedove-use-system-harfbuzz.patch
@@ -0,0 +1,281 @@
+Copied from <https://reviewboard.mozilla.org/r/35763/diff/9>
+See <https://bugzilla.mozilla.org/show_bug.cgi?id=847568>
+
+Adapted for Icedove.
+
+diff --git a/mozilla/config/Makefile.in b/config/Makefile.in
+--- a/mozilla/config/Makefile.in
++++ b/mozilla/config/Makefile.in
+@@ -36,16 +36,17 @@ ifdef WRAP_SYSTEM_INCLUDES
+ export-preqs = \
+ $(call mkdir_deps,system_wrappers) \
+ $(NULL)
+
+ export:: $(export-preqs)
+ $(PYTHON) -m mozbuild.action.preprocessor $(DEFINES) $(ACDEFINES) \
+ -DMOZ_TREE_CAIRO=$(MOZ_TREE_CAIRO) \
+ -DMOZ_TREE_PIXMAN=$(MOZ_TREE_PIXMAN) \
++ -DMOZ_SYSTEM_HARFBUZZ=$(MOZ_SYSTEM_HARFBUZZ) \
+ -DMOZ_SYSTEM_HUNSPELL=$(MOZ_SYSTEM_HUNSPELL) \
+ -DMOZ_SYSTEM_BZ2=$(MOZ_SYSTEM_BZ2) \
+ -DMOZ_SYSTEM_ZLIB=$(MOZ_SYSTEM_ZLIB) \
+ -DMOZ_SYSTEM_PNG=$(MOZ_SYSTEM_PNG) \
+ -DMOZ_SYSTEM_JPEG=$(MOZ_SYSTEM_JPEG) \
+ -DMOZ_SYSTEM_LIBEVENT=$(MOZ_SYSTEM_LIBEVENT) \
+ -DMOZ_SYSTEM_LIBVPX=$(MOZ_SYSTEM_LIBVPX) \
+ -DMOZ_SYSTEM_ICU=$(MOZ_SYSTEM_ICU) \
+diff --git a/mozilla/config/system-headers b/config/system-headers
+--- a/mozilla/config/system-headers
++++ b/mozilla/config/system-headers
+@@ -1260,16 +1260,21 @@ zlib.h
+ #ifdef MOZ_ENABLE_STARTUP_NOTIFICATION
+ libsn/sn.h
+ libsn/sn-common.h
+ libsn/sn-launchee.h
+ libsn/sn-launcher.h
+ libsn/sn-monitor.h
+ libsn/sn-util.h
+ #endif
++#if MOZ_SYSTEM_HARFBUZZ==1
++harfbuzz/hb-glib.h
++harfbuzz/hb-ot.h
++harfbuzz/hb.h
++#endif
+ #if MOZ_SYSTEM_HUNSPELL==1
+ hunspell.hxx
+ #endif
+ #if MOZ_SYSTEM_BZ2==1
+ bzlib.h
+ #endif
+ #ifdef MOZ_ENABLE_GIO
+ gio/gio.h
+diff --git a/mozilla/dom/base/moz.build b/dom/base/moz.build
+--- a/mozilla/dom/base/moz.build
++++ b/mozilla/dom/base/moz.build
+@@ -474,16 +474,19 @@ for var in ('MOZ_B2G_RIL'):
+ DEFINES[var] = True
+
+ if CONFIG['MOZ_BUILD_APP'] in ['browser', 'mobile/android', 'xulrunner']:
+ DEFINES['HAVE_SIDEBAR'] = True
+
+ if CONFIG['MOZ_X11']:
+ CXXFLAGS += CONFIG['TK_CFLAGS']
+
++if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
++ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
++
+ GENERATED_FILES += [
+ 'PropertyUseCounterMap.inc',
+ 'UseCounterList.h',
+ ]
+
+ countermap = GENERATED_FILES['PropertyUseCounterMap.inc']
+ countermap.script = 'gen-usecounters.py:property_map'
+ countermap.inputs = ['UseCounters.conf']
+diff --git a/mozilla/gfx/harfbuzz/README-mozilla b/gfx/harfbuzz/README-mozilla
+--- a/mozilla/gfx/harfbuzz/README-mozilla
++++ b/mozilla/gfx/harfbuzz/README-mozilla
+@@ -14,8 +14,13 @@ this file when updating harfbuzz, and ch
+
+ The normal approach to updating harfbuzz, therefore, is to pull the latest HB
+ source into a scratch directory and do a local build; then copy the original
+ sources AND the generated header mentioned above from the build directory into
+ the mozilla tree.
+
+ If the collection of source files changes, manual updates to moz.build may be
+ needed, as we don't use the upstream makefiles.
++
++The in-tree copy may be omitted during build by --with-system-harfbuzz.
++Make sure to keep pkg-config version check within old-configure.in in sync
++with checkout version or increment latest tag by one if it's not based
++on upstream release.
+diff --git a/mozilla/gfx/moz.build b/gfx/moz.build
+--- a/mozilla/gfx/moz.build
++++ b/mozilla/gfx/moz.build
+@@ -2,26 +2,28 @@
+ # vim: set filetype=python:
+ # This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+ if CONFIG['MOZ_TREE_CAIRO']:
+ DIRS += ['cairo']
+
++if not CONFIG['MOZ_SYSTEM_HARFBUZZ']:
++ DIRS += ['harfbuzz/src']
++
+ DIRS += [
+ '2d',
+ 'ycbcr',
+ 'angle',
+ 'src',
+ 'qcms',
+ 'gl',
+ 'layers',
+ 'graphite2/src',
+- 'harfbuzz/src',
+ 'ots/src',
+ 'thebes',
+ 'ipc',
+ 'vr',
+ 'config',
+ ]
+
+ if CONFIG['MOZ_ENABLE_SKIA']:
+diff --git a/mozilla/gfx/skia/generate_mozbuild.py
b/gfx/skia/generate_mozbuild.py
+--- a/mozilla/gfx/skia/generate_mozbuild.py
++++ b/mozilla/gfx/skia/generate_mozbuild.py
+@@ -138,16 +138,19 @@ if CONFIG['GNU_CXX'] and not CONFIG['CLA
+ if CONFIG['CLANG_CXX'] or CONFIG['CLANG_CL']:
+ CXXFLAGS += [
+ '-Wno-implicit-fallthrough',
+ '-Wno-inconsistent-missing-override',
+ '-Wno-macro-redefined',
+ '-Wno-unused-private-field',
+ ]
+
++if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
++ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
++
+ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3', 'android'):
+ CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
+ CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS']
+
+ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3'):
+ CXXFLAGS += CONFIG['MOZ_PANGO_CFLAGS']
+ """
+
+diff --git a/mozilla/gfx/skia/moz.build b/gfx/skia/moz.build
+--- a/mozilla/gfx/skia/moz.build
++++ b/mozilla/gfx/skia/moz.build
+@@ -748,14 +748,17 @@ if CONFIG['GNU_CXX'] and not CONFIG['CLA
+ if CONFIG['CLANG_CXX'] or CONFIG['CLANG_CL']:
+ CXXFLAGS += [
+ '-Wno-implicit-fallthrough',
+ '-Wno-inconsistent-missing-override',
+ '-Wno-macro-redefined',
+ '-Wno-unused-private-field',
+ ]
+
++if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
++ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
++
+ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3', 'android'):
+ CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
+ CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS']
+
+ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3'):
+ CXXFLAGS += CONFIG['MOZ_PANGO_CFLAGS']
+diff --git a/mozilla/gfx/thebes/moz.build b/gfx/thebes/moz.build
+--- a/mozilla/gfx/thebes/moz.build
++++ b/mozilla/gfx/thebes/moz.build
+@@ -263,11 +263,14 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('and
+ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3'):
+ CXXFLAGS += CONFIG['MOZ_PANGO_CFLAGS']
+
+ LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES']
+ LOCAL_INCLUDES += ['/media/libyuv/include']
+
+ DEFINES['GRAPHITE2_STATIC'] = True
+
++if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
++ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
++
+ if CONFIG['CLANG_CXX']:
+ # Suppress warnings from Skia header files.
+ SOURCES['gfxPlatform.cpp'].flags += ['-Wno-implicit-fallthrough']
+diff --git a/mozilla/intl/unicharutil/util/moz.build
b/intl/unicharutil/util/moz.build
+--- a/mozilla/intl/unicharutil/util/moz.build
++++ b/mozilla/intl/unicharutil/util/moz.build
+@@ -37,9 +37,12 @@ if CONFIG['_MSC_VER']:
+ DEFINES['_USE_ANSI_CPP'] = True
+ # Don't include directives about which CRT to use
+ CFLAGS += ['-Zl']
+ CXXFLAGS += ['-Zl']
+
+ if CONFIG['ENABLE_INTL_API']:
+ USE_LIBS += ['icu']
+
++if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
++ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
++
+ DIST_INSTALL = True
+diff --git a/mozilla/moz.configure b/moz.configure
+--- a/mozilla/moz.configure
++++ b/mozilla/moz.configure
+@@ -260,16 +260,28 @@ def extra_programs(target):
+
+ check_prog('DSYMUTIL', delayed_getattr(extra_programs, 'DSYMUTIL'),
+ allow_missing=True)
+ check_prog('GENISOIMAGE', delayed_getattr(extra_programs, 'GENISOIMAGE'),
+ allow_missing=True)
+ check_prog('RPMBUILD', delayed_getattr(extra_programs, 'RPMBUILD'),
+ allow_missing=True)
+
++option('--with-system-harfbuzz',
++ help="Use system harfbuzz (located with pkgconfig)")
++
address@hidden('--with-system-harfbuzz', compile_environment)
++def check_for_harfbuzz(value, compile_env):
++ return value and compile_env
++
++system_harfbuzz = pkg_check_modules('MOZ_HARFBUZZ', 'harfbuzz >= 1.3.3',
++ check_for_harfbuzz)
++
++set_config('MOZ_SYSTEM_HARFBUZZ', depends_if(system_harfbuzz)(lambda _: True))
++
+ option('--enable-system-hunspell',
+ help="Use system hunspell (located with pkgconfig)")
+
+ @depends('--enable-system-hunspell', compile_environment)
+ def check_for_hunspell(value, compile_env):
+ return value and compile_env
+
+ system_hunspell = pkg_check_modules('MOZ_HUNSPELL', 'hunspell',
+diff --git a/mozilla/netwerk/dns/moz.build b/netwerk/dns/moz.build
+--- a/mozilla/netwerk/dns/moz.build
++++ b/mozilla/netwerk/dns/moz.build
+@@ -61,16 +61,19 @@ etld_data = GENERATED_FILES['etld_data.i
+ etld_data.script = 'prepare_tlds.py'
+ etld_data.inputs = ['effective_tld_names.dat']
+
+ # need to include etld_data.inc
+ LOCAL_INCLUDES += [
+ '/netwerk/base',
+ ]
+
++if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
++ CXXFLAGS += CONFIG['MOZ_HARFBUZZ_CFLAGS']
++
+ if CONFIG['ENABLE_INTL_API']:
+ DEFINES['IDNA2008'] = True
+ USE_LIBS += ['icu']
+ else:
+ UNIFIED_SOURCES += [
+ 'nameprep.c',
+ ]
+
+diff --git a/mozilla/toolkit/library/moz.build b/toolkit/library/moz.build
+--- a/mozilla/toolkit/library/moz.build
++++ b/mozilla/toolkit/library/moz.build
+@@ -221,16 +221,19 @@ if CONFIG['SERVO_TARGET_DIR']:
+ OS_LIBS += ['-L%s' % CONFIG['SERVO_TARGET_DIR'], '-lgeckoservo']
+
+ if CONFIG['MOZ_SYSTEM_JPEG']:
+ OS_LIBS += CONFIG['MOZ_JPEG_LIBS']
+
+ if CONFIG['MOZ_SYSTEM_PNG']:
+ OS_LIBS += CONFIG['MOZ_PNG_LIBS']
+
++if CONFIG['MOZ_SYSTEM_HARFBUZZ']:
++ OS_LIBS += CONFIG['MOZ_HARFBUZZ_LIBS']
++
+ if CONFIG['MOZ_SYSTEM_HUNSPELL']:
+ OS_LIBS += CONFIG['MOZ_HUNSPELL_LIBS']
+
+ if CONFIG['MOZ_SYSTEM_LIBEVENT']:
+ OS_LIBS += CONFIG['MOZ_LIBEVENT_LIBS']
+
+ if CONFIG['MOZ_SYSTEM_LIBVPX']:
+ OS_LIBS += CONFIG['MOZ_LIBVPX_LIBS']
+
- 12/17: TEMPORARY_HACK: gnu: modem-manager: Update to 1.7.991 [unstable branch!], (continued)
- 12/17: TEMPORARY_HACK: gnu: modem-manager: Update to 1.7.991 [unstable branch!], Mark H. Weaver, 2018/04/23
- 11/17: TEMPORARY_HACK: gnu: python-pygobject: Disable tests., Mark H. Weaver, 2018/04/23
- 08/17: PRELIMINARY: Add support for hibernation., Mark H. Weaver, 2018/04/23
- 13/17: DRAFT: Fix gjs build., Mark H. Weaver, 2018/04/23
- 14/17: WIP: gnu: libnl: Use invoke., Mark H. Weaver, 2018/04/23
- 17/17: UNTESTED: records: Detect duplicate field initializers., Mark H. Weaver, 2018/04/23
- 06/17: gnu: golly: Use system lua., Mark H. Weaver, 2018/04/23
- 01/17: Merge branch 'master' into core-updates, Mark H. Weaver, 2018/04/23
- 16/17: DRAFT: gnu: vlc: Update to 3.0.1, and add more inputs., Mark H. Weaver, 2018/04/23
- 05/17: PRELIMINARY: Add celestia., Mark H. Weaver, 2018/04/23
- 15/17: WIP: gnu: Add icedove.,
Mark H. Weaver <=