Howto plugins ?

Ik vraag me af of er ergens een Howto is om plugins te maken.

Wat heb je nu precies nodig en hoe ga je te werk. Ik denk dat meer mensen met deze vraag rondlopen. Daarom dacht ik dat het misschien slim is om er een topic over te starten.

't Is namelijk zo dat er een aantal leuke ideeen zijn en dan wordt er snel gezegd van:“Maak er een plugin voor”. Misschien is het dan ook slim hoe dat precies in zijn werk gaat.

Voor onder cygwin (windows) heb ik hier alvast een link gevonden om de cvs te downloaden/compileren : cygwin howto

als ik die instructies opvolg en ./autogen.sh doe krijg ik het volgende :

Code:

[dbox@linux cdk]$ ./autogen.shGenerating configuration files for tuxbox-cdk, please wait.... aclocal libtoolize --automake autoconfCannot create temp file /home/dbox/tmp/acout.P9jXQsCannot create temp file /home/dbox/tmp/acin.ey6lEsautoconf: configure.in: No such file or directory automake --add-missing

De directory tmp heb ik handmatig aangemaakt en een touch file gedaan.. Ik heb schrijfrechten. Alleen de fout blijft…

Als je de CDK werkend hebt, dan kan je in dit topic een demo plugin halen uit de bijlage. Ik heb daar een simpele makefile gemaakt voor compileren plugins.

Ronald

Heb de plugin uit dat topic gebruikt maar als ik nu

make demo

doe, krijg ik de volgende melding:

collect2: ld returned 1 exit status

make: *** [demo] Error 1

Iemand een idee wat dit is

Had je de opmerking in dat topic van m0rpheus nog gelezen. In de Makefile zit een ‘bug’ dat hij compileerd met de host c-compiler. Mijn compile env. ziet er zo uit:

export CROSS_COMPILE=powerpc-tuxbox-linux-gnu-

export AR=${CROSS_COMPILE}ar

export AS=${CROSS_COMPILE}as

export LD=${CROSS_COMPILE}ld

export CC=${CROSS_COMPILE}gcc

export CXX=${CROSS_COMPILE}g++

export NM=${CROSS_COMPILE}nm

export RANLIB=${CROSS_COMPILE}ranlib

Als je deze env settings doet, dan zal hij compileren en linken met de crosscompiler

Ronald

Had ik inderdaad gelezen, maar zie ook dingen als:

/hdd/tb/stable/cdk/include/c++/3.2.2/bits/basic_string.h:229: undefined reference

voorbij komen.

:confused:

Ging bij mij erg lang goed, tot hij kwam bij:

“make -C /home/bla/tuxbox-cvs/apps/tuxbox/plugins all install”

Hierbij krijg ik:

/bin/sh ../../libtool --mode=link powerpc-tuxbox-linux-gnu-gcc -Wall -mcpu=823

-mmultiple -mstring -meabi -pipe -O2 -g3 -gdwarf-2 -o libfx2.la -rpath /home/bla/dbox2/cdkroot/lib/tuxbox/plugins -module -avoid-version draw.lo pig.lo r

cinput.lo math.lo

libtool: link: `math.lo’ is not a valid libtool object

make[4]: *** [libfx2.la] Error 1

Heeft iemand hiervoor een work-around?

Dat is toch nog bij het installeren van de cvs ?

Ja, klopt. Maar ik neem aan dat dat eerst helemaal goed moet gaan, voordat ik plugins kan compileren.

Noleech,

Met het bouwen van de plugins uit de cvs source tree heb ik ook wel eens problemen gehad. Ik had toen de plugins gebouwd met de -i make flag (ignore errors) Probeer eens het volgende (als workaround):

cd /home/bla/tuxbox-cvs/cdk

make

make -i .plugins # Let niet op errors die hier optreden

make .enigma

PS Vergeet de punten niet voor plugins en enigma

De make -i maakte toen bij mij genoeg om vervolgens de rest te kunnen compileren. Gebruik de -i flag alleen bij make .plugins niet bij andere make commando’s. Gaat het maken van enigma nu goed, dan is je omgeving goed voor het maken van je eigen plugins.

Ronald

Ik heb de voorbeeld plugin gebouwd en dat gaat zonder foutmelding, hier strip gerunned vanuit cdk/powerpc-tuxbox-linux-gnu/bin/ en demo.so en demo.cfg naar de dreambox gecopieerd. Als ik nu vanuit het menu probeer om de plugin te runnen krijg ik een foutmelding dat hij een undefined symbol heeft en wel _ZN11eMessageBoxC17eStringSO_ii

Iemand enig idee hoe hiermee verder?

Peter

Als je een ‘unresolved symbol’ krijgt, dan is het voor 99% zeker dat de CVS checkout die je gebruikt niet matched met de CVS checkout waar enigma mee gebouwd is.

In mijn omgeving heb ik alles uit gechecked op rel_1_0_0 en vervolgens enigma geupdate naar de CVS-head met de commando’s:

cd ???/apps/tuxbox/enigma

cvs update -APd .

Ronald

Ga ik proberen. Bedankt!

Peter

Hoi,

Dit was inderdaad de oplossing. Dan kan het nu echt gaan beginnen :+1:

Peter

@Ronaldd: BEDANKT! Had al een tijdje niet meer het development forum gelezen, dus vandaar de late reactie. Na de make -i van de plugins, loopt enigma nu lekker door. Hopelijk gaat het nu helemaal goed.

Tijd om met de demo plugin source te experimenteren! :grin:

Citaat:

In mijn omgeving heb ik alles uit gechecked op rel_1_0_0 en vervolgens enigma geupdate naar de CVS-head met de commando’s:

cd ???/apps/tuxbox/enigma
cvs update -APd .

Ronald

Is dit altijd het juiste commando om je sources van de DB te updaten vanuit CVS?

Peter

Uit checken op branch -r rel_1_0_0 is sticky, dat zelfde geldt voor updaten naar de head (-A). Dus als je de complete source tree uit checked met -r rel_1_0_0 dan blijft, bij iedere update, de rel_1_0_0 branch in gebruik. De update -A is een ‘force head’ update en zorgt ervoor dat enigma up2date is met de head (het verwijderd de rel_1_0_0 sticky)

Wil je vervolgens de complete tree updaten dan kan dat gewoon met een simpel ‘cvs update .’ commando in de directory waar je de directories ‘app’ ‘cdk’ driver’ ed. vind. Eventueel kan je bij de update de opties -Pd meegeven, dan worden lege directories verwijderd en nieuwe directories worden uit gechecked.

Ronald

Ok dus na een head update is om correct bij te blijven eeen “cvs update .” voldoende of begrijp ik nu toch iets niet?

Peter

.