|Version 96 (modified by 3 months ago) ( diff ),|
Firefox has a nasty habit of requiring a new profile every few releases. I say this is nasty because logins, current tabs, plugins (even if still supported) and perhaps bookmarks can be lost. In addition, it tends to name the profiles default, then default.default when it creates another. This can also apply when downgrading the version (e.g. going from 69.0 to 68.2.0esr). 73.0 required a new profile, that profile continues to work in 78.0
If you wish to use multiple profiles (or to be able to rename or delete old profiles), open firefox with 'firefox -P'.
You can also tell firefox to use a profile which it warns is old, either by invoking it from a term in xorg using 'MOZ_ALLOW_DOWNGRADE=1 firefox' or by invoking it as 'firefox --allow-downgrade'. The latter invocation has been troublesome in the past but appears to work since 68.2.0 and can be used from a desktop 'launcher'.
Which version should I use ?
In general, BLFS tries to always use latest releases. For firefox up to and including 69.0 the latest version has normally been used. But in late 2019 mozilla decided to move to a more-frequent release schedule (eventually 4 weeks instead of 6 or 7 weeks).
Newer versions tend to need newer versions of rust, but this can cause problems with other packages which use rust. In particular, thunderbird releases are based on the firefox esr (extended support releases) code and tend to have code which does not build with the latest version of rust.
There are only a few packages in BLFS which use rust and the editors aim to ensure that all the versions in the book can be built with the same version of rust.
As a result, after firefox-69 the book has moved to the esr versions of firefox which for 68esr was technically a downgrade (see details about profiles above), but contain all the relevant security fixes.
You should always use the latest release, either the latest esr or the latest mainline version (or the latest beta for bleeding edge). And you should remember to update your ca-certificates when building a new version of firefox.
Dependencies for 78-ESR series
Although the book is tested with its latest versions of the dependencies it should be possible to use older versions of some packages:
cbindgen >= 0.14.1 should work
icu needs to be >= 67.1
libwebp >= 1.1.0 should work
node.js needs to be at least v10.19.0. The latest node-v10 is v10.23.1. On BLFS-9.0 and 8.4, v10 built using
export CC=clang CXX=clang++ CFLAGS="$CFLAGS -std=c11" CXXFLAGS="$CXXFLAGS -std=c++14"
nss needs to be at least 3.53.1 with its corresponding version of nspr, but there have been various fixes since then, the latest version of nss continues to be recommended.
The minimum rustc version remains at 1.41.0, which was buggy. But you should upgrade rust to rustc-1.52.0 to fix various vulnerabilities and versions less than 1.52.0 will no longer be used for testing. If your version of llvm is less than 9.1, build rustc using its shipped llvm (see http://wiki.linuxfromscratch.org/blfs/wiki/rust).
Other changes to the build between 68esr and 78esr
The patch for system graphite2 and harfbuzz has been discontinued. Shipped graphite2 was changed by mozilla so that the patch did not build. Later it became clear that with a revised harfbuzz patch the shipped harfbuzz code was still being compiled.
System sqlite can no-longer be used. Many years ago, having the shipped sqlite in the browser but with system sqlite used by other packages was reported to cause problems. So far, things now seem ok.
Importantly, after ff70 ./mach install no longer accepts '--verbose' and errors if it is used.
A profile which was created for 73.0 seems to work ok.
The available configure options have changed dramatically in 78.0, please review the up to date mozconfig in the book.
Changes to the build since 78.0
In firefox-81.0, creating the python virtual environments has been separated out. Trying to run ./mach build reports
Consider running 'mach bootstrap' or 'mach create-mach-environment' to create the mach virtualenvs, or set MACH_USE_SYSTEM_PYTHON to use the system Python installation over a virtualenv.
Trying ./mach bootstrap fails:
NotImplementedError: Bootstrap support for this Linux distro not yet available: lfs
I do not want to try the system python option because that looks as if it will use pip to download required packages and perhaps try to install them on the system.
Using './mach create-mach-environment' before running other mach commands (but after the exports) works.
With 78.7.0 I have changed the './mach build' invocation to first run './mach configure' (just checking deps and creating the build files ("reticulating splines") to be more consistent with conventional packages, followed by './mach build' after noticing this in an AUR thunderbird build.
In firefox-89 the UI has been changed. That has met with mixed reactions.
Note that gcc-11.1.0 as released cannot build 89.0, gcc-10 was ok, as is clang-12.0. That has now been fixed upstream at gcc for gcc-11.2.0 and later https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100644 patch is currently at https://www.linuxfromscratch.org/~ken/test/ pending further testing. Obviously you need to rebuild gcc to use this.
Withdrawal of ftp
Not a change to the build process, but in 90.0 the ability to use ftp links was removed.
Dependencies for the latest release
This is an attempt to help people who want to keep using the latest upstream release, and will be updated from time to time. It is also a store of important changes which will need to be addressed when the book moves to the next ESR version.
Dependencies for 90.0
cbindgen needs to be >= 0.19.0
The node.js version now tests for v10.23.1, but node v10 is no longer maintained. Tested with v14.17.3.
nspr needs to be >= 4.30.0 (tested with 4.32.0)
nss needs to be >= 3.66 (tested with 3.67.0)
rustc needs to be >= 1.47 but you should use 1.52.0 to fix possible vulnerabilities.
Dependencies for 91.0beta
icu now needs to be >= 69.1
nspr now needs to be >= 4.32
nss now needs to be >= 3.68
rustc now needs to be >= 1.51.0
If you wish to use gcc-11.1.0 to build this, you will need to patch gcc, see above.