Gentoo EbuildsTesten

Aus VDR Wiki

Wechseln zu: Navigation, Suche

Kurze Sammlung von Infos zum Testen von Ebuilds:

Naja, erstmal eins haben: Im Verzeichnis /usr/portage gibts ein skel.ebuild als Vorlage welches auch gut Dokumentiert ist. Als Startpunkt kann man sich auch ein ebuild nehmen welches schon vorhanden ist und ähnliche Funktion hat. Um parallel zum vorhanden Portage Tree (welcher die Ebuilds enthält) seinen eigenen Ebuilds nutzen zu können gibt es die Funktion des OVERLAY Directorys. Siehe hierzu VdrEbuilds.


Dann ins ebuild Verzeichnis wechseln Beim ersten Test wird ein Digest (MD5, Size ect) der Sourcen erstellt, also ebuild vdr-xx.ebuild digest

aufrufen. Danach sollte sich im Unterferzeichnis files eine Datei namens digest... befinden die etwa so aussieht (hier mit 6 Files von VDR-WO):

MD5 6c849f7d76587098acc49a810cda4669 vdr-1.1.27.tar.bz2 346069
MD5 46880935d56c4ac1f03d971e2dc4720f vdr-1.1.27-AC3overDVB-0.1.6.diff.gz 20598
MD5 9a512c846a85a71c76623ade4baf2fee vdr-analogtv-0.2.1.tar.bz2 50051
MD5 f47adecc539c32e23fbb7eb65efee434 vdr-bitstreamout-0.45b.tar.bz2 123548
MD5 55a3989b1e52a41279bb863d153a9fb3 ElchiAIO3-1.1.27.diff.gz 22453
MD5 4fa3ca106e64876605bafb3d8d2d6988 vdr-osdteletext-0.3.tgz 38463

Ein ebuild vdr-xx.ebuild compile läd die Sourcen und compiliert das Programm. Ruft also die Funktionen src_unpack() und src_compile() aus dem Ebuild auf. --- wenn das glatt geht folgt ein:

ebuild xyz-0.8.ebuild install

Dies installiert noch NIX im System, sondern nur ein Image in der Sandbox. Also z.B. ebuild epm-0.8.ebuild install

>>> md5 ;-) epm-0.8.tar.gz
>>> Checking epm-0.8.tar.gz's mtime...
>>> WORKDIR is up-to-date, keeping...
>>> It appears that epm is already compiled; skipping.
>>> (clean to force compilation)

>>> Install epm-0.8 into /var/tmp/portage/epm-0.8/image/ category sys-apps
man:
strip:
>>> Completed installing into /var/tmp/portage/epm-0.8/image/

danach kann man mit find /var/tmp/portage/epm-0.8/image/ überprüfen was alles und wohin installiert wird.

Falls das alles ok ist, kann man mit: ebuild epm-0.8.ebuild merge das Prog ins System installieren. Hierbei werden keine Abhänigkeiten des Ebuild aufgelöst!


Vorsicht vor Makefiles die z.B. ein "cp xybin /sbin" oder ein su -c "mv /usr/bin/tosvcd /usr/bin/tosvcd.old" enthalten, diese Files tauchen dann nicht in der PKG Datenbank auf!! Und werden bei einem unmerge auch nicht entfernt! Also dann lieber kein "make install" sondern die Ebuild-Funktionen "doins, doexe, dobin ect" benutzen! Siehe http://www.gentoo.org/proj/en/devrel/handbook/handbook.xml?part=2&chap=1#doc_chap4

Deswegen steht in allen vdr-plugin ebuilds ein: sed -i "/cp.*LIBDIR/d" Makefile damit der cp Befehl da raus kommt. Evt. sollte man mal allen Plugin Programmieren stecken das es den Befehl install gibt und desweiteren in Makefiles Variablen wie DESTDIR und PREFIX sinnvoll sind.

So, damit steht hoffendlich deinen neuen Ebuilds nix im Wege ...