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.
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.
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
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.
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
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:
@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!
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.