Queste sono alcune linee guida generali da seguire per lo sviluppo:
Su certe architetture, le librerie condivise devono essere compilate con -fPIC.
Nell'architettura x86 ed in altre, le librerie condivise possono compilare senza
-fPIC, ma è uno spreco e potenzialmente potrebbe causare una diminuzione di
prestazioni. Se viene trovato un pacchetto che non compila le librerie condivise
con -fPIC, correggere il Makefile per compilare solo le librerie
condivise con -fPIC. Sono disponibili maggiori informazioni su PIC alla
pagina
I nuovi moduli Perl saranno aggiunti al portage solo quando una delle seguenti condizioni sarà verificata:
Assicurarsi che almeno un membro dell'herd di perl approvi questo tipo di aggiunte.
Il nome del file dell'ebuild consiste in quattro sottosezioni logiche:
La prima sottosezione,
La seconda sottosezione,
La terza sottosezione,
| Suffisso | Significato |
|---|---|
Qualsiasi di questi suffissi può essere immediatamente seguito da un numero
positivo diverso da zero, per esempio,
Quando si confrontano suffissi identici seguiti da un intero, quello con il
numero più grande viene considerato il più recente. Esempio:
La quarta sottosezione del nome del pacchetto è il numero specifico della
revisione Gentoo Linux (
Questo numero di revisione è indipendente dalla versione del relativo file
archivio dei sorgenti, ed è usata per informare le persone della disponibilità
di una nuova e migliorata versione di un particolare pacchetto per Gentoo Linux.
Il rilascio iniziale degli ebuild non deve avere il numero della revisione,
per esempio
Il numero della revisione di un pacchetto deve essere incrementata dagli sviluppatori di Gentoo Linux quando l'ebuild ha ricevuto delle modifiche che impongono agli utenti di effettuare un aggiornamento. Generalmente, questo è il caso in cui le correzioni vengono fatte su di un ebuild che influenza i file installati, ma l'ebuild usa lo stesso file archivio del precedente rilascio. Se viene fatto un cambiamento interno all'ebuild di tipo stilistico il quale non modifica nessun file installato, allora non è necessario incrementare il numero della revisione. Allo stesso modo, se nell'ebuild viene corretto un problema di compilazione che affliggeva alcuni utenti non è necessario incrementare il numero della revisione, in quanto per tutti quelli a cui il pacchetto funziona perfettamente non avranno benefici nell'installare una nuova revisione, e quelli che hanno avuto problemi di installazione non avranno il pacchetto installato (perché la compilazione è fallita) per cui non c'è bisogno di fare una nuova revisione per forzare un aggiornamento. La pubblicazione di una revisione non è inoltre necessaria se il problema è stato riscontrato da un numero minimo di utenti ed il pacchetto ha un tempo medio di compilazione non trascurabile; in queste circostanze usare il proprio giudizio nel miglior modo possibile.
Gli ebuild devono essere basati sulla versione precedente dell'ebuild per assicurare che i cambiamenti non vengano accidentalmente cancellati. Le correzioni devono includere dei commenti appropriati nell'ebuild che spiegano cosa fanno ed il perché sono necessarie. Se non si ha dimestichezza con le correzioni, o non si riesce a determinare se sono veramente necessarie, non si dovrebbe aggiornare l'ebuild.
Ogni volta che un ebuild viene derivato, le funzioni e le variabili al suo
interno vengono caricate in memoria dall'interprete dello script. Tuttavia, solo
le variabili e le istruzioni che non sono parte di una funzione vengono
interpretate: funzioni come
Il codice contenuto in queste funzioni è considerato di "ambito locale" mentre tutto ciò che sta all'esterno delle funzioni è in "ambito globale", che comporta la loro esecuzione ogni volta che l'ebuild viene derivato.
Un'applicazione esterna (come grep, sed o awk) non dovrebbe mai essere chiamata
nell'ambito globale per questioni di prestazioni, e invece dovrebbero essere
usate delle alternative come l'uso sostitutivo di funzioni native di bash. Si
possono trovare delle utili alternative nella
In più, non si può garantire l'esistenza nel sistema delle eventuali
applicazioni esterne richiamate nell'ambito globale. Se il comando viene messo
in un ambito locale (per esempio, nella funzione
Ci sono due modi differenti di compilare un ebuild basato su sorgenti che provengono da un albero di sviluppo CVS. Il primo e tradizionale metodo è di creare un ebuild di tipo "CVS snapshot" (ndT: "fotografia" del CVS) creando un file archivio (tarball) personale dal repository CVS ufficiale, facendo un mirroring dei sorgenti nel repository ufficiale dei distfile di Gentoo, e scrivendo un ebuild per l'uso specifico di questo file archivio. In seguito si farà riferimento a questi tipi di ebuild CVS con il termine "ebuild per snapshot CVS".
L'altro metodo per la creazione di ebuild basati sul CVS è di usare
I seguenti paragrafi spiegano in dettaglio le regole riguardanti l'uso di ebuild basati su CVS. Tenere presente che esistono delle regole molto rigide riguardo all'aggiunta di questo tipo di ebuild al Portage tree.
Ebuild per snapshot CVS sono maggiormente preferiti rispetto ad ebuild "live"
(che utilizzano
Gli ebuild per snapshot CVS sono autorizzati se uno snapshot del CVS contiene delle migliorie conosciute necessarie al regolare funzionamento di un pacchetto software, o si sa (o è stato provato) che la versione da CVS di un particolare pacchetto software semplicemente funziona meglio della normale versione rilasciata.
Ebuild "live" (basati su
Sia per gli ebuild CVS "live" sia per ebuild CVS "snapshot", il relativo sviluppatore ha la responsabilità di assicurare il loro corretto funzionamento; per ovvie ragioni questo è difficile da attuare per gli ebuild di tipo "live" CVS.
Se degli ebuild (di ogni tipo) non funzionano correttamente o risultano fallati,
devono essere corretti o rimossi dal Portage tree. Se sono ebuild CVS "live",
potrebbero essere mascherati tramite la keyword
Se un utente o gli utenti chiedono specificatamente un ebuild CVS "live", è
possibile aggiungerne uno per loro. Esso dovrà essere marcato come
In questo modo, gli utenti (tipo gli sviluppatori) che richiedono questo tipo di
ebuild li possono installare ma gli altri utenti saranno protetti da una loro
eventuale installazione accidentale. Si ricorda nuovamente che ciò è applicabile
solamente a situazioni in cui un utente o degli utenti richiedono
specificatamente un ebuild CVS "live" (basato su
Gli ebuild sottoposti dagli utenti non dovrebbero mai essere accettati così come sono e dovrebbero essere sempre ben testati e verificati prima di effettuarne il commit nel CVS. Se un ebuild sottoposto da un utente ha dei problemi, lo sviluppatore che lo ha ricevuto e gestito ne sarà ritenuto responsabile. Inviandolo al CVS, si attesta che l'ebuild soddisfa tutti gli standard di sviluppo per Gentoo Linux.
Assicurarsi che l'ebuild proposto dall'utente non contenga intestazioni personalizzate come la seguente:
# Ebuild updated by: me <me@me.com>
Questa informazione dovrebbe essere aggiunta al
Assicurarsi inoltre che tutti i nuovi ebuild di cui si effettua il commit contengano la riga seguente:
# $Header: $
Alcuni ebuild sottoposti dagli utenti sono basati su file recuperati tramite rsync, i quali possono contenere intestazione incorrette.
Incoraggiare gli utenti a sottoporre le differenze (diff) per gli ebuild
esistenti se stanno sottoponendo un aggiornamento. Facendo questo, è più facile
evitare la re-introduzione di bug già corretti nei propri ebuild "nuovi". Se non
si sta lavorando su di un diff sottoposto da un utente ma su di un ebuild
completo, allora usare il comando
Generalmente, lasciare che sia l'utente a fare il lavoro richiesto per
aggiornare il proprio ebuild, a meno che non si
Solo i membri del team di Portage (che si sa chi sono) hanno l'autorità per rilasciare una nuova versione di Portage, nessun altro è abilitato a farlo.
Solo i membri del team del baselayout (che si sa chi sono) hanno l'autorità di rilasciare una nuova versione di baselayout, nessun altro è abilitato a farlo.
Ogni volta che un pacchetto viene rimosso da
Lo scopo di ~arch è di testare nuovi pacchetti aggiunti a Portage.
C'è una differenza tra l'uso di
Tutti i nuovi pacchetti che vengono inseriti in Portage devono essere marcati come ~arch per la(e) architettura(e) sulle quali si sa che quella versione del pacchetto funziona correttamente. Lo sviluppatore che fa il commit dell'ebuild deve verificare che esso funzioni correttamente e che le KEYWORDS siano corrette.
Quando una nuove versione di un pacchetto dimostra di essere stabile per un sufficiente periodo di tempo ed il mantenitore dei pacchetti di Gentoo è fiducioso nel fatto che l'aggiornamento non creerà problemi alla macchina Gentoo degli utenti, allora può essere spostato da ~ARCH a ARCH. Un'indicazione della stabilità del pacchetto può essere se non vengono verificati o non ci sono bug irrisolti per la versione del pacchetto dopo un mese dalla sua introduzione.
È compito del mantenitore del pacchetto reputare quali versioni sono stabili o
se la versione di sviluppo dovrebbe essere in
Bisogna inoltre assicurare che tutte le dipendenze di questa versione del pacchetto siano anch'esse in ARCH.
La politica di di Gentoo Linux richiede che tutti gli ebuild contengano le
variabili
Usare
RDEPEND="${DEPEND}
net-ftp/curl"
È anche importante notare che quando un pacchetto binario
Un pacchetto deve dipendere dalle versioni più vecchie che soddisfano le
dipendenze. Se esso funziona con
In generale, i pacchetti dovrebbero dipendere da
La dipendenza da un pacchetto virtuale come