From a69d072f5cde4b5a6bac62e6022a69d337925e45 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 14 Jan 2013 00:06:25 -0800 Subject: Mon Jan 14 00:06:25 PST 2013 --- libre-testing/iceweasel-libre/PKGBUILD | 410 +++++++++++++++++++++ libre-testing/iceweasel-libre/bug677092.patch | 330 +++++++++++++++++ libre-testing/iceweasel-libre/firefox.install | 13 + .../iceweasel-libre/iceweasel-install-dir.patch | 31 ++ libre-testing/iceweasel-libre/iceweasel.desktop | 116 ++++++ libre-testing/iceweasel-libre/libre.patch | 268 ++++++++++++++ libre-testing/iceweasel-libre/mozconfig | 39 ++ libre-testing/iceweasel-libre/mozconfig.pgo | 2 + libre-testing/iceweasel-libre/replace-urls.txt | 25 ++ libre-testing/iceweasel-libre/shared-libs.patch | 12 + libre-testing/iceweasel-libre/vendor.js | 18 + 11 files changed, 1264 insertions(+) create mode 100644 libre-testing/iceweasel-libre/PKGBUILD create mode 100644 libre-testing/iceweasel-libre/bug677092.patch create mode 100644 libre-testing/iceweasel-libre/firefox.install create mode 100644 libre-testing/iceweasel-libre/iceweasel-install-dir.patch create mode 100644 libre-testing/iceweasel-libre/iceweasel.desktop create mode 100644 libre-testing/iceweasel-libre/libre.patch create mode 100644 libre-testing/iceweasel-libre/mozconfig create mode 100644 libre-testing/iceweasel-libre/mozconfig.pgo create mode 100644 libre-testing/iceweasel-libre/replace-urls.txt create mode 100644 libre-testing/iceweasel-libre/shared-libs.patch create mode 100644 libre-testing/iceweasel-libre/vendor.js (limited to 'libre-testing/iceweasel-libre') diff --git a/libre-testing/iceweasel-libre/PKGBUILD b/libre-testing/iceweasel-libre/PKGBUILD new file mode 100644 index 000000000..2998ebae9 --- /dev/null +++ b/libre-testing/iceweasel-libre/PKGBUILD @@ -0,0 +1,410 @@ +# Maintainer: Márcio Silva +# Contributor (Parabola): Luke Shumaker +# Contributor (Parabola): fauno +# Contributor (Parabola): vando +# Contributor (Parabola): André Silva + +# Maintainer (ConnochaetOS): Henry Jensen + +# Maintainer (Arch) : Ionut Biru +# Contributor (Arch): Jakub Schmidtke + +# Contributor: Figue +# Thank you very much to the older contributors: +# Contributor: evr +# Contributor: Muhammad 'MJ' Jassim + +lowercase() { tr A-Z a-z <<<"$*"; } + +# Version Configuration ############################################## + +_pgo=false + +_debname=iceweasel +_debver=18.0 +_debrel=1 +_debrepo=http://ftp.debian.org/debian/pool/main + +# locales can be easily generated by running +# $ sed -rn 's/.*-l10n-([^.]*)\..*/\1/p' src/*.dsc | sort -u +_locales=(ach af ak ar as ast be bg bn-BD bn-IN br bs ca cs csb cy da de el en-GB en-ZA eo es-AR es-CL es-ES es-MX et eu fa ff fi fr fy-NL ga-IE gd gl gu-IN he hi-IN hr hu hy-AM id is it ja kk km kn ko ku lg lij lt lv mai mk ml mr nb-NO nl nn-NO nso or pa-IN pl pt-BR pt-PT rm ro ru si sk sl son sq sr sv-SE ta-LK ta te th tr uk vi zh-CN zh-TW zu) + +pkgbase=iceweasel +pkgname=(iceweasel-libre) +for locale in "${_locales[@]}"; do + pkgname+=("iceweasel-libre-l10n-$(lowercase ${locale})") +done +pkgver=${_debver}.${_debrel} +pkgrel=3 + +###################################################################### + +debfile() { echo "${_debrepo}/${1:0:1}/${1%_*}/${1}"; } + +if [[ -z $pkgbase ]]; then pkgbase=$pkgname; fi +if $_pgo; then pkgname+='-pgo'; fi +if [ "$pkgbase" != "$pkgname" ]; then + provides+=("$pkgbase=$pkgver") + conflicts+=("$pkgbase") +fi + +pkgdesc="A libre version of Debian Iceweasel, the web browser based on Mozilla Firefox." +arch=( + 'i686' + 'mips64el' + 'x86_64' +) +license=( + 'GPL2' + 'LGPL' + 'MPL' +) +depends=( + 'alsa-lib' + 'dbus-glib' + 'desktop-file-utils' + 'gtk2' + 'hicolor-icon-theme' + 'hunspell' + 'libevent' + 'libnotify' + 'libvpx' + 'libxt' + 'mime-types' + 'mozilla-common' + 'mozilla-searchplugins' + 'nss>=3.14.1' + 'sqlite' + 'startup-notification' +) +makedepends=( + 'autoconf2.13' + 'diffutils' + 'dpkg-devtools' + 'imagemagick' + 'imake' + 'libidl2' + 'librsvg' + 'libxslt' + 'mesa' + 'python2' + 'unzip' + 'zip' +) +[[ $CARCH != mips64el ]] && makedepends+=('yasm') +if $_pgo; then + makedepends+=('xorg-server-xvfb') + options+=(!ccache) +fi +optdepends=('networkmanager: Location detection via available WiFi networks') +url="http://packages.debian.org/source/experimental/$_debname" +install=firefox.install +options=(!emptydirs) +source=($(debfile ${_debname}_${_debver}-${_debrel}.dsc) + $(debfile ${_debname}_${_debver}-${_debrel}.debian.tar.gz) + $(debfile ${_debname}_${_debver}.orig.tar.bz2) + $(debfile ${_debname}_${_debver}.orig-compare-locales.tar.bz2) + $(for locale in "${_locales[@]}"; do debfile ${_debname}_${_debver}.orig-l10n-${locale}.tar.bz2; done) + replace-urls.txt libre.patch mozconfig.pgo + mozconfig $pkgbase.desktop iceweasel-install-dir.patch vendor.js shared-libs.patch + bug677092.patch) +# use dpkg-source to extract everything +noextract=(); for file in "${source[@]}"; do noextract+=("${file##*/}"); done + +# This is a bug, we should fix it. +mips64el-prepare() { + # Fix MIPS N32 support. + sed -i 's/defined(_ABIO32)/(defined(_ABIO32) || defined(_ABIN32))/' \ + js/src/assembler/wtf/Platform.h + # Disable JIT. + sed -ri 's/#define ENABLE_(JIT|ASSEMBLER) 1/#define ENABLE_\1 0/' \ + js/src/assembler/wtf/Platform.h + sed -ri 's/ENABLE_(JIT|ASSEMBLER)=1/ENABLE_\1=0/' js/src/Makefile.in +} +misp64el-configure() { + echo 'ac_add_options --disable-methodjit' >> .mozconfig + echo 'ac_add_options --disable-tracejit' >> .mozconfig + echo 'ac_add_options --disable-jemalloc' >> .mozconfig +} + +prepare() { + if [[ -d "/usr/lib/$pkgbase" ]]; then + error "Because of how rpath is set, this package cannot be installed during build" + return 1 + fi + dpkg-source -x ${_debname}_${_debver}-${_debrel}.dsc mozilla-release + cd mozilla-release + + patch -Np1 -i ../iceweasel-install-dir.patch + patch -Np1 -i ../shared-libs.patch + + # Back out https://bugzilla.mozilla.org/show_bug.cgi?id=677092 + # in order to fix https://bugzilla.mozilla.org/show_bug.cgi?id=818468 + patch -Rp1 -i ../bug677092.patch + + # Replace common URLs + sed '/^#/d' ../replace-urls.txt | while read -r moz_url gnu_url; do + if [[ -n $moz_url ]]; then + printf 'liberating: %s -> %s\n' "$moz_url" "$gnu_url" + grep -Erl "${moz_url}" \ + --exclude='*.'{patch,orig,rej} \ + --exclude-dir={.pc,test,tests,testing} \ + | xargs -d '\n' --no-run-if-empty sed -ri "s<${moz_url}<${gnu_url} list.txt + popd + done + find l10n-* -name 'region.properties' -delete + + # Patch anything that's left + patch -Np1 -i ../libre.patch + + # Fix PRE_RELEASE_SUFFIX + sed -i '/^PRE_RELEASE_SUFFIX := ""/s/ ""//' \ + browser/base/Makefile.in + + if [[ $CARCH == mips64el ]]; then mips64el-prepare; fi + + touch "$srcdir/.makepkg-prepare" +} + +build() { + [[ -f "$srcdir/.makepkg-prepare" ]] || { prepare || return $?; cd "$srcdir"; } + cd "$srcdir" + build_browser + for locale in "${_locales[@]}"; do + cd "$srcdir" + build_locale "${locale}" + done +} + +build_browser() { + cd mozilla-release + + cp ../mozconfig .mozconfig + if $_pgo; then cat ../mozconfig.pgo >> .mozconfig; fi + if [[ $CARCH == mips64el ]]; then mips64el-configure; fi + + # WebRTC build tries to execute "python" and expects Python 2 + # Workaround taken from chromium PKGBUILD + mkdir "$srcdir/python2-path" + ln -s /usr/bin/python2 "$srcdir/python2-path/python" + export PATH="$srcdir/python2-path:$PATH" + + export LDFLAGS="$LDFLAGS -Wl,-rpath,/usr/lib/$pkgbase" + export PYTHON="/usr/bin/python2" + export MOZ_MAKE_FLAGS="$MAKEFLAGS" + unset MAKEFLAGS + + if $_pgo; then + export MOZ_PGO=1 + export DISPLAY=:99 + Xvfb -nolisten tcp -extension GLX -screen 0 1280x1024x24 $DISPLAY & + fi + + _fail=0 + make -f client.mk build || _fail=1 + + if $_pgo; then + kill $! || true + fi + return $_fail +} + +build_locale() { + locale=$1 + cd mozilla-release + + export PYTHON="/usr/bin/python2" + export PRODUCT='browser' + + # This is an adaptation of the "$(L10N_BUILD_STAMPS)" rule from debian/rules + [[ -e l10n ]] || mkdir -p l10n + [[ -e l10n/$locale ]] || ln -sf ../l10n-$locale l10n/$locale + ${PYTHON} config/pythonpath.py -I$(pwd)/compare-locales/lib \ + $(pwd)/compare-locales/scripts/compare-locales \ + -m $(pwd)/moz-objdir/l10n-$locale ${PRODUCT}/locales/l10n.ini $(pwd)/l10n $locale + make -C moz-objdir/${PRODUCT}/locales langpack-$locale \ + L10NBASEDIR=$(pwd)/l10n MOZ_CHROME_FILE_FORMAT=flat \ + MOZ_LANGPACK_EID=langpack-${locale}@${pkgbase}.mozilla.org \ + PKG_LANGPACK_BASENAME='$(MOZ_LANGPACK_EID)' PKG_LANGPACK_PATH=xpi/ \ + LOCALE_MERGEDIR=$(pwd)/moz-objdir/l10n-$locale +} + +install-icon() { + local brandingdir=$1 prog=$2 size=$3 + local sizedir=${size}x${size} ext=png + [[ $size == scalable ]] && { sizedir=$size; ext=svg; size=''; } + + dirs=({moz-objdir/,}"$brandingdir") + files=({default,mozicon,${prog}{,_icon}}${size}.${ext}) + + for dir in "${dirs[@]}"; do + for files in "${files[@]}"; do + if [[ -e "$dir/$file" ]]; then + install -Dm644 "$dir/$file" \ + "$pkgdir/usr/share/icons/hicolor/$sizedir/apps/$prog.png" + return 0 + fi + done + done + #return 1 +} + +package_iceweasel-libre() { + cd mozilla-release + make -j1 -f client.mk DESTDIR="$pkgdir" install + + install -Dm644 ../vendor.js "$pkgdir/usr/lib/$pkgbase/defaults/preferences/vendor.js" + + for size in 16 32 48 64 128 scalable; do + install-icon debian/branding $pkgbase $size + done + + install -Dm644 ../$pkgbase.desktop \ + "$pkgdir/usr/share/applications/$pkgbase.desktop" + + # Use system-provided dictionaries + rm -rf "$pkgdir"/usr/lib/$pkgbase/{dictionaries,hyphenation} + ln -s /usr/share/hunspell "$pkgdir/usr/lib/$pkgbase/dictionaries" + ln -s /usr/share/hyphen "$pkgdir/usr/lib/$pkgbase/hyphenation" + # use mozilla-searchplugins + rm -rf "$pkgdir"/usr/lib/$pkgbase/searchplugins + ln -s /usr/lib/mozilla/searchplugins "$pkgdir/usr/lib/$pkgbase/searchplugins" + + # We don't want the development stuff + rm -r "$pkgdir"/usr/{include,lib/$pkgbase-devel,share/idl} + + #workaround for now + #https://bugzilla.mozilla.org/show_bug.cgi?id=658850 + ln -sf $pkgbase "$pkgdir/usr/lib/$pkgbase/$pkgbase-bin" +} + +package_locale() { + locale=$1 + cd mozilla-release + lang=$(sed -n "/^%define L10N_LANG ${locale}/,+1p" debian/l10n/browser-l10n.control|sed -n 's/%define L10N_LANGUAGE\s\s*//p') + + pkgdesc="${lang} language package for Iceweasel-libre" + depends=("iceweasel-libre=${pkgver}") + + replaces=(iceweasel-i18n-$(lowercase "${locale}")) + conflicts=(iceweasel-i18n-$(lowercase "${locale}")) + + extdir="$pkgdir"/usr/lib/iceweasel/extensions/ + install -d "${extdir}" + install -m644 moz-objdir/dist/xpi/langpack-${locale}@${pkgbase}.mozilla.org.xpi "${extdir}" +} +for locale in "${_locales[@]}"; do + eval "package_iceweasel-libre-l10n-$(lowercase ${locale})() { package_locale ${locale}; }" +done + +md5sums=('263569a577f72314694a711cc6a0d96f' + '6a571d3a3b355c331f67d57702f4fccf' + '366e1e4847d7e00eba77ee5a4be0d3db' + '80dd4a702302fb36719c67445b487895' + 'c99d7605c0e0bb0d77e71cd54f305a9a' + '1f4aeabf6c28fcf6539d13f65f8b366b' + 'cb9cc5f721d81442f1a93d134054f23c' + 'c69e0fa169bf6c49b1f83afd2383b628' + '09f4376791d17a772c60a0308095211d' + 'a16081e4da9daf6df5f6fcce2000cec1' + '88dd4c5837485acea83e97f3cb4f1e31' + '8751f0a634656ba973c53f96d1fa34e1' + 'f4531f867e6e75501bac3d7ed5f09045' + '740667ba651f0562b45bbfe63b8ec84e' + 'a1f3637341457fb8272d126f1aa70e4b' + '3d00ad2734c890930441d6cd919f11c8' + '84b7a2bf7f1458b60e9552d04c7e84b2' + '30ce51ca764b091c59df5c08e35e8a7f' + '1291e5976c83a8cda1903e4443d44c8e' + '1eacf81985d9993b2b94f98fd4c453e0' + '07b91907c98155c1b95e5d7f47367fde' + 'cd4042405f6eaa2931021f745f49d91f' + '24f8a5d05d0d2485c30b46e6d6835330' + '1b95f32637229a86e4633994350cf76f' + 'ae6007384d85dbd14fbe6496e0b9e47b' + 'a8ef67c04d3dc263f0f58e877b13cd71' + 'b5c3b2e366aa776e574d0972df72a423' + '200f856b50a7485a1d5447cbf8dee77c' + '1767400f27cf010572308f949e56176e' + 'c6dde21438789ccf4c666afc22ee713c' + 'd202408658b9e7e7a2656dd874ac0712' + '1c463a18e2a395314f7d0ad72282d5aa' + 'ec222722f432e8a94f993c1c32cd9757' + 'cf44fd1d567a7638fc0b5b80bb0398f7' + '13151197d7ef349699e55c760c74af16' + '32c185ef506e439bb63f572906a9bf66' + '2e6b90b3c6cad17753ec1aecaf61073c' + 'dbf451ef9ecf1816973ac4dffe7e2b8e' + '85c0900fb798fb64a8883dba06deccc0' + '0efff47ab838fd320c710ffd46ee3a57' + '28e5d445e7a91ddd64d50478b05edb51' + '770dcdf1a8d6d2db64dadb6e4f6149fb' + '7732b021cdf73ace33cb41609b327f3d' + '3a195266b43e9f477619aac9c326a26b' + 'a55e22c7ab045826b331efd7c0f036ef' + '2edcd565c19828e3d4a2da19f8529edd' + '531c54a91d509e768b55bfd88a96a527' + 'ddf2182b6e33795450bf41f46e7be521' + '8bf4edabc95abbaf274ddd5e5c5db562' + '63a227dbab0e66b6a0d4804c419049e2' + '3c9bab1f629c0b079345a186c0f22afc' + '786a62179094cda5f5e831232f4f94ce' + '535f68d0cfa4dee9df0cddbee42a4c94' + 'ffc4c457dfa697162e4198e61ae19e3b' + '4476b94e676b3cfb309f972f7c42da1b' + '792700b40ba53de7de5b48187b604b29' + '7f71fa7bed8488226168406ac022d2fd' + 'fdd9a144cd2a630d1b7ab6b73315c548' + '88d668eccb111a9e4f5fde58e000a5aa' + '46509bb591bf54b6fed025814bfc11bf' + '715a3f8c2fcdab17b24ce61f55c49183' + '658226211d66a724d0335a173ef8512f' + 'ecb41c7536c95cf2ca118d7ab6b7d357' + 'b813931cfba36f3b00826ba2d36e648f' + '2a926d37294ab24a7d7dc879339ae736' + 'fba979124cd393f1164a59e3b9183ccc' + 'e8597a5af1643b9c9a0b02a3756e0a86' + '665140babab027228eb195b6c0e83d4e' + 'e71a740bfc52d25968f8e2c4c1896897' + '47bd00559728578bfc257b80c72ce393' + '3a3d846613363e6d4dd99326cd07417d' + '80daf692c2fa80ef7f528df2a6aed42e' + '25c03afb8f5086a07eb0e26c94bcbc01' + '481db49b914f33d6c594ecebbc291e4c' + '742d2af843536fc1cdc8560b5aa0620f' + '9ee935f09dc89b42db9ad8db3473717d' + 'cf3e65e4db50dfa467defb4f820cd378' + '3e0c8ea5b69c4363e40c21dda5230850' + '32b73226e95ae47dc11a554a7208d960' + '437602c23394eb02ae5fe03ca4fd29bc' + 'f7a347a3d5679d82340d227474de938f' + '1a898825183ed67ea72b67a2c3486dd4' + '73bead055152cd4885b9834691c9066a' + '722a0d2212060e2044cbac859db3e063' + 'fba01f51ac90dec18758a7468fb509e1' + '03c2a59eab8ef4ad3687b91c07f96165' + 'd502ec35e4ec26d7f538f4b96402fe9c' + 'b75b729e9ab3ff9a908115ab520339a9' + 'cd696e70fdb4f5ab9d50040abea46b82' + '1b9df937ef08b6a72ca7d659f91df099' + '17bbe91d26b302aa36391ed57199006d' + 'de6037c0a65e7b86e0929637156ba587' + 'a8fc4658d45b6bf9350023e5c3f34e56' + '25861e760dc41b518cbee9c9194b2b19' + 'e4cd438a0b2a42dfb14bc7716e901e5f' + '5bfaf77580b6d3ce185b4c3ad4fa30ca' + '39d8b9249c5effe5fe24d2e9f80a9a94' + '2baf8cffccd50c568ad153a709cb3136' + 'e9b4ec9a34bdab1854255aaa05e7cedd' + '52e52f840a49eb1d14be1c0065b03a93' + '23520aca140fb0dd3e1b6f21b21f591f') diff --git a/libre-testing/iceweasel-libre/bug677092.patch b/libre-testing/iceweasel-libre/bug677092.patch new file mode 100644 index 000000000..aee09b451 --- /dev/null +++ b/libre-testing/iceweasel-libre/bug677092.patch @@ -0,0 +1,330 @@ +exporting patch: +# HG changeset patch +# User Axel Hecht +# Date 1348128099 -7200 +# Node ID 812d0ba8317507c4026958a740960384eac1507a +# Parent 97e49e7a33266a0680e5af59289264a07e4321f8 +bug 677092, make language packs restartless, r=Unfocused +Make language packs just trigger the chrome registration hooks, and +disable picking up bootstrap.js, and declare them restartless. + +diff -r 97e49e7a3326 -r 812d0ba83175 toolkit/mozapps/extensions/XPIProvider.jsm +--- a/toolkit/mozapps/extensions/XPIProvider.jsm Wed Sep 26 13:08:50 2012 +0200 ++++ b/toolkit/mozapps/extensions/XPIProvider.jsm Thu Sep 20 10:01:39 2012 +0200 +@@ -740,8 +740,8 @@ + } + } + else { +- // spell check dictionaries never require a restart +- if (addon.type == "dictionary") ++ // spell check dictionaries and language packs never require a restart ++ if (addon.type == "dictionary" || addon.type == "locale") + addon.bootstrap = true; + + // Only extensions are allowed to provide an optionsURL, optionsType or aboutURL. For +@@ -3695,6 +3695,11 @@ + Components.manager.addBootstrappedManifestLocation(aFile); + + try { ++ // Don't call bootstrap.js methods for language packs, ++ // they only contain chrome. ++ if (aType == "locale") ++ return; ++ + // Load the scope if it hasn't already been loaded + if (!(aId in this.bootstrapScopes)) + this.loadBootstrapScope(aId, aFile, aVersion, aType); +diff -r 97e49e7a3326 -r 812d0ba83175 toolkit/mozapps/extensions/test/addons/test_langpack/chrome.manifest +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ b/toolkit/mozapps/extensions/test/addons/test_langpack/chrome.manifest Thu Sep 20 10:01:39 2012 +0200 +@@ -0,0 +1,1 @@ ++locale test-langpack x-testing locale/x-testing +diff -r 97e49e7a3326 -r 812d0ba83175 toolkit/mozapps/extensions/test/addons/test_langpack/install.rdf +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ b/toolkit/mozapps/extensions/test/addons/test_langpack/install.rdf Thu Sep 20 10:01:39 2012 +0200 +@@ -0,0 +1,23 @@ ++ ++ ++ ++ ++ ++ langpack-x-testing@tests.mozilla.org ++ 8 ++ 1.0 ++ ++ ++ Language Pack x-testing ++ ++ ++ ++ xpcshell@tests.mozilla.org ++ 1 ++ 2 ++ ++ ++ ++ ++ +diff -r 97e49e7a3326 -r 812d0ba83175 toolkit/mozapps/extensions/test/xpcshell/test_langpack.js +--- /dev/null Thu Jan 01 00:00:00 1970 +0000 ++++ b/toolkit/mozapps/extensions/test/xpcshell/test_langpack.js Thu Sep 20 10:01:39 2012 +0200 +@@ -0,0 +1,247 @@ ++/* Any copyright is dedicated to the Public Domain. ++ * http://creativecommons.org/publicdomain/zero/1.0/ ++ */ ++ ++// This verifies that language packs can be used without restarts. ++Components.utils.import("resource://gre/modules/Services.jsm"); ++ ++// Enable loading extensions from the user scopes ++Services.prefs.setIntPref("extensions.enabledScopes", ++ AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER); ++ ++createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2"); ++ ++const profileDir = gProfD.clone(); ++profileDir.append("extensions"); ++const userExtDir = gProfD.clone(); ++userExtDir.append("extensions2"); ++userExtDir.append(gAppInfo.ID); ++registerDirectory("XREUSysExt", userExtDir.parent); ++ ++var chrome = Components.classes["@mozilla.org/chrome/chrome-registry;1"] ++ .getService(Components.interfaces.nsIXULChromeRegistry); ++ ++function do_check_locale_not_registered(provider) { ++ let didThrow = false; ++ try { ++ chrome.getSelectedLocale(provider); ++ } catch (e) { ++ didThrow = true; ++ } ++ do_check_true(didThrow); ++} ++ ++function run_test() { ++ do_test_pending(); ++ ++ startupManager(); ++ ++ run_test_1(); ++} ++ ++// Tests that installing doesn't require a restart ++function run_test_1() { ++ prepare_test({ }, [ ++ "onNewInstall" ++ ]); ++ ++ AddonManager.getInstallForFile(do_get_addon("test_langpack"), function(install) { ++ ensure_test_completed(); ++ ++ do_check_neq(install, null); ++ do_check_eq(install.type, "locale"); ++ do_check_eq(install.version, "1.0"); ++ do_check_eq(install.name, "Language Pack x-testing"); ++ do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); ++ do_check_true(install.addon.hasResource("install.rdf")); ++ do_check_false(install.addon.hasResource("bootstrap.js")); ++ do_check_eq(install.addon.operationsRequiringRestart & ++ AddonManager.OP_NEEDS_RESTART_INSTALL, 0); ++ ++ let addon = install.addon; ++ prepare_test({ ++ "langpack-x-testing@tests.mozilla.org": [ ++ ["onInstalling", false], ++ "onInstalled" ++ ] ++ }, [ ++ "onInstallStarted", ++ "onInstallEnded", ++ ], function() { ++ do_check_true(addon.hasResource("install.rdf")); ++ check_test_1(); ++ }); ++ install.install(); ++ }); ++} ++ ++function check_test_1() { ++ AddonManager.getAllInstalls(function(installs) { ++ // There should be no active installs now since the install completed and ++ // doesn't require a restart. ++ do_check_eq(installs.length, 0); ++ ++ AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) { ++ do_check_neq(b1, null); ++ do_check_eq(b1.version, "1.0"); ++ do_check_false(b1.appDisabled); ++ do_check_false(b1.userDisabled); ++ do_check_true(b1.isActive); ++ // check chrome reg that language pack is registered ++ do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing"); ++ do_check_true(b1.hasResource("install.rdf")); ++ do_check_false(b1.hasResource("bootstrap.js")); ++ ++ let dir = do_get_addon_root_uri(profileDir, "langpack-x-testing@tests.mozilla.org"); ++ ++ AddonManager.getAddonsWithOperationsByTypes(null, function(list) { ++ do_check_eq(list.length, 0); ++ ++ run_test_2(); ++ }); ++ }); ++ }); ++} ++ ++// Tests that disabling doesn't require a restart ++function run_test_2() { ++ AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) { ++ prepare_test({ ++ "langpack-x-testing@tests.mozilla.org": [ ++ ["onDisabling", false], ++ "onDisabled" ++ ] ++ }); ++ ++ do_check_eq(b1.operationsRequiringRestart & ++ AddonManager.OP_NEEDS_RESTART_DISABLE, 0); ++ b1.userDisabled = true; ++ ensure_test_completed(); ++ ++ do_check_neq(b1, null); ++ do_check_eq(b1.version, "1.0"); ++ do_check_false(b1.appDisabled); ++ do_check_true(b1.userDisabled); ++ do_check_false(b1.isActive); ++ // check chrome reg that language pack is not registered ++ do_check_locale_not_registered("test-langpack"); ++ ++ AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(newb1) { ++ do_check_neq(newb1, null); ++ do_check_eq(newb1.version, "1.0"); ++ do_check_false(newb1.appDisabled); ++ do_check_true(newb1.userDisabled); ++ do_check_false(newb1.isActive); ++ ++ run_test_3(); ++ }); ++ }); ++} ++ ++// Test that restarting doesn't accidentally re-enable ++function run_test_3() { ++ shutdownManager(); ++ startupManager(false); ++ // check chrome reg that language pack is not registered ++ do_check_locale_not_registered("test-langpack"); ++ ++ AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) { ++ do_check_neq(b1, null); ++ do_check_eq(b1.version, "1.0"); ++ do_check_false(b1.appDisabled); ++ do_check_true(b1.userDisabled); ++ do_check_false(b1.isActive); ++ ++ run_test_4(); ++ }); ++} ++ ++// Tests that enabling doesn't require a restart ++function run_test_4() { ++ AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) { ++ prepare_test({ ++ "langpack-x-testing@tests.mozilla.org": [ ++ ["onEnabling", false], ++ "onEnabled" ++ ] ++ }); ++ ++ do_check_eq(b1.operationsRequiringRestart & ++ AddonManager.OP_NEEDS_RESTART_ENABLE, 0); ++ b1.userDisabled = false; ++ ensure_test_completed(); ++ ++ do_check_neq(b1, null); ++ do_check_eq(b1.version, "1.0"); ++ do_check_false(b1.appDisabled); ++ do_check_false(b1.userDisabled); ++ do_check_true(b1.isActive); ++ // check chrome reg that language pack is registered ++ do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing"); ++ ++ AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(newb1) { ++ do_check_neq(newb1, null); ++ do_check_eq(newb1.version, "1.0"); ++ do_check_false(newb1.appDisabled); ++ do_check_false(newb1.userDisabled); ++ do_check_true(newb1.isActive); ++ ++ run_test_5(); ++ }); ++ }); ++} ++ ++// Tests that a restart shuts down and restarts the add-on ++function run_test_5() { ++ shutdownManager(); ++ startupManager(false); ++ // check chrome reg that language pack is registered ++ do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing"); ++ ++ AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) { ++ do_check_neq(b1, null); ++ do_check_eq(b1.version, "1.0"); ++ do_check_false(b1.appDisabled); ++ do_check_false(b1.userDisabled); ++ do_check_true(b1.isActive); ++ do_check_false(isExtensionInAddonsList(profileDir, b1.id)); ++ ++ run_test_7(); ++ }); ++} ++ ++// Tests that uninstalling doesn't require a restart ++function run_test_7() { ++ AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) { ++ prepare_test({ ++ "langpack-x-testing@tests.mozilla.org": [ ++ ["onUninstalling", false], ++ "onUninstalled" ++ ] ++ }); ++ ++ do_check_eq(b1.operationsRequiringRestart & ++ AddonManager.OP_NEEDS_RESTART_UNINSTALL, 0); ++ b1.uninstall(); ++ ++ check_test_7(); ++ }); ++} ++ ++function check_test_7() { ++ ensure_test_completed(); ++ // check chrome reg that language pack is not registered ++ do_check_locale_not_registered("test-langpack"); ++ ++ AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) { ++ do_check_eq(b1, null); ++ ++ restartManager(); ++ ++ AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(newb1) { ++ do_check_eq(newb1, null); ++ ++ do_test_finished(); ++ }); ++ }); ++} +diff -r 97e49e7a3326 -r 812d0ba83175 toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini +--- a/toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini Wed Sep 26 13:08:50 2012 +0200 ++++ b/toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini Thu Sep 20 10:01:39 2012 +0200 +@@ -139,6 +139,7 @@ + [test_corrupt_strictcompat.js] + [test_db_sanity.js] + [test_dictionary.js] ++[test_langpack.js] + [test_disable.js] + [test_distribution.js] + [test_dss.js] diff --git a/libre-testing/iceweasel-libre/firefox.install b/libre-testing/iceweasel-libre/firefox.install new file mode 100644 index 000000000..1a1f4b16b --- /dev/null +++ b/libre-testing/iceweasel-libre/firefox.install @@ -0,0 +1,13 @@ +post_install() { + update-desktop-database -q + gtk-update-icon-cache -q -t -f usr/share/icons/hicolor +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} + diff --git a/libre-testing/iceweasel-libre/iceweasel-install-dir.patch b/libre-testing/iceweasel-libre/iceweasel-install-dir.patch new file mode 100644 index 000000000..0524c8e5e --- /dev/null +++ b/libre-testing/iceweasel-libre/iceweasel-install-dir.patch @@ -0,0 +1,31 @@ +diff -Nur mozilla-release.orig/config/baseconfig.mk mozilla-release/config/baseconfig.mk +--- mozilla-release.orig/config/baseconfig.mk 2012-10-09 07:34:41.762092280 +0000 ++++ mozilla-release/config/baseconfig.mk 2012-10-09 07:40:53.052771576 +0000 +@@ -1,10 +1,10 @@ + INCLUDED_AUTOCONF_MK = 1 + + MOZ_APP_BASE_VERSION = $(firstword $(subst ., ,$(MOZ_APP_VERSION))).$(word 2,$(subst ., ,$(MOZ_APP_VERSION))) +-includedir := $(includedir)/$(MOZ_APP_NAME)-$(MOZ_APP_BASE_VERSION) +-idldir = $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_BASE_VERSION) +-installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_BASE_VERSION) +-sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_BASE_VERSION) ++includedir := $(includedir)/$(MOZ_APP_NAME) ++idldir = $(datadir)/idl/$(MOZ_APP_NAME) ++installdir = $(libdir)/$(MOZ_APP_NAME) ++sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel + DIST = $(DEPTH)/dist + + # We do magic with OBJ_SUFFIX in config.mk, the following ensures we don't +diff -Nur mozilla-release.orig/js/src/config/baseconfig.mk mozilla-release/js/src/config/baseconfig.mk +--- mozilla-release.orig/js/src/config/baseconfig.mk 2012-10-09 07:34:58.411973276 +0000 ++++ mozilla-release/js/src/config/baseconfig.mk 2012-10-09 07:39:55.143186168 +0000 +@@ -1,7 +1,7 @@ + INCLUDED_AUTOCONF_MK = 1 + +-installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION) +-sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION) ++installdir = $(libdir)/$(MOZ_APP_NAME) ++sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel + + ifneq (,$(filter /%,$(TOP_DIST))) + DIST = $(TOP_DIST) diff --git a/libre-testing/iceweasel-libre/iceweasel.desktop b/libre-testing/iceweasel-libre/iceweasel.desktop new file mode 100644 index 000000000..740ed5b31 --- /dev/null +++ b/libre-testing/iceweasel-libre/iceweasel.desktop @@ -0,0 +1,116 @@ +[Desktop Entry] +Name=Iceweasel +GenericName=Web Browser +GenericName[af]=Web Blaaier +GenericName[ar]=متصفح ويب +GenericName[az]=Veb Səyyahı +GenericName[bg]=Браузър +GenericName[bn]=ওয়েব ব্রাউজার +GenericName[br]=Furcher ar Gwiad +GenericName[bs]=WWW Preglednik +GenericName[ca]=Fullejador web +GenericName[cs]=WWW prohlížeč +GenericName[cy]=Porydd Gwe +GenericName[da]=Browser +GenericName[de]=Web-Browser +GenericName[el]=Περιηγητής Ιστού +GenericName[eo]=TTT-legilo +GenericName[es]=Navegador web +GenericName[et]=Veebilehitseja +GenericName[eu]=Web arakatzailea +GenericName[fa]=مرورگر وب +GenericName[fi]=WWW-selain +GenericName[fo]=Alnótsfar +GenericName[fr]=Navigateur web +GenericName[gl]=Navegador Web +GenericName[he]=דפדפן אינטרנט +GenericName[hi]=वेब ब्राउज़र +GenericName[hr]=Web preglednik +GenericName[hu]=Webböngésző +GenericName[is]=Vafri +GenericName[it]=Browser Web +GenericName[ja]=ウェブブラウザ +GenericName[ko]=웹 브라우저 +GenericName[lo]=ເວັບບຣາວເຊີ +GenericName[lt]=Žiniatinklio naršyklė +GenericName[lv]=Web Pārlūks +GenericName[mk]=Прелистувач на Интернет +GenericName[mn]=Веб-Хөтөч +GenericName[nb]=Nettleser +GenericName[nds]=Nettkieker +GenericName[nl]=Webbrowser +GenericName[nn]=Nettlesar +GenericName[nso]=Seinyakisi sa Web +GenericName[pa]=ਵੈਬ ਝਲਕਾਰਾ +GenericName[pl]=Przeglądarka WWW +GenericName[pt]=Navegador Web +GenericName[pt_BR]=Navegador Web +GenericName[ro]=Navigator de web +GenericName[ru]=Веб-браузер +GenericName[se]=Fierpmádatlogan +GenericName[sk]=Webový prehliadač +GenericName[sl]=Spletni brskalnik +GenericName[sr]=Веб претраживач +GenericName[sr@Latn]=Veb pretraživač +GenericName[ss]=Ibrawuza yeWeb +GenericName[sv]=Webbläsare +GenericName[ta]=வலை உலாவி +GenericName[tg]=Тафсиргари вэб +GenericName[th]=เว็บบราวเซอร์ +GenericName[tr]=Web Tarayıcı +GenericName[uk]=Навігатор Тенет +GenericName[uz]=Веб-браузер +GenericName[ven]=Buronza ya Webu +GenericName[vi]=Trình duyệt Web +GenericName[wa]=Betchteu waibe +GenericName[xh]=Umkhangeli zincwadi we Web +GenericName[zh_CN]=网页浏览器 +GenericName[zh_TW]=網頁瀏覽器 +GenericName[zu]=Umcingi we-Web +Comment=Browse the World Wide Web +Comment[ar]=تصفح الشبكة العنكبوتية العالمية +Comment[ast]=Restola pela Rede +Comment[bn]=ইন্টারনেট ব্রাউজ করুন +Comment[ca]=Navegueu per la web +Comment[cs]=Prohlížení stránek World Wide Webu +Comment[da]=Surf på internettet +Comment[de]=Im Internet surfen +Comment[el]=Μπορείτε να περιηγηθείτε στο διαδίκτυο (Web) +Comment[es]=Navegue por la web +Comment[et]=Lehitse veebi +Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید +Comment[fi]=Selaa Internetin WWW-sivuja +Comment[fr]=Naviguer sur le Web +Comment[gl]=Navegar pola rede +Comment[he]=גלישה ברחבי האינטרנט +Comment[hr]=Pretražite web +Comment[hu]=A világháló böngészése +Comment[it]=Esplora il web +Comment[ja]=ウェブを閲覧します +Comment[ko]=웹을 돌아 다닙니다 +Comment[ku]=Li torê bigere +Comment[lt]=Naršykite internete +Comment[nb]=Surf på nettet +Comment[nl]=Verken het internet +Comment[nn]=Surf på nettet +Comment[no]=Surf på nettet +Comment[pl]=Przeglądanie stron WWW +Comment[pt]=Navegue na Internet +Comment[pt_BR]=Navegue na Internet +Comment[ro]=Navigați pe Internet +Comment[ru]=Доступ в Интернет +Comment[sk]=Prehliadanie internetu +Comment[sl]=Brskajte po spletu +Comment[sv]=Surfa på webben +Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ +Comment[uk]=Перегляд сторінок Інтернету +Comment[vi]=Để duyệt các trang web +Comment[zh_CN]=浏览互联网 +Comment[zh_TW]=瀏覽網際網路 +Exec=/usr/lib/iceweasel/iceweasel %u +Icon=iceweasel +Terminal=false +Type=Application +MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https; +StartupNotify=true +Categories=Network;WebBrowser; diff --git a/libre-testing/iceweasel-libre/libre.patch b/libre-testing/iceweasel-libre/libre.patch new file mode 100644 index 000000000..f80295e55 --- /dev/null +++ b/libre-testing/iceweasel-libre/libre.patch @@ -0,0 +1,268 @@ +diff -ruN mozilla-release.orig/browser/app/profile/firefox.js mozilla-release/browser/app/profile/firefox.js +--- mozilla-release.orig/browser/app/profile/firefox.js 2013-01-10 20:20:02.000000000 -0500 ++++ mozilla-release/browser/app/profile/firefox.js 2013-01-10 17:47:34.000000000 -0500 +@@ -1168,11 +1168,9 @@ + // (This is intentionally on the high side; see bug 746055.) + pref("image.mem.max_decoded_image_kb", 256000); + +-// Example social provider +-pref("social.manifest.facebook", "{\"origin\":\"https://www.facebook.com\",\"name\":\"Facebook Messenger\",\"workerURL\":\"https://www.facebook.com/desktop/fbdesktop2/socialfox/fbworker.js.php\",\"iconURL\":\"data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAAX0lEQVQ4jWP4%2F%2F8%2FAyUYTFhHzjgDxP9JxGeQDSBVMxgTbUBCxer%2Fr999%2BQ8DJBuArJksA9A10s8AXIBoA0B%2BR%2FY%2FjD%2BEwoBoA1yT5v3PbdmCE8MAshhID%2FUMoDgzUYIBj0Cgi7ar4coAAAAASUVORK5CYII%3D\",\"sidebarURL\":\"https://www.facebook.com/desktop/fbdesktop2/?socialfox=true\"}"); + // Comma-separated list of nsIURI::prePaths that are allowed to activate + // built-in social functionality. +-pref("social.activation.whitelist", "https://www.facebook.com"); ++pref("social.activation.whitelist", ""); + pref("social.sidebar.open", true); + pref("social.sidebar.unload_timeout_ms", 10000); + pref("social.active", false); +diff -ruN mozilla-release.orig/browser/base/content/abouthome/aboutHome.js mozilla-release/browser/base/content/abouthome/aboutHome.js +--- mozilla-release.orig/browser/base/content/abouthome/aboutHome.js 2013-01-04 18:44:27.000000000 -0500 ++++ mozilla-release/browser/base/content/abouthome/aboutHome.js 2013-01-10 18:26:10.000000000 -0500 +@@ -5,70 +5,41 @@ + // If a definition requires additional params, check that the final search url + // is handled correctly by the engine. + const SEARCH_ENGINES = { +- "Google": { ++ "DuckDuckGo HTML": { + image: "data:image/png;base64," + +- "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" +-#ifdef XP_MACOSX +- , imageHD: "data:image/png;base64,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" +-#endif +- , params: "source=hp&channel=np" ++ "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" + } + }; + +@@ -78,7 +49,7 @@ + // * add an entry here in the proper ordering (based on spans) + // The part of the snippet will be linked to the corresponding url. + const DEFAULT_SNIPPETS_URLS = [ +- "http://www.mozilla.com/firefox/features/?WT.mc_ID=default1" ++ "http://packages.debian.org/experimental/iceweasel" + , "https://www.gnu.org/software/gnuzilla/addons.html" + ]; + +@@ -141,10 +112,6 @@ + if (searchEngineInfo.image) { + let logoElt = document.getElementById("searchEngineLogo"); + logoElt.src = searchEngineInfo.image; +-#ifdef XP_MACOSX +- if (searchEngineInfo.imageHD && window.matchMedia("(min-resolution: 2dppx)")) +- logoElt.src = searchEngineInfo.imageHD; +-#endif + logoElt.alt = searchEngineName; + } + +diff -urN mozilla-release.orig/browser/base/content/abouthome/aboutHome.css mozilla-release/browser/base/content/abouthome/aboutHome.css +--- mozilla-release.orig/browser/base/content/abouthome/aboutHome.css 2013-01-04 21:44:27.000000000 -0200 ++++ mozilla-release/browser/base/content/abouthome/aboutHome.css 2013-01-10 01:35:44.497079456 -0200 +@@ -66,8 +66,7 @@ + #searchEngineLogo { + display: inline-block; + height: 28px; +- width: 70px; +- min-width: 70px; ++ width: 47px; + } + + #searchText { +diff -urN mozilla-release.orig/browser/locales/en-US/chrome/browser-region/region.properties mozilla-release/browser/locales/en-US/chrome/browser-region/region.properties +--- mozilla-release.orig/browser/locales/en-US/chrome/browser-region/region.properties 2012-11-20 00:45:50.000000000 -0200 ++++ mozilla-release/browser/locales/en-US/chrome/browser-region/region.properties 2012-11-28 21:45:00.486713730 -0200 +@@ -3,25 +3,18 @@ + # file, You can obtain one at http://mozilla.org/MPL/2.0/. + + # Default search engine +-browser.search.defaultenginename=Google ++browser.search.defaultenginename=DuckDuckGo HTML + + # Search engine order (order displayed in the search bar dropdown)s +-browser.search.order.1=Google +-browser.search.order.2=Yahoo +-browser.search.order.3=Bing +- +-# This is the default set of web based feed handlers shown in the reader +-# selection UI +-browser.contentHandlers.types.0.title=Google +-browser.contentHandlers.types.0.uri=http://fusion.google.com/add?feedurl=%s +-browser.contentHandlers.types.1.title=My Yahoo! +-browser.contentHandlers.types.1.uri=http://add.my.yahoo.com/rss?url=%s ++browser.search.order.1=DuckDuckGo HTML ++browser.search.order.2=DuckDuckGo Lite ++browser.search.order.3=Seeks Search + + # URL for site-specific search engines + # TRANSLATION NOTE: {moz:domain} and {searchTerms} are placeholders for the site + # to be searched and the user's search query. Place them in the appropriate location + # for your locale's URL but do not translate them. +-browser.search.siteSearchURL=https://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&q=site%3A{moz:domain}+{searchTerms} ++browser.search.siteSearchURL=https://duckduckgo.com/html/?q=site%3A{moz:domain}+{searchTerms} + + # increment this number when anything gets changed in the list below. This will + # cause Firefox to re-read these prefs and inject any new handlers into the +@@ -30,20 +23,10 @@ + # don't make any spelling errors here. + gecko.handlerService.defaultHandlersVersion=3 + +-# The default set of protocol handlers for webcal: +-gecko.handlerService.schemes.webcal.0.name=30 Boxes +-gecko.handlerService.schemes.webcal.0.uriTemplate=http://30boxes.com/external/widget?refer=ff&url=%s +- +-# The default set of protocol handlers for mailto: +-gecko.handlerService.schemes.mailto.0.name=Yahoo! Mail +-gecko.handlerService.schemes.mailto.0.uriTemplate=http://compose.mail.yahoo.com/?To=%s +-gecko.handlerService.schemes.mailto.1.name=Gmail +-gecko.handlerService.schemes.mailto.1.uriTemplate=https://mail.google.com/mail/?extsrc=mailto&url=%s +- + # The default set of protocol handlers for irc: +-gecko.handlerService.schemes.irc.0.name=Mibbit +-gecko.handlerService.schemes.irc.0.uriTemplate=https://www.mibbit.com/?url=%s ++gecko.handlerService.schemes.irc.0.name=Freenode ++gecko.handlerService.schemes.irc.0.uriTemplate=https://webchat.freenode.net/?channels=%s + + # The default set of protocol handlers for ircs: +-gecko.handlerService.schemes.ircs.0.name=Mibbit +-gecko.handlerService.schemes.ircs.0.uriTemplate=https://www.mibbit.com/?url=%s ++gecko.handlerService.schemes.ircs.0.name=Freenode ++gecko.handlerService.schemes.ircs.0.uriTemplate=https://webchat.freenode.net/?channels=%s +diff -ruN mozilla-release.orig/dom/ipc/test.xul mozilla-release/dom/ipc/test.xul +--- mozilla-release.orig/dom/ipc/test.xul 2013-01-04 18:44:31.000000000 -0500 ++++ mozilla-release/dom/ipc/test.xul 2013-01-10 18:19:26.000000000 -0500 +@@ -299,6 +299,6 @@ + oncommand="document.getElementById('page').QueryInterface(Components.interfaces.nsIFrameLoaderOwner).frameLoader.delayRemoteDialogs = this.checked;"/> + + +- ++ +
@bookmarks_toolbarfolder_description@ +

+-

@getting_started@ ++
Parabola GNU/Linux-libre +

+-

@firefox_heading@

++

Parabola GNU/Linux-libre

+

+-

@firefox_help@ +-
@firefox_customize@ +-
@firefox_community@ +-
@firefox_about@ ++
Parabola GNU/Linux-libre ++
Parabola GNU/Linux-libre Packages ++
Parabola GNU/Linux-libre Wiki ++
Parabola GNU/Linux-libre Labs ++

++

Free Software Foundation

++

++

Free Software Foundation ++
LibrePlanet ++
Free addons ++
h-node +

+

diff --git a/libre-testing/iceweasel-libre/mozconfig b/libre-testing/iceweasel-libre/mozconfig new file mode 100644 index 000000000..121d31aea --- /dev/null +++ b/libre-testing/iceweasel-libre/mozconfig @@ -0,0 +1,39 @@ +. $topsrcdir/browser/config/mozconfig + +# System libraries +#ac_add_options --enable-system-cairo +ac_add_options --enable-system-ffi +ac_add_options --enable-system-hunspell +ac_add_options --enable-system-pixman +ac_add_options --enable-system-sqlite +ac_add_options --with-pthreads +ac_add_options --with-system-bz2 +ac_add_options --with-system-jpeg +ac_add_options --with-system-libevent +ac_add_options --with-system-libvpx +ac_add_options --with-system-nspr +ac_add_options --with-system-nss +ac_add_options --with-system-png +ac_add_options --with-system-zlib + +# Features +ac_add_options --disable-crashreporter +ac_add_options --disable-installer +ac_add_options --disable-safe-browsing +ac_add_options --disable-tests +ac_add_options --disable-updater +#ac_add_options --enable-gstreamer +ac_add_options --enable-startup-notification + +# Vendor settings +ac_add_options --libdir=/usr/lib +ac_add_options --prefix=/usr + +# Application settings +ac_add_options --disable-official-branding +ac_add_options --with-branding=debian/branding + +# Other +mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/moz-objdir + +# Build-generated diff --git a/libre-testing/iceweasel-libre/mozconfig.pgo b/libre-testing/iceweasel-libre/mozconfig.pgo new file mode 100644 index 000000000..57d11eed0 --- /dev/null +++ b/libre-testing/iceweasel-libre/mozconfig.pgo @@ -0,0 +1,2 @@ +# PGO +mk_add_options PROFILE_GEN_SCRIPT='$(PYTHON) $(MOZ_OBJDIR)/_profile/pgo/profileserver.py 10' diff --git a/libre-testing/iceweasel-libre/replace-urls.txt b/libre-testing/iceweasel-libre/replace-urls.txt new file mode 100644 index 000000000..fc13e32fb --- /dev/null +++ b/libre-testing/iceweasel-libre/replace-urls.txt @@ -0,0 +1,25 @@ +# These are replaced in order, so if one is a subset of another, the smaller one should be last +# These are whitespace-separated EREs, comments are lines starting with '#' + +https?://addons\.mozilla\.org/((%LOCALE%|@AB_CD@|en-US|ru)/)?([a-zA-Z%-]+)/dictionaries/?(\?[^"']*)? https://parabolagnulinux.org/packages/\?repo=Extra\&q=hunspell- +https?://addons\.mozilla\.org/((%LOCALE%|@AB_CD@|en-US|ru)/)?([a-zA-Z%-]+)/plugins/?(\?[^"']*)? https://gnuzilla.gnu.org/plugins/ +https?://addons\.mozilla\.org/((%LOCALE%|@AB_CD@|en-US|ru)/)?([a-zA-Z%-]+)/personas/?(\?[^"']*)? https://www.gnu.org/software/gnuzilla/addons.html +https?://addons\.mozilla\.org/((%LOCALE%|@AB_CD@|en-US|ru)/)?([a-zA-Z%-]+)/recommended/?(\?[^"']*)? https://www.gnu.org/software/gnuzilla/addons.html +https?://addons\.mozilla\.org/((%LOCALE%|@AB_CD@|en-US|ru)/)?([a-zA-Z%-]+)/search-engines/?(\?[^"']*)? https://www.gnu.org/software/gnuzilla/addons.html#search%20engines +https?://addons\.mozilla\.org/((%LOCALE%|@AB_CD@|en-US|ru)/)?([a-zA-Z%-]+)/search/?(\?[^"']*)? https://www.gnu.org/software/gnuzilla/addons.html +https?://addons\.mozilla\.org/((%LOCALE%|@AB_CD@|en-US|ru)/)?([a-zA-Z%-]+)/themes/?(\?[^"']*)? https://www.gnu.org/software/gnuzilla/addons.html#themes +https?://addons\.mozilla\.org/((%LOCALE%|@AB_CD@|en-US|ru)/)?([a-zA-Z%-]+)/?(\?[^"']*)?" https://www.gnu.org/software/gnuzilla/addons.html" +https?://addons\.mozilla\.org/((%LOCALE%|@AB_CD@|en-US|ru)/)?([a-zA-Z%-]+)/?(\?[^"']*)?$ https://www.gnu.org/software/gnuzilla/addons.html + +https://addons.mozilla.org/firefox/collections/mozilla/webdeveloper/ https://www.gnu.org/software/gnuzilla/addons.html + +https?://services\.addons\.mozilla\.org/(%LOCALE%|@AB_CD@|en-US|ru)/([a-zA-Z%-]+)/ https://www.gnu.org/software/gnuzilla/addons.html#bogus-services.\2/ + +https?://pfs\.mozilla\.org/plugins/PluginFinderService\.php https://gnuzilla.gnu.org/plugins/PluginFinderService.php +#https?://versioncheck\.addons\.mozilla\.org/update/VersionCheck\.php +#https?://versioncheck-bg\.addons\.mozilla\.org/update/VersionCheck\.php + +"https?://addons\.mozilla\.org/" "https://www.gnu.org/software/gnuzilla/addons.html" + +# hack: these aren't URLs, per se +(addonsBrowseAll\.description\s*=.*)addons\.mozilla\.org \1gnu.org/software/gnuzilla/addons.html diff --git a/libre-testing/iceweasel-libre/shared-libs.patch b/libre-testing/iceweasel-libre/shared-libs.patch new file mode 100644 index 000000000..1f22b2b0d --- /dev/null +++ b/libre-testing/iceweasel-libre/shared-libs.patch @@ -0,0 +1,12 @@ +diff -Nur mozilla-release.orig/browser/installer/Makefile.in mozilla-release/browser/installer/Makefile.in +--- mozilla-release.orig/browser/installer/Makefile.in 2012-07-17 16:19:29.480356991 +0000 ++++ mozilla-release/browser/installer/Makefile.in 2012-07-17 17:32:41.250937293 +0000 +@@ -50,7 +50,7 @@ + MOZ_PKG_MANIFEST_P = $(srcdir)/package-manifest.in + # Some files have been already bundled with xulrunner + ifndef SYSTEM_LIBXUL +-MOZ_PKG_FATAL_WARNINGS = 1 ++MOZ_PKG_FATAL_WARNINGS = 0 + endif + + MOZ_NONLOCALIZED_PKG_LIST = \ diff --git a/libre-testing/iceweasel-libre/vendor.js b/libre-testing/iceweasel-libre/vendor.js new file mode 100644 index 000000000..865bfaec7 --- /dev/null +++ b/libre-testing/iceweasel-libre/vendor.js @@ -0,0 +1,18 @@ +// Use LANG environment variable to choose locale +pref("intl.locale.matchOS", true); + +// Disable default browser checking. +pref("browser.shell.checkDefaultBrowser", false); + +// Don't disable our bundled extensions in the application directory +pref("extensions.autoDisableScopes", 11); +pref("extensions.shownSelectionUI", true); + +// Make sure that safebrowsing is disabled +pref("browser.safebrowsing.enabled", false); +pref("browser.safebrowsing.malware.enabled", false); + +pref("keyword.URL", ""); +pref("app.update.enabled", false); +pref("app.update.auto", false); +pref("dom.storage.enabled", false); -- cgit v1.2.3-54-g00ecf