Il mio primo ebuild (link) ha richiesto solo un paio d’ore; provo a descrivere quello che ho fatto.
- Ho sistemato l'header dell'ebuild
Le varie Keyword sono ben descritte sulla documentazione di gentoo. Ricordare di mettere ~x86 se lo si vuole ridistribuire in quanto indica l'instabilità dell'ebuild# ========================================================================== # ***************** Sigmalab Portage Overlay (02/26/07) ***************** # ***************** For more info go to ***************** # ========================================================================== # Copyright 1999-2007 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $inherit eutilsDESCRIPTION="Disruption Tolerant Networking (DTN)" HOMEPAGE="http://www.dtnrg.org" SRC_URI="http://www.dtnrg.org/docs/code/${PN}_${PV}.tgz"LICENSE="Apache-2.0" SLOT="0" KEYWORDS="~x86" - La seconda parte è data dalle dipendenze e dalle possibili use flag:
Anche qui nulla di nuovo, in depend la sintassi è la stessa dei package del portage; nel mio caso ho anche specificato la versione esatta, ma potrebbe non essere necessario. Da notare invece che alcune dipendenze possono essere necessarie solo se una specifica flag è attiva in quel caso guardate questo esempio:IUSE="oasys" DEPEND=">=dev-lang/tcl-8.0.0 >=sys-libs/db-4.2.52_p4-r2"mysql? ( >=dev-db/mysql-3.23.49 ) - Passiamo ora alle variabili globali
Attenzione solo alcune variabili sono modificabili, altre sono readonly! (vedi qui)INSTALLDIR="/usr/local/bin/" S=${WORKDIR}/${PN}_${PV} - come compilare il pacchetto
Questo codice è utile se usate gli autotools;src_compile() { cd ${S} ./configure -C --verbose || die "configure problem" emake || die "compile problem" } - e ora la parte difficile installare tutto secondo logica
Complesso non è vero? Per comprendere i vari comandi nella bibliografia troverete i link a vari articoli che spiegano dettagliatamente ogni comando. Suggerisco di seguire questo ordine per i comandi : demoni, directory necessarie, librerie, compilati, documenti e manuali. In particolare vorrei far notare che il demone viene installato nella directory di default /usr/bin se avesso voluto cambiare la destinazione avrei dovuto ricorrere a into /usr/local/, tenendo presente che da li in poi i vari comandi do* avrebbero preso come root la nuova /usr/local, quindi occhio a quando lo fate. Altro problema lo avrei avuto se avessi voluto creare una cartella specifica per ragruppare i binari all’interno di /usr/local infatti se avessi creato una cartella al suo interno, quanto chiedo con il tab la completazione del testo avrei come risultato valido anche il nome della cartella.src_install() { emake DESTDIR={D} install || die "install problem"# il demone dobin daemon/dtnd keepdir /etc/dtn insinto /etc/dtn doins daemon/dtn.conf dtn/dtn.conf# per salvare i bundles e i db keepdir /var/tmp/dtn keepdir /var/tmp/dtn/bundles keepdir /var/tmp/dtn/db# installo le librerie base keepdir /usr/include/dtn insinto /usr/include/dtn doins applib/*.hif use oasys ; then keepdir /usr/include/dtn/oasys insinto /usr/include/dtn/oasys doins oasys/*.h fi
exeinto /usr/local/bin/
doexe apps/dtnperf/dtnperf-client doexe apps/dtnperf/dtnperf-server doexe apps/dtnrecv/dtnrecv.1 doexe apps/dtnsend/dtnsend.1
for appsname in $(echo “dtnping dtntest dtncp dtncpd dtnmoteproxy dtntunnel dtnrecv dtnsend”); do doexe apps/$appsname/$appsname done
dohtml doc/manual/* dodoc doc/*.txt
}
- per finire
pkg_postinst() { einfo "" einfo "........" einfo "" }potete comunicare all’utente le informazioni che ritenete necessarie. Oppure esegure comandi di fix dei permessi o cose simili.
- A chi ha buon occhio noterà che ancora non ho inserito nessun init.d e conf.d script. Spero di farlo quanto prima.
- [bfentry id=1 small]
- [bfentry id=2 small]
- [bfentry id=3 small]
- [bfentry id=4 small]