proton-bridge/BUILDS.md

2.7 KiB

Building Proton Mail Bridge

Prerequisites

  • 64-bit OS:
    • the go-rfc5322 module cannot currently be compiled for 32-bit OSes
  • Go 1.18
  • Bash with basic build utils: make, gcc, sed, find, grep, ...
    • For Windows it is recommended to use MinGW 64bit shell from MSYS2
  • GCC (linux), msvc (windows) or Xcode (macOS)
  • Windres (windows)
  • libglvnd and libsecret development files (linux)

To enable the sending of crash reports using Sentry please set the main.DSNSentry value with the client key of your sentry project before build. Otherwise, the sending of crash reports will be disabled.

Build

In order to build Bridge app with Qt interface we are using Qt 6.3.

Please note that qmake path must be in your PATH to ensure Qt to be found. Also, before you start build on Windows, please unset the MSYSTEM variable

export MSYSTEM=

Build Bridge

  • in project root run
make build
  • The result will be stored in ./cmd/Destop-Bridge/deploy/${GOOS}/
    • for linux, the binary will have the name of the project directory (e.g proton-bridge)
    • for windows, the binary will have the file extension .exe (e.g proton-bridge.exe)
    • for darwin, the application will be created with name of the project directory (e.g proton-bridge.app)

Build Bridge without GUI

  • If you need to build bridge without Qt dependencies, you can do so by running
make build-nogui
  • Bridge without GUI will start by default without any interface (i.e., there is no way to add or remove client, get bridge password, etc)
  • Bridge always has the option (whether built with Qt or without) to use a CLI interface by starting it with the argument -c
  • NOTE: You still need to setup supported keychain on your system

Launchers

Launchers are only included in official distributions and provide the public key used to verify signed app binaries, allowing the automatic update feature. See README for more information.

Tags

Note that repository contains both Bridge and Import-Export apps and they are not released together. Therefore, each app has own tag prefix. Bridge tags starts with br- and Import-Export tags starts with ie-. Both tags continue with semantic versioning MAJOR.MINOR.PATCH. An example of full tag is br-1.4.4 or ie-1.1.2 (current versions in October 2020).

Useful tests, lints and checks

In order to be able to run following commands please install the development dependencies: make install-dev-dependencies

  • make test will run all unit tests
  • make lint will lint the whole project
  • make -C ./test test will run the integration tests
  • make run will build Bridge without a GUI and start it in CLI mode