ProtonMail / proton-bridge

Proton Mail Bridge application
GNU General Public License v3.0
1.1k stars 145 forks source link

Will not build in Fedora 38 #462

Open doggodanubus opened 4 months ago

doggodanubus commented 4 months ago

Issue tracker is ONLY used for reporting bugs with technical details. "It doesn't work" or new features should be discussed with our customer support. Please use bug report function in Bridge or contact bridge@protonmail.ch.

Expected Behavior

It should build without error

Current Behavior

I get this error error.txt

Possible Solution

Steps to Reproduce

  1. clone git
  2. enter directory
  3. make build
  4. fails

Version Information

latest git as of 2/20/24

Context (Environment)

Detailed Description

Possible Implementation

LBeernaertProton commented 4 months ago

Hey @doggodanubus , are you using the official go release binaries? We had a similar issue to yours in the past that was resolved by just switching to the official release binaries rather than the distro provided package.

doggodanubus commented 4 months ago

I removed the installed GO and used GO 1.22 You're using an old version of some libraries. I edited the files to change that to 73. Then I got a missing qml error. There are two errors below.

`-- Bridge version is 3.9.1+git -- Found qmake at /usr/bin/qmake -- Found Protobuf: /home/jcaldwel/Downloads/proton-bridge/extern/vcpkg/installed/x64-linux/tools/protobuf/protoc (found version "3.21.12.0") -- Using protobuf 3.21.12.0 -- Found c-ares: /home/jcaldwel/Downloads/proton-bridge/extern/vcpkg/installed/x64-linux/share/c-ares/c-ares-config.cmake (found version "1.19.0") -- Found RE2 via CMake. -- Using gRPC 1.51.1 -- protoc found /home/jcaldwel/Downloads/proton-bridge/extern/vcpkg/installed/x64-linux/tools/protobuf/protoc -- grpc_cpp_plugin -- grpc_cpp_plugin found at /home/jcaldwel/Downloads/proton-bridge/extern/vcpkg/installed/x64-linux/tools/grpc/grpc_cpp_plugin -- The C compiler identification is GNU 13.2.1 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/lib64/ccache/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Found Python: /usr/bin/python3.12 (found version "3.12.1") found components: Interpreter CMake Warning (dev) at /usr/lib64/cmake/Qt6Core/Qt6CoreMacros.cmake:3119 (message): The FILENAME_VARIABLE keyword is deprecated and will be removed soon. Please use OUTPUT_SCRIPT instead. Call Stack (most recent call first): /usr/lib64/cmake/Qt6Core/Qt6CoreMacros.cmake:3216 (qt6_generate_deploy_app_script) CMakeLists.txt:174 (qt_generate_deploy_app_script) This warning is for project developers. Use -Wno-dev to suppress it.

CMake Error at DeployLinux.cmake:34 (message): libicui18n.so.56 was not found in /usr/lib/ Call Stack (most recent call first): DeployLinux.cmake:43 (AppendLib) DeployLinux.cmake:57 (AppendQt6Lib) CMakeLists.txt:187 (include)

CMake Error at DeployLinux.cmake:34 (message): libicuuc.so.56 was not found in /usr/lib/ Call Stack (most recent call first): DeployLinux.cmake:43 (AppendLib) DeployLinux.cmake:58 (AppendQt6Lib) CMakeLists.txt:187 (include)

CMake Error at DeployLinux.cmake:34 (message): libicudata.so.56 was not found in /usr/lib/ Call Stack (most recent call first): DeployLinux.cmake:43 (AppendLib) DeployLinux.cmake:59 (AppendQt6Lib) CMakeLists.txt:187 (include)

-- Configuring incomplete, errors occurred!

-- Set runtime path of "/home/jcaldwel/Downloads/proton-bridge/cmd/Desktop-Bridge/deploy/linux/bridge-gui" to "$ORIGIN:$ORIGIN/../lib64:$ORIGIN/lib" CMake Error at cmake-build-release/cmake_install.cmake:87 (file): file INSTALL cannot find "/usr/qml": No such file or directory.

doggodanubus commented 4 months ago

Similar or same issue to #346

doggodanubus commented 4 months ago

If you've had issues compiling; this is what I've found.

Fix Go Fix ICU versions Fix unable to find QT library folders.

1) Eviscerate your distributions Go from your system. Install at least Go 1.22 as of this post. I installed it in opt as that will survive when local won't. YMMV

2) Manually change DeployLinux.cmake to the current ICU release not the ancient one.

--- DeployLinux.cmake.back  2024-02-21 23:14:59.558137042 -0500
+++ DeployLinux.cmake   2024-02-21 23:15:16.734067672 -0500
@@ -54,9 +54,9 @@
 AppendQt6Lib("libQt6Core.so.6")
 AppendQt6Lib("libQt6QuickTemplates2.so.6")
 AppendQt6Lib("libQt6DBus.so.6")
-AppendQt6Lib("libicui18n.so.56")
-AppendQt6Lib("libicuuc.so.56")
-AppendQt6Lib("libicudata.so.56")
+AppendQt6Lib("libicui18n.so.73")
+AppendQt6Lib("libicuuc.so.73")
+AppendQt6Lib("libicudata.so.73")
 AppendQt6Lib("libQt6XcbQpa.so.6")
 AppendQt6Lib("libQt6WaylandClient.so.6")
 AppendQt6Lib("libQt6WlShellIntegration.so.6")

I cannot figure out what is screwed up with QT. Nothing I did would work to get those folders to detect right. I don't think this is the bridge code but probably due to something local to my system. I hard coded the locations to the library folder and it compiles and works now. This may not apply to you unless you get an error about a missing qml or /usr/qml

3) Change the top line below in DeployLinux.cmake with the lower one with direct links.

-install(DIRECTORY "${QT_DIR}/qml" "${QT_DIR}/plugins" 
+install(DIRECTORY "/usr/lib64/qt6/qml" "/usr/lib64/qt6/plugins"

This has gotten it to compile and it's survived testing and seems to work ok.

LBeernaertProton commented 4 months ago

We are currently using the official binary releases of a given version of Qt to ship. Our build scripts are written to work against that.