Index: introduction/welcome/changelog.xml
===================================================================
--- introduction/welcome/changelog.xml	(revision 691f4f702c6b7ad4a9e831bf0f5c6c433a51ec85)
+++ introduction/welcome/changelog.xml	(revision d5d7cd60cf6db3a18f8db16023577e92ad3dc58b)
@@ -45,4 +45,11 @@
       <para>June 29th, 2020</para>
       <itemizedlist>
+        <listitem>
+          <para>[ken] - Update to firefox-78.0esr. If updating from firefox-68esr,
+          please read the wiki entry for firefox first. This version will expect
+          a newer profile, but starting from a term with '--enable-downgrade' to use
+          an existing profile seems to work. Fixes
+          <ulink url="&blfs-ticket-root;13721">#13721</ulink>.</para>
+        </listitem>
         <listitem revision="systemd">
           <para>[pierre] - Add instructions and informations for mounting lvm
Index: packages.ent
===================================================================
--- packages.ent	(revision 691f4f702c6b7ad4a9e831bf0f5c6c433a51ec85)
+++ packages.ent	(revision d5d7cd60cf6db3a18f8db16023577e92ad3dc58b)
@@ -901,5 +901,5 @@
 <!ENTITY falkon-minor-version         "0">
 <!ENTITY falkon-version               "&falkon-major-version;.&falkon-minor-version;">
-<!ENTITY firefox-version              "68.9.0"> <!-- also used for JS68 -->
+<!ENTITY firefox-version              "78.0">
 <!ENTITY flashplayer-version          "27.0.0.187">
 <!ENTITY qupzilla-version             "2.2.6">
Index: xsoft/graphweb/firefox.xml
===================================================================
--- xsoft/graphweb/firefox.xml	(revision 691f4f702c6b7ad4a9e831bf0f5c6c433a51ec85)
+++ xsoft/graphweb/firefox.xml	(revision d5d7cd60cf6db3a18f8db16023577e92ad3dc58b)
@@ -7,13 +7,13 @@
   <!ENTITY firefox-download-http "&mozilla-http;/firefox/releases/&firefox-version;esr/source/firefox-&firefox-version;esr.source.tar.xz">
   <!ENTITY firefox-download-ftp  " ">
-  <!ENTITY firefox-md5sum        "a1156aed941b28a06115a9450a46563d">
-  <!ENTITY firefox-size          "303 MB">
+  <!ENTITY firefox-md5sum        "0a095e672a2e1e468a21a0d0c9a328ae">
+  <!ENTITY firefox-size          "318 MB">
   <!-- NB with stylo, much of the build uses rust, and therefore cargo files.
     But the extra cached cargo files, if any, seem to be minimal -->
-  <!ENTITY firefox-buildsize     "4.3 GB (167 MB installed) without tests">
+  <!ENTITY firefox-buildsize     "4.9 GB (184 MB installed) without tests">
   <!-- editors: with ff63 and rust-1.29, ./mach build -j4 is probably the
    most practical way to get a timing on a machine with more cores, if taking
    cores offline is not practical. If in doubt, round up -->
-  <!ENTITY firefox-time          "22 SBU (on a 4-core machine) without tests">
+  <!ENTITY firefox-time          "32 SBU (on a 4-core machine) without tests">
 ]>
 
@@ -76,15 +76,4 @@
     </itemizedlist>
 
-    <bridgehead renderas="sect3">Additional Downloads</bridgehead>
-    <itemizedlist spacing="compact">
-      <listitem>
-        <para>
-          Optional patch to allow system versions of <xref linkend="graphite2"/>
-          and <xref linkend="harfbuzz"/>:
-          <ulink url="&patch-root;/firefox-&firefox-version;esr-system_graphite2_harfbuzz-1.patch"/>
-        </para>
-      </listitem>
-    </itemizedlist>
-
     <note>
       <para>
@@ -115,9 +104,9 @@
       <para>
         As with other large packages which use C++ (or rust), the SBU times
-        to build this vary more widely than you might expect. Also, 6GB
-        of real memory is used during the final link and the SBUs can increase
-        significantly if the machine has to swap.
-      </para>
-
+        to build this vary more widely than you might expect. The build times
+        will increase significantly if your machine has to swap.
+      </para>
+
+      <!-- commented, by 78.0 it seems to work reliably
       <para>
         The mach build system (Python scripts) can be somewhat unreliable: if
@@ -128,5 +117,5 @@
         running one set of jobs - that will make the build take about 3 times as
         long as running with four sets of jobs.
-      </para>
+      </para>-->
 
       <para>
@@ -143,7 +132,4 @@
       <xref linkend="autoconf213"/>,
       <xref linkend="cbindgen"/>,
-      <!-- with ff-69.0 the configure system was happy to continue to disable
-        dbus-glib, but linking libxul.so failed because rust code uses it, so
-        make it required and remove from mozconfig : ken -->
       <xref linkend="dbus-glib"/>,
       both <xref linkend="gtk3"/> and
@@ -157,5 +143,7 @@
         now deprecated by mozilla), in either case please read the
         Configuration Information,
-      <xref linkend="rust"/>,
+      <!-- rustc is required by cbindgen so not needed here
+      <xref linkend="rust"/>,-->
+      <xref linkend="startup-notification"/>,
       <xref linkend="unzip"/>,
       <xref linkend="yasm"/>, and
@@ -167,9 +155,6 @@
       <xref linkend="icu"/>,
       <xref linkend="libevent"/>,
-<!-- fails to build in 65.0 (headers changed)
-      <xref linkend="libvpx"/>, -->
       <xref linkend="libwebp"/>,
-      <xref linkend="nasm"/>, and
-      <xref linkend="sqlite"/>
+      <xref linkend="nasm"/>
     </para>
 
@@ -190,12 +175,8 @@
       <xref linkend="liboauth"/>,
       <xref linkend="openjdk"/>,
-      <xref linkend="startup-notification"/>,
       <xref linkend="valgrind"/>,
       <xref linkend="wget"/>,
       <xref linkend="wireless_tools"/>,
-      <ulink url="https://github.com/libproxy/libproxy">libproxy</ulink>,
-      and (with the patch)
-      <xref linkend="graphite2"/> and
-      <xref linkend="harfbuzz"/>
+      <ulink url="https://github.com/libproxy/libproxy">libproxy</ulink>
     </para>
 
@@ -234,6 +215,5 @@
 #ac_add_options --with-google-location-service-api-keyfile=$PWD/google-key
 
-# Uncomment this line if you have installed startup-notification:
-#ac_add_options --enable-startup-notification
+# startup-notification is required since firefox-78
 
 # Uncomment the following option if you have not installed PulseAudio
@@ -244,7 +224,5 @@
 # Comment out following options if you have not installed
 # recommended dependencies:
-ac_add_options --enable-system-sqlite
 ac_add_options --with-system-libevent
-# firefox-65 understands webp and ships with an included copy
 ac_add_options --with-system-webp
 ac_add_options --with-system-nspr
@@ -262,9 +240,4 @@
 ac_add_options --enable-official-branding
 
-# If you are going to apply the patch for system graphite
-# and system harfbuzz, uncomment these lines:
-#ac_add_options --with-system-graphite2
-#ac_add_options --with-system-harfbuzz
-
 # Stripping is now enabled by default.
 # Uncomment these lines if you need to run a debugger:
@@ -277,8 +250,4 @@
 ac_add_options --disable-debug-symbols
 
-# The BLFS editors recommend not changing anything below this line:
-ac_add_options --prefix=/usr
-ac_add_options --enable-application=browser
-
 # The elf-hack is reported to cause failed installs (after successful builds)
 # on some machines. It is supposed to improve startup time and it shrinks
@@ -286,4 +255,7 @@
 ac_add_options --disable-elf-hack
 
+# The BLFS editors recommend not changing anything below this line:
+ac_add_options --prefix=/usr
+ac_add_options --enable-application=browser
 ac_add_options --disable-crashreporter
 ac_add_options --disable-updater
@@ -295,12 +267,8 @@
 ac_add_options --enable-optimize
 
-# From firefox-61 system cairo is not supported
-
 ac_add_options --enable-system-ffi
 ac_add_options --enable-system-pixman
 
-# From firefox-62 --with-pthreads is not recognized
-
-ac_add_options --with-system-bz2
+# --with-system-bz2 was removed in firefox-78
 ac_add_options --with-system-jpeg
 ac_add_options --with-system-png
@@ -323,12 +291,14 @@
     </para>
 
-    <para>
-      If you have installed system versions of graphite2 and harfbuzz and wish
-      firefox to use those instead of its shipped versions, apply the patch and
-      uncomment the appropriate entries in the <filename>mozconfig</filename>
-      file.
-    </para>
-
-<screen><userinput>patch -Np1 -i ../firefox-&firefox-version;esr-system_graphite2_harfbuzz-1.patch</userinput></screen>
+     <para>
+       In the esr version of firefox-78, the code to ensure that add-ons
+       are signed by the trused root has been disabled, presumably for
+       organizations which require their own add-ons. To enable it as an
+       added security measure issue the following command:
+     </para>
+
+<screen><userinput>sed -i -e 's/Disable/Enable/'      \
+ -e '/^MOZ_REQUIRE_SIGNING/s/0/1/' \
+ build/mozconfig.common</userinput></screen>
 
     <para>
@@ -376,5 +346,5 @@
 
     <para>
-      Now invoke the Python2 script to compile the package.
+      Now invoke the Python script to compile the package.
     </para>
 
@@ -418,16 +388,12 @@
 
     <para>
-      <command>sed -e 's/checkImpl/checkFFImpl/g' ...</command>: Although the
-      package ships with a modified version of <application>ICU-63</application>
-      and only tests that the system version, if used, is at least 63, changes
-      from upstream 63 cause builds with the system version to fail with an error
-      message <literal>no void JSContext::checkImpl_63 member function</literal>.
-      The sed renames the local function. Upstream ICU-64 works around this.
-    </para>
-
-    <para>
       <command>export CC=gcc CXX=g++ ...</command>: Upstream now prefer
-      <application>clang</application>, but gcc is a more secure compiler and
-      now produces reasonably-sized builds.
+      <application>clang</application> so that they can use one compiler
+      everywhere. On the X86 architectures <application>clang</application>
+      now appears to support the same security-hardening options as
+      <application>GCC</application>. With the current versions,
+      <application>GCC</application> creates a marginally bigger build but
+      takes typically 2 SBU less time on a 4-core machine using the mozconfig
+      above.
     </para>
 
@@ -450,5 +416,5 @@
     <para>
       <command>./mach build</command>: <application>Firefox</application>
-      now uses this <application>python2</application> script to run the
+      now uses this <application>python</application> script to run the
       build and install.
     </para>
@@ -457,17 +423,12 @@
       <option>./mach build --verbose</option>: Use this alternative if you
       need details of which files are being compiled, together with any C or
-      C++ flags being used.
+      C++ flags being used. But do not add '--verbose' to the install command,
+      it is not accepted there.
     </para>
 
     <para>
       <option>./mach build -jN</option>: The build should, by default, use
-      all the online CPU cores. There are two reasons to specify the number
-      of cores, e.g. -j4 for 4 cores: First, if using all the cores causes
-      the build to swap because you have insufficient memory (e.g. for 4 cores
-      a build without system graphite2 and harfbuzz now uses towards 8GB
-      of RAM). In such cases, using fewer cores can be faster. Second, on some
-      machines the middle part of the build can drag on as if only one core is
-      present. In those cases, specifying the number of cores may speed up the
-      build.
+      all the online CPU cores. If using all the cores causes the build to swap
+      because you have insufficient memory, using fewer cores can be faster.
     </para>
 
@@ -485,10 +446,4 @@
       class="directory">/usr/lib/mozilla/plugins</filename> by default, but the
       symbolic link is made to keep all the plugins installed in one folder.
-    </para>
-
-    <para>
-      <option>export CC=clang CXX=clang++ AR=llvm-ar NM=llvm-nm RANLIB=llvm-ranlib</option>:
-      Use this as an alternative to building with gcc and g++ if you wish to use
-      the clang toolchain. Remember to unset these variables after the build.
     </para>
 
@@ -537,6 +492,7 @@
 
       <para>
-        With this version of <application>firefox</application>, getting
-        working sound can be a problem.  Although upstream prefers pulseaudio,
+        Occasionally, getting working sound in
+        <application>firefox</application> can be a problem.  Although upstream
+        prefers pulseaudio,
         on balance using <application>Alsa</application> may be easier.
       </para>
@@ -589,4 +545,30 @@
         <command>about:profiles</command>.
       </para>
+
+      <para>
+        Although WebRender (using the GPU for compositing) is not used by
+        default, it now appears to work well on supported hardware (ATI, Nvidia
+        and Intel GPUs with Mesa-18 or later. For an explanation, please see
+        <ulink
+       url="https://hacks.mozilla.org/2017/10/the-whole-web-at-maximum-fps-how-webrender-gets-rid-of-jank/">hacks.mozilla.org</ulink>.
+       The only downside seems to be that on a machine with limited RAM it might
+       use more RAM.
+     </para>
+
+    <para>
+      To check if WebRender is being used, look in about:support. In the Graphics
+      section Compositing will either show 'Basic' (i.e. not in use) or
+      'WebRender'. To enable it, go to about:config and change gfx.webrender.all
+      to True. You will need to restart firefox.
+    </para>
+
+    <para>
+      It may be useful to mention the processes from firefox which can appear in
+      <command>top</command> - as well as firefox itself, there may be multiple
+      Web Content processes, and now an RDD Process (Remote Data Decoder) which
+      appears when playing web videos encoded with av1 (libdav1d). If WebRender
+      has been enabled, a GPU Process will also appear when firefox has to
+      repaint (e.g. scrolling, opening a new tab, or playing a video).
+    </para>
 
     </sect3>
