From 5fbb679bec2547dcbfa12035e4ef268786d789c9 Mon Sep 17 00:00:00 2001
From: Kevin Mihelich <kevin@archlinuxarm.org>
Date: Fri, 17 Oct 2014 12:57:46 +0000
Subject: [PATCH] added extra/firefox

---
 extra/firefox/PKGBUILD                       | 125 +++++++++++++++++++
 extra/firefox/firefox-fixed-loading-icon.png | Bin 0 -> 12184 bytes
 extra/firefox/firefox-install-dir.patch      |  12 ++
 extra/firefox/firefox.desktop                | 121 ++++++++++++++++++
 extra/firefox/firefox.install                |  13 ++
 extra/firefox/mozconfig                      |  37 ++++++
 extra/firefox/rhbz-966424.patch              |  14 +++
 extra/firefox/vendor.js                      |   9 ++
 8 files changed, 331 insertions(+)
 create mode 100644 extra/firefox/PKGBUILD
 create mode 100644 extra/firefox/firefox-fixed-loading-icon.png
 create mode 100644 extra/firefox/firefox-install-dir.patch
 create mode 100644 extra/firefox/firefox.desktop
 create mode 100644 extra/firefox/firefox.install
 create mode 100644 extra/firefox/mozconfig
 create mode 100644 extra/firefox/rhbz-966424.patch
 create mode 100644 extra/firefox/vendor.js

diff --git a/extra/firefox/PKGBUILD b/extra/firefox/PKGBUILD
new file mode 100644
index 000000000..cde609ae6
--- /dev/null
+++ b/extra/firefox/PKGBUILD
@@ -0,0 +1,125 @@
+# $Id$
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Jakub Schmidtke <sjakub@gmail.com>
+
+# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
+#  - patch to fix building webrtc
+
+buildarch=20
+
+pkgname=firefox
+pkgver=33.0
+pkgrel=1
+pkgdesc="Standalone web browser from mozilla.org"
+arch=('i686' 'x86_64')
+license=('MPL' 'GPL' 'LGPL')
+url="https://www.mozilla.org/firefox/"
+depends=('gtk2' 'mozilla-common' 'libxt' 'startup-notification' 'mime-types'
+         'dbus-glib' 'alsa-lib' 'desktop-file-utils' 'hicolor-icon-theme'
+         'libvpx' 'icu' 'libevent' 'nss' 'hunspell' 'sqlite')
+makedepends=('unzip' 'zip' 'diffutils' 'python2' 'yasm' 'mesa' 'imake'
+             'xorg-server-xvfb' 'libpulse' 'gst-plugins-base-libs'
+             'inetutils')
+optdepends=('networkmanager: Location detection via available WiFi networks'
+            'gst-plugins-good: h.264 video'
+            'gst-libav: h.264 video')
+install=firefox.install
+options=('!emptydirs' '!makeflags')
+source=(https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.bz2{,.asc}
+        mozconfig firefox.desktop firefox-install-dir.patch vendor.js rhbz-966424.patch
+        firefox-fixed-loading-icon.png
+        arm.patch)
+sha256sums=('1018c2fae8c54c8a45f5a3ce348a2617a3f8039a789b09b7cfa5a27be069b229'
+            'SKIP'
+            'c52b0272c11717603168b7eb28efcbbdcb47a72135874aafd051642fcee37a60'
+            'd2a7610393ba259c35e3227b92e02ec91095a95189f56ac93ccdf6732772719c'
+            'd86e41d87363656ee62e12543e2f5181aadcff448e406ef3218e91865ae775cd'
+            '4b50e9aec03432e21b44d18c4c97b2630bace606b033f7d556c9d3e3eb0f4fa4'
+            '4f0046b39a8d98f6e4fc3360ec490cb2416e38c7b3e92699f7e511c206c2c961'
+            '68e3a5b47c6d175cc95b98b069a15205f027cab83af9e075818d38610feb6213'
+            'd0beb1c7bd786665590131867e8c8677454dba6cd302b87daedca6d251fb4e51')
+
+# Google API keys (see http://www.chromium.org/developers/how-tos/api-keys)
+# Note: These are for Arch Linux use ONLY. For your own distribution, please
+# get your own set of keys. Feel free to contact foutrelis@archlinux.org for
+# more information.
+_google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM
+
+prepare() {
+  cd mozilla-release
+
+  cp ../mozconfig .mozconfig
+  patch -Np1 -i ../firefox-install-dir.patch
+
+  # https://bugs.archlinux.org/task/41689
+  patch -Np2 -i ../rhbz-966424.patch
+
+  echo -n "$_google_api_key" >google-api-key
+  echo "ac_add_options --with-google-api-keyfile=\"$PWD/google-api-key\"" >>.mozconfig
+
+  mkdir "$srcdir/path"
+
+  # WebRTC build tries to execute "python" and expects Python 2
+  ln -s /usr/bin/python2 "$srcdir/path/python"
+
+  # Use gold, as Mozilla can use some of its features, such as safe ICF
+  #ln -s /usr/bin/ld.gold "$srcdir/path/ld"
+
+  # configure script misdetects the preprocessor without an optimization level
+  # https://bugs.archlinux.org/task/34644
+  sed -i '/ac_cpp=/s/$CPPFLAGS/& -O2/' configure
+
+  # Fix tab loading icon (flickers with libpng 1.6)
+  # https://bugzilla.mozilla.org/show_bug.cgi?id=841734
+  # TODO: Remove this; Firefox 36 might use CSS animations for the loading icon
+  # https://bugzilla.mozilla.org/show_bug.cgi?id=759252
+  cp "$srcdir/firefox-fixed-loading-icon.png" \
+    browser/themes/linux/tabbrowser/loading.png
+
+  # Fix webrtc build on ARM
+  patch -Np0 -i ../arm.patch
+}
+
+build() {
+  cd mozilla-release
+
+  export PATH="$srcdir/path:$PATH"
+  export LDFLAGS="$LDFLAGS -Wl,-rpath,/usr/lib/firefox"
+  export PYTHON="/usr/bin/python2"
+
+  # Do PGO
+  xvfb-run -a -s "-extension GLX -screen 0 1280x1024x24" \
+    make -f client.mk build MOZ_PGO=1
+}
+
+package() {
+  cd mozilla-release
+  make -f client.mk DESTDIR="$pkgdir" INSTALL_SDK= install
+
+  install -Dm644 ../vendor.js "$pkgdir/usr/lib/firefox/browser/defaults/preferences/vendor.js"
+
+  for i in 16 22 24 32 48 256; do
+      install -Dm644 browser/branding/official/default$i.png \
+        "$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/firefox.png"
+  done
+  install -Dm644 browser/branding/official/content/icon64.png \
+    "$pkgdir/usr/share/icons/hicolor/64x64/apps/firefox.png"
+  install -Dm644 browser/branding/official/mozicon128.png \
+    "$pkgdir/usr/share/icons/hicolor/128x128/apps/firefox.png"
+  install -Dm644 browser/branding/official/content/about-logo.png \
+    "$pkgdir/usr/share/icons/hicolor/192x192/apps/firefox.png"
+  install -Dm644 browser/branding/official/content/about-logo@2x.png \
+    "$pkgdir/usr/share/icons/hicolor/384x384/apps/firefox.png"
+
+  install -Dm644 ../firefox.desktop \
+    "$pkgdir/usr/share/applications/firefox.desktop"
+
+  # Use system-provided dictionaries
+  rm -rf "$pkgdir"/usr/lib/firefox/{dictionaries,hyphenation}
+  ln -s /usr/share/hunspell "$pkgdir/usr/lib/firefox/dictionaries"
+  ln -s /usr/share/hyphen "$pkgdir/usr/lib/firefox/hyphenation"
+
+  #workaround for now
+  #https://bugzilla.mozilla.org/show_bug.cgi?id=658850
+  ln -sf firefox "$pkgdir/usr/lib/firefox/firefox-bin"
+}
diff --git a/extra/firefox/firefox-fixed-loading-icon.png b/extra/firefox/firefox-fixed-loading-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..55f25e591ff52b1007efbc42d536df7f4b05b326
GIT binary patch
literal 12184
zcmZvic{J4h`^IN%VaS%fLP=%c6|zP4C1huqLbedfK0{$Fm3<E_WT}J@VPwg^WG}KW
zA?w(OdH+71Z@=d}f8?AobLN=ipVwUXbzk=tX`rW0OU*$IgTZJuHB=3uXZqs@B?a`G
z3lHp|CrZ29#yZe5BlLhJxRGr_PaF>ad++$Ie?D;h;-8;Oq`zP=R@KWMFc^uqrmC{>
zm5$rCN~A^~KQV`Va!6;{ty`3p=gM2&49<Ab;YHE9`us)Xt8NUP&fxS@bJzNZ`}vQ0
z@s?*%Yc~7Zfk8~X+sp5>XL0>DeZbTr@-Q{G!!qWDXDJ_R$0?!r-9M#6Q?mD?CW00(
z?(8KM?{y3lQCt&b8i#?by!+sKOgo@+Isp2Qoru}5L_T;`2#auzVVr)9U1qgbds@5B
zgxeZ3{XLD~`W7Y<q-KrWkJPN&U`_F7<zC(8(O8;XQ0)T9j^{v8M*=A7XS<&>!}ID2
zr=8zXS<WJ8o`yRstdCjpGN-UAl519=yQGgmt<WJzVtb_MwdL!>&a#AmERRnZ+Z;pQ
zZ;^11J2)C5(fLGkWsbMu@PhG9YtL#bPz;zR7K<^bc6yBH<sYbF1`Za2rx7Buhyqc1
z7+vj!-)L#FLm*YT1qMZ*jM7wIYyN>GYZnYy6&Nq;j7@nI3%3*`+ehEw0HF5cDp)?%
z=uV>_)a+tI*47QL&UsKREh9(DFsYu}`JC&8IKYv0jM@1voj(i2Rf8FOIqj85o3LV&
zZkZJu!)$|DGI53XX)4DaKMA3b#L?W!x3ueYB#mLd5tu%an<h?L(qHLgbpH!Ugd6!D
z^bdGzs7>Ejt%$J7m`7WNW8goOej}QqJifdcM>&f$CK)2t3g(bIMjqLDjpt8#QwgNs
zxWR1_=3GIBQuQXa{z6Hk>XQSHE1vn7klnmQHvVi#EGX^{FRAe*^7283!tc~r^AcIQ
zR1Wfx@YFiZUW9LkD;tgRuM>l04Z=!qF(?V?^%3pI?5XFjjyE|WNSLFQ#pr~$VfN#Q
z$;Z<1PaqoqpHevV`Y)8m$TYr&D0OzYqihWQ1<C(NO(_4QmUq|FQLlf>Mp`#xK`=I0
z+B#yPSMp323-`OP7=%vWEGqqNThfPmjC+q=z?AmzPt`Sr9hQJiex>QIGswuEmgj0{
zL76EaaXsP<7xsIvR2f8fx9k#k>2g|eQyXhABdg6`ly&f;z=MUP>=C>SJf3TUTpI*(
z73{6OeKrQZQydZ;mNw7Pz-6!g%8VZQu|SLu$Rb3o1g;A8?KP+m{LU@DB+?5Dks(e?
zuaWRp1Y-^Mz-8SvaK!cwcx~<RHM+81TfHQ{p@!KyCaNRLFPdz6b3Q^Tvbsmp0^pKm
ziMUfQcN{Cu7PB;x1f5-2fcJUXkZFmKIP2ZvhAD(;tR32{Yy->kU2uz!go*8`9OcCt
z%H-!%-oeY}>dNFQ6k|K5%7DpT0&qk&0PQc%!)*5gA{}dJ;?~fsA~!$urKUWOg=Ywn
zeXm<c1>oxWHPB&P2GMzxi$aE9uDC`QtCjVlu}ifTvriGIqKI%M0voe!p#8L2Cj4Su
ze0Om}QV}w|wVCwxqwH9?cFf)inxt`Zw|xj8`=7Xrj(ISd_%pwV$MYLXd6i$riSv+F
zm{a)?v4)30V)QrgQfw0rZ>%6WEpnaN3fXekVT|sUC;1HlIt9}4+_XY;v|$$Eyh^aF
z=!!=udA5IaBnj=hUqTKio?C15&YLnCIhH3nN^hx~>XclmnqoXOa|GBzzFne`tlxGk
zy}3SW%w(EFBE_9dhH|<z%3S!J2Ac-adY6(gdguBr-saX32CV%}SH4Npv)sur6a)8s
zQ|?Jv;UGdm$7b;Ef7m4bJDYYd=yf3^z5cLCcBLaML07}r^Hg(B?b_|}0DLBUgj1&K
z=~v%49({dmZfrqWL3z%ZLHXSejT=SDZu}PH?*u8WKDx1=Qs&lFe*adfH&MJzP`PE_
z<Ezux-3?I5wDIcdvRCk~;407WUX35l7i=+<<__IT=LBCLs?}dSSMy2A=&0nU{%9yQ
z1|g>XIo`F;0>u}h!of-7WMbv?b}%UD#c%#xT`{ftM^lTmjtJ5Cic?AZ&h8De*&hcT
zl$Lk{DQxL`RaJQmzw@DP*Ujb|RUKGfo*m5S=R8S@`8qZ_aW8w7a*>)F(dUJv=2_*n
zDc(_T57zK|A`i}Me^Ez;`%AM|x2isaV{Y^%4<>ww`26z5o2@aQ#j0Y9iMP78bj-r#
z^1Rl#q7mtyVw1zR=4~d|!m+fd^qVlXMZdKj1Zln1x6k_T30VU$!xgIBtM%6d4>8|g
zUW%gQNe(uxy?m(tMq&2I%6jY(y+H$m_l0whP9vOU#fD*3r3O3HcXQH0@oBkamUd0&
zO*k{s4avP|o95!rAKt)B=ZTsRfBC{k_72mo(t5hY@b<My0;B(VO#47%muEe7i1ove
zqVfYSl#Sz0Y?F{sFC~51lhMFmm&~*h@nN1e<Lmr}*sF%OwmVDij3%sdudxPaQ9ajw
z_(u5r=?Jrfr{(FpF(>%6vMhzWLVeZxKQ;~%s^t*Z&FzQjXzY_Juzs7ie(cj7S7v+M
z^(Ags6<b=iPPG1dy=V@*36p|p!}wurN@PkZlngXPp_8QxvyRc-ud+%8IaWTYz+_>s
zVQg|*iEu#@vzVuP?ba@1uS#j_DJEf;)YLCF+ti`MEY|0f1h!}X11b66A&qfC$v}|W
z|ACa^kAO;6J;sc<R13TR^gfdn*8kDZM7Mt~O-wCXjue~A<^j*)``TtPCM}>t{#oxz
zv`FpTg_8Zq;@Pa0y6KjCzS!q-D3L(>7d&fHIXvY?<)6&OBuU-86<7EMkIrd4SdE4)
zhV>jZEhyrdE%!Usy+^%}8#5w@P3|>YOla>0<=O8vXR>_yKUQ6xq|h0h|5iOEV6-i+
zS_k|v#{JL~7Ueb}MM={KPn~z(>@)S=6hKEt6hC@BKEBRK5Y<j`B<XzcRASZen@D3K
z2a>F9mQ?E3%;vm{V#!!#Nc`GFczdAY%((+nwi~iE2wGozn;ZGFwbZ7<WU|AlAu!)%
zk-GVyPh)GlH>1$WoOpfvD=T~jK-S{gu6;gg5)#f}6$&dKW}kng{&xHhC|hNG$aa?O
za%#=fL9HP6LffhaY)V`#e7TFvS3&hM0EsReKodLd9?r_ZFY7+-a~r9a|BK`mHV2O1
z+8?Roy?Y2ORyToB=7D>7N?c*QdjgHh1n;j!(pTY;v2d^L{mi;~iz6_8Y7gB0xI`Kr
z5G*dZX87diL~i<(?46suck4}D;<^-NUlPGxs(mn~kK!;}w@xn*rzen<$ihbjvXXrd
z!BvShuuHNG7OYi$>?lM@O2|9u>A9jO7LZ-LdmzB+C&<3G0dV0O4_{n@IipBX+W9<s
z$MPA^9oT9;K9?S`2PV9<0Z30j0+xx>U&^{)y0Ym#u2!XT#)#11^u#v6S>cD<kWm3^
zFT{iBYA&Qwg)z5^DsZ!ep%ko^V7k{3OIK#{EdGP#iN9lMcT_SCVQKpZOUi$-yb@xD
z4i|Qpr+=tBJojAIJo+>HrDRd_1ntLgRv5o63F=)EOT*O`>kD%C_S-xC7%r9lK6Yes
z<BW3pS0aBSZR;z^@0uN+61w+*rb}YmcU#22W4?~&mTLgJ;4ofZsc^fh*mu_pSz@l_
zzk*PVY}7yE?LPaFsao`UMgT<=kA%11>op32+?ptZf<Ok|jGa!)rjuBErTa?hC$QyN
z1gv+>I<w+-gZ|+TvrOD)32)y*yNWXFZ6go=Gw-tS;>J9u^3Bes$RPKy4!A9*&-ixa
z^mj4!DRqeUK{m*4uGc;tjPgD6ihXxX-zo&caqgn@u21a1sA-5HS2EkCkEj)$L85;`
z4lB8LNHe>-@&ky*2Ml6prc3)%*7=>4MtTjbY&KsPTXDM5G!)e;ks*{Hz9weltz!p@
zcNy;ExDGS|?R`_6&rvl6yBo#uMvB=!Ju9+6F!+w<ni&MOv~fob>%v`$tk|Fsvqx;C
z^Go<2=oljaF88l1_F`OYm2(^%xgU_DZm3YWO0voymiNws6!{K7SKEBCk;WjjS_P3k
z|J}caS>I3>po{SYa6xUCVD8A^lnRega;3#n(@VUP&FFCoDQTV8E|3Q3ttJ3WrglKk
z2X92wqLS`gjqp#fk|lOU=55GV&^_a`0O)H{02G^t0kkAJ0E~Q}cV54u<P2weA$&75
zJYvmLq<Kju#1No+ga{zO<O|^1AA(TM`5uEfyi#K`X&3W;;F-twTZ#>H`ayI_@Ap{v
zg+kt+ge_)Ln$*zPDgTE^s=pH%^Ar;b5o!5{Na}xy90@V=N|%1N;2KmX$Sn+QL>XkK
z%HSv)3M<&9Hp-^y4A-XG;)BbH*Jw=c2C$!-0O!o^eHG$bY>qhHoGd6gZ3#1GI@#pP
zmd?tKXdk0Aq(ZY7nC$UeRqd(8>U{M=x792JGnOm)x8q?2QcC_UH&4W^^p{t0^11M^
zlX&y>BwXsk43}6GKw@{8wU1r8hG$`*K%I=0k2N8g-dd=e&Oq*Ip8ous?|xvq^h1TQ
z9rbTNWZfCJU)rd<TnUwg9Ho~#13HH%0(qcmrQjgq{UC~^lH=G=eyzOxb=5tA_8KN$
zo`$R*+OgP=MY?v23HP}vwlaCjI{mT;J)u@x%0zDYQmaNQrs#bGU-99ERUCC<VDOmo
z9;_8c#l1uRjYbtS$QO9J_^3G>N0l7>ut$4~r;VbsZ_X|N!gj+g|MzeTG2Y$Q2F9MF
z5(Ag;@q0HB)_&;ETClh5gPFbXf!m-=g8nm!7=nj%D1Fm?KQ(`Q?Rw@9+zFePMz$1}
zl&xPpo!GBgdH7NipxYr*6twnxoYd`v{vnQBN|n~U-|Cvei>v-MdR|Y+=&Yk84ncYQ
z5g2wY18bzbe6LbZ4z$uV@o`^&O1L!FDKm+#ZBUy7$@DWoJ>C`ITq6%at;7<j6n_J_
z8fQ;tdNNKmEp^fjD)R@NZek7A>D>nbJ_InKy+j1*mYcxQy#W;anJ6kow0?wK_DmC}
zfn%l`GcKY%bI<(lE(pkL1I1$eDRpGpx_fNA7b4!Xzzk|B`SK+{A1~?uzxE*h4x=5L
zkqZQ)$sZVL{)N#DW9C|r_F;q3$Zk!IFVxP9mi#aT#i!KSgQ0^ldvI+VeyBe4l7(=^
zs(jM#)BQQTL2h0E{Qfn^vD^cbbSf$Rq3H+Yg|{1eYld$<C1}2V-;v?_^V6_c`c24!
z2icIdlhskiYQd)aSe3;SFuqfsjvH$I-hTHDXs-TxQNP94JhJ3gYPY^@CRFCAfI{`u
zsQF@2sjz7wW*pe-(88@l%26>@`gue)N4sH?qDEWd76}RmVJ52-_V!Z^Wulkg>czUH
zFx+fi<Bp0YCR_s}DM3<#pqC37fe7^CiYsL$GD4(kpGM~NBv6WD=#EwDNeHFKxTXdO
zE8hE-63m!F_nk@@&dv>&QVL}wHQ~gU)NL~1)*+?scBA_y!OJOnJtAUR$^gI2-S(zl
zsaC6$)nR#Kq=qUna9>*WpbMe6as7iCw=Df|+D5T2D?fhU8r%7XVDs`x>o>~#VX_Kc
z5TJ$bdmTr?Tt%D9)*rSiXLeMyL`juyI{7IW2zkZD)o=J61ZpoV;j6j_XKrV`YUz--
zd^YTpe0Cz)h*$^|?Ky}9wxXR~YfO{Qss0d(4{jAKKMA~FCIP-K1~^g&f?_(!J=_n=
zWf0=g2<Y&qiD)6O190`{B#59-V{&}{_^Mc@Z@-cJmU`(bn80^Ho0lOT3};RQ#W$}3
z_{NL}0p-I$<gzSKq|oZFnYsKmvOjy`y8S6!gjOXw+W6DnwV%Icc4->vkW3$i(I=Cg
z!71JX?EAB@he0%*k0<xE{=*^d-#Luw<6(d}^!UT!$$vRy3rW2lS@2<&!jkG$`OtJl
zbPTy}2&!GFvk^mg+9So$KixKGQ_yB&O)XRJ_p;f$MAMr~SLv=NbqMdbr?`J)(anC@
z>_#JrrMiy)ENR5TT@je#JiROZy_ewgHgB#&^g>4p&*rMg^;6TxaQ>kh%A3CwmW2nU
zbt76>?@~&XI^5u{AVDFyP0;Lx^&6d*kD0Mwq~T6ejtVb_L`dv8Y{)vgYkprA^MQn0
zs1!~u+O=0hDcQPLg}bBJo5M`_{rDo3ZqP~8vt!RF3)^wSFyXxNbg>qM0sZ?kr>(On
zV;yYrSNI`WE7J>If<)02M;ZGgV8AAy^$zCB0E`MnW9HP^f^RT&#cQM6W-7<jq(f<9
zF&x}_G4L{PzY*j?<Qe}(5znc#;*kgOwW3BTE$g>1O-ay@ugvm~eiwRT`iX}djy(LZ
zeNR$<c*@Skz5%zV8#|CNtlUSp=8HAPTzDYYu_q|OviG^&coN75)twuwzz<EVpF$r=
z>#VM1zzPU0D`5lmjGTgG*U_&zk3d--9z5C10f??<nV!L!vJ-7xLo;*Pxg9QwM%nH_
zQ$H<x?RH{aEh6q{{fB-H`@PM3oOTslo*V?UZrdRUFmD7YOkPAT&5uM}gYGuqXKe<b
zg9d@3miWQ$Woxk3VwS|UMsi^&)0-Z3-E;h!J5|Nni$12{Sxc}lb@d4J6qp|md&tS2
zJ_MFYqd>$j87Ma89|m!8fA?v=mB{3%6hxambii@$=eCr^{`4^Kb0jjs2cVytR1w8A
z?l(jzX$pC7!^~W0Mrh0ZAdC2~QqujMP&?JlJ%~`BKZMdB6Iu^H`*jI#eezqP;_rg|
z(yv-p590Y!MCr@KCrQ`(bl5}8sIb-(dFgw#y3*9a&vRI}1uX;?O|Z^~CIOl~1wY2L
zlpe8_I5|+D5YTW#r93R)<8Wv6PO?!e;H-%<_VHuRO(u$~lyAj9v)Z9KW5blgqw`BT
zLq*CZl!i1?5zk`x81){K$0d>LvrIPOm!*&!$pu+?UALoLF(k%iED9ndw1#MgOGadp
zcN?f2OZamH9@|n}d2~qIqywp-g!|21R^?J7XtU`w%jub+?(0N&9bCPr3>mV_`}D@X
zs~5!>e#OtJuY_qSQ)npB#-g}M-il7o`L7B{;~_Vkm$7=T{|ki`?VwII+w1pQ#{>71
zIfmk`@03Utq2SqwO1OQV3Qv&^8Bs)f7ATlz>qp1JA%p5;vlqEW!r?I+`Ro^2_!$$G
z6~&@jB1la=KtIoIg^cK1$@!Jwsf(UFx!FyN8TT3%X&j%cl?R*n9fI0V^Pu0b_&C{G
zS|7;@`hIKct2R0^L*%GQ?{o>1F`0HCA}(vE?EDhwVfO>YufG$s-}O`mCkq$%>sZ@l
zrB%xx_WSs{hWHNhoQPY1*1fFS&6H1s2KA4p?ro~Eigg#qMV+XVp&){9X9(bC!2)<*
z=L}LtG>(vWgg4zEmH#SUR*0V%hqgc8GrarL<=G=IZ$D7UXJ5`rxiXq!TR?>@(*c3S
z9!H>jYz{2QM}zFXEn*PXh=3QiT3s0BZrgP~Y_cq_rk?3e;(GM@^*@nu)Xl4S9*g~z
z2#qkX_Q+ni20_0TxGeHM1QOCS_H=?D3!Nd~_%EiAT>dS`e4?fXW$q*ae=ueIAEr>q
zwFxU>qnwEBo63IO)=bgVNwWtt5IavV0E31iL8W9O<IbykM^FD?$HT-Yj!T=HGku-Z
zO(q7q(Bekh)VF4+duN=Fovl{0m)7^po9Dhl8W#ee!g18SQZcRRX_yhlLiX1T%>~e$
zHiM=!78hl_9SH3y0Wun5e#vKx#Y^Gbj)Xd0v7zP#wH)Pm$OOE!QM+XN+%qADygKxR
z0|qhh-Ivq}R}Pzz;JT@u!!szNa*BiH7oJV@w^vfa=raFk@CDUIEHt3o%r&4@%zLAQ
zexLa2WW!Aw?I+~-Rx4PDbT6S5q>4dg)Jt(=iS<iq**(9gB=H(OiTxeNpfxaD@D)IV
zbc0FU7D~d8qk>h|5OM9Z`&cQ7Kuw7nLV!;T$UbuuuySmU(u>=sOIPyulH)_h&A^EE
z+xV%f?Aeb<FD=NH-P%IG%3Ys=R+B5F_oG;3`nArFAFvYRN3#gp_o}A&Pc?XaQPbHC
zNW*7mmqim5yB;1Ysy{0}lL9v?uQGaH6}fr>V!tYTr24uviMVZK50AJ}U1b<FY_qq(
z{g>aN%$MW@l=<%I4o}6wP@Xwu)^D6WMXvnj_TI3^4CF$gaSIgU@-^xzEC{ymTvc&e
z8+LvMkQpREvAvvt8#UUPKq0;%qjka*+)9}Jd>SpM7mIAuB1A|p6xXaXtjN0xw1!UC
zK&KVg>`>k}fqDZ6Ah&e~ys?T#bM<Y5x@V?fM_OfLCWAgLrI;l5eeD+WlP{d@TqGCD
z709%<>geL@)`fNEhezqtdfZ8JPuA`*75S|S<Q-4_2}gR=mk2@O|G>)hcUW!vlc6~N
zUrjxA9Bk@qoU&v4n!T3s{rOMxpKjJJmA4SyDFca@OkVZgQ#p6jAmZdV&w_i;<$M+$
zSg8uH)B7e+lSHa$QHE~bS^8pT-hcS$v)swmrxKs>UAqtXJ4=I}iuB+EkT$+-Cu8GQ
z5G0gv1DKhvz9T=_ED7SF$YEBZR%%ozJ};k!-u2lhJV}cuxa9w)5`c-TCOX7u!u()G
zFlksKJW4cY+sx=v+_%RYsIK?Ky86}~F=Wra-9usm3AgE}@H``v-@~<ocgvR*>3&^<
z$qK!3s53Vs1iHMpLiOl{J%VS;atuk?b9>$Y-P>5O|A<(s(D$||&P>rLaVyVhPH~o+
ztE#~RCo_0oZV6vnJdSp1Mki(pu11|XuiudC+nRln;1`;$@a;hXzFq20cb2l1soTJ}
z`S+r2@4my-<Zk=RJyTa{X)94SVb6M9<&RM_O4R(sugM-m?uQt@g*lDjwPJf}T5#gh
z)joAqyV!w8)CkWX<;iUoO2M?D9`Da8&1t}}35l`^ee(__l4|y(cVoEoiguUaFFCku
zGb@#~%B_6R>!Ctt1C|BO%G1@Zw7s}kOM61)YxP#g;$2&|$2T@r%O_i}Qo!a1lhw84
z{UVIX5!%a=pHX!e;_0xW+T6;I?@`2f%eWj_-_$+ddy+~lD^sw}7|va3U7OKhK^HA)
z{p+a=_k2rl!wtV)kH>0F0ylL_<QfXEa2UFfIjQ&>Y0FJ-bJ<(e_+Ihl&54Qc$qs9{
zpxJZba*?5766ML)raYRKs*-gU3_XN5m2*fpGT6-hnrKW$(+D^GjOs@!%?V1$6-^!9
zi-_i0V)hviF<%|u`y&6rl=<(NK4G5?fG|b>(NvayHB}s5B6_M!oF0LRV#bUR-3lYQ
zVt3SzFH)3EF>LAci+Im&nMwB%TOox-pS)Y#25|!P%dip}dTr7YiUC-xa`MBM-Z!m3
zj_9~<Cfz9lP}&6CE0Xfz{HU+f;tt#<Cr~(<%U`8CIv?|dcMdM}S0_1vh25w;pomx@
za(!U-Y@Vxi96uKW<$NC}_&CGmu>%8XkiK_*_+f0@P^`%g&|R%Z;F^k^&<jy$YIhU(
zY-A>NGxb_kg3bnqcknoyqV*uh|Eli@(9(Hcgc2YRMiiR4z!}Jz2y7=7y=G~|lO3%o
z`ZE#H+7gGjHY)>cEWCrpFAZ|OS8-1bdp@s;EH|xRHs9^vO^yXfBX1xgIXT07r{37@
z-Vkd@AH4XSF@F|$yRSse6XQDKyB~P4AbAA5w*A~F*`fW(@;8)D9CUc(e!UpXC`|LL
zruibetqckoJ7$4}QOGrDLrUFXhb~AxEB4sH6ZA4aJ(&9(ugvhiB=Fo=>3QSb2r5Zu
ziJb#;ZeMcQ+1!R$$C~6q>_k_fi1(YFC0zJJ69E?4#&z2mQng$AUSn#%m!T+H7jhw8
zA;dX&oBp@yq4bx{Nj~*9cc!A1((LO+Q#V_+2gvSiURJlOco<@sF`?di<j=}Sn9Hl2
z9rc+HrCa!gw<h6u;Qc(UJ}dg(v>cL5!wvqUW;X5F-7!7wVB=yNPv$9Tc#j`QYi$0^
zuw67gwi$KQiPeNY<a8h8<P(%?7Q(Xk#BH5v6xMjLa+%|M(M8898oVM>x0i%#no6ld
zMcC|N^+=}g<~Ur1ysCIGZTmsbwf+A9%lda<ZJ)`+L%{m}0haAwU^n3<m*}HmVj`qG
zqNdr;*s-4>MvssvLEn9!s1ikkS0aoL$WUs()3^6VSW>aS{YJ93z;0$dcoxJ9xbTJ~
zPO<(8P~i9aR>%mub1XT1*-JLqN1x5;`Bs2qF*yR}3s7p7-x-)Xc1P&mjr<h05VJFF
z^dGJ?x?Z#SxlF|eg7vx%!K?NeP)Wb&9B4!CJb>YNNyB31#xJ@ZV6=|o5_$n}kK68@
zKV<@elRBQ84h4A2_tY;tgd^&x>FT8RpxD@r2=XFQnRrOMuTYEE>JAJCLFeGWi^jS!
zQ+|m{YsGWIK(WQ;aKcu&{zfZ?`9@7l@wr>&<GjDru2Go|-r1usI3yTlH3PbvS^zWk
z<$CLJ4<H8eBwaQwP8V^MM&c-FTYtE4yKo%r#%ZA!er?DyirYeyexgHE4Ge$d_})We
zzr}vmKXMz5y>+y!V6m}lVMH8!e7vnWZb6wFj4icF=I3L3HoYs9mvOXl#BIp>wb(!0
zc&2o5ex^@eGeLVTD#f@P0zVw`;NJ-E$gk8hx*s)<j#Fr(NjSEMIkl}b1r}pQA$n5e
zsERfVD_5l_&h=!>o~<|EE<#_0iD=uZLTC@Q@JM*}9U+F>U`6iAYHT(aDHXg)8Ed-t
zPJ-zQoMvD}sRs2ZY%)~fEF&VMqMLmBcwxv=8cj3Ed^mV3btWm>tPwhUSc)7q7vr{4
zKCSm5H%FpjZM8k5uPbUOV=WHG^j{LvD)WDmU*x%w8M4)9s<V_^e0K<e+(;7%Y&KEc
zWwt!*RIiyztHg@XBVHAqfWZ}MRaLckNd7}A``<}@a!An)k?Q@2RE}d(l}Np|_jsYS
z_*SRHq+Cg>hVA}}#+kN<PI+%>nlM-W1BEh<e89xA&OQjXm;x@V)8Lu^WfM5<I<!KW
zwtW>hlj<ItvCnYf{xE+dqy?AVUkWjkg$IsR%K$1q&=r#x6_H96h0yqBI4_-eEhK6s
z*@D4s1V8<W<64OWxRfhLfTQ5UzGePLrqXoU3PvlXCmaUDW~5^0%}{y5#am8_xy2KO
zV??Ot0Ufi=3Q4kMLO9A_gkK6JXJOyeC8pXPLZ|C}@Ju;AgEEY%)qxxORylsCXMY%(
zal8tku_nZagSt&wsr3}jCLz_KDN}K{fnqvOXD|`berWC3-lG`<hcflonDnFZymSq5
zC{j8gDp>9Gj4HJup}ij~4ypK4lHS-H87lu$n&P7i(7uqgzX8dOL@x}XlK#fotE~3v
zH_?EMe6EdiDr%uqS#R!M>}BRcp3ttfwC}9M#KMbo_nDC`&R=UH`%ive<m+tl7_-q>
zDaY;gn?ep<xGHKq<7M;nXzk;o%f1|ZQ@Qw+R4Fn{;OdzQW?NG2nk|MR^qhz%$i?mb
zY<!^NnCI;I5X$}fD4ZulofF|G!p!^l%g6E$eddiko<WUw8QPP6L-iU*IPIrRMm9dv
zpUqF-N-&wp3}f7PbgqqO2@RcF84j|qJ}w2+(%fo=I}e@s(fxS3rb8I|V4x}jxfit-
zFeTzS2}OIWtZ+ll;|2_xfme<dD~CD!4Glxth38~x9u$3ETsQX@6wXCLE6Hfqew6NU
zO$OhoE=ZpL4Tcqa$qwskKEd{B=epN_DCPV+rMAw47a>Yr{!n`Qf0UMO`_5rLIo1`l
z?kBx3L=Thy0%?x*m5x~o*{4Yrpd=>6D_Pim`-aGq;)fka#M(9eBj9px5lnP&0L7TT
zL)@TA;8cX6zWwQRzma*)^)&@nmp$MGWo>J;M2Nzx0N6kQuX;6fgm@wDz7|$ESEntp
zO^#yXcDNx1yNjRw%-{?Z=gf&9^W`ouiXHeO^2JaOdHuDToiipKlHLWO-q^|lz9DV}
zGgS4-XG83CZHin89|1ZB(kvc>muFIBE;`*8Q_vM12&-0Q5d1WNb?+M$-AAvzngz9p
z*pW^p7)+`ZRw6(z_lR6imI~?5dG3hd7CXDv@&4QpjVdh1fjM8mmwnYgvMzv0aC^lE
zvzKz~Yhb1-$3LOzRBra(jH$BW8gf4xm;R!$QMnY}6V!CFZZpM~*r)%S=zZp%(Lb<C
z)Is6@qkyTW5guoHnRk(UkrU?jO{3ba7^yrGdFXcVb3B*r^G|OkhdWoCFXj^)j=Nfl
zkuJ~;@~Pg?G<6fxlLorRLAMFMCH0!f;lZn}0x(U)F)<j5Oel`<L>0g5<;!Uh<TeR+
zMx8*#ImyZ&qy#YsLSKMf=nJqDG%wIiE3=P%&OHjH!wxwz4-|G&#)8_c1ApGoe&JNM
zy}!hgK{>znk+r9W^{w$Czt%f??5hyxJChZS^=cP+Dj@X4dV-o+6`^=<=bV8<TeR(W
zb10Z09J5?UW6F<a7i5Km(s(B{f&P5A5(!5GqG_imut_|N5NWEgo6t&8S{s70Q0jaF
zEm694)Q>1Q>>m6F&NF|9^GVJdYY0xyKX9J?ADobFVs>2ItPrV)tE(BfIn^kx-n@&5
z2@~laTyQyoQlqf44L?aYs$-qyRCMMwKx#?ugVF}*rdxpp6MT6@AX>W)Ue&z?oK~lZ
zJu;Js=3aU0hzPG_1yF|%z7G_0If)?N?Eq+}6G8DJ1;8y>9D?s`dti8=6DUf=04@*u
z2|RTEqix2RSIhUiA7~JRxZZ88-F`idqYGioP^8eT4nCPYeaLaHd0)u*$2Q~}`qrjO
zTe8($9ALB`$WS*v%sc&%|MA9J6$eF$&;-?3>iG=Y;HQv><=-Sd&g-cJKMY_im!YfX
z8<`L&lG%$cMsdTGq;a|uKEcmXzbRO*tX}e-y%jq<I!v5)7nVhgLUTMGY7F9e&+Fz3
z?6Ix-V{HQFE)utribrY(zXrZNhWZ9oKAe%JC$PD@Zi^L1=rjGjDd~1kIGz@2%T@e_
zBB?>vy6KB~E?%7UP8g0cgv{7uBbz<V%)lv;;5%Uq?(95WZ-P#xVK|;+M#xVmop2@N
z%_c;-1+R)!ftu)6XIt*7X)2|m;kFwV2BS$+jQX{z4cP=u*TA#f<%^iw)=sDrVW-qA
zuGC4{EZ^_#tGX8MlKM}EnBt7u=2r=$x>q0U0#Amff0YtxGIZ`Rzdxw$yeVz@t+bg>
zMN>df_4?CK9edYe44(Nh6>}2!lzZlGC347w<Gbak#G%99Hq1ZwNG;ZNqQf98E5%N$
zODUre!$FNyFKVfcGA=(}6&}gNLKy=kNy$Fco`U5>Hz3Kh2rz4Vic?G{P%Mxi{dxnj
z@~em$T8;h<rMUi%sI9d3M+njXFEDZc4^b$D8*u!!zSS)~t0*&}atKre3Xpi+u%4cw
znU%~}EpM8keqH~R9jWuGjh*n`npMswXt^8?_0_H%0z=4X>S{NEfbA(zd18r}Rn#J5
z_g;aEv(UlqUIlw~jli?dSYjZn@a_Us{lx8lYX=G~g-3+=!d+ll&=0Z`3<0n(*avo&
zhv34HAz^`slf?V}vi-vnI`>Dpb+xqd2m3=v6d=H;-q3}_t8ni_;`$zW+gRq%l@{u`
zK{vXVjf3N?Nd1wN{@}EU;wty%`mLPVjA1yVJCYD7HMu#zYmoNxxN3=h+;(_v;Q}j+
z#mcqSa;w4ga7r7!(NY}PoP4&F`Hn+9Y4GEYf?%BiL_mte5)BK?*$jVt`9~m2ic+43
z(XeA-N?rWNmC72ZlBxEfW<BB4ab5M7_<5TL=V<98IJmplTP^R*AkdKsJwd9K@Y|0f
zV&^r}tzz`2X<tuK$nUT`Ux%uvioN76j=wxy;(n2z4d;BX5~oBeO}g<T>1)k*)w>R4
zD0S`!aKz~f=1KJGMTHf$oUJ97v(ro%JxQn%#y{|Y{L|!leTGq1cwavfx_l@s364wN
z${0O+H<o^&M@Ol%bWk~JMmMU2&$x`a^@0cK1B*=wMLYv-Faz)ChPd&Ih4Adam0-t$
z*=_0REV<`*-o7U*GOyE;Tn~n>GA9P^(l)(i)011{Z6%XzqWP7ym0}l_1R02Sq<X;u
zRA<l%I_~62x7Dw?mA;@h$fR=TzP8Oc6)-RKa#LRE$LU`e0&?u~ARliZf;z3#c^pQ~
z7$f?cG%ca={V$|Ee~0vGUynQlY0w`XJ@+r9#vz}A^3G0tzk1^kETl!%q`ULocdih2
zCqO%m6QrZ*(lP?{GC~sbz<11itK}McQITuLm{_YhL;$?~(_m1t18~+11b2O#S;>CY
z(h~mC?>IB0am$LlcsdMOLlu9pE^Kx%O0Zqb=2FQ8!7;{%yO%YWCwBRJz{HR9VB+%5
z9<J5cd(G<3^*m=U)+`^!Izqet;o>qZa>4zu*|ZixUwK4-iDyepBOZ8tNbFCcU)-L6
z%E}-!ZWq`a?ct#ILxNpJ2UiKJ>^=n6khWq;21H+}ryt%D>;1FmYdvH*prS*<!sfAm
zVQEwe%7RY*jBk!_`My)<e{?9p0-qUJ?FMM=fb8-*Fq}$NApynhnd=Su)4!ma%QeV$
zZBwy(bQq~DL&crlY&&rvQmq{>G3LRV1|am-B#<S80x`bkY*<(^O7hn6s#U8kk!0)p
zTS)rI4>Q1$gK!{ie3ZaOis8t`jIg@aGr5;+LJ>mI@x3?geb+k;jbkf14_TTe15#i1
zd!MMQYAF-bw$EueeAT*bqj=8Mk&I&!IvzKX-(@@B2yOp7wrm4+G;!I!%|@lCF6FD$
z!)WtYs6D<w$~i9*I#+l+n=`!=v@-J=Ur|Y7Iq#5;uwZXE@OC+Hr_|HJsza&nV%s2%
z95ZF$pW9V27T5C^_;hyLZ~(_xSg<ADrooi|g&e9U-(d^y*ZYAGC!xJbQQfqBE76}s
zG(8@wUa1|IXZ-%5dzQLM>yq?sQvDiLvuwX;Yz<|6QUG&7;U=G+`jlHdoC_)}pN^*e
Ve4%XO4umL7Q%z6xy^3w<{{hmG+u8sC

literal 0
HcmV?d00001

diff --git a/extra/firefox/firefox-install-dir.patch b/extra/firefox/firefox-install-dir.patch
new file mode 100644
index 000000000..51fe4ba0a
--- /dev/null
+++ b/extra/firefox/firefox-install-dir.patch
@@ -0,0 +1,12 @@
+diff -up firefox-29.0/mozilla-release/config/baseconfig.mk.orig firefox-29.0/mozilla-release/config/baseconfig.mk
+--- mozilla-release/config/baseconfig.mk.orig	2014-04-22 15:38:52.948165295 +0200
++++ mozilla-release/config/baseconfig.mk	2014-04-22 15:42:20.387481673 +0200
+@@ -4,7 +4,7 @@
+ # whether a normal build is happening or whether the check is running.
+ includedir := $(includedir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
+ idldir = $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
+-installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
++installdir = $(libdir)/$(MOZ_APP_NAME)
+ sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION)
+ ifndef TOP_DIST
+ TOP_DIST = dist
diff --git a/extra/firefox/firefox.desktop b/extra/firefox/firefox.desktop
new file mode 100644
index 000000000..d156ecf69
--- /dev/null
+++ b/extra/firefox/firefox.desktop
@@ -0,0 +1,121 @@
+[Desktop Entry]
+Name=Firefox
+Name[bn]=ফায়ারফক্স
+Name[eo]=Fajrovulpo
+Name[fi]=Firefox
+Name[pa]=ਫਾਇਰਫੋਕਸ
+Name[tg]=Рӯбоҳи оташин
+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/firefox/firefox %u
+Icon=firefox
+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/extra/firefox/firefox.install b/extra/firefox/firefox.install
new file mode 100644
index 000000000..1a1f4b16b
--- /dev/null
+++ b/extra/firefox/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/extra/firefox/mozconfig b/extra/firefox/mozconfig
new file mode 100644
index 000000000..a56a0446f
--- /dev/null
+++ b/extra/firefox/mozconfig
@@ -0,0 +1,37 @@
+. $topsrcdir/browser/config/mozconfig
+
+ac_add_options --prefix=/usr
+ac_add_options --libdir=/usr/lib
+
+ac_add_options --enable-official-branding
+
+# System libraries
+ac_add_options --with-system-nspr
+ac_add_options --with-system-nss
+ac_add_options --with-system-jpeg
+ac_add_options --with-system-zlib
+ac_add_options --with-system-bz2
+ac_add_options --with-system-png
+ac_add_options --with-system-libevent
+ac_add_options --with-system-libvpx
+ac_add_options --with-system-icu
+ac_add_options --enable-system-hunspell
+ac_add_options --enable-system-sqlite
+ac_add_options --enable-system-ffi
+ac_add_options --enable-system-cairo
+ac_add_options --enable-system-pixman
+
+# Features
+ac_add_options --enable-startup-notification
+ac_add_options --enable-pulseaudio
+ac_add_options --enable-gstreamer=1.0
+
+ac_add_options --disable-crashreporter
+ac_add_options --disable-updater
+ac_add_options --disable-installer
+ac_add_options --disable-debug-symbols
+
+# PGO
+mk_add_options PROFILE_GEN_SCRIPT='EXTRA_TEST_ARGS=10 $(MAKE) -C $(MOZ_OBJDIR) pgo-profile-run'
+
+# vim:set ft=sh:
diff --git a/extra/firefox/rhbz-966424.patch b/extra/firefox/rhbz-966424.patch
new file mode 100644
index 000000000..7579d090f
--- /dev/null
+++ b/extra/firefox/rhbz-966424.patch
@@ -0,0 +1,14 @@
+diff -up firefox-33.0/mozilla-release/toolkit/modules/CertUtils.jsm.966424 firefox-33.0/mozilla-release/toolkit/modules/CertUtils.jsm
+--- firefox-33.0/mozilla-release/toolkit/modules/CertUtils.jsm.966424	2014-10-14 08:12:14.358697255 +0200
++++ firefox-33.0/mozilla-release/toolkit/modules/CertUtils.jsm	2014-10-14 08:17:59.962181908 +0200
+@@ -174,7 +174,9 @@ this.checkCert =
+ }
+ 
+ function isBuiltinToken(tokenName) {
+-  return tokenName == "Builtin Object Token";
++  return tokenName == "Builtin Object Token" ||
++         tokenName == "Default Trust" ||
++         tokenName == "System Trust";
+ }
+ 
+ /**
diff --git a/extra/firefox/vendor.js b/extra/firefox/vendor.js
new file mode 100644
index 000000000..d8d606bc1
--- /dev/null
+++ b/extra/firefox/vendor.js
@@ -0,0 +1,9 @@
+// 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);