[Announce] libSkindesignerAPI

  • eurofinder: wahrscheinlich wird bei dir beim Bauen vom Skindesigner die libskindesignerapi nicht korrekt gelinkt. Was sagt denn:


    Code
    pkg-config --cflags libskindesignerapi
    pkg-config --libs libskindesignerapi


    Korrekterweise sollte das


    Code
    maschine skindesigner # pkg-config --cflags libskindesignerapi
    -I/usr/local/include
    maschine skindesigner # pkg-config --libs libskindesignerapi
    -L/usr/local/lib -lskindesignerapi


    ergeben.


    Ciao Louis

  • louis:
    # pkg-config --cflags libskindesignerapi
    -I/usr/local/include
    # pkg-config --libs libskindesignerapi
    -L/usr/local/lib -lskindesignerapi


    3PO:
    # pkg-config --variable pc_path pkg-config |cut -d ':' -f1
    /usr/lib/pkgconfig


    Gruß
    eurofinder

    Hardware: Linux4Meida cine S2 DVB-S2 * M3N78-VM *Athlon64 X2 4850e AM2 * 2 GB Ram* WD10EADS Caviar Green 1TB
    Software : gen2vdr

  • Nutze PClinuxOS und erhalte beim Start des vdr immer die Meldung:
    vdr: libskindesignerapi.so.0: Kann die Shared-Object-Datei nicht öffnen: Datei oder Verzeichnis nicht gefunden


    ich musste bei mir den fehlenden Link /usr/lib64/libskindesignerapi.so.0 mit ldconfig erstellen, habe eine rpm basierende Distri(Fedora).
    # install missing symlink (was giving no-ldconfig-symlink rpmlint errors)
    ldconfig -n %{buildroot}%{_libdir}



    # rpm -ql libskindesignerapi
    /usr/lib64/libskindesignerapi.so.0
    /usr/lib64/libskindesignerapi.so.0.0.1
    /usr/share/doc/libskindesignerapi
    /usr/share/doc/libskindesignerapi/README
    /usr/share/licenses/libskindesignerapi
    /usr/share/licenses/libskindesignerapi/COPYING

    Gruß Marco


    HW: TT6400-S2
    SW: Fedora 37, kernel-6.1.6-200.fc37.x86_64, vdr-2.6.1-2.fc37.x86_64


    Fedora37 x86_64 Gnome Desktop 42.2 Ausgabe über das vdr-softhddevice plugin

    ViewSonic VX3276 HDMI-1 <------------> HDMI NVidia Geforce-gt-1030

    ViewSonic VX3276 HDMI-2 <------------> HDMI Technotrend S2-6400


  • [...] wie findet man das Standard include Verzeichnis des OS heraus?


    Laut FHS ist das "/usr/include"


    Von daher müsste das Makefile so ausehen:



  • Das PREFIX bei der lib und den Headern zu ignorieren ist wirklich der falsche Weg. Wenn man nach /usr/local installieren will, muss auch alles da landen. Das ganze hilft auch nicht gegen den fehlenden symlink auf .so.0.
    Dafür ist normalerweise ldconfig verantwortlich, weil man durchaus mehrere verschiedene Majorversionen einer lib parallel installieren darf.
    Siehe https://github.com/flensrocker…/blob/master/Makefile#L67
    Während des Baus des Pakets (bei mir Debian) wird kein Link angelegt, weil der nichts im Paket zu suchen hat. Darum kümmert sich der Paketmanager bei der Installation. Benutzt man keinen Paketmanager (DESTDIR ist leer), dann macht es das Makefile.


    Es ist also Sache des Paketmanagers. Wenn der symlink fehlt, ist die Paketkonfiguration falsch.


    Lars

  • Moin,


    ich werde das mal so lassen wie es ist, bei den meisten Distris scheint es ja zu passen. Wenn mir Leute von Distris einen Text zukommen lassen, was genau bei Ihnen zu tun war, dann kann ich das ja ins README aufnehmen.


    Ciao Louis

  • Ok. Danke für die Ausführungen.


    Was müsste ich denn jetzt in PCLInuxOS einpflegen, damit die libskindesignerapi.so.0 gefunden wird?


    Ich habe die Datei inzwischen an alle nur erdenklichen Plätze hinkopiert - hilft aber alles nichts.


    Was mich auc hstutzig macht ist, dass alle anderen libs auf *.so.2.2.0 enden und hier wird nach *.so.0 gesucht.


    Ist das so korrekt?


    Gruß
    eurofinder

    Hardware: Linux4Meida cine S2 DVB-S2 * M3N78-VM *Athlon64 X2 4850e AM2 * 2 GB Ram* WD10EADS Caviar Green 1TB
    Software : gen2vdr

  • Was mich auc hstutzig macht ist, dass alle anderen libs auf *.so.2.2.0 enden und hier wird nach *.so.0 gesucht.


    Ja das ist korrekt, die 2.2.0 stammt ja vom VDR und kennzeichnet Libs, die für eine bestimmtre VDR Version gebaut sind. Die Libskindesignerapi hat ja erst mal nix mit dem VDR zu tun.


    Ciao Louis

  • Naja, ich habe auch dein Makefile umgebaut.


    Das habe ich (leider) gesehen und habe es hier kommentiert.


    Ciao Louis

  • Wo soll der Vorteil sein, die Library als eigenes Paket zu haben? Keines der Plugins, das aktuell auf der "libskindesigner" aufbauen soll, funktioniert ohne das Skindesigner-Plugin selbst. Oder habe ich da etwas übersehen?


    Eine Library, die ihrerseits auf VDR-Source-Bestandteilen aufbaut... Das musste für Probleme sorgen. Schon weil es beim VDR eben verschiedene Arten gibt, etwas zu bauen. Immerhin kann keiner sagen das ich euch da nicht weit im Voraus gewarnt hätte ;)


  • Ja das ist korrekt, die 2.2.0 stammt ja vom VDR und kennzeichnet Libs, die für eine bestimmtre VDR Version gebaut sind. Die Libskindesignerapi hat ja erst mal nix mit dem VDR zu tun.


    Eben doch! Du holst Header-Dateien vom VDR in deine Library. Damit wird sie mit einem VDR-Update potentiell inkompatibel und muss zusätzlich neu kompiliert werden. Ein Grund mehr das mit dem Plugin "Skindesigner" auszuliefern. Zumindest bei vdr4arch gibt es einen Automatismus um alle Plugins bei einem VDR-Update zu versionieren um einen kompletten Rebuild der Plugins auszulösen.

  • Bei den Debian-Paketen gibt es auch einen abi-Versionsmechanismus, mit dem man Inkompatibilitäten verhindern kann.
    Ich sehe da kein Problem.


    Und wenn man den vdr manuell mit LCLBLD oder sonst was baut, kann man auch die lib usw. benutzen, man muss dann eben nur dafür sorgen, dass die Suchpfade für Header und Libs entsprechend angepasst sind. Der vdr ist da mit seinem Konzept eher die Ausnahme als die Regel, deshalb kann man von den Anwendern auch erwarten, dass sie sich mit den Mechanismen vertraut machen und nicht das Makefile auf einen Nicht-Standardfall umbiegen.


    Lars

  • Da mini73 die Diskussion zum Makefile hier weiterführen möchte, schreibe ich meine Antworten eben hier rein.


    Es macht keinen Sinn, die Lib zusammen mit dem Skindesigner zu installieren, das müssen zwei getrennte Pakete sein. Spätestens bei der Installation von tvguideng und weatherforecast benötigt man eine sauber installierte Lib.

    Warum macht es keinen Sinn? Zum Zeitpunkt an dem tvguideng und weatherforecast gebaut werden ist das Paket für skindesigner (inkl. der Lib) bereits fertig. Also ist die Lib dann bereits "installiert"

    Hm, ich sehe den Unterschied zwischen dem Skindesigner und z.B. tvguideng nicht. Beide brauchen die Lib, beide binden sie (per pkg-config) analog ein.

    Der Unterschied ist, das der skindesigner zusammen mit der Lib ausgeliefert wird.

    Als Distributor kann man natürlich auch das eine Verzeichnis getrennt als Sourcetarball ablegen und daraus ein eigenes Paket machen.

    Ich wüsste nicht wie. Wenn ich die neuste Version des Skindesigners aus dem CGit System herunterlade bekomme ich die Library gleich mit dazu. Es ist nicht meine Aufgabe als Distributor den Sourcecode zu trennen, im Gegenteil (siehe unten)

    Aber es existiert hier und da eben auch die Einstellung: ein Source, ein Paket.

    Genau. 1 Quellpaket --> 1 Zielpaket. Bei Arch Linux liegt es im ermessen des Distributors, ob er diese Regel nicht anwendet. Ich könnte die libskindesignerapi natürlich in ein eigenes Paket packen (warum auch immer ich das machen sollte), deswegen muss das aber trotzdem in einem Rutsch gebaut werden können.



    Ich wollte mich dazu ursprünglich gar nicht äußern. Diese Diskussionen mit dir (louis) führen nämlich zu nichts. Wenn man dann das richtige Argument gefunden hat, auf das du keine Antwort mehr weißt, wird man einfach ignoriert.
    Deswegen habe ich stillschweigend dein Makefile für meine Zwecke repariert.

  • Moin,

    Warum macht es keinen Sinn? Zum Zeitpunkt an dem tvguideng und weatherforecast gebaut werden ist das Paket für skindesigner (inkl. der Lib) bereits fertig. Also ist die Lib dann bereits "installiert"


    d.h. du musst darauf achten, dass der Skindesigner vor den beiden anderen Plugins installiert wird, das ist doch auch blöd. Wenn du die Lib zuerst (falls überhaupt notwendig) eigenständig bauen würdest, wäre die Reihenfolge der Installation der Plugins völlig egal.


    Der Unterschied ist, das der skindesigner zusammen mit der Lib ausgeliefert wird.


    Ok, wie würdest du es denn machen wenn die Lib in einem eigenen Git wäre?


    Genau. 1 Quellpaket --> 1 Zielpaket. Bei Arch Linux liegt es im ermessen des Distributors, ob er diese Regel nicht anwendet. Ich könnte die libskindesignerapi natürlich in ein eigenes Paket packen (warum auch immer ich das machen sollte), deswegen muss das aber trotzdem in einem Rutsch gebaut werden können.


    Wie geschrieben, in bin kein Paketbauer. Aber nach meinem Verständnis sollte es doch auch die Möglichkeit geben, nur ein bestimmtes Plugin zu aktualisieren oder? Wenn nur der Skindesigner (ohne Änderungen an der Lib) aktualisiert werden soll, baust du die Lib trotzdem.


    Ich wollte mich dazu ursprünglich gar nicht äußern. Diese Diskussionen mit dir (louis) führen nämlich zu nichts. Wenn man dann das richtige Argument gefunden hat, auf das du keine Antwort mehr weißt, wird man einfach ignoriert.
    Deswegen habe ich stillschweigend dein Makefile für meine Zwecke repariert.


    Ich dachte mir schon, dass du wegen der Geschichte mit dem Fallback Verhalten vom TVGuide immer noch beleidigt bist. Ich habe mir bei der damaligen Diskussion das Recht herausgenommen, die Reimer Fraktion ab einem gewissen Punkt zu ignorieren, weil ich den Eindruck hatte, ihr wolltet mich einfach nicht verstehen und habt einfach stur weiter argumentiert, ohne nur einmal über meine Argumente nachzudenken. Das war mir schlicht zu zeitintensiv und auch zu nervig, meine Beweggründe bis ins Detail zu rechtfertigen. Du solltest anderen ihre Meinung zugestehen und auch in Erwägung ziehen, dass diese Meinung trotz der Tatsache, dass sie nicht deiner eigenen entspricht, durchaus sinnvoll sein kann. Weiterhin solltest du in der Lage sein, sowas auch mal abzuhaken. Das zeugt von Größe ;) Sorry wenn das jetzt etwas von oben herab rüberkommt, aber mit über 20 Jahren mehr Lebenserfahrung sollte man das auch mal dürfen.


    Ciao Louis

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!