Prog. ChessX unter Fedora 38 compilieren?

Gregorie

Lieutenant
Registriert
Apr. 2017
Beiträge
789
Hallo
ich möchte ein Schachprogramm namens "ChessX" Version 1.6.0 aus dem Quellcode unter Fedora 38 Linux compilieren.
Download u.a. hier: https://sourceforge.net/projects/chessx/files/chessx/1.6.0/
Quellcode: https://github.com/Isarhamster/chessx

Bei Befehl qmake in der Console im Pfad, des entpackten Chessx bekomme ich den Fehler:
qmake
Project ERROR: Unknown module(s) in QT: core5compat multimedia

Qt5Multimedia ist installiert auch sonst QT (c.a. 2GB)
Die Version von ChessX Version 1.5.8 ist bereits aus der Distro. von Fedora 38 installiert und funktioniert soweit auch.
Nur mit den Lichess Server wird nicht verbunden, daher wollte ich die neuere Version ChessX Version 1.6.0 aus dem Programmcode
selbst compilieren. Vom Programmieren verstehe ich nichts.

Laut Anleitung:
## 4.1 Compilation in Linux x64 systems
On Linux x64, the following commands are required for successful compilation:
Build the translations
lrelease-qt5 chessx.pro
Run qmake, specifically qt5 version
qmake-qt5
Compile with
make

Hänge aber schon beim qmake, wegen:
Project ERROR: Unknown module(s) in QT: core5compat multimedia

Nun habe gab ich qmake --projekt im Teminal ein, dann qmake , anschließend make.
Daraufhin folgende Fehlermelung:
Makefile:3604: Warnung: Das Rezept für das Ziel „main.o“ wird überschrieben
Makefile:2401: Warnung: Das alte Rezept für das Ziel „main.o“ wird ignoriert
g++ -c -pipe -O2 -Wall -Wextra -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I. -I. -I/usr/include/qt6 -I/usr/include/qt6/QtGui -I/usr/include/qt6/QtCore -I. -I/usr/lib64/qt6/mkspecs/linux-g++ -o pgn.o lib/chessx-pgn/pgn.cpp
g++ -c -pipe -O2 -Wall -Wextra -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I. -I. -I/usr/include/qt6 -I/usr/include/qt6/QtGui -I/usr/include/qt6/QtCore -I. -I/usr/lib64/qt6/mkspecs/linux-g++ -o main.o src/gui/main.cpp
src/gui/main.cpp:17:10: schwerwiegender Fehler: QApplication: Datei oder Verzeichnis nicht gefunden
17 | #include <QApplication>
| ^~~~~~~~~~~~~~
Kompilierung beendet.
make: *** [Makefile:3604: main.o] Fehler 1

Das Programm barucht QT5 Libs.

Requirements​

To compile ChessX, you need zlib, qmake and Qt5 version 5.14.1 or above.
Install Anleitung: https://github.com/Isarhamster/chessx/blob/master/INSTALL.md
Wie gesagt, vom Programmieren verstehe ich nichts.
 
Zuletzt bearbeitet:
Mein Tipp wäre, dass Du Dich mit "Mock" und "rpmbuild" auseinandersetzt.

1. Spec File aus dem SRPM extrahieren:
https://kojipkgs.fedoraproject.org//packages/chessx/1.5.8/1.fc38/src/chessx-1.5.8-1.fc38.src.rpm
2. Spec File bearbeiten, damit Version 1.6.0 verwendet wird
3. neues SRPM bauen
4. mock auf das neue SRPM ansetzen, dann bekommst Du wahrscheinlich eine vernünftige Version.

Die Alternative wäre einen Bugreport bei Fedora einreichen, dass Version 1.6.0 verfügbar ist.
 
  • Gefällt mir
Reaktionen: Gregorie
@Y-Chromosome
Danke werde ich mir anschauen.
Inzwischen scheint es doch zu klappen, mit dem kompilieren, endet nun aber mit anderen Fehler:
src/dialogs/preferences.cpp:671:46: Fehler: »availableVoices« ist kein Element von »ChessXSettings«
671 | QStringList voiceNames = ChessXSettings::availableVoices(lang);
| ^~~~~~~~~~~~~~~
make: *** [Makefile:4403: obj_rel/preferences.o] Fehler 1

Ich hatte nochmal nachgeschaut, was ich alles an QT installiert habe, QT5; QT6 ... QT 5 compat ..
Ich habe keinen Plan davon, von der Gui QT Creator schon gar nicht.
 
Bei deiner Fehlermeldung steht was mit QT6 versuche mal QT5 zu installieren und alles was du mit QT6 installiert hast wieder entfernen
 
  • Gefällt mir
Reaktionen: Gregorie
@jb_alvarado
Wenn ich alles an qt6 deinstalliere, klappt es auch nicht, dann ist ua. kein qmake mehr vorhanden.
Inzwischen habe ich aber gelesen, dass der letztgenannte Compilierungsfehler bei neuster ChessX Ver. 1.6.0,
was wohl die QT "text to speech" Funktion (Einstellung) angeht, den Entwicklern schon seit Mai 2023 bekannt gegeben wurde.
Es soll in der nächster Version gefixt werden.
Wieso in der Version 1.5.8 keine Verbindung zu den Lichess-Servern hergestellt werden kann, werde ich die Entwickler fragen. Benutzername ohne PW sollte reichen, mit chess.com klappt es problemlos.
So kann man sich, in ChessX gespielte Partien auf chess.com oder lichess (so es klappt), von sich oder anderen abspeichern und analysieren.
 
Zuletzt bearbeitet:
Gregorie schrieb:
Inzwischen scheint es doch zu klappen, mit dem kompilieren, endet nun aber mit anderen Fehler:
src/dialogs/preferences.cpp:671:46: Fehler: »availableVoices« ist kein Element von »ChessXSettings«
Das ist ein Upstreambug. Patch hier.
 
Wenn der Patch schon ins Github Repo eingepfelgt ist, würde ich gleich die Quelle vom Master/Main nehmen.

Edit: habe es mal versucht bei mir zu kompilieren, und nach dem Installieren einiger Pakte ging es auch:
  1. Github Repo clonen
  2. Pakete installieren: dnf install qt6-qtbase qt6-qtbase-devel qt6-qtspeech-devel qt6-qtmultimedia-devel qt6-qtsvg-devel qt6-qt5compat qt6-qt5compat-devel
  3. Sprachdaten erstellen: lrelease-qt6 chessx.pro
  4. compilieren: qmake && make -j8
  5. fertige Binary sollte unter ./release/chessx liegen und kann auch vom Terminal aus ausgeführt werden.
 
Zuletzt bearbeitet:
@jb_alvarado; Uridium
Dank Euch, ich versuche es gerade.
Sprachdaten erstellen: lrelease-qt6 chessx.pro
lrelease-qt6 war auf meinem Fedora noch nicht installiert, scheinbar nur lrelease-qt4.
lrelease-qt6: Befehl nicht gefunden...
Soll das Paket »qt6-linguist« installiert werden, welches den Befehl »lrelease-qt6« bereitstellt? [N/y] y
* Warten in Warteschlange...
* Paketliste wird geladen....
Die folgenden Pakete müssen installiert werden:
qt6-linguist-6.5.2-1.fc38.x86_64 Qt6 Linguist Tools
qt6-qttools-6.5.2-1.fc38.x86_64 Qt6 - QtTool components
qt6-qttools-common-6.5.2-1.fc38.noarch Common files for qt6-qttools.

Nun dieser Fehler:
lrelease-qt6 chessx.pro
Info: creating stash file /home/bill/Downloads/chessx-master/.qmake.stash
WARNING: Project ERROR: Unknown module(s) in QT: svg core5compat
Updating '/home/bill/Downloads/chessx-master/i18n/chessx_de.qm'...
Generated 1062 translation(s) (1062 finished and 0 unfinished)
 
Grundsätzlich fehlt wahrscheinlich das 'qt5-svg' Paket. Des Weiteren vermutlich ein 'qt6-core5compat' (nicht sicher, ob das so heißt). Das brauchst Du vermutlich, da Du es mit QT6 versuchen willst. Eigentlich ist das Programm QT5. Das Arch PKGBUILD z.B. hält sich daran. Daher werden dort wahrscheinlich keine compat Pakete benötigt.
 
  • Gefällt mir
Reaktionen: Gregorie
sudo dnf list "qtsvg"
Letzte Prüfung auf abgelaufene Metadaten: vor 1:38:34 am So 30 Jul 2023 16:22:07 CEST.
Installierte Pakete
qt5-qtsvg.x86_64 5.15.10-1.fc38 @updates
qt5-qtsvg-devel.x86_64 5.15.10-1.fc38 @updates
qt5-qtsvg-doc.noarch 5.15.1-6.fc38 @Fedora
qt5-qtsvg-examples.x86_64 5.15.10-1.fc38 @updates
qt6-qtsvg.i686 6.5.2-1.fc38 @updates
qt6-qtsvg.x86_64 6.5.2-1.fc38 @updates
qt6-qtsvg-devel.x86_64 6.5.2-1.fc38 @updates
Verfügbare Pakete

mingw32-qt5-qtsvg.noarch 5.15.10-1.fc38 updates
mingw32-qt6-qtsvg.noarch 6.5.1-1.fc38 updates
mingw64-qt5-qtsvg.noarch 5.15.10-1.fc38 updates
mingw64-qt6-qtsvg.noarch 6.5.1-1.fc38 updates
qt5-qtsvg.i686 5.15.10-1.fc38 updates
qt5-qtsvg-devel.i686 5.15.10-1.fc38 updates
qt6-qtsvg-devel.i686 6.5.2-1.fc38 updates
qt6-qtsvg-examples.x86_64 6.5.2-1.fc38 updates

Na ja, keine Ahnung, welche QT Pakete ich noch alles nachinstallieren muss.
Kann ich den Patch nicht einfach selbst vornehmen, eine Datei ändern, mit dem neuen Code?
Ergänzung ()

Nachtrag: Jetzt habe ich es mit diversen QT6 Nachinstallationen bzw. Abhänigkeitsauflösungen soweit hinbekommen, das der Compiler ohne Fehler durch lief.
Komischerweise, wurde aber kein Release Ordner mit dem Programm im Downloadordner angelegt, sondern unter user/.local/share/Trash/files/ChessX-Master/release
Das Programm startet auch von dort.
 
Zuletzt bearbeitet:
Ich habe das Programm nochmals neu compiliert, ein paar Warnings gab es zwar, aber lief durch und wurde
ohne Fehler beendet. Anschließend sudo make install, fertig.
Programm geht zwar soweit, aber nun kann ich weder zu Lichess noch zu chess.com verbunden werden. :(
Starte ich chessX aus einem Terminal, bekomme ich diese Fehlermeldungen:
qt.network.ssl: No functional TLS backend was found
qt.network.ssl: No functional TLS backend was found
qt.network.ssl: No functional TLS backend was found
qt.network.ssl: No TLS backend is available
qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed

Kann das daran liegen und fehlt noch irgendwas an QT6-Modulen ?
 
Ich vermute mal, das hier trifft zu:
Qt Network loads OpenSSL libraries (DLLs) when first needed, at runtime. If not found, the application continues to run but fails to handle SSL communication. This is enabled by using the configure option -openssl-runtime.
https://doc.qt.io/qt-6/configure-options.html#ssl
Das würde bedeuten, dass er die openssl runtime libs nicht finden kann. Hast Du openssl installiert?
 
@Uridium
Openssl 1.1 und nun auch noch openssl 1.0 sind installiert.
@jb_alvarado
Falls Du das Programm noch hast, Du hast die Fehlermeldungen bezüglich SSL nicht?
In der Gui der Version 1.6.1.0 unter Hilfe und "über ChessX", gibt es den Reiter SSL.
Dort ist bei mir keine SSL Unterstützung angezeigt.
Aktuell habe ich es mit qmake qt6 erzeugt.
Mit QT5 bekomme bei make compilieren einen Fehler collect2: error: ld returned 1 exit status.
 

Anhänge

  • ChessX hilfe.jpg
    ChessX hilfe.jpg
    129,5 KB · Aufrufe: 104
Zuletzt bearbeitet:
Bei mir sieht es so aus.
Bash:
git clone https://github.com/Isarhamster/chessx.git
cd chessx
lrelease i18n/*.ts
qmake
make

chessx.png
 
Nein, das ist Arch. Ich dachte der Text könnte irgendwie hilfreich sein.
 
  • Gefällt mir
Reaktionen: jb_alvarado
Gregorie schrieb:
Mit QT5 bekomme bei make compilieren einen Fehler collect2: error: ld returned 1 exit status.
Kannst Du das 'make' Log vielleicht mal posten (make 2>&1 | tee log.txt)? 'ld' ist der Linker, der vermutlich openssl nicht findet. Anhand der Fehlermeldung, bzw. der fehlenden 'Symbols' kann man vielleicht die richtige Bibliothek ausfindig machen.
 
  • Gefällt mir
Reaktionen: Gregorie
@Uridium
"plözlich und unerwartet" funktionierte es mit Qt5 und SSL Unterstützung. :)
Bei lrelease und qmake musste ich jeweils Qt5 ergänzen, also qmake-qt5.
Gestern aber gab es bei make dann einen Fehler, nun nicht mehr.
lrelease i18n/*.ts, keine Ahnung was das macht aber egal.
Jetzt kann ich auch auf meine Partien auf chess.com und lichess.org zugreifen.
Das Sprachgedöns, brauche ich nicht, Züge per syntetische Stimme ausgeben.
Zuvor siehe Screenshot, hatte ich mit qt6 keine SSL Unterstützung, warum nicht, keine Ahnung.
 
Qt ist sehr empfindlich, was OpenSSL angeht. Unerwartete Versionen werden abgelehnt. Ich weiß nicht wie die Paketverwaltung bei Fedora das handhabt, aber die OpenSSL Version sollte möglichst jene sein, gegen die Qt5 (oder Qt6) kompiliert wurde.
 
Zurück
Oben