From patchwork Wed Sep 5 14:29:01 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Stefan_Fr=C3=B6berg?= X-Patchwork-Id: 181877 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from silver.osuosl.org (silver.osuosl.org [140.211.166.136]) by ozlabs.org (Postfix) with ESMTP id 90D802C008D for ; Thu, 6 Sep 2012 00:31:16 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id A617724BCE; Wed, 5 Sep 2012 14:31:15 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id gOgdHDEkmX91; Wed, 5 Sep 2012 14:30:57 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id CFAAA24A70; Wed, 5 Sep 2012 14:30:50 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from whitealder.osuosl.org (whitealder.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id 65FD38F739 for ; Wed, 5 Sep 2012 14:30:49 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 942B2899AE for ; Wed, 5 Sep 2012 14:30:48 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id stuvcuP1bPu4 for ; Wed, 5 Sep 2012 14:30:29 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from mail.petroprogram.com (mail.petroprogram.com [194.89.34.74]) by whitealder.osuosl.org (Postfix) with ESMTPS id 320D48C7A4 for ; Wed, 5 Sep 2012 14:29:34 +0000 (UTC) Received: from localhost.fi (unknown [194.89.34.74]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: stefan.froberg@petroprogram.com) by mail.petroprogram.com (Postfix) with ESMTPSA id AFF5344195; Wed, 5 Sep 2012 17:18:23 +0300 (EEST) From: =?UTF-8?q?Stefan=20Fr=C3=B6berg?= To: buildroot@busybox.net Date: Wed, 5 Sep 2012 17:29:01 +0300 Message-Id: <1346855344-15081-7-git-send-email-stefan.froberg@petroprogram.com> X-Mailer: git-send-email 1.7.7.6 In-Reply-To: <1346855344-15081-1-git-send-email-stefan.froberg@petroprogram.com> References: <1346855344-15081-1-git-send-email-stefan.froberg@petroprogram.com> MIME-Version: 1.0 Cc: thomas.petazzoni@free-electrons.com Subject: [Buildroot] [PATCH 6/9] firefox: Mozilla Web Browser X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.14 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: buildroot-bounces@busybox.net Sender: buildroot-bounces@busybox.net Signed-off-by: Stefan Fröberg --- package/Config.in | 1 + package/firefox/Config.in | 417 ++++++++++++++++++++ .../firefox/firefox-11.0-NativeWindowHandle.patch | 12 + package/firefox/firefox-11.0-execinfo.patch | 45 +++ package/firefox/firefox-11.0-isfinite.patch | 22 + package/firefox/firefox-11.0-uclibc.patch | 112 ++++++ package/firefox/firefox-11.0-uintptr_t.patch | 12 + package/firefox/firefox.mk | 240 +++++++++++ package/firefox/firefox_extensions.mk.in | 168 ++++++++ package/firefox/mozconfig | 35 ++ package/firefox/prefs.js | 100 +++++ 11 files changed, 1164 insertions(+), 0 deletions(-) create mode 100644 package/firefox/Config.in create mode 100644 package/firefox/firefox-11.0-NativeWindowHandle.patch create mode 100644 package/firefox/firefox-11.0-execinfo.patch create mode 100644 package/firefox/firefox-11.0-isfinite.patch create mode 100644 package/firefox/firefox-11.0-uclibc.patch create mode 100644 package/firefox/firefox-11.0-uintptr_t.patch create mode 100644 package/firefox/firefox.mk create mode 100644 package/firefox/firefox_extensions.mk.in create mode 100644 package/firefox/mozconfig create mode 100755 package/firefox/prefs.js diff --git a/package/Config.in b/package/Config.in index 636caf8..1848abb 100644 --- a/package/Config.in +++ b/package/Config.in @@ -540,6 +540,7 @@ source "package/dnsmasq/Config.in" source "package/dropbear/Config.in" source "package/ebtables/Config.in" source "package/ethtool/Config.in" +source "package/firefox/Config.in" source "package/heirloom-mailx/Config.in" if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS source "package/hiawatha/Config.in" diff --git a/package/firefox/Config.in b/package/firefox/Config.in new file mode 100644 index 0000000..fbd4749 --- /dev/null +++ b/package/firefox/Config.in @@ -0,0 +1,417 @@ +config BR2_PACKAGE_FIREFOX + bool "firefox" + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_CAIRO + select BR2_PACKAGE_CAIRO_TEE + select BR2_PACKAGE_FREETYPE + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBGTK2 + select BR2_PACKAGE_LIBFFI + select BR2_PACKAGE_LIBNSS + select BR2_PACKAGE_LIBNSPR + select BR2_PACKAGE_LIBPNG + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_SQLITE_ENABLE_FTS3 + select BR2_PACKAGE_SQLITE_ENABLE_UNLOCK_NOTIFY + select BR2_PACKAGE_SQLITE_SECURE_DELETE + select BR2_PACKAGE_ZLIB + depends on BR2_PACKAGE_PYTHON + help + Mozilla Firefox Web Browser + + http://releases.mozilla.org/pub/mozilla.org/firefox/releases/11.0/source/ + +if BR2_PACKAGE_FIREFOX + +config BR2_PACKAGE_FIREFOX_ENABLE_DEBUG + bool "Enable debug build and Valgrind integration hooks" + select BR2_PACKAGE_VALGRIND if BR2_TOOLCHAIN_BUILDROOT && BR2_GCC_ENABLE_TLS + help + This enables debug support. + If you are using buildroot toolchain and your gcc has TLS enable then + this will also enable Valgrind integration hooks. + +config BR2_PACKAGE_FIREFOX_ENABLE_WEBM + bool "Enable WebM" + select BR2_PACKAGE_YASM if BR2_i386 || BR2_x86_64 + help + WebM is an audio-video format designed to provide royalty-free, open video compression + for use with HTML5 video. The project's development is sponsored by Google inc. + + A WebM file consist of VP8 video and Vorbis audio streams, in a container based on + a profile of Matroska. The project releases WebM related software under a BSD license and + all users are granted a worldwide, non-exclusive, non-charge, royalty-free patent license. + + WebM is one way of watching YouTube videos without proprietary Adobe Flash. + After you have installed WebM enabled Firefox you can try it by visiting the following link: + + http://www.youtube.com/results?search_query=web&webm=1 + +config BR2_PACKAGE_FIREFOX_ULTRA_PARANOID + bool "Enable Ulta-paranoid settings" + select BR2_PACKAGE_FIREFOX_INSTALL_DEFAULT_EXTENSIONS + select BR2_PACKAGE_FIREFOX_EXTENSION_NOSCRIPT + select BR2_PACKAGE_FIREFOX_EXTENSION_ADBLOCK_LITE + select BR2_PACKAGE_FIREFOX_EXTENSION_GHOSTERY + select BR2_PACKAGE_FIREFOX_EXTENSION_HTTPS_EVERYWHERE + help + This enables my (IMHO) ultra-private custom settings. + The changed settings appear bold when typing about:config into your browser address bar. + + Most (but not all!) are documented in + http://kb.mozillazine.org/Firefox_:_FAQs_:_About:config_Entries + + For more info of these entries please take a look at package/firefox/prefs.js file. + + By selecting this option you are also enabling pipelining for your browser. + + Below is a short summary of settings changed: + + network.http.pipelining = true; + network.http.pipelining.aggressive = true; + network.http.pipelining.ssl = true; + network.http.proxy.pipelining = true; + browser.download.manager.retention = 1; + browser.formfill.enable = false; + browser.privatebrowsing.autostart = true; + dom.disable_window_move_resize = false; + dom.event.contextmenu.enabled = false; + geo.enabled = false; + network.cookie.cookieBehavior = 1; + network.cookie.lifetimePolicy = 2; + network.cookie.prefsMigrated = true; + network.proxy.socks_remote_dns = true; + network.websocket.enabled = false; + places.history.enabled = false; + privacy.clearOnShutdown.offlineApps = true; + privacy.clearOnShutdown.passwords = true; + privacy.clearOnShutdown.siteSettings = true; + privacy.donottrackheader.enabled = true; + privacy.item.cookies = true; + privacy.sanitize.sanitizeOnShutdown = true; + + Note: + By selecting this option you are also enabling the following privacy/security related + extensions: NoScript, Adblock Lite, Ghostery & HTTPS Everywhere + +config BR2_PACKAGE_FIREFOX_INSTALL_DEFAULT_EXTENSIONS + bool "Enable installing of selected default extensions" + help + This option will enable you to select default extensions to + be installed when building Firefox. + + Note: The selected extensions are only *installed*. + They are not *enabled* by default. + For that you have to manually enable them after starting you + freshly build Firefox. + +config BR2_PACKAGE_FIREFOX_EXTENSION_NOSCRIPT + bool "Install NoScript extensions" + depends on BR2_PACKAGE_FIREFOX_INSTALL_DEFAULT_EXTENSIONS + help + NoScript for Firefox pre-emptively blocks malicious scripts + and allows JavaScript, Java, Flash and other potentially dangerous + content only from sites you trust. + + NoScript also provides the most anti-XSS and anti-Clickjacking + protection ever available in a browser + + http://noscript.net + +config BR2_PACKAGE_FIREFOX_EXTENSION_ADBLOCK_LITE + bool "Install Adblock Lite extension" + depends on BR2_PACKAGE_FIREFOX_INSTALL_DEFAULT_EXTENSIONS + help + Adblock Lite is a fork of the Adblock Plus version 1.3.10 (classic UI) + extension for blocking advertisements on the web. + This fork will provide the same features as Adblock Plus 2.x and higher + while keeping the old UI but without acceptable ads feature. + + https://bitbucket.org/adstomper/adblocklite + +config BR2_PACKAGE_FIREFOX_EXTENSION_GHOSTERY + bool "Install Ghostery extension" + depends on BR2_PACKAGE_FIREFOX_INSTALL_DEFAULT_EXTENSIONS + help + Protect your privacy. See who's tracking your web browsing and + block them with Ghostery. + + http://www.ghostery.com + +config BR2_PACKAGE_FIREFOX_EXTENSION_HTTPS_EVERYWHERE + bool "Install HTTPS Everywhere extension" + depends on BR2_PACKAGE_FIREFOX_INSTALL_DEFAULT_EXTENSIONS + help + HTTPS Everywhere is a Firefox and Chrome extension + that encrypts your communications wit many major + websites, making your browsing more secure. + + https://www.eff.org/https-everywhere + +config BR2_PACKAGE_FIREFOX_PLUGIN_GNASH + source "package/gnash/Config.in" + +choice + default BR2_PACKAGE_FIREFOX_LOCALE_EN_US + prompt "Select locale" + config BR2_PACKAGE_FIREFOX_LOCALE_AF + bool "af" + config BR2_PACKAGE_FIREFOX_LOCALE_AK + bool "ak" + config BR2_PACKAGE_FIREFOX_LOCALE_AR + bool "ar" + config BR2_PACKAGE_FIREFOX_LOCALE_AS + bool "as" + config BR2_PACKAGE_FIREFOX_LOCALE_AST + bool "ast" + config BR2_PACKAGE_FIREFOX_LOCALE_BE + bool "be" + config BR2_PACKAGE_FIREFOX_LOCALE_BG + bool "bg" + config BR2_PACKAGE_FIREFOX_LOCALE_BN_BD + bool "bn-BD" + config BR2_PACKAGE_FIREFOX_LOCALE_BN_ID + bool "bn-IN" + config BR2_PACKAGE_FIREFOX_LOCALE_BR + bool "br" + config BR2_PACKAGE_FIREFOX_LOCALE_BS + bool "bs" + config BR2_PACKAGE_FIREFOX_LOCALE_CA + bool "ca" + config BR2_PACKAGE_FIREFOX_LOCALE_CSB + bool "csb" + config BR2_PACKAGE_FIREFOX_LOCALE_CS + bool "cs" + config BR2_PACKAGE_FIREFOX_LOCALE_CY + bool "cy" + config BR2_PACKAGE_FIREFOX_LOCALE_DA + bool "da" + config BR2_PACKAGE_FIREFOX_LOCALE_DE + bool "de" + config BR2_PACKAGE_FIREFOX_LOCALE_EL + bool "el" + config BR2_PACKAGE_FIREFOX_LOCALE_EN_GB + bool "en-GB" + config BR2_PACKAGE_FIREFOX_LOCALE_EN_US + bool "en-US" + config BR2_PACKAGE_FIREFOX_LOCALE_EN_ZA + bool "en-ZA" + config BR2_PACKAGE_FIREFOX_LOCALE_EO + bool "eo" + config BR2_PACKAGE_FIREFOX_LOCALE_ES_AR + bool "es-AR" + config BR2_PACKAGE_FIREFOX_LOCALE_ES_CL + bool "es-CL" + config BR2_PACKAGE_FIREFOX_LOCALE_ES_ES + bool "es-ES" + config BR2_PACKAGE_FIREFOX_LOCALE_ES_MX + bool "es-MX" + config BR2_PACKAGE_FIREFOX_LOCALE_ET + bool "et" + config BR2_PACKAGE_FIREFOX_LOCALE_EU + bool "eu" + config BR2_PACKAGE_FIREFOX_LOCALE_FA + bool "fa" + config BR2_PACKAGE_FIREFOX_LOCALE_FI + bool "fi" + config BR2_PACKAGE_FIREFOX_LOCALE_FR + bool "fr" + config BR2_PACKAGE_FIREFOX_LOCALE_FY_NL + bool "fy-NL" + config BR2_PACKAGE_FIREFOX_LOCALE_GA_IE + bool "ga-IE" + config BR2_PACKAGE_FIREFOX_LOCALE_GD + bool "gd" + config BR2_PACKAGE_FIREFOX_LOCALE_GL + bool "gl" + config BR2_PACKAGE_FIREFOX_LOCALE_GU_IN + bool "gu-IN" + config BR2_PACKAGE_FIREFOX_LOCALE_HE + bool "he" + config BR2_PACKAGE_FIREFOX_LOCALE_HI_IN + bool "hi-IN" + config BR2_PACKAGE_FIREFOX_LOCALE_HR + bool "hr" + config BR2_PACKAGE_FIREFOX_LOCALE_HU + bool "hu" + config BR2_PACKAGE_FIREFOX_LOCALE_HY_AM + bool "hy-AM" + config BR2_PACKAGE_FIREFOX_LOCALE_ID + bool "id" + config BR2_PACKAGE_FIREFOX_LOCALE_IS + bool "is" + config BR2_PACKAGE_FIREFOX_LOCALE_IT + bool "it" + config BR2_PACKAGE_FIREFOX_LOCALE_JA + bool "ja" + config BR2_PACKAGE_FIREFOX_LOCALE_KK + bool "kk" + config BR2_PACKAGE_FIREFOX_LOCALE_KN + bool "kn" + config BR2_PACKAGE_FIREFOX_LOCALE_KO + bool "ko" + config BR2_PACKAGE_FIREFOX_LOCALE_KU + bool "ku" + config BR2_PACKAGE_FIREFOX_LOCALE_LG + bool "lg" + config BR2_PACKAGE_FIREFOX_LOCALE_LT + bool "lt" + config BR2_PACKAGE_FIREFOX_LOCALE_LV + bool "lv" + config BR2_PACKAGE_FIREFOX_LOCALE_MAI + bool "mai" + config BR2_PACKAGE_FIREFOX_LOCALE_MK + bool "mk" + config BR2_PACKAGE_FIREFOX_LOCALE_ML + bool "ml" + config BR2_PACKAGE_FIREFOX_LOCALE_MR + bool "mr" + config BR2_PACKAGE_FIREFOX_LOCALE_NB_NO + bool "nb-NO" + config BR2_PACKAGE_FIREFOX_LOCALE_NL + bool "nl" + config BR2_PACKAGE_FIREFOX_LOCALE_NN_NO + bool "nn-NO" + config BR2_PACKAGE_FIREFOX_LOCALE_NSO + bool "nso" + config BR2_PACKAGE_FIREFOX_LOCALE_OR + bool "or" + config BR2_PACKAGE_FIREFOX_LOCALE_PA_IN + bool "pa-IN" + config BR2_PACKAGE_FIREFOX_LOCALE_PL + bool "pl" + config BR2_PACKAGE_FIREFOX_LOCALE_PT_BR + bool "pt-BR" + config BR2_PACKAGE_FIREFOX_LOCALE_PT_PT + bool "pt-PT" + config BR2_PACKAGE_FIREFOX_LOCALE_RM + bool "rm" + config BR2_PACKAGE_FIREFOX_LOCALE_RO + bool "ro" + config BR2_PACKAGE_FIREFOX_LOCALE_RU + bool "ru" + config BR2_PACKAGE_FIREFOX_LOCALE_SI + bool "si" + config BR2_PACKAGE_FIREFOX_LOCALE_SK + bool "sk" + config BR2_PACKAGE_FIREFOX_LOCALE_SL + bool "sl" + config BR2_PACKAGE_FIREFOX_LOCALE_SON + bool "son" + config BR2_PACKAGE_FIREFOX_LOCALE_SQ + bool "sq" + config BR2_PACKAGE_FIREFOX_LOCALE_SR + bool "sr" + config BR2_PACKAGE_FIREFOX_LOCALE_SV_SE + bool "sv-SE" + config BR2_PACKAGE_FIREFOX_LOCALE_TA + bool "ta" + config BR2_PACKAGE_FIREFOX_LOCALE_TA_LK + bool "ta-LK" + config BR2_PACKAGE_FIREFOX_LOCALE_TE + bool "te" + config BR2_PACKAGE_FIREFOX_LOCALE_TH + bool "th" + config BR2_PACKAGE_FIREFOX_LOCALE_TR + bool "tr" + config BR2_PACKAGE_FIREFOX_LOCALE_UK + bool "uk" + config BR2_PACKAGE_FIREFOX_LOCALE_VI + bool "vi" + config BR2_PACKAGE_FIREFOX_LOCALE_ZH_CN + bool "zh-CN" + config BR2_PACKAGE_FIREFOX_LOCALE_ZH_TW + bool "zh-TW" + config BR2_PACKAGE_FIREFOX_LOCALE_ZU + bool "zu" +endchoice + +config BR2_PACKAGE_FIREFOX_LOCALE + string + default "af" if BR2_PACKAGE_FIREFOX_LOCALE_AF + default "ak" if BR2_PACKAGE_FIREFOX_LOCALE_AK + default "ar" if BR2_PACKAGE_FIREFOX_LOCALE_AR + default "as" if BR2_PACKAGE_FIREFOX_LOCALE_AS + default "ast" if BR2_PACKAGE_FIREFOX_LOCALE_AST + default "be" if BR2_PACKAGE_FIREFOX_LOCALE_BE + default "bg" if BR2_PACKAGE_FIREFOX_LOCALE_BG + default "bn-BD" if BR2_PACKAGE_FIREFOX_LOCALE_BN_BD + default "bn-IN" if BR2_PACKAGE_FIREFOX_LOCALE_BN_ID + default "br" if BR2_PACKAGE_FIREFOX_LOCALE_BR + default "bs" if BR2_PACKAGE_FIREFOX_LOCALE_BS + default "ca" if BR2_PACKAGE_FIREFOX_LOCALE_CA + default "csb" if BR2_PACKAGE_FIREFOX_LOCALE_CSB + default "cs" if BR2_PACKAGE_FIREFOX_LOCALE_CS + default "cy" if BR2_PACKAGE_FIREFOX_LOCALE_CY + default "da" if BR2_PACKAGE_FIREFOX_LOCALE_DA + default "de" if BR2_PACKAGE_FIREFOX_LOCALE_DE + default "el" if BR2_PACKAGE_FIREFOX_LOCALE_EL + default "en-GB" if BR2_PACKAGE_FIREFOX_LOCALE_EN_GB + default "en-US" if BR2_PACKAGE_FIREFOX_LOCALE_EN_US + default "en-ZA" if BR2_PACKAGE_FIREFOX_LOCALE_EN_ZA + default "eo" if BR2_PACKAGE_FIREFOX_LOCALE_EO + default "es-AR" if BR2_PACKAGE_FIREFOX_LOCALE_ES_AR + default "es-CL" if BR2_PACKAGE_FIREFOX_LOCALE_ES_CL + default "es-ES" if BR2_PACKAGE_FIREFOX_LOCALE_ES_ES + default "es-MX" if BR2_PACKAGE_FIREFOX_LOCALE_ES_MX + default "et" if BR2_PACKAGE_FIREFOX_LOCALE_ET + default "eu" if BR2_PACKAGE_FIREFOX_LOCALE_EU + default "fa" if BR2_PACKAGE_FIREFOX_LOCALE_FA + default "fi" if BR2_PACKAGE_FIREFOX_LOCALE_FI + default "fr" if BR2_PACKAGE_FIREFOX_LOCALE_FR + default "fy-NL" if BR2_PACKAGE_FIREFOX_LOCALE_FY_NL + default "ga-IE" if BR2_PACKAGE_FIREFOX_LOCALE_GA_IE + default "gd" if BR2_PACKAGE_FIREFOX_LOCALE_GD + default "gl" if BR2_PACKAGE_FIREFOX_LOCALE_GL + default "gu-IN" if BR2_PACKAGE_FIREFOX_LOCALE_GU_IN + default "he" if BR2_PACKAGE_FIREFOX_LOCALE_HE + default "hi-IN" if BR2_PACKAGE_FIREFOX_LOCALE_HI_IN + default "hr" if BR2_PACKAGE_FIREFOX_LOCALE_HR + default "hu" if BR2_PACKAGE_FIREFOX_LOCALE_HU + default "hy-AM" if BR2_PACKAGE_FIREFOX_LOCALE_HY_AM + default "id" if BR2_PACKAGE_FIREFOX_LOCALE_ID + default "is" if BR2_PACKAGE_FIREFOX_LOCALE_IS + default "it" if BR2_PACKAGE_FIREFOX_LOCALE_IT + default "ja" if BR2_PACKAGE_FIREFOX_LOCALE_JA + default "kk" if BR2_PACKAGE_FIREFOX_LOCALE_KK + default "kn" if BR2_PACKAGE_FIREFOX_LOCALE_KN + default "ko" if BR2_PACKAGE_FIREFOX_LOCALE_KO + default "ku" if BR2_PACKAGE_FIREFOX_LOCALE_KU + default "lg" if BR2_PACKAGE_FIREFOX_LOCALE_LG + default "lt" if BR2_PACKAGE_FIREFOX_LOCALE_LT + default "lv" if BR2_PACKAGE_FIREFOX_LOCALE_LV + default "mai" if BR2_PACKAGE_FIREFOX_LOCALE_MAI + default "mk" if BR2_PACKAGE_FIREFOX_LOCALE_MK + default "ml" if BR2_PACKAGE_FIREFOX_LOCALE_ML + default "mr" if BR2_PACKAGE_FIREFOX_LOCALE_MR + default "nb-NO" if BR2_PACKAGE_FIREFOX_LOCALE_NB_NO + default "nl" if BR2_PACKAGE_FIREFOX_LOCALE_NL + default "nn-NO" if BR2_PACKAGE_FIREFOX_LOCALE_NN_NO + default "nso" if BR2_PACKAGE_FIREFOX_LOCALE_NSO + default "or" if BR2_PACKAGE_FIREFOX_LOCALE_OR + default "pa-IN" if BR2_PACKAGE_FIREFOX_LOCALE_PA_IN + default "pl" if BR2_PACKAGE_FIREFOX_LOCALE_PL + default "pt-BR" if BR2_PACKAGE_FIREFOX_LOCALE_PT_BR + default "pt-PT" if BR2_PACKAGE_FIREFOX_LOCALE_PT_PT + default "rm" if BR2_PACKAGE_FIREFOX_LOCALE_RM + default "ro" if BR2_PACKAGE_FIREFOX_LOCALE_RO + default "ru" if BR2_PACKAGE_FIREFOX_LOCALE_RU + default "si" if BR2_PACKAGE_FIREFOX_LOCALE_SI + default "sk" if BR2_PACKAGE_FIREFOX_LOCALE_SK + default "sl" if BR2_PACKAGE_FIREFOX_LOCALE_SL + default "son" if BR2_PACKAGE_FIREFOX_LOCALE_SON + default "sq" if BR2_PACKAGE_FIREFOX_LOCALE_SQ + default "sr" if BR2_PACKAGE_FIREFOX_LOCALE_SR + default "sv-SE" if BR2_PACKAGE_FIREFOX_LOCALE_SV_SE + default "ta" if BR2_PACKAGE_FIREFOX_LOCALE_TA + default "ta-LK" if BR2_PACKAGE_FIREFOX_LOCALE_TA_LK + default "te" if BR2_PACKAGE_FIREFOX_LOCALE_TE + default "th" if BR2_PACKAGE_FIREFOX_LOCALE_TH + default "tr" if BR2_PACKAGE_FIREFOX_LOCALE_TR + default "uk" if BR2_PACKAGE_FIREFOX_LOCALE_UK + default "vi" if BR2_PACKAGE_FIREFOX_LOCALE_VI + default "zh-CN" if BR2_PACKAGE_FIREFOX_LOCALE_ZH_CN + default "zh-TW" if BR2_PACKAGE_FIREFOX_LOCALE_ZH_TW + default "zu" if BR2_PACKAGE_FIREFOX_LOCALE_ZU + +endif diff --git a/package/firefox/firefox-11.0-NativeWindowHandle.patch b/package/firefox/firefox-11.0-NativeWindowHandle.patch new file mode 100644 index 0000000..bced599 --- /dev/null +++ b/package/firefox/firefox-11.0-NativeWindowHandle.patch @@ -0,0 +1,12 @@ +diff -Naur firefox-11.0.org/dom/plugins/ipc/PluginMessageUtils.h firefox-11.0/dom/plugins/ipc/PluginMessageUtils.h +--- firefox-11.0.org/dom/plugins/ipc/PluginMessageUtils.h 2012-09-04 22:20:07.086923927 +0300 ++++ firefox-11.0/dom/plugins/ipc/PluginMessageUtils.h 2012-09-04 22:23:45.195922486 +0300 +@@ -131,7 +131,7 @@ + typedef HWND NativeWindowHandle; + #elif defined(MOZ_X11) + typedef XID NativeWindowHandle; +-#elif defined(XP_MACOSX) || defined(ANDROID) || defined(MOZ_WIDGET_QT) ++#elif defined(XP_MACOSX) || defined(ANDROID) || defined(MOZ_WIDGET_QT) || defined(MOZ_DFB) + typedef intptr_t NativeWindowHandle; // never actually used, will always be 0 + #else + #error Need NativeWindowHandle for this platform diff --git a/package/firefox/firefox-11.0-execinfo.patch b/package/firefox/firefox-11.0-execinfo.patch new file mode 100644 index 0000000..cacd7a1 --- /dev/null +++ b/package/firefox/firefox-11.0-execinfo.patch @@ -0,0 +1,45 @@ +diff -Naur firefox-11.0.org/ipc/chromium/src/base/debug_util_posix.cc firefox-11.0/ipc/chromium/src/base/debug_util_posix.cc +--- firefox-11.0.org/ipc/chromium/src/base/debug_util_posix.cc 2012-08-06 15:09:43.325994371 +0300 ++++ firefox-11.0/ipc/chromium/src/base/debug_util_posix.cc 2012-08-06 23:30:33.750226316 +0300 +@@ -5,7 +5,7 @@ + #include "build/build_config.h" + #include "base/debug_util.h" + +-#define MOZ_HAVE_EXECINFO_H (!defined(ANDROID) && !defined(__OpenBSD__)) ++#define MOZ_HAVE_EXECINFO_H (!defined(ANDROID) && !defined(__OpenBSD__) && !defined(__UCLIBC__) ) + + #include + #include +diff -Naur firefox-11.0.org/tools/profiler/sps/platform-linux.cc firefox-11.0/tools/profiler/sps/platform-linux.cc +--- firefox-11.0.org/tools/profiler/sps/platform-linux.cc 2012-08-06 15:09:24.330995513 +0300 ++++ firefox-11.0/tools/profiler/sps/platform-linux.cc 2012-08-06 23:30:33.751226314 +0300 +@@ -28,7 +28,7 @@ + #include // open + #include // open + #include // sysconf +-#ifdef __GLIBC__ ++#if defined(__GLIBC__) && !defined(__UCLIBC__) + #include // backtrace, backtrace_symbols + #endif // def __GLIBC__ + #include // index +@@ -114,7 +114,7 @@ + static Sampler* sActiveSampler = NULL; + + +-#if !defined(__GLIBC__) && (defined(__arm__) || defined(__thumb__)) ++#if !defined(__GLIBC__) && (defined(__arm__) || defined(__thumb__)) && !defined(__UCLIBC__) + // Android runs a fairly new Linux kernel, so signal info is there, + // but the C library doesn't have the structs defined. + +diff -Naur firefox-11.0.org/xpcom/threads/nsThread.cpp firefox-11.0/xpcom/threads/nsThread.cpp +--- firefox-11.0.org/xpcom/threads/nsThread.cpp 2012-08-06 15:09:49.129994022 +0300 ++++ firefox-11.0/xpcom/threads/nsThread.cpp 2012-08-06 23:30:49.474225373 +0300 +@@ -53,7 +53,7 @@ + _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) && \ + !(_POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700) + +-#if defined(XP_UNIX) && !defined(ANDROID) && !defined(DEBUG) && HAVE_UALARM \ ++#if defined(XP_UNIX) && !defined(ANDROID) && !defined(__UCLIBC__) && !defined(DEBUG) && HAVE_UALARM \ + && defined(_GNU_SOURCE) + # define MOZ_CANARY + # include diff --git a/package/firefox/firefox-11.0-isfinite.patch b/package/firefox/firefox-11.0-isfinite.patch new file mode 100644 index 0000000..87c024d --- /dev/null +++ b/package/firefox/firefox-11.0-isfinite.patch @@ -0,0 +1,22 @@ +diff -Naur firefox-11.0.org/xpcom/ds/nsMathUtils.h firefox-11.0/xpcom/ds/nsMathUtils.h +--- firefox-11.0.org/xpcom/ds/nsMathUtils.h 2012-08-06 15:09:49.059994026 +0300 ++++ firefox-11.0/xpcom/ds/nsMathUtils.h 2012-08-06 23:32:57.771217662 +0300 +@@ -42,6 +42,9 @@ + + #include "nscore.h" + #include ++#ifdef __UCLIBC__ ++#include ++#endif + #include + + #ifdef SOLARIS +@@ -134,6 +137,8 @@ + // Darwin has deprecated |finite| and recommends |isfinite|. The former is + // not present in the iOS SDK. + return isfinite(d); ++#elif __UCLIBC__ ++ return std::isfinite(d); + #else + return finite(d); + #endif diff --git a/package/firefox/firefox-11.0-uclibc.patch b/package/firefox/firefox-11.0-uclibc.patch new file mode 100644 index 0000000..3d1b1a0 --- /dev/null +++ b/package/firefox/firefox-11.0-uclibc.patch @@ -0,0 +1,112 @@ +diff -Naur firefox-11.0.org/ipc/chromium/src/base/file_util.h firefox-11.0/ipc/chromium/src/base/file_util.h +--- firefox-11.0.org/ipc/chromium/src/base/file_util.h 2012-08-06 15:09:43.333994370 +0300 ++++ firefox-11.0/ipc/chromium/src/base/file_util.h 2012-08-06 23:42:29.523183319 +0300 +@@ -16,7 +16,9 @@ + #include + #elif defined(OS_POSIX) + #include ++#ifndef __UCLIBC__ + #include ++#endif + #include + #endif + +@@ -466,7 +468,7 @@ + #if defined(OS_WIN) + WIN32_FIND_DATA find_data_; + HANDLE find_handle_; +-#elif defined(ANDROID) ++#elif defined(ANDROID) || defined(__UCLIBC__) + void *fts_; + #elif defined(OS_POSIX) + FTS* fts_; +diff -Naur firefox-11.0.org/ipc/chromium/src/base/file_util_posix.cc firefox-11.0/ipc/chromium/src/base/file_util_posix.cc +--- firefox-11.0.org/ipc/chromium/src/base/file_util_posix.cc 2012-08-06 15:09:43.296994374 +0300 ++++ firefox-11.0/ipc/chromium/src/base/file_util_posix.cc 2012-08-06 23:42:29.525183319 +0300 +@@ -8,7 +8,7 @@ + #include + #include + #include +-#ifndef ANDROID ++#if !defined(ANDROID) && !defined(__UCLIBC__) + #include + #endif + #include +@@ -123,7 +123,7 @@ + if (!recursive) + return (rmdir(path_str) == 0); + +-#ifdef ANDROID ++#if defined(ANDROID) || defined(__UCLIBC__) + // XXX Need ftsless impl for bionic + return false; + #else +@@ -196,7 +196,7 @@ + return false; + } + +-#ifdef ANDROID ++#if defined(ANDROID) || defined(__UCLIBC__) + // XXX Need ftsless impl for bionic + return false; + #else +@@ -419,7 +419,7 @@ + std::string tmpdir_string = tmpdir.value(); + // this should be OK since mkdtemp just replaces characters in place + char* buffer = const_cast(tmpdir_string.c_str()); +-#ifdef ANDROID ++#if defined(ANDROID) || defined(__UCLIBC__) + char* dtemp = NULL; + #else + char* dtemp = mkdtemp(buffer); +@@ -549,7 +549,7 @@ + } + + FileEnumerator::~FileEnumerator() { +-#ifndef ANDROID ++#if !defined(ANDROID) && !defined(__UCLIBC__) + if (fts_) + fts_close(fts_); + #endif +@@ -561,7 +561,7 @@ + if (!is_in_find_op_) + return; + +-#ifndef ANDROID ++#if !defined(ANDROID) && !defined(__UCLIBC__) + memcpy(&(info->stat), fts_ent_->fts_statp, sizeof(info->stat)); + info->filename.assign(fts_ent_->fts_name); + #endif +@@ -572,7 +572,7 @@ + // large directories with many files this can be quite deep. + // TODO(erikkay) - get rid of this recursive pattern + FilePath FileEnumerator::Next() { +-#ifdef ANDROID ++#if defined(ANDROID) || defined(__UCLIBC__) + return FilePath(); + #else + if (!is_in_find_op_) { +diff -Naur firefox-11.0.org/js/src/ctypes/CTypes.cpp firefox-11.0/js/src/ctypes/CTypes.cpp +--- firefox-11.0.org/js/src/ctypes/CTypes.cpp 2012-08-06 15:09:42.909994396 +0300 ++++ firefox-11.0/js/src/ctypes/CTypes.cpp 2012-08-06 23:45:09.691173699 +0300 +@@ -473,6 +473,8 @@ + static inline bool FloatIsFinite(jsdouble f) { + #ifdef WIN32 + return _finite(f) != 0; ++#elif __UCLIBC__ ++ return isinf(f); + #else + return finite(f); + #endif +diff -Naur firefox-11.0.org/memory/mozalloc/mozalloc.cpp firefox-11.0/memory/mozalloc/mozalloc.cpp +--- firefox-11.0.org/memory/mozalloc/mozalloc.cpp 2012-08-06 15:09:42.968994393 +0300 ++++ firefox-11.0/memory/mozalloc/mozalloc.cpp 2012-08-06 23:45:58.800170749 +0300 +@@ -259,7 +259,7 @@ + + #if defined(XP_MACOSX) + return malloc_size(ptr); +-#elif defined(MOZ_MEMORY) || defined(XP_LINUX) ++#elif defined(MOZ_MEMORY) || defined(XP_LINUX) && !defined(__UCLIBC__) + // XXX: the |defined(XP_LINUX)| may be too lax; some Linux installations + // might use a libc that doesn't have malloc_usable_size. Let's fix this + // if/when it happens. diff --git a/package/firefox/firefox-11.0-uintptr_t.patch b/package/firefox/firefox-11.0-uintptr_t.patch new file mode 100644 index 0000000..559b4c7 --- /dev/null +++ b/package/firefox/firefox-11.0-uintptr_t.patch @@ -0,0 +1,12 @@ +diff -Naur firefox-11.0.org/gfx/qcms/qcmstypes.h firefox-11.0/gfx/qcms/qcmstypes.h +--- firefox-11.0.org/gfx/qcms/qcmstypes.h 2012-08-06 15:09:44.189994318 +0300 ++++ firefox-11.0/gfx/qcms/qcmstypes.h 2012-08-06 23:35:38.339208022 +0300 +@@ -27,7 +27,7 @@ + #ifdef __OS2__ + /* OS/2's stdlib typdefs uintptr_t. So we'll just include that so we don't collide */ + #include +-#elif !defined(__intptr_t_defined) && !defined(_UINTPTR_T_DEFINED) ++#elif !defined(__intptr_t_defined) && !defined(_UINTPTR_T_DEFINED) && !defined(__UCLIBC__) + typedef PRUptrdiff uintptr_t; + #endif + #endif diff --git a/package/firefox/firefox.mk b/package/firefox/firefox.mk new file mode 100644 index 0000000..f501636 --- /dev/null +++ b/package/firefox/firefox.mk @@ -0,0 +1,240 @@ +############################################################# +# +# Mozilla Firefox +# +# Version: 11.0 +# Authors: Stefan Froberg +# +# Builds a very minimal binary with all the optional features +# stripped, except WebM. +# +# With WebM enabled you can watch *some* (but not all!) +# YouTube videos without Adobe Flash player +# http://www.youtube.com/results?search_query=web&webm=1 +# +# Because Adobe Flash player plug-in is a glibc binary it +# will obviously not work with uClibc. +# (but maybe with nspluginwrapper ... ) +# +# So the only real open source solution for playing flash videos +# with Firefox under uClibc will be gnash + lightspark combo. +# Lightspark handling the newer flash formats while falling back +# to gnash with older versions. +# +# Further, Adobe has recently stopped supporting Linux version of +# their plug-in but Google Chrome PPAPI might some day +# find it's way to firefox and save the day. +# http://www.phoronix.com/scan.php?page=news_item&px=MTEyNzc +# +# Used Linux From Scratch as a starting template for this file +# http://www.linuxfromscratch.org/blfs/view/svb/xsoft/firefox.html +# +# Note: Even tought the libnss and libnspr are marked as dependencies +# here I could not get them to work when building firefox. +# Seems that the configure script needs some patching ... +# +# So for now, untill somebody fixes this, instead of trying to +# use the buildroot system version of these libs the +# internal ones provided by the firefox tarball are used. +# +############################################################# +FIREFOX_VERSION = 11.0 +FIREFOX_SOURCE = firefox-$(FIREFOX_VERSION).source.tar.bz2 +FIREFOX_SITE = http://releases.mozilla.org/pub/mozilla.org/firefox/releases/$(FIREFOX_VERSION)/source/ +FIREFOX_DEPENDENCIES = host-python alsa-lib cairo freetype jpeg libffi libgtk2 libnss libnspr libpng sqlite zlib + +ifeq ($(BR2_PACKAGE_FIREFOX_ENABLE_DEBUG),y) +FIREFOX_DEPENDENCIES += valgrind +define FIREFOX_ENABLE_DEBUG + echo "ac_add_options --enable-debug" >> $(FIREFOX_DIR)/mozconfig + echo "ac_add_options --enable-debug-symbols" >> $(FIREFOX_DIR)/mozconfig + echo "ac_add_options --disable-strip" >> $(FIREFOX_DIR)/mozconfig + echo "ac_add_options --enable-valgrind" >> $(FIREFOX_DIR)/mozconfig +endef +else +define FIREFOX_ENABLE_DEBUG + echo "ac_add_options --disable-debug" >> $(FIREFOX_DIR)/mozconfig + echo "ac_add_options --disable-debug-symbols" >> $(FIREFOX_DIR)/mozconfig + echo "ac_add_options --enable-strip" >> $(FIREFOX_DIR)/mozconfig + echo "ac_add_options --disable-valgrind" >> $(FIREFOX_DIR)/mozconfig +endef +endif + +ifeq ($(BR2_PACKAGE_FIREFOX_ENABLE_WEBM),y) +# Only x86 needs yasm +ifeq ($(BR2_i386),y) || ($(BR2_x86_64),y) +FIREFOX_DEPENDENCIES += host-yasm +endif +define FIREFOX_ENABLE_WEBM + echo "ac_add_options --enable-webm" >> $(FIREFOX_DIR)/mozconfig +endef +else +define FIREFOX_ENABLE_WEBM + echo "ac_add_options --disable-webm" >> $(FIREFOX_DIR)/mozconfig +endef +endif + +##################################################################### +# Some post-install, optional default profile custom settings +# (extensions, secure default settings, language packs, flash etc...) +##################################################################### + +# General Info & description of some Firefox extensions. +# Too large to put directly here. +include package/firefox/firefox_extensions.mk.in + +# My (IMHO) privacy enhanced about:config settings. +# Before you enable this feature please +# check prefs.js file +# +# Note: This will also install NoScript, Adblock Lite, Ghostery and +# HttpsEverywhere extensions + +ifeq ($(BR2_PACKAGE_FIREFOX_ULTRA_PARANOID),y) +define FIREFOX_ULTRA_PARANOID + cp -i package/firefox/prefs.js $(TARGET_DIR)/usr/lib/firefox-$(FIREFOX_VERSION)/defaults/profile/ +endef +endif + +ifeq ($(BR2_PACKAGE_FIREFOX_INSTALL_DEFAULT_EXTENSIONS),y) + +# Because this setting will also install the extensions mentioned in +# package/firefox/firefox_extensions.mk.in we will need two +# additional tools: host-unzip and host-xmlstarlet + +FIREFOX_DEPENDENCIES += host-unzip host-xmlstarlet + +define FIREFOX_INSTALL_DEFAULT_EXTENSIONS + $(call FIREFOX_INSTALL_EXTENSION,$(EXTENSION_SOURCE)) +endef +endif + +# Installing selected langpack (en-US locale does not need any) +ifneq ($(BR2_FIREFOX_LOCALE_EN_US),y) + +FIREFOX_LOCALE:=$(call qstrip,$(BR2_PACKAGE_FIREFOX_LOCALE)) +FIREFOX_LOCALE_SOURCE:=https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/$(FIREFOX_VERSION)/linux-i686/xpi/$(FIREFOX_LOCALE).xpi + +define FIREFOX_INSTALL_LANGPACK + $(call DOWNLOAD,$(FIREFOX_LOCALE_SOURCE)) + cp $(DL_DIR)/$(FIREFOX_LOCALE).xpi $(TARGET_DIR)/usr/lib/firefox-$(FIREFOX_VERSION)/extensions/langpack-$(FIREFOX_LOCALE)@firefox.mozilla.org.xpi + echo "user_pref(\"general.useragent.locale\",\"$(FIREFOX_LOCALE)\");" >> $(TARGET_DIR)/usr/lib/firefox-$(FIREFOX_VERSION)/defaults/profile/prefs.js +endef +endif + +define FIREFOX_CUSTOM_DEFAULT_PROFILE + mkdir -p $(TARGET_DIR)/usr/lib/firefox-$(FIREFOX_VERSION)/defaults/profile + $(FIREFOX_ULTRA_PARANOID) + $(FIREFOX_INSTALL_DEFAULT_EXTENSIONS) + $(FIREFOX_INSTALL_LANGPACK) +endef + +FIREFOX_POST_INSTALL_TARGET_HOOKS += FIREFOX_CUSTOM_DEFAULT_PROFILE + +# Even thought Firefox uses autoconf it's configure process +# is not simple "configure && make && make install" +# but a lot more messier than that. + +define FIREFOX_CONFIGURE_CMDS + # Copy the default mozconfig to source directory. + cp package/firefox/mozconfig $(@D) + + # If you want to enable any extra build options like + # DBus support, libnotify support, etc., then this + # will be the right place to do it. + + echo "ac_add_options --build=$(GNU_HOST_NAME)" >> $(FIREFOX_DIR)/mozconfig + echo "ac_add_options --host=$(GNU_TARGET_NAME)" >> $(FIREFOX_DIR)/mozconfig + + # Enable parallel building + echo "mk_add_options MOZ_MAKE_FLAGS=\"-j$(BR2_JLEVEL)\"" >> $(FIREFOX_DIR)/mozconfig + + $(FIREFOX_ENABLE_WEBM) + $(FIREFOX_ENABLE_DEBUG) + + # Create the needed build directory that was defined in mozconfig file + mkdir -p $(@D)/firefox-build-dir +endef + + +# Firefox needs SQLite to store it's configurations. +# Further the SQLite must be build with SQLITE_SECURE_DELETE, SQLITE_THREADSAFE, +# SQLITE_ENABLE_FTS3 and SLITE_ENABLE_UNLOCK_NOTIFY enabled. +# +# However, even if you *do* have these things enabled the damn configure +# script says that they are not. So I had to force the correct settings. +# +# Even worse, it seems that the script does not respect even +# pkg-config variables (see below) to find the buildroot version of SQLite +# but insist of using *host* SQLite library. +# +# Luckily, in the actual linking time, the correct libraries seem to be used. + +define FIREFOX_BUILD_CMDS + + # Picked the PKG_ variable suggestions from: + # http://www.flameeyess.eu/autotools-mythbuster/pkgconfig/cross-compiling + # + # With these settings, *most* of the buildroot system libs were found. + # With the exception of SQLite, NSS and NSPR. + + # Had to enforce HOST_CC, CC_FOR_BUILD and HOST_CXX because + # the configure would not get them right. + + (cd $(@D); \ + sed -i 's# ""##' browser/base/Makefile.in && \ + ac_cv_sqlite_secure_delete=yes \ + ac_cv_sqlite_threadsafe=yes \ + ac_cv_sqlite_enable_fts3=yes \ + ac_cv_sqlite_enable_unlock_notify=yes \ + HOST_CC=gcc \ + CC_FOR_BUILD=gcc \ + HOST_CXX=g++ \ + PKG_CONFIG_DIR= \ + PKG_CONFIG_LIBDIR="$(STAGING_DIR)/usr/lib/pkgconfig:$(STAGING_DIR)/usr/share/pkgconfig" \ + PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig" \ + PKG_CONFIG_SYSROOT_DIR="$(STAGING_DIR)"\ + $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) CXXFLAGS="$(TARGET_CXXFLAGS) -fvisibility=hidden -fvisibility-inlines-hidden" LDFLAGS="$(TARGET_LDFLAGS)" $(MAKE) -f client.mk ) + +endef + +define FIREFOX_INSTALL_TARGET_CMDS + # This will create a firefox installation tarball + (cd $(@D); \ + $(TARGET_CONFIGURE_OPTS) $(TARGET_MAKE_ENV) $(MAKE) -C firefox-build-dir/browser/installer ) + + # Make nice new clean home for our firefox and extract it there + rm -rf $(TARGET_DIR)/usr/lib/firefox-$(FIREFOX_VERSION) && \ + mkdir $(TARGET_DIR)/usr/lib/firefox-$(FIREFOX_VERSION) && \ + tar -xvf $(@D)/firefox-build-dir/dist/firefox-$(FIREFOX_VERSION).en-US.linux-*.tar.bz2 -C $(TARGET_DIR)/usr/lib/firefox-$(FIREFOX_VERSION) --strip-components=1 + + # Make some symlinks to firefox binary and plugins directory + (cd $(TARGET_DIR)/usr/bin && \ + ln -sfv ../lib/firefox-$(FIREFOX_VERSION)/firefox . && \ + mkdir -pv $(TARGET_DIR)/usr/lib/mozilla/plugins && \ + cd $(TARGET_DIR)/usr/lib/firefox-$(FIREFOX_VERSION) && \ + ln -sfv ../mozilla/plugins . && \ + chown -R -v root:root $(TARGET_DIR)/usr/lib/firefox-$(FIREFOX_VERSION) ) + + # Using strace revealed that for some strange reason the firefox is looking these + # from /usr/lib and not from /usr/lib/$(FIREFOX_VERSION) like the rest of the files. + # That's why I had to use symlinks to make it start. + + (cd $(TARGET_DIR)/usr/lib && \ + ln -sfv firefox-$(FIREFOX_VERSION)/libxul.so . && \ + ln -sfv firefox-$(FIREFOX_VERSION)/libmozjs.so . && \ + ln -sfv firefox-$(FIREFOX_VERSION)/libmozalloc.so . ) + + # For gnash support + rm -rf $(STAGING_DIR)/usr/include/npapi + mkdir -v $(STAGING_DIR)/usr/include/npapi + cp -v $(FIREFOX_DIR)/dom/plugins/base/*.h $(STAGING_DIR)/usr/include/npapi + +endef + +$(eval $(generic-package)) + + + + + diff --git a/package/firefox/firefox_extensions.mk.in b/package/firefox/firefox_extensions.mk.in new file mode 100644 index 0000000..8c8fa3d --- /dev/null +++ b/package/firefox/firefox_extensions.mk.in @@ -0,0 +1,168 @@ +############################################################# +# Extensions +# +# General Info: +# +# Firefox extensions are nothing more than ordinary zip-files with .xpi file extension. +# +# If you want to add your own default extension(s) to your default firefox profile +# then you basically have to: +# - download the extension file +# - get the extension id from that file with the help of xmlstarlet tool +# - unzip the extension file to /usr/lib/firefox-$(FIREFOX_VERSION/extensions/$(EXTENSION_ID) +# +# For more information of global extension installation look at: +# http://kb.mozillazine.org/Installing_extensions#Global_installation +# +# For information of how to get the extension id (needs unzip and xmlstarlet) look at: +# http://kb.mozillazine.org/Determine_extension_ID +# +# Note that this process will only *install* your extensions to your default firefox profile. +# It will not *enable* them by default. +# You have to do it manually afterwards from Firefox Add-ons menu. +# +# There is an "extensions.enabledAddons" setting in about:config +# but it's no use if you try to set it in pref.js file. +# It seems it's a read-only setting and it will be updated each +# time after you have manually enabled your installed extensions/language packs +# from Add-ons menu. +# +# The messy way to enable your extensions by default with each build would be: +# +# - Start your firefox at least once and then enable all your extensions manually +# +# - Do all the necessary setting you need for your extensions/langpacks +# (like Adblock Lite subscriptions, default language etc..) +# +# - Go to your $HOME/.mozilla/firefox/some_random_chars.default/ folder and copy +# at least the files starting with extensions.* (and maybe also addons.*) +# to package/firefox/extensions buildroot folder. +# To make sure, it's generally better to copy *all* files & directories from +# $HOME/.mozilla/firefox/some_random_chars.default/ folder to +# packge/firefox/extensions +# +# - Add buildroot option that will copy all those saved custom settings from +# package/firefox/extensions folder in FIREFOX_POST_INSTALL_TARGET_HOOKS phase +# (or alternativaly, at the end of the FIREFOX_INSTALL_TARGET_CMDS) +# to $(TARGET_DIR)/usr/lib/firefox-$(FIREFOX_VERSION)/extensions +# +# This seems to be the only way to *enable* extensions by default because +# firefox keep's track of extensions in SQLite database (like extensions.sqlite file) +# and not in easily editable/patchable text files :-( +# +# Next comes four privacy/security related extensions. +# + +# Name: NoScript +# Version: 2.5.3 +# Home: http://noscript.net +# Download URL: http://releases.mozilla.org/pub/mozilla.org/addons/722/noscript-2.5.3-fx+fn+sm.xpi +# Description: "NoScript for Firefox pre-emptively blocks malicious scripts +# and allows JavaScript, Java, Flash and other potentially dangerous +# content only from sites you trust. +# NoScript also provides the most anti-XSS and anti-Clickjacking +# protection ever available in a browser." + +ifeq ($(BR2_PACKAGE_FIREFOX_EXTENSION_NOSCRIPT),y) +EXTENSION_SOURCE+=http://releases.mozilla.org/pub/mozilla.org/addons/722/noscript-2.5.3-fx+fn+sm.xpi +endif + +# Name: Adblock Lite +# Version: 1.4.3 +# Home: https://bitbucket.org/adstomper/adblocklite +# Download URL: https://bitbucket.org/adstomper/adblocklite/downloads/adblocklite-1.4.3.xpi +# Description: "Adblocklite is a fork of the Adblock Plus version 1.3.10 (classic UI) +# extension for blocking advertisements on the web. +# This fork will provide the same features as Adblock Plus 2.x and higher +# while keeping the old UI but without acceptable ads feature." +# +# Indeed, I can confirm that Adblock Plus is still (as of version 2.1.2) +# using this "acceptable ads" feature and enabling some adds by default. +# +# If you want to check it by yourself then do the following: +# +# - wget http://releases.mozilla.org/pub/mozilla.org/addons/1865/adblock_plus-2.1.2-sm+an+fx+tb.xpi +# +# - unzip -d adblockplus adblock_plus-2.1.2-sm+an+fx+tb.xpi +# +# - cd adblockplus/defaults +# +# - open the prefs.js file and look if you can find line entry named: +# +# pref("extensions.adblockplus.subscriptions_exceptionsurl","https://easylist-downloads.adblockplus.org/exceptionrules.txt") +# +# - if you open that https://easylist-downloads.adblockplus.org/exceptionrules.txt +# in your browser you will see that Adblock Plus is whitelisting +# (all those lines starting with @@) +# ads from google and amazon. +# +# So the end of the story is: Use Adblock Lite instead :-) +# +# Note: +# You need some ad blacklist subscriptions for the Adblock Lite to be effective. +# You can get them by either selecting the subscriptions you want from +# Adblock Lite options menu or by visiting https://easylist.adblockplus.org +# +# I might later add an option to download and install my own, +# default ad blacklist subscription text file that contains *all* those +# subscriptions mentioned in https://easylist.adblockplus.org but +# without any whitelisted ad sites. + +ifeq ($(BR2_PACKAGE_FIREFOX_EXTENSION_ADBLOCK_LITE),y) +EXTENSION_SOURCE+=http://bitbucket.org/adstomper/adblocklite/downloads/adblocklite-1.4.3.xpi +endif + +# Name: Ghostery +# Version: 2.8.0.2 +# Home: http://www.ghostery.com +# Download URL: http://releases.mozilla.org/pub/mozilla.org/addons/9609/ghostery-2.8.0.2-sm+fx.xpi +# Description: "Protect your privacy. See who's tracking your web browsing and +# block them with Ghostery" + +ifeq ($(BR2_PACKAGE_FIREFOX_EXTENSION_GHOSTERY),y) +EXTENSION_SOURCE+=http://releases.mozilla.org/pub/mozilla.org/addons/9609/ghostery-2.8.0.2-sm+fx.xpi +endif + +# Name: HTTPS Everywhere +# Version: 2.2 +# Home: https://www.eff.org/https-everywhere +# Download URL: https://www.eff.org/files/https-everywhere-latest.xpi +# Description: "HTTPS Everywhere is a Firefox and Chrome extension +# that encrypts your communications with many major +# websites, making your browsing more secure." + +ifeq ($(BR2_PACKAGE_FIREFOX_EXTENSION_HTTPS_EVERYWHERE),y) +EXTENSION_SOURCE+=http://www.eff.org/files/https-everywhere-latest.xpi +endif + + +ifeq ($(BR2_PACKAGE_FIREFOX_INSTALL_DEFAULT_EXTENSIONS),y) + +UNZIP=$(HOST_DIR)/usr/bin/unzip +XMLSTARLET=$(HOST_DIR)/usr/bin/xml + +define FIREFOX_INSTALL_EXTENSION + +# Do multi-download, get extension id for each downloaded file +# and finally unzip it to +# $(TARGET_DIR)/usr/lib/firefox-$(FIREFOX_VERSION)/extensions/${EXTENSION_ID} +# +# Inner guts copied from package/pkg-download.mk DOWNLOAD_WGET +# Thanks to Yann and Thomas for helping with that $${i##*/} thing! + + for i in $(EXTENSION_SOURCE);do \ + FILENAME=$${i##*/} ;\ + test -e $(DL_DIR)/$${FILENAME} || \ + $(WGET) -O $(DL_DIR)/$${FILENAME} $${i} || \ + (rm -f $(DL_DIR)/$${FILENAME} ; exit 1) ;\ + EXTENSION_ID=`$(UNZIP) -qc $(DL_DIR)/$${FILENAME} install.rdf | $(XMLSTARLET) sel \ + -N rdf=http://www.w3.org/1999/02/22-rdf-syntax-ns# \ + -N em=http://www.mozilla.org/2004/em-rdf# \ + -t -v \ + "//rdf:Description[@about='urn:mozilla:install-manifest']/em:id"` ;\ + $(UNZIP) -d $(TARGET_DIR)/usr/lib/firefox-$(FIREFOX_VERSION)/extensions/$${EXTENSION_ID} $(DL_DIR)/$${FILENAME};\ + done + +endef +endif + diff --git a/package/firefox/mozconfig b/package/firefox/mozconfig new file mode 100644 index 0000000..83450aa --- /dev/null +++ b/package/firefox/mozconfig @@ -0,0 +1,35 @@ +ac_add_options --disable-crashreporter +ac_add_options --disable-dbus +ac_add_options --disable-elf-hack +ac_add_options --disable-glibtest +ac_add_options --disable-installer +ac_add_options --disable-jemalloc +ac_add_options --disable-libnotify +ac_add_options --disable-necko-wifi +ac_add_options --disable-static +ac_add_options --disable-tests +ac_add_options --disable-trace-malloc +ac_add_options --disable-tree-freetype +ac_add_options --disable-updater +ac_add_options --disable-warnings-as-errors +ac_add_options --enable-application=browser +ac_add_options --enable-default-toolkit=cairo-gtk2 +#ac_add_options --enable-official-branding +ac_add_options --with-branding=browser/branding/unofficial +ac_add_options --enable-shared +ac_add_options --enable-shared-js +ac_add_options --enable-system-cairo +ac_add_options --enable-system-ffi +ac_add_options --enable-system-sqlite +ac_add_options --prefix=/usr +ac_add_options --without-libIDL +ac_add_options --with-pthreads +ac_add_options --with-system-jpeg +#ac_add_options --with-system-nspr +#ac_add_options --with-system-nss +#ac_add_options --with-system-png +ac_add_options --with-system-zlib +mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/firefox-build-dir +CROSS_COMPILE=1 +CC_FOR_BUILD=gcc +HOST_CC=gcc diff --git a/package/firefox/prefs.js b/package/firefox/prefs.js new file mode 100755 index 0000000..7cbf675 --- /dev/null +++ b/package/firefox/prefs.js @@ -0,0 +1,100 @@ +# Mozilla User Preferences + +# Most of the settings below are documented in +# http://kb.mozillazine.org/Firefox_:_FAQs_:_About:config_Entries +# +# Those entries that are not documented (tagged UNDOCUMENTED) are +# the ones I found out when playing with various +# Firefox Privacy settings and then checking afterwards +# from the about:config URL what had changed. + +# If you have more information about these entries please update. + +######################## +# Performance settings # +######################## + +# Enable pipelining +user_pref("network.http.pipelining",true); +user_pref("network.http.pipelining.agressive",true); +user_pref("network.http.pipelining.ssl",true); +user_pref("network.http.proxy.pipelining",true); + +############################### +# Privacy & Security settings # +############################### + +# When to remove downloaded files entries from the Download Manager +# 0: Upon successful download +# 1: When the browser exits +# 2 (default): Manually +user_pref("browser.download.manager.retention",1); + +# Don't save information entered in web page forms and the Search Bar +user_pref("browser.formfill.enable",false); + +# Automatically Start in Private Browsing Mode +user_pref("browser.privatebrowsing.autostart",true); + +# Windows may not be moved or resized via JavaScript +user_pref("dom.disable_window_move_resize",true); + +# Webpages will not be able to affect the context menu event, +# thus allowing to access the context menu all the time +user_pref("dom.event.contextmenu.enabled",false); + +# Is location aware browsing enabled? Default setting *was* 'true' (Jesus Christ!) +user_pref("geo.enabled",false); + +# Allow cookies from originating server only +user_pref("network.cookie.cookieBehavior",1); + +# Accept cookies for session only +user_pref("network.cookie.lifetimePolicy",2); + +# Consult current preferences for cookie prefs +user_pref("network.cookie.prefsMigrated",true); + +# Perform all DNS lookups on remote proxy server +# NOTE: It has *still* (8th of June 2012) not been fixed! +# ( see Bug 134105 https://bugzilla.mozilla.org/show_bug.cgi?id=134105 ) +user_pref("network.proxy.socks_remote_dns",true); + +# Only important if you are using Tor. Might be fixed by now +# ( see https://trac.torproject.org/projects/tor/ticket/5741 ) +user_pref("network.websocket.enabled",false); + +# UNDOCUMENTED +# Not documented by Mozilla but my best guess is that this disables browser history :-) +user_pref("places.history.enabled",false); + +# UNDOCUMENTED +# Not documented by Mozilla (what the heck are offline apps???) +user_pref("privacy.clearOnShutdown.offlineApps",true); + +# UNDOCUMENTED +# Not documented by Mozilla (but should be obvious :-) ) +user_pref("privacy.clearOnShutdown.passwords",true); + +# UNDOCUMENTED +# Not documented by Mozilla (???) +user_pref("privacy.clearOnShutdown.siteSettings",true); + +# UNDOCUMENTED +# Not documented by Mozilla but this is clearly the +# Do-not-track feature from Firefox privacy settings +user_pref("privacy.donottrackheader.enabled",true); + +# Delete all cookies when using the Firefox Clear Private Data feature +user_pref("privacy.item.cookies",true); + +# Perform the Firefox Clear Private Data operation when closing the browser +user_pref("privacy.sanitize.sanitizeOnShutdown",true); + + + + + + + +