Andy@Arch Wie schreibe ich denn einen "Buildconflict" in das PKGBUILD?
Du meinst, wie man im PKGBUILD mittels cmake bzw. gcc den Linker auf einen bestimmten Linker festlegt?
Das solltest du (wie in den AUR Kommentaren vom Maintainer auch erwünscht) mit ihm klären. Ich habe da nur rudimentäre Kenntnisse (mehr: was passiert gerade, aber nicht: wie regele ich das genau).
Eine kurze Suche gibt IMHO zwei Ansätze:
a) über CMAKE_LINKER_TYPE [¹]
b) gcc über Compiler-Optionen den Linker mitteilen -fuse-ld=xxx [²]
Letzteres scheint aber nur für andere Linker (also z.B. wirklich den lld) funktioniert (?), man kann damit gcc nicht sagen: Nutze auf jedenfall deinen "Default-Linker"(ld) (???). Evtk. kann ein Kundiger in Sachen c/c++ Kompilierung dazu was genaues sagen...
Fakt ist nur: der gcc verwendet scheinbar den ersten gefundenen Linker (bei dir lld: Found ld.lld with version: 22.1.2-- Selecting lld as linker). Und dieser Linker vom LLVM scheint zumindest Probleme gleich mit der main-Funktion des kompilierten Programms zu haben - entweder weil nicht gcc-kompatibel(?) oder es liegt am Quellcode von mixxx). Evtl. gibt es für lld noch bestimmte Optionen, um das zu vermeiden. Habe ich keine Ahnung (und Interesse).
Der Maintainer wundert sich ja, warum es mit ldd als Linker nicht funktioniert und hätte gerne mehr Infos. Da würde ich ansetzen. Es geht ja um das Paket im AUR.
Du solltest also den lld nochmal installieren und wohl das komplette Buiuld-Log dem Maintainer bereitstellen.
Du kannst auch gerne die Links zu meinen beiden o.a. Build-Logs (clean chroot) dem Maintainer mitteilen.
Andy@Arch Was wird beim check() genau geprüft?
Nee, das ist was ganz anderes. Hier wird die Funktionalität des erstellten Programms/Libs getestet. Der Entwickler schreibt Tests um bestimmte Teile zu testen. z.B.: In Funktion A erwarte ich einen Rückgabewert von 23. Wenn das Programm (und sein Umfeld, shared libs) richtig funktioniert dann ist der im Test ermittelte Wert eben 23. Wenn nicht, dann schlägt dieser Test fehl. Überfliege mal z.B. das o.a. check-Log von mir, dann kriegst du einen Eindruck was diese >800 Test so machen. Und schau dir auch mal einen der FAILED-Ausgaben an, diese erklären sich vom Ansatz her selbst.
Kurz: Das Programm ist eigentlich vom Quellcode gesehen nur dann in Ordnung wenn alle aktivierten Tests fehlerfrei durchlaufen. Wenn nicht:
- stimmen entweder die Tests nicht
- hat der Quellcode selbst Fehler
- haben sich Rahmenbedingungen/Funktionen in extern genutzen Libs geändert.
Zu mixxx selbst: Das ist ja ausdrücklich eine Beta-Version !
Es kann sein, daß die Tests z.B. unter Debian stable durchlaufen, aber eben unter einem aktuellen Archlinux nicht. Da sich Funktionalität in den genutzten Bibliotheken/Tools (QT,ffmpeg,...) weiterentwickelt/geändert haben in den jeweils aktuellen Versionen. Da muß der Entwickler ran, um solche Dinge zu beheben.
Wenn du die check-Funktion im PKGBUILD wegläßt (weil Tests eben fehlschlagen), dann ist das ein Risiko. Es ist also nicht gesichert, daß das Programm das macht was es soll ("funzen") oder nicht noch schlimmeren Schaden anrichtet. Ich würde das Ernst nehmen.
Generell: Solche Dinge sind ein Grund, warum ich meine AUR-Builds nur in einem sauberen chroot erstellen lasse. Da kommen sich "lokale"(also mein System) Gegebenheiten und Erstellung nicht in die Quere. Ich mülle mir auch mein System nicht mit "Bauschrott" (Depends,BuildDepends) zu und kann sicher sein, daß das Paket jeweils unter einem aktuellen, sauberen(configs) Archlinux erstellt wird.
######## Footnotes
[¹] https://cmake.org/cmake/help/latest/variable/CMAKE_LINKER_TYPE.html
[²] https://stackoverflow.com/questions/1867745/cmake-use-a-custom-linker
Das ist ein sehr alter Thread, es kann sein daß sich mit aktuellem gcc einiges geändert hat.