Version 75 (modified by ken@…, 4 years 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.21.0. On BLFS-9.0 and 8.4, this builds using

export CC=clang CXX=clang++ CFLAGS="$CFLAGS -std=c11" CXXFLAGS="$CXXFLAGS -std=c++14"

On BLFS-8.3 I have not been able to build a suitable version of node-js (c++ issues)

nss needs to be at least 3.53.1 with its corresponding version of nspr.

The minimum rustc version remains at 1.41.0, which was buggy. Use 1.42.0. If your version of llvm is less than 10.0, build rustc using its shipped llvm (see

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 becasue 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 ./mach build (but after the exports) works.

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 81.0

cbindgen needs to be >= 0.14.3

nss needs to be >= 3.56

nspr needs to match nss (i.e. 4.28 for nss-3.56)

rustc needs to be >= 1.43, tested with 1.45.2 and 1.46 (using gcc). There are reports that 1.45-series fail to build if the default clang is used.

Dependencies for 82.0beta

nss needs to be >= 3.57 which is latest,

nspr needs to be >= 4.29 which again is latest.

Tested in 82.0b2 with rustc-1.46.0 and gcc


Note: See TracWiki for help on using the wiki.