There is a previous thread about this (How to build Mozilla VPN Client), however, I wanted to contribute with my experience in building a client for OpenSuse Leap 15.5 for those with limited developer skills like me.
I have successfully built the client and I am able to use it via command line. The only issue I have now, and the reason for this thread, is that GUI does not work.
This is just a compilation of steps I followed by trial-and-error using the output errors I saw during the process. It starts by cloning the git repo:
git clone https://github.com/mozilla-mobile/mozilla-vpn-client/
cd mozilla-vpn-client/
git submodule update --init
Install required packages (C++ and Qt6) to compile the sources:
sudo zypper install -t pattern devel_C_C++
sudo zypper install -t pattern devel_qt6
sudo zypper in cargo
Install the required version of gcc
and point to right version:
sudo zypper in gcc11-c++
gcc --version
sudo rm /usr/bin/gcc
sudo ln -s /usr/bin/gcc-11 /usr/bin/gcc
gcc --version
Also point g++
to right version:
g++ --version
ll /usr/bin/ | grep ++
sudo rm /usr/bin/g++
sudo rm /usr/bin/c++
sudo ln -s /usr/bin/g++-11 /usr/bin/c++
Install and run glean-parser:
pip install glean-parser
python3 ./qtglean/glean_parser_ext/run_glean_parser.py
At this point the error is:
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the
system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY
OPENSSL_INCLUDE_DIR)
So install openssl
sudo zypper in libopenssl-devel
Next error libsecret
, again just install the right package:
-- No package 'libsecret-1' found
CMake Error at /usr/share/cmake/Modules/FindPkgConfig.cmake:556 (message):
A required package was not found
And so on:
sudo zypper in libsecret-devel
sudo zypper in libcap-devel
sudo zypper in go
Finally run cmake:
cmake -DCMAKE_BUILD_TYPE=Release -S mozilla-vpn-client/ -B mozilla_vpn
cmake --build mozilla_vpn/
Once again I get an error, this time something called breakpad
is required and not found, its corresponding directory is empty:
-- Configuring done
CMake Error at external/CMakeLists.txt:121 (add_library):
Cannot find source file:
breakpad/src/common/convert_UTF.cc
Tried extensions .c .C .c++ .cc .cpp .cxx .cu .mpp .m .M .mm .h .hh .h++
.hm .hpp .hxx .in .txx .f .F .for .f77 .f90 .f95 .f03 .ispc
CMake Error at external/CMakeLists.txt:121 (add_library):
No SOURCES given to target: breakpad_client
CMake Generate step failed. Build files cannot be regenerated correctly.
gmake[2]: *** [src/CMakeFiles/sentry.dir/build.make:92: src/sentry-prefix/src/sentry-stamp/sentry-configure] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:1645: src/CMakeFiles/sentry.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2
In this case the solution I found after searching the web was to download, extract, and copy-paste breakpad
sources into mozilla-vpn-client/3rdparty/sentry/external/breakpad/
, find sources in url: https://github.com/google/breakpad/tree/main
.
I imagine that maybe there is a more elegant way to download the sources? Idk.
Same problem with something called LSS, put sources into mozilla-vpn-client/3rdparty/sentry/external/third_party/lss/
, find sources from: https://github.com/cpp-pm/linux-syscall-support
.
The process finished, yay! Go to the directory where the Makefile was created…
cd mozilla_vpn
Compile and install:
make
sudo make install
Now, although there is a direct access link in the Plasma menu it does not work, or at least the GUI cannot start.
However, the command line works just fine, run mozillavpn --help
to see available options. Again after trial-and-error I discovered you have to start the program with:
mozillavpn login
So it can open a browser where you can login, then go back to the terminal. Login sometimes hangs if for some reason the program is already running, check with mozillavpn status
and kill it if necessary.
Again if anybody has any idea why the GUI is not working please let me know I would really appreciate it. Running mozillavpn
or mozillavpn ui
does not output anything in the terminal. For now it does not bother me, I’m used to work with VPNs this way.