Ich nutze auch LCLBLD und habs zum Laufen bekommen, ohne das Makefile anzupassen.
Aber so wie bereits geschrieben fehlt das "make install", das hab ich manuell im entsprechenden Verzeichnis gemacht.
Die Plugins selbst bauen auch so, nur der VDR selbst startet dann nicht ohne das vorherige manuelle "make install".
[Announce] libSkindesignerAPI
- louis
- Geschlossen
-
-
Ja, das liegt an der dann nicht erreichbaren libskindesignerapi.so, aber das kriegen wir auch noch hin. Wenn es dann funktioniert, solltest du die installierte lib wieder deinstallieren.
Ich sag bescheid, wenn ich was hab.Lars.
-
Hallo Louis,
hast du denn die aktuelle Version am laufen?
Ja.
Hast du dazu das Makefile bzw. die Makefiles geändert?
Nein, ich habe nur eine für mich passende Make.config des vdr.
Bist du auch so einer, der kein "make install" macht?
Das wäre dann selbst für meine Verhältnisse zu 'rustikal' Dann müsste ich ja mit der Sackkarre nacharbeiten
Gruß,
Tomas -
LCLBLD ist aber dafür gedacht, kein "make install" zu machen. Das sollte man nur benutzen, wenn man den vdr aus dem Sourcetree heraus laufen lassen möchte.
http://projects.vdr-developer.…vdr.git/tree/INSTALL#n358Wenn man sowieso ein "make install" machen möchte, braucht man kein LCLBLD. Denn dann werden ja die Verzeichnisse auf Werte festgelegt, mit denen ein installierter vdr nicht anfangen kann.
http://projects.vdr-developer.…/Make.config.template#n47Lars.
-
LCLBLD ist aber dafür gedacht, kein "make install" zu machen. Das sollte man nur benutzen, wenn man den vdr aus dem Sourcetree heraus laufen lassen möchte.
Genau das mache ich doch! Zusätzlich noch ONEDIR=1 und ich kann mehrere Versionsstände mit unterschiedlichen Konfigurationsverzeichnissen testen.
Das 'make install' dient mir ja nur dazu z.B. die neuesten skindesignerskins ins Zielverzeichnis kopieren zu lassen....
Gruß,
Tomas -
LCLBLD hat ja mehrere Probleme.
...
Das einzige, was libskindesignerapi bei LCLBLD machen müsste, wäre, direkt nach dem Bau einen Symlink libskindesignerapi.so auf libskindesignerapi.so.VERSION anzulegen, da der Linker ja nur nach .so-Dateien schaut. Der Link darf aber auch nur bei LCLBLD angelegt werden.Ich hab heute Abend etwas Zeit, da kann ich das mal probieren.
Lars.
hört sich gut an, dann muss kann ich den Workaround aus meiner rpm spec-Datei entfernen.
Hier mal die basierende rpm.spec Datei vdr-skindesigner.txt -
LCLBLD ist aber nichts für den Paketbau. Zumindest unter Debian ist das dev-Paket für den so-Link verantwortlich.
Hintergrund:
Eine shared lib ist durch ihre SO/Major-Version festgelegt. Ändert sich die ABI einer lib (nur, wenn ein vorhandenes Interface geändert wird, nicht, wenn neue dazukommen), muss sie die Major Version hochzählen. Trotzdem ist es möglich, eine ältere Version parallel installiert zu haben.
Installiert werden die libs mit angehängter vollständiger Version und ein Link mit der Major-Version auf die volle Version.Das dev(el)-Paket bringt die Header mit. Und da der Linker nur nach einer so-Datei sucht, muss das dev(el)-Paket den so-Link auf die richtige volle Version setzen. Denn von dem dev(el)-Paket kann im Normalfall immer nur eine Version installiert sein, da die Header der verschiedenen Major-Versionen meistens an der gleichen Stelle liegen.
Deshalb bringt das Debian-Paket diesen Symlink mit, der wird nicht vom Makefile erzeugt.
https://github.com/flensrocker…skindesignerapi-dev.linksOder hab ich dich falsch verstanden?
Lars.
-
Ich nutze auch LCLBLD und habs zum Laufen bekommen, ohne das Makefile anzupassen.
Aber so wie bereits geschrieben fehlt das "make install", das hab ich manuell im entsprechenden Verzeichnis gemacht.
Hab ich auch so gemacht, .... make install im ./PLUGIN/src/libSkindesignerAPI, ....läuftGrüße, Peter
-
Hier mal was zum Probieren für LCLBLD. Ich gehe mal davon aus, dass ihr dann auf alle Fälle eine Make.config im vdr-Verzeichnis benutzt? Sonst funktioniert LCLBLD eh' nicht richtig...
skindesigner:
Diff
Alles anzeigendiff --git a/libskindesignerapi/Makefile b/libskindesignerapi/Makefile index fa1ce56..40ba289 100644 --- a/libskindesignerapi/Makefile +++ b/libskindesignerapi/Makefile @@ -22,7 +22,7 @@ PKGCFG = $(if $(VDRDIR),$(shell pkg-config --silence-errors --variable=$(1) $(VD CXXFLAGS = $(call PKGCFG,cxxflags) LDFLAGS = -shared -Wl,-soname,$(SONAME) -DEFINES += -DAPIVERSION=$(MAJOR) -DLIBVERSION=\"$(VERSION)\" +DEFINES += -DLIBAPIVERSION=$(MAJOR) -DLIBVERSION=\"$(VERSION)\" INCLUDES += SRCS = $(wildcard *.c) @@ -47,6 +47,10 @@ $(DEPFILE): Makefile $(TARGET_LIB): $(OBJS) $(CXX) ${LDFLAGS} -o $@ $^ + if [ -n "$(LCLBLD)" ] ; then \ + ln -s $(TARGET_LIB) $(LIBNAME).so ; \ + ln -s $(TARGET_LIB) $(SONAME) ; \ + fi # pkg-config @@ -84,7 +88,7 @@ install: install-lib install-pc install-includes .PHONY: clean clean: - -rm -f ${TARGET_LIB} ${OBJS} $(DEPFILE) $(LIBNAME).pc $(LIBNAME).so $(ARCHIVE).tgz + -rm -f ${TARGET_LIB} ${OBJS} $(DEPFILE) $(LIBNAME).pc $(LIBNAME).so $(SONAME) $(ARCHIVE).tgz dist: clean @-rm -rf $(TMPDIR)/$(ARCHIVE)
weatherforecast:
Diff
Alles anzeigendiff --git a/Makefile b/Makefile index 7e4b9d0..35ac845 100644 --- a/Makefile +++ b/Makefile @@ -54,10 +54,26 @@ DEFINES += -DPLUGIN_NAME_I18N='"$(PLUGIN)"' LIBS += $(shell pkg-config --libs libcurl) LIBS += $(shell pkg-config --cflags --libs jansson) +ifdef LCLBLD + +SKINDESIGNER_PATH = $(shell pwd)/../skindesigner +LIBSKINDESIGNERAPI_PATH = $(SKINDESIGNER_PATH)/libskindesignerapi + +# make sure the lib and pkg-config file exists +DUMMY:=$(shell $(MAKE) -C $(LIBSKINDESIGNERAPI_PATH) LCLBLD=$(LCLBLD)) + +INCLUDES += -I$(SKINDESIGNER_PATH) +LIBS += -L$(LIBSKINDESIGNERAPI_PATH) $(shell pkg-config --libs $(LIBSKINDESIGNERAPI_PATH)/libskindesignerapi.pc) +DEFINES += -DLIBSKINDESIGNERAPIVERSION='"$(shell pkg-config --modversion $(LIBSKINDESIGNERAPI_PATH)/libskindesignerapi.pc)"' + +else + INCLUDES += $(shell pkg-config --cflags libskindesignerapi) LIBS += $(shell pkg-config --libs libskindesignerapi) DEFINES += -DLIBSKINDESIGNERAPIVERSION='"$(shell pkg-config --modversion libskindesignerapi)"' +endif + ### The object files (add further files here): OBJS = $(PLUGIN).o \
Der erste hunk beim skindesigner ist unabhängig von LCLBLD. APIVERSION wird schon im vdr definiert, deshalb sollte die lib einen eigenen define dafür benutzen.
Um den vdr dann zu starten, müsst ihr den LD_LIBRARY_PATH entsprechend setzen:
Lars
-
Moin,
da hier keine Einsprüche kamen, habe ich die Änderungen mal im skindesigner 0.4.3, tvguideng 0.1.2 und weatherforecast 0.1.1 eingebaut.
Ich hoffe damit ist das Thema erledigt...danke nochmal an Lars
Ciao Louis
-
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!