This document summarizes the Electrum ABC release procedure.
All commands in this doc assume that the current working directory is the electrum
directory located in the root of
the main repository.
Docker is required for the various build scripts, except for MacOS.
It can usually be installed using your system’s docker
package.
See the official documentation for alternative ways to install it.
To communicate with the docker daemon, the build scripts either need to be called via sudo,
or the unix user on the host system (e.g. the user you run as) needs to be part of the docker
group. i.e.:
sudo usermod -aG docker ${USER}
(and then reboot or similar for it to take effect)
Run:
contrib/make_clean
This will remove most uncommited files and build artifacts from the electrum directory. It ensures the various release packages don’t contain unnecessary files or uncommited changes.
Update the version in electrumabc/version.py
and check the release notes in RELEASE-NOTES.md.
Submit a diff with the version change and potential changes to the release notes. This diff needs to be landed
before proceeding with the release.
The source distribution is a tar.gz package generated on a linux docker, and contains some compiled binaries for optional dependencies.
This source distribution can also be used to run the application from sources on other systems than linux, but
without access to compiled libsecp256k1
or libzbar
libraries. As a result, scanning QR codes might be unavailable
and some cryptographic operations will be significantly slower.
Run:
contrib/build-linux/srcdist_docker/build.sh
The AppImage file generated by this script can be executed on most linux distributions and contains all needed dependencies to use all features of Electrum ABC.
Run:
contrib/build-linux/appimage/build.sh
Three different exe files are generated by the following script:
ElectrumABC-X.Y.Z-setup.exe
installer that installs the application the usual way on Windows, creating the
desktop and start menu shortcuts.ElectrumABC-X.Y.Z.exe
application that can be downloaded and used on Windows without any setup
(similar to how the AppImage is used)ElectrumABC-X.Y.Z-portable.exe
application similar to the previous one, but which stores the user data
(wallets…) in the same directory as the .exe
file. This is meant to be used from a USB drive rather than
copied to the hard drive of the computer running it.Run:
contrib/build-wine/build.sh
Note that at the moment running this script requires the user to have sudo
privileges.
To install the required build dependencies, see the dedicated README.md.
On a Mac OS computer, run:
contrib/osx/make_osx
Use the oldest possible MacOS version for maximum compatibility. Currently, the release files are generated on a MacOS 11 (Big Sur) system.
This procedure assumes that all files will be located in the dist/
directory in the Electrum ABC source tree.
Most files will be generated there. However, the Mac OS release involves a manual copy of the dmg file.
The public GPG keys used to sign the release are located in contrib/pubkeys
. This directory also contains a
README.md file explaining the procedure to verify a release file.
Run:
contrib/sign_packages
The script will prompt for your key’s password.
It generates a text file containing the sha256sum of all the release files (sha256_checksums-X.Y.Z.txt
),
and then produces a detached signature using GPG (sha256_checksums-X.Y.Z.txt.sig
)`.
Both files are generated in the dist
directory.
Before uploading the release to github, the release commit needs to be pushed to the master branch of the Electrum ABC github repository.
Option 1: Wait for the automated repository synchronization to push the commit. This task runs once a day.
Option 2: Manually trigger the repository synchronization task on CI (Extract Electrum ABC from ABC), or ask someone with the required permission to do it for you.
Option 3 Run the contrib/extract-electrum.sh
script from the root of the monorepo, and push manually:
contrib/extract-electrum.sh
cd electrumabc-mirror/
git remote -v # verify that the remote name is "github"
git push github master
This option requires that you have the push permission on the Github repository.
Then draft a new release on the github repository, select the release commit (usually the latest commit on master)
and add a new X.Y.Z
tag. Attach the binary files, the checksum file and the signature file located in dist
.
When all binaries are uploaded, publish the release.
See the Managing releases in a repository
documentation for the complete procedure.
Deploy the bitcoinabc.org website to update the versions and download links on https://www.bitcoinabc.org/electrum/.
Once the version and download links are available on the download page https://www.bitcoinabc.org/electrum/, and all the release files are tested, follow the steps explained in the update_checker’s README.md.