[Announce] libSkindesignerAPI

  • Moin,

    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.

    Die Lib ist kein Plugin. Es ist korrekt, dass die Lib bei einem VDR Update neu gebaut werden sollte. Aber das kann man doch auch unabhängig von den Plugins machen. Erst den VDR, dann die Lib, dann die Plugins, und zwar egal in welcher Reihenfolge. Das wäre der saubere Weg. Die Lib muss eigentlich nur in zwei Fällen neu gebaut werden: entweder die Lib selbst hat sich geändert oder der VDR wurde erneuert.

    Ciao Louis

  • Moin!

    Ich arbeite gerade an einem Patch für skindesigner, so dass der skindesigner dann die lokale lib aus dem Source-Verzeichnis nutzt und man erst mal alles bauen und anschließend installieren kann. Dann kann man das auch leichter in zwei (Installations-)Pakete aufteilen.

    Ich teste gerade noch ein bisschen, kommt aber gleich, natürlich nur als Diskussionsgrundlage gedacht.

    Lars.

    vdr2: yaVDR 0.5/softhddevice @ G540, Intel DH67BLB3, Asus GT610/2GB, DDBridge + 2x DuoFlex C/T
    hdvdr: yaVDR unstable/softhddevice @ E8400, Asus P5Q SE Plus, 1x L4M-TwinCI + Flex C/T, 1x Sundtek MediaTV Pro, GT520
    Plugins: | avahi4vdr | dbus2vdr | dynamite | epg2timer | noepg | pvrinput | sundtek |

  • Deswegen habe ich stillschweigend dein Makefile für meine Zwecke repariert.


    Reparieren muss man nur Code welcher nicht baut, so wie ich damals den Extensionpatch, nachdem Du Ihn in den Haenden hattest :D
    Das Makefile hier hingegen baut , evtl nicht in deiner Distribution dann muss Du es eben "anpassen" was Du ja auch gemacht hast ...

    Gen2VDR - HW: Asrock Q1900 Geforce 730 / Cine-S2

  • 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.

    tvguideng und weatherforecast haben eine Abhängigkeit auf das skindesigner Plugin. das geht sozusagen automatisch.

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

    Dann wäre ich dazu gezwungen ein eigenes Paket zu machen. Arch Developer Regeln und so. Es ist einfach so, dass ein Quellpaket erstmal komplett durchgebaut wird und dann erst am Ende entschieden wird, ob alles in einem Paket bleibt, oder in mehrere aufgeteilt wird. Daran kann ich auch nicht wirklich etwas ändern.

    Wenn nur der Skindesigner (ohne Änderungen an der Lib) aktualisiert werden soll, baust du die Lib trotzdem.

    Ja, zwangsläufig, weil eben das gesamte Quellpaket in einem Rutsch gebaut wurde.

    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.

    Ich akzeptiere deine Meinung natürlich. Bitte nicht falsch verstehen.
    Ich verstehe deine Beweggründe zwar immernoch nicht, aber mir ist es mittlerweile auch egal, wie es gemacht ist. Es ist natürlich schade, das so schöne Skins, wie z.B. skinflat ausgeschlossen werden.

    VDR4Arch ➡️ Die VDR Distribution für Arch Linux

  • Code
    PCDIR ?= $(shell pkg-config --variable pc_path pkg-config |cut -d ':' -f1)


    Das funktioniert hier leider gar nicht, dadurch hat man ja gar keine Kontrolle mehr darüber, wo die pc-Datei installiert wird.

    Bei mir sieht das so aus:

    Code
    $ pkg-config --variable pc_path pkg-config
    /usr/local/lib/x86_64-linux-gnu/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig


    D.h. es wird immer an eine Stelle installiert, wo ich es evtl. gar nicht haben will. Wenn ich die lib nach /usr installieren möchte, sollte die pc-Datei auch dort liegen.

    Unter Ubuntu scheint pkg-config also per default so konfiguriert zu sein, dass es pc-Dateien unter /usr/local und /usr findet, und /usr/local natürlich zuerst, weil da ein Benutzer seinen Kram installieren darf/soll, der nicht vom Paketmanager abgedeckt wird.
    Wenn ich aber das Plugin/die lib in ein Paket verpacke, muss ich es nach /usr installieren.

    Ich bin dafür, es wieder wie vorher zu machen:

    Code
    PCDIR  ?= $(PREFIX)/lib/pkgconfig


    Dann kann jeder es über die Build-Umgebung festlegen, wo es hin installiert werden soll.

    Rest kommt gleich, bin mit den Tests gleich durch.

    (und bitte nicht wieder in Diskussionen wie "Gentoo ist besser als Ubuntu" oder "Ubuntu ist ja auch doof" verstricken, zusammen sollten wir einen Weg finden, der in jeder Distribution ohne große Klimmzüge funktioniert)

    Lars.

    vdr2: yaVDR 0.5/softhddevice @ G540, Intel DH67BLB3, Asus GT610/2GB, DDBridge + 2x DuoFlex C/T
    hdvdr: yaVDR unstable/softhddevice @ E8400, Asus P5Q SE Plus, 1x L4M-TwinCI + Flex C/T, 1x Sundtek MediaTV Pro, GT520
    Plugins: | avahi4vdr | dbus2vdr | dynamite | epg2timer | noepg | pvrinput | sundtek |

  • Leider gibt es "PREFIX" nicht in der vdr.pc, da gibt es nur direkt das Plugin-Lib-Verzeichnis usw.
    D.h. für sowas wie libskindesignerapi kommt man nicht drumrum, PREFIX manuell beim Bauen zu setzen. Es sei denn, Klaus erweitert die vdr.pc noch z.B. mit VDR_PREFIX, wo PREFIX aus der Make.config drin gespeichert wird.

    Lars.

    vdr2: yaVDR 0.5/softhddevice @ G540, Intel DH67BLB3, Asus GT610/2GB, DDBridge + 2x DuoFlex C/T
    hdvdr: yaVDR unstable/softhddevice @ E8400, Asus P5Q SE Plus, 1x L4M-TwinCI + Flex C/T, 1x Sundtek MediaTV Pro, GT520
    Plugins: | avahi4vdr | dbus2vdr | dynamite | epg2timer | noepg | pvrinput | sundtek |

  • So, hier mal mein Vorschlag für das Makefile (unten als Anhang):


    Die pkg-config-Aufrufe für die libskindesignerapi hab ich an Stellen ausgelagert, wo sie gebraucht werden und wo dann auch sichergestellt ist, dass die lib schon gebaut wurde. Und es wird dann auch die pc-Datei aus dem Unterverzeichnis benutzt und nicht irgend eine Datei aus dem System, die ggf. zu einer älteren Version gehört.

    Der skindesigner selbst benutzt immer die lokale lib aus dem Sourceverzeichnis selbst, braucht also keine installierte lib im System. Das macht die Entwicklung am Plugin selbst dann auch einfacher. Sonst müsste man ja nach jeder Änderung an der lib diese erst installieren, bevor man am skindesigner arbeiten kann. Das ist nicht praktikabel.

    Beim "make" wird dann zuerst die lib gebaut, bei "make install" wird sie auch mit installiert. Je nach Umgebung muss man dann beim Installieren das PREFIX angeben, wie man das in normalen Build-Umgebungen eben macht, also ggf. "PREFIX=/usr make install" aufrufen. Natürlich könnte man irgendeine Variable aus der vdr.pc nehmen (z.B. bindir oder libdir) und daraus das PREFIX erraten, aber wirklich sicher ist das nicht. Schöner wäre evtl. sowas:

    Lars.

  • Ich sehe was du gemacht hast. Ich weiß aber noch nicht so richtig, worauf du hinaus willst.
    Dieser Patch macht meine Änderungen unnötig.

    Was ich allerdings immernoch nicht verstehe ist, warum ich die libskindesigner in ein eigenes Paket stecken soll.
    Damit tvguideng funktioniert braucht es immer sowohl die libskindesigner, als auch das skindesigner-Plugin.

    VDR4Arch ➡️ Die VDR Distribution für Arch Linux

  • Das musst du nicht. Unter Debian ist es aber durchaus üblich. Und jetzt ist es vernünftig möglich, wenn man es möchte.

    Lars.

    vdr2: yaVDR 0.5/softhddevice @ G540, Intel DH67BLB3, Asus GT610/2GB, DDBridge + 2x DuoFlex C/T
    hdvdr: yaVDR unstable/softhddevice @ E8400, Asus P5Q SE Plus, 1x L4M-TwinCI + Flex C/T, 1x Sundtek MediaTV Pro, GT520
    Plugins: | avahi4vdr | dbus2vdr | dynamite | epg2timer | noepg | pvrinput | sundtek |

  • Hi Lars,

    danke für den Patch. Die jetzige Variante ist wohl doch sinniger, das erleichtert das Handling. Ich war zu sehr darauf fixiert, die Lib als eigenständig zu betrachten. Ich habe den Patch ins Git übernommen und eine Version 0.4.2 getaggt, damit man das auch vernünftig ausprobieren kann. Ausserdem habe ich das README angepasst - die Lib ist jetzt offiziell Teil des Skindesigners ;)

    Das muss natürlich nicht die entgültige Version sein...wenn sich in der weiteren Diskussion herausstellt, dass noch etwas verbesserungswürdig ist und ein Konsens besteht, übernehme ich das natürlich. Wie Lars schon geschrieben hat, es geht hier nicht um irgendwelche Distributionsthematiken, sondern darum, einen besten gemeinsamen Nenner zu finden.

    Was ich wohl auch noch einbauen werde, dass bei gesetztem "LCLBLD" die benutzten Pfade der Lib komplett individuell konfigurierbar sind...es gibt doch noch einige "ich will alles in einem Verzeichnis haben" Anhänger.

    Ciao Louis

  • Ich muss demnächst dann noch mal testen, ob noch alles vernünftig neu gebaut wird, wenn man z.B. bei einem libskindesignerapi-Header etwas ändert. Das hab ich noch vergessen, komme heute aber nicht mehr dazu.

    Lars

    vdr2: yaVDR 0.5/softhddevice @ G540, Intel DH67BLB3, Asus GT610/2GB, DDBridge + 2x DuoFlex C/T
    hdvdr: yaVDR unstable/softhddevice @ E8400, Asus P5Q SE Plus, 1x L4M-TwinCI + Flex C/T, 1x Sundtek MediaTV Pro, GT520
    Plugins: | avahi4vdr | dbus2vdr | dynamite | epg2timer | noepg | pvrinput | sundtek |

  • Habe gerade eine Aktualisierung aus dem GIT gemacht- jetzt läuft es.

    Gruß
    Eurofinder

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

  • Local bauen funktioniert nun.

    Als Ubuntu Paket klappt es bei mir noch nicht

    Code
    dh_usrlocal: debian/libskindesignerapi/usr/local/include/libskindesignerapi/osdelements.h is not a directory
    dh_usrlocal: debian/libskindesignerapi/usr/local/include/libskindesignerapi/skindesignerosdbase.h is not a directory
    dh_usrlocal: debian/libskindesignerapi/usr/local/include/libskindesignerapi/skindesignerapi.h is not a directory
    rmdir: konnte »debian/libskindesignerapi/usr/local/include/libskindesignerapi“ nicht entfernen: Das Verzeichnis ist nicht leer
    dh_usrlocal: rmdir debian/libskindesignerapi/usr/local/include/libskindesignerapi returned exit code 1
    make: *** [binary] Fehler 1
    dpkg-buildpackage: Fehler: Fehler-Exitstatus von debian/rules binary war 2

    Gruß
    Frodo

    Meine VDR Hardware

    YaVDR 0.6: Intel DQ67SW, Digital Devices Octopus Duo CI, 2x DD DuoFlex S2 V4, NVIDIA GT 610 (GF119), IMON VFD

    YaVDR 0.6: Asus Z170I PRO GAMING, NVIDIA GT 1030 (GP108-A), SilverStone ML02B-MXR, IMON LCD

    YaVDR 0.6: Intel DH67CF, TT S2-6400, NVIDIA GTX 1050 (GP107-A)

    YaVDR 0.5: Intel DH67BL, TT S2-6400, TT S2-3200, NVIDIA 210 (GT218)

    YaVDR 0.6: Zotac D2550ITX, NVIDIA GT 610 (GF119) onboard, IMON VFD

  • Zum einen würde ich PREFIX=/usr in die rules schreiben, zum anderen müsste ich mir erst mal die install-Dateien in deinem Paket ansehen. Komme ich aber erst Mittwoch zu.

    Lars

    vdr2: yaVDR 0.5/softhddevice @ G540, Intel DH67BLB3, Asus GT610/2GB, DDBridge + 2x DuoFlex C/T
    hdvdr: yaVDR unstable/softhddevice @ E8400, Asus P5Q SE Plus, 1x L4M-TwinCI + Flex C/T, 1x Sundtek MediaTV Pro, GT520
    Plugins: | avahi4vdr | dbus2vdr | dynamite | epg2timer | noepg | pvrinput | sundtek |

  • 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 ;)

    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 ;)


    Weil einige Distributionen eine Politik haben, daß gebündelte Bibliotheken nicht mit ausgelierfert werden dürfen.
    Siehe auch Fedora unbundle Politik und
    Debian/Ubuntu unbundle Politik

    ohne die libskindesignerapi als separate lib zu kompilieren, würde es eben kein vdr-skindesigner/weatherforcast-Paket für Fedora geben, und ich habe halt gerne den VDR unter Fedora.

    Was für ein Mist, sehe gerade, daß sich vdr-skindesigner-0.4.2 (mit der 0.4.1 vor der Änderung des Makefiles ging es noch) nicht mehr bauen lässt, da ich ja auf eine vorkompilierte libskindesignerapi lib verweise und beim Paketbau natürlich das libskindesignerapi Verzeichnis löschen muss.

    Code
    + make 'CFLAGS=-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64 -mtune=generic -fPIC' 'CXXFLAGS=-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64 -mtune=generic -fPIC' -j3 all
    make -C libskindesignerapi
    make[1]: *** libskindesignerapi: No such file or directory.  Stop.
    Makefile:119: recipe for target 'libskindesignerapi' failed

    Gruß Marco

    HW: TT6400-S2
    SW: Fedora 41, kernel-6.13.5-200.fc41.x86_64, vdr-2.6.9-2.fc41.x86_64

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

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

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

    Edited 2 times, last by marco (April 6, 2015 at 7:54 PM).

  • Weil einige Distributionen eine Politik haben, daß gebündelte Bibliotheken nicht mit ausgelierfert werden dürfen.
    Siehe auch Fedora unbundle Politik und
    Debian/Ubuntu unbundle Politik

    So, und jetzt stehe ich dumm da. Ich finde nichts dergleichen bei Arch Linux.
    Ich zerbreche mir schon eine halbe Stunde den Kopf, wo ich das her hab.

    VDR4Arch ➡️ Die VDR Distribution für Arch Linux

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!