✓ These tarballs should be reproducible, meaning you should be able to generate distributables that match the official releases.
This assumes an Ubuntu (x86_64) host, but it should not be too hard to adapt to another similar system.
We distribute two tarballs, a "normal" one (the default, recommended for users), and a strictly source-only one (for Linux distro packagers). The normal tarball, in addition to including everything from the source-only one, also includes:
- compiled (
.mo
) locale files (in addition to source.po
locale files) - compiled (
_pb2.py
) protobuf files (in addition to source.proto
files) - the
packages/
folder containing source-only pure-python runtime dependencies
-
Install Docker
(worth reading even if you already have docker)
-
Build tarball
(set envvar
OMIT_UNCLEAN_FILES=1
to build the "source-only" tarball)$ ./build.sh
If you want reproducibility, try instead e.g.:
$ ELECBUILD_COMMIT=HEAD ELECBUILD_NOCACHE=1 ./build.sh $ ELECBUILD_COMMIT=HEAD ELECBUILD_NOCACHE=1 OMIT_UNCLEAN_FILES=1 ./build.sh
-
The generated distributables are in
./dist
.
These scripts can either build a source-only or a "normal" tarball. The official release process builds both.
The source-only tarball is aimed at Linux distro packagers. Users wanting to run from source should typically use the normal tarball.
The differences are as follows:
- the normal tarball bundles all the pure-python dependencies of Electrum.
These are placed into the
packages/
folder, and they are automatically found and used at runtime. - the normal tarball includes compiled (.mo) locale files, the source-only tarball does not.
Both tarballs contain (.po) source locale files. If you are packaging for a Linux distro,
you probably want to compile the .mo locale files yourself (see
contrib/build_locale.sh
). - the normal tarball includes generated
*_pb2.py
files. These are created usingprotobuf-compiler
from.proto
files (seecontrib/generate_payreqpb2.sh
)