Gentoo Archives: gentoo-commits

From: "Davide Cendron (scen)" <scen@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo commit in xml/htdocs/proj/it/devrel/handbook: hb-guide-eclass.xml
Date: Thu, 26 Aug 2010 14:40:43
Message-Id: 20100826144037.DB52620051@flycatcher.gentoo.org
1 scen 10/08/26 14:40:37
2
3 Modified: hb-guide-eclass.xml
4 Log:
5 Version 1.0.3, revision 1.12 of EN CVS
6
7 Revision Changes Path
8 1.7 xml/htdocs/proj/it/devrel/handbook/hb-guide-eclass.xml
9
10 file : http://sources.gentoo.org/viewvc.cgi/gentoo/xml/htdocs/proj/it/devrel/handbook/hb-guide-eclass.xml?rev=1.7&view=markup
11 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/xml/htdocs/proj/it/devrel/handbook/hb-guide-eclass.xml?rev=1.7&content-type=text/plain
12 diff : http://sources.gentoo.org/viewvc.cgi/gentoo/xml/htdocs/proj/it/devrel/handbook/hb-guide-eclass.xml?r1=1.6&r2=1.7
13
14 Index: hb-guide-eclass.xml
15 ===================================================================
16 RCS file: /var/cvsroot/gentoo/xml/htdocs/proj/it/devrel/handbook/hb-guide-eclass.xml,v
17 retrieving revision 1.6
18 retrieving revision 1.7
19 diff -u -r1.6 -r1.7
20 --- hb-guide-eclass.xml 21 Jan 2009 23:31:42 -0000 1.6
21 +++ hb-guide-eclass.xml 26 Aug 2010 14:40:37 -0000 1.7
22 @@ -1,7 +1,7 @@
23 <?xml version='1.0' encoding='UTF-8'?>
24 <!DOCTYPE sections SYSTEM "/dtd/book.dtd">
25
26 -<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/proj/it/devrel/handbook/hb-guide-eclass.xml,v 1.6 2009/01/21 23:31:42 scen Exp $ -->
27 +<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/proj/it/devrel/handbook/hb-guide-eclass.xml,v 1.7 2010/08/26 14:40:37 scen Exp $ -->
28
29 <!-- The content of this document is licensed under the CC-BY-SA license -->
30 <!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
31 @@ -10,8 +10,8 @@
32 cvs://gentoo/gentoo/xml/htdocs/doc/en/eclass-howto.xml :: R1.17. -->
33
34 <sections>
35 -<version>1.0.2</version>
36 -<date>2006-02-02</date>
37 +<version>1.0.3</version>
38 +<date>2010-07-13</date>
39
40 <section>
41 <title>Introduzione alle eclass</title>
42 @@ -32,9 +32,7 @@
43
44 <p>
45 Questo capitolo mostra brevemente come scrivere una eclass incorporando i
46 -trucchi standard e le tecniche usate nelle eclass esistenti. Il secondo è una
47 -panoramica dell'eclass di kde. Il terzo spiega come scrivere un ebuild KDE
48 -usando il gruppo di eclass di kde.
49 +trucchi standard e le tecniche usate nelle eclass esistenti.
50 </p>
51
52 </body>
53 @@ -469,601 +467,12 @@
54 <section>
55 <title>Eclass esistenti</title>
56 <subsection>
57 -<title>Introduzione</title>
58 + <title>eclass-manpages</title>
59 <body>
60
61 <p>
62 -Molte eclass sono semplici, basta leggerle e dare un'occhiata ad un paio di
63 -ebuild che la usano per capire il loro funzionamento. Inoltre, molte eclass sono
64 -anche ben commentate, per cui la cosa migliore è leggerle.
65 -</p>
66 -
67 -<p>
68 -Questo capitolo documenta l'insieme delle relazioni tra le eclass kde*.
69 -</p>
70 -
71 -</body>
72 -</subsection>
73 -<subsection>
74 -<title>base.eclass</title>
75 -<body>
76 -
77 -<p>
78 -Questa eclass definisce alcune variabili e funzioni predefinite, simili a quelle
79 -presenti nativamente in un ebuild che non eredita nessuna eclass (e quindi
80 -definite in ebuild.sh). Probabilmente, non verrà usata direttamente, ma
81 -piuttosto attraverso una eclass di kde, che la eredita.
82 -</p>
83 -
84 -<p>
85 -Un piccola parte interessante delle funzionalità che essa fornisce è la capacità
86 -di autopatch. Se nel proprio ebuild, che utilizza base_src_unpack() (o
87 -kde_src_unpack()), il contenuto della variabile PATCHES viene impostato con una
88 -lista di file, i sorgenti verranno patchati con questi stessi file. Le patch
89 -hanno bisogno di funzionare con -p0 quando vengono eseguite da ${S}.
90 -</p>
91 -
92 -<p>
93 -Notare che è possibile impostare PATCHES senza definire una funzione personale
94 -src_unpack() nel proprio ebuild!
95 -</p>
96 -
97 -<p>
98 -La nuova funzione epatch() da eutils.eclass è ancora più potente - essa supporta
99 -patch compresse, directory e serie di patch, e individua automaticamente il
100 -livello delle patch - e un giorno gli sviluppatori hanno intenzione di far usare
101 -ad autopatch questa comoda funzione.
102 -</p>
103 -
104 -<p>
105 -Notare che la sezione <c>patch</c> in base_src_unpack() è deprecata e sarà
106 -rimossa a breve. Se viene trovato un ebuild che la utilizza, esso necessiterà di
107 -essere convertito al metodo di <c>autopatch.</c>
108 -</p>
109 -
110 -</body>
111 -</subsection>
112 -<subsection>
113 -<title>cvs.eclass</title>
114 -<body>
115 -
116 -<p>
117 -Questa eclass fornisce la funzionalità necessaria per creare ebuild cvs 'live'.
118 -Gli ebuild vanno a prendere i sorgenti da uno specifico server cvs nel momento
119 -dell'estrazione, di conseguenza ottenendo sempre i bug e le correzioni più
120 -recenti dal ramo di sviluppo originale.
121 -</p>
122 -
123 -<p>
124 -Tuttavia il supporto necessario (es. gestione delle versioni) per gli ebuild cvs
125 -live non è ancora stato aggiunto al portage. Essi possono lavorare con questa
126 -eclass, ma non è conveniente in molti casi. Pensarci bene prima di creare un
127 -ebuild cvs live; probabilmente un normale snapshot cvs è la soluzione migliore.
128 -Se si intende aggiungere un ebuild di questo tipo a portage, informarsi sulle
129 -guide linea degli ebuild del cvs nella guida per gli sviluppatori.
130 -</p>
131 -
132 -<p>
133 -Prima di ereditare cvs.eclass, impostare qualunque variabile non predefinita
134 -necessaria (almeno l'indirizzo del server e il nome del modulo). Guardare la
135 -lista delle impostazioni configurabili e dei valori predefiniti all'inizio di
136 -cvs.eclass, marcati come ebuild-configurable settings'.
137 -</p>
138 -
139 -<p>
140 -Dopo di ciò, le cose sono più o meno automatiche. Viene fornito un
141 -cvs_src_unpack() (senza sezioni). Per saperne di più, leggere il contenuto
142 -stesso dell'eclass.
143 -</p>
144 -
145 -</body>
146 -</subsection>
147 -<subsection>
148 -<title>kde-functions.eclass</title>
149 -<body>
150 -
151 -<p>
152 -Questa eclass contiene tutte le funzioni di aiuto inerenti a KDE. Alcune di loro
153 -non verranno mai usate direttamente in un ebuild; pertanto non verranno
154 -menzionate qui, e comunque sono essere ben commentate nei sorgenti.
155 -</p>
156 -
157 -<p>
158 -Notare che con 'funzioni d'aiuto' s'intende qualsiasi funzione che non sia una
159 -funzione speciale degli ebuild (src_unpack(),...). Tutte le eclass di kde
160 -contengono queste funzioni 'speciali' ereditate da kde-functions.
161 -</p>
162 -
163 -<p>
164 -Il solo codice esterno a qualsiasi funzione in kde-functions.eclass (che viene
165 -quindi eseguito in fase di derivazione) è un blocco che determina se l'ebuild
166 -corrente fa parte di kde-base o meno. Se lo è, sarà impostata KDEBASE=true.
167 -Questa variabile, è usata in diversi test logici altrove ed è ovviamente comodo
168 -avere un test centralizzato per essa.
169 -</p>
170 -
171 -<p>
172 -<b>Lo schema corrente di multi-kdedir</b>
173 -</p>
174 -
175 -<p>
176 -Una breve spiegazione su come Gentoo gestisce più versioni di KDE:
177 -</p>
178 -
179 -<p>
180 -Un'installazione di KDE (per l'esattezza cose provenienti da kde-base) si trova
181 -in /usr/kde/${versione-maggiore}.${versione-minore}. Così, per esempio, KDE
182 -3.1.x si trova in /usr/kde/3.1. Tuttavia, questo schema è stato stabilito dopo
183 -il rilascio di KDE 3.0, e così le vecchie versioni si trovano in una posizione
184 -non standard: KDE 3.0.x si trova in /usr/kde/3 (e non /usr/kde/3.0) e KDE 2.2.2
185 -(la sola versione 2.x che c'è) si trova in /usr/kde/2. L'ebuild del cvs viene
186 -mantenuto installato in /usr/kde/cvs.
187 -</p>
188 -
189 -<p>
190 -Ogni numero di KDE con diverse versioni minori possono quindi coesistere. I
191 -pacchetti kde-base hanno diversi SLOT di maggiore.minore (per esempio 3.0, 3.1).
192 -</p>
193 -
194 -<p>
195 -Da quando si presume che le versioni di QT siano completamente retrocompatibili
196 -tra versioni minori, ci sarà solamente unìinstallazione per ciascuna delle
197 -versioni maggiori e con uno slot differente, residenti in
198 -/usr/qt/$versione_maggiore.
199 -</p>
200 -
201 -<p>
202 -Un ebuild che non fa parte di kde-base è sempre installato in /usr. Il pacchetto
203 -kde-env mette KDEDIRS=/usr in env.d, permettendo a queste applicazioni di essere
204 -eseguite correttamente. L'applicazione viene compilata e collegata all'ultima
205 -versione trovata delle librerie di KDE; l'eclass controlla la posizione standard
206 -in ordine discendente - /usr/kde/cvs, poi /usr/kde/3.1, poi /usr/kde/3. (Gli
207 -ebuild di kde-base sono sempre collegati alle kdelibs della propria versione).
208 -Questo dipende sicuramente anche dal parametro dato da need-kde() (vedi sotto).
209 -</p>
210 -
211 -<p>
212 -Ci sono molte variabili speciali che si possono impostare per cambiare le
213 -impostazioni predefinite del sistema. Il loro primo uso è per compilare un
214 -ebuild con una versione specifica di KDE installata per test, ma è anche
215 -possibile usare queste variabili per installare KDE in una posizione non
216 -standard, così si avranno, per esempio, entrambi KDE 3.0.1 e 3.0.2 installati
217 -fianco a fianco. Questo, inoltre, è molto più utile per il test e lo sviluppo.
218 -</p>
219 -
220 -<p>
221 -Tutte le applicazioni di KDE (base e non base) saranno installate in
222 -${KDEPREFIX}, se impostato. Esso sovrascrive tutta l'altra logica nelle eclass.
223 -</p>
224 -
225 -<p>
226 -Un'applicazione di KDE (sia facente parte di kde-base, sia non) proverà ad
227 -essere collegata alle kdelibs installate in ${KDELIBSDIR}, se impostata. Se
228 -questo fallisce, essa ripiegherà sulla logica standard di ricercare la posizione
229 -delle kdelibs più recenti (o all'appropriata versione di kde-base).
230 -</p>
231 -
232 -<p>
233 -<b>need-kde(), need-qt(), set-kdedir(), set-qtdir()</b>
234 -</p>
235 -
236 -<p>
237 -kde-functions.eclass forniscono due paia di funzioni: need-kde(), need-qt() e
238 -set-kdedir(), set-qtdir(). Queste funzioni gestiscono i dettagli di diverse
239 -installazioni di KDE e QT.
240 -</p>
241 -
242 -<p>
243 -La funzione need-kde() è chiamata con un parametro che è il numero minimo di
244 -versione di kdelibs richiesta. Essa aggiunge le dipendenze opportune a DEPEND,
245 -RDEPEND e chiama la funzione set-kdedir(). Se non vengono passati parametri,
246 -verrà usata una versione di numero 0 (zero), il che significa che qualsiasi
247 -versione soddisferà la dipendenza. need-kde() chiama anche need-autoconf() e
248 -need-automake() con i parametri corretti per questa versione di KDE.
249 -</p>
250 -
251 -<p>
252 -Poi la funzione set-kdedir() determina il prefisso dell'installazione e la
253 -posizione di kdelibs che il proprio ebuild dovrebbe usare. Questi valori vengono
254 -passati all'utente rispettivamente in ${PREFIX} e ${KDEDIR}, (e sono
255 -automaticamente gestiti in kde.eclass). Notare che nessun ebuild dovrebbe mai
256 -impostare direttamente ${KDEPREFIX} o ${KDELIBSDIR}!
257 -</p>
258 -
259 -<p>
260 -need-kde() inoltre recupera da una tabella la versione minima richiesta di QT
261 -per questa versione di kdelibs. Quindi chiama need-qt() con questa versione. Un
262 -ebuild di un'applicazione dipendente solo da qt (per esempio non-kde)
263 -generalmente chiama direttamente need-qt, scavalcando need-kde.
264 -</p>
265 -
266 -<p>
267 -La funzione need-qt() aggiunge le versioni richieste di QT a DEPEND, RDEPEND e
268 -chiama set-qtdir() con esse. La funzione set-qtdir() imposta QTDIR come
269 -posizione predefinita di questa versione delle QT. Diversamente da set-kdedir(),
270 -set-qtdir() non controlla effettivamente se c'è installata una versione di QT.
271 -</p>
272 -
273 -<p>
274 -need-kde() (o need-qt()) necessita di essere chiamata dalla sezione principale
275 -dell'ebuild (per esempio, non da una funzione), cosicché ogni cambiamento a
276 -DEPEND e RDEPEND influenzi emerge.
277 -</p>
278 -
279 -<p>
280 -<b>need-autoconf(), need-automake()</b>
281 -</p>
282 -
283 -<p>
284 -Queste funzioni impostano l'ambiente necessario per fare funzionare le versioni
285 -richieste di autoconf o automake. Esse inoltre deallocano tutte le variabili
286 -di questo tipo impostate precedentemente. Per esempio, chiamando
287 -'need-automake 1.4' verrà impostato NEED_AUTOMAKE_1_4=1 e deallocate tutte le
288 -altre variabili WANT_AUTOMAKE*. Per maggiori informazioni, guardare il codice
289 -delle funzioni e i commenti all'inizio di /usr/bin/auto{conf,male} (su sistemi
290 -Gentoo).
291 -</p>
292 -
293 -<p>
294 -<b>kde_sandbox_patch()</b>
295 -</p>
296 -
297 -<p>
298 -Alcuni makefile di KDE sono malfunzionanti. Essi eseguono un chmod o un chown
299 -sui file in PREFIX al momento dell'installazione, ma non rispettano DESTDIR
300 -(${D}). Per esempio, durante l'installazione, copiano correttamente un file in
301 -${DESTDIR}/${PREFIX}/path/foo, ma poi tentano di effettuare il comando chmod+x
302 -sul file ${PREFIX}/path/foo sul filesystem reale che potrebbe anche non
303 -esistere. Se questo tentativo si dovesse verificare, la sandbox previene questa
304 -operazione.
305 -</p>
306 -
307 -<p>
308 -Questa funzione esegue un sed generico sui makefile per sistemare tutti i casi
309 -conosciuti del problema. Viene chiamata passando come parametri le directory che
310 -devono essere processate e processa i Makefile, Makefile.in e Makefile.am in
311 -queste directory. Per esempio:
312 -</p>
313 -
314 -<pre caption = "Processo">
315 -src_unpack() {
316 - base_src_unpack
317 - kde_sandbox_patch ${S}/dir1 ${S}/dir2/dir3
318 -}
319 -</pre>
320 -
321 -<p>
322 -<b>kde_remove_flag()</b>
323 -</p>
324 -
325 -<p>
326 -Questa funzione è usata per eliminare le flag di compilazione conosciute
327 -come causa di malfunzionante del pacchetto. Si chiama questa funzione dopo
328 -l'estrazione passando come parametri la sottodirectory di ${S} nella quale
329 -lavorare e il nome del flag da rimuovere. Notare che la funzione non è
330 -ricorsiva. Esempio: "kde_remove_flag foodir/barfoo -fomit-frame-pointer".
331 -</p>
332 -
333 -<p>
334 -<b>kde_remove_dir() e ${KDE_REMOVE_DIR}</b>
335 -</p>
336 -
337 -<p>
338 -Questa funzione rimuove la specifica sottodirectory dalla compilazione. Essa la
339 -rimuove e rimuove tutte le sue referenze dai file delle sottodirectory,da
340 - configure e dai makefile. Notare che al momento funziona soltanto nelle
341 -sottodirectory di ${S}, non funziona nel secondo livello di sottodirectory. La
342 -si può invocare con una lista di sottodirectory da eliminare; essa lavora a
343 -turno con ogni parametro.
344 -</p>
345 -
346 -<p>
347 -È possibile chiamarla direttamente ma per evitare di definire una funzione
348 -src_unpack() personalizzata è possibile impostare KDE_REMOVE_DIR con una lista
349 -di sottodirectory da eliminare. kde_src_unpack() chiamerà 'kde_remove_dir
350 -${KDE_REMOVE_DIR}' dopo l'estrazione. Come si può vedere, ci si è spinti molto
351 -avanti per permettere di definire una funzione extra in un ebuild, questo per
352 -rendere gli ebuild più puliti e leggibili.
353 -</p>
354 -
355 -</body>
356 -</subsection>
357 -<subsection>
358 -<title>kde.eclass</title>
359 -<body>
360 -
361 -<p>
362 -Questa è l'eclass principale e centrale di KDE. Contiene la maggior parte del
363 -codice relativo a KDE. Tutti gli ebuild di KDE, in un modo o nell'altro la
364 -ereditano. L'eclass di kde eredita le funzioni di base e kde-functions.
365 -</p>
366 -
367 -<p>
368 -Come con le altre eclass, leggerla per vedere cosa fa. La maggior parte del
369 -codice è molto chiaro. Qui c'è un breve riepilogo:
370 -</p>
371 -
372 -<p>
373 -La sezione globale dell'eclass (per esempio, quella che viene eseguita quando la
374 -si eredita) aggiunge le corrette dipendenze su kde-env, automake, autoconf, male
375 -e perl (quest'ultimo è usato dalle configurazioni standard degli script per la
376 -generazione veloce dei makefile). Imposta inoltre in modo predefinito SLOT="0".
377 -</p>
378 -
379 -<p>
380 -kde_src_unpack() di base chiama solamente base_src_unpack(), passando tutti i
381 -parametri (per esempio sezioni da eseguire). Dopo questo, aggiunge elementi
382 -specifici di kde. "Tocca" (cambiando la data e ora di modifica) tutti i file
383 -.ui nel codice estratto per rigenerare tutti i vecchi file .cpp e .h. Chiama
384 -anche kde_remove_dir() con ${KDE_REMOVE_DIR} se questa varibile è impostata
385 -(guardare più sopra nella sezione su kde-functions).
386 -</p>
387 -
388 -<p>
389 -Anche kde_src_compile() possiede molte correzioni. Una di esse esporta
390 -kde_widgetdir="${KDEDIR}/lib/kde3/plugins/designer" per raggirare un bug
391 -presente in vecchi acinclude.m4.in. Un altro è quello di impostare
392 -HOME="${T}/fakehome", così facendo gli accessi a ${HOME}/.kde e $HOME/.qt non
393 -verranno interrotti dalla sandbox, e non toccheranno l'home directory
394 -dell'utente. Questo è un bug (o mancanza) di uic, che tenta sempre di accedere
395 -ai file di configurazione di queste directory.
396 -</p>
397 -
398 -<p>
399 -kde_src_compile() possiede diverse sezioni. <c>myconf</c> aggiunge a ${myconf} i
400 -parametri predefiniti dello script di configurazione di kde, come
401 ---prefix=${PREFIX} (ricordarsi che ${PREFIX} è impostato da set-kdedir()). È
402 -possibile aggiungere i propri valori personali a ${myconf} sia prima che dopo
403 -questa sezione; ricordarsi solo di non sovrascrivere i vecchi valori, perchè gli
404 -utenti possono pensare di impostare $myconf nella shell e in questo modo
405 -aggiungere qualcosa ai parametri configurati usati dall'ebuild.
406 -</p>
407 -
408 -<p>
409 -La sezione <c>configure</c> esegue lo script di configurazione in ${S},
410 -passandole ${myconf}. Se lo script di configurazione non esiste, proverà a
411 -generarlo eseguendo male -f Makefile.cvs o male -f admin/Makefile.common. In
412 -questo modo, questo passo della compilazione (che è necessario per gli snapshot
413 -del cvs, o per gli ebuild che applicano patch a file come configure.in) viene
414 -anche eseguito automaticamente.
415 -</p>
416 -
417 -<p>
418 -La sezione <c>male</c> esegue semplicemente emake || die. Per finire, c'è una
419 -sezione <c>all</c> che esegue tutto quando appena spiegato.
420 -</p>
421 -
422 -<p>
423 -Infine, kde_src_install() possiede una sezione <c>male</c> che esegue male
424 -install, e una sezione <c>dodoc</c> che esegue dodoc su alcuni nomi standard di
425 -documenti in ${S}, come README e COPYING.
426 -</p>
427 -
428 -</body>
429 -</subsection>
430 -<subsection>
431 -<title>kde-base.eclass</title>
432 -<body>
433 -
434 -<p>
435 -Questa eclass è ora deprecata, l'ebuild deve usare al suo posto "inherit kde".
436 -</p>
437 -
438 -</body>
439 -</subsection>
440 -<subsection>
441 -<title>kde-dist.eclass</title>
442 -<body>
443 -
444 -<p>
445 -Questa eclass è per il cuore dei pacchetti di distribuzione di kde in
446 -kde-base/*. Eredita kde.
447 -</p>
448 -
449 -<p>
450 -Imposta correttamente DESCRIPTION e HOMEPAGE e chiama need-kde ${PV}. Il più
451 -semplice, piccolo pacchetto kde-base/ (per esempio kdetoys) non necessita di
452 -fare nessun cambiamento ad essa, la maggior parte di essi aggiunge soltanto
453 -dipendenze e patch.
454 -</p>
455 -
456 -</body>
457 -</subsection>
458 -<subsection>
459 -<title>kde-i18n.eclass</title>
460 -<body>
461 -
462 -<p>
463 -Questa eclass è per i pacchetti kde-i18n-*. Infatti, tutti gli ebuild di
464 -kde-i18n sono completamente identici per cui tutto quello che devono
465 -fare è ereditare da questa eclass. Le loro variabili ${P}, ${P}, ${PV} fanno il
466 -resto.
467 -</p>
468 -
469 -</body>
470 -</subsection>
471 -<subsection>
472 -<title>kde.org.eclass</title>
473 -<body>
474 -
475 -<p>
476 -Questa eclass è anch'essa deprecata, e tutto il codice è stato spostato in
477 -kde-dist.eclass.
478 -</p>
479 -
480 -</body>
481 -</subsection>
482 -<subsection>
483 -<title>koffice-i18n.eclass</title>
484 -<body>
485 -
486 -<p>
487 -Questa eclass è pensata per i pacchetti koffice-i18n-* ed è molto simile a
488 -kde-i18n.eclass. Anche qui, tutti gli ebuild di kde-i18n sono completamente
489 -identici per cui tutto quello che devono fare è ereditare da questa eclass.
490 -</p>
491 -
492 -</body>
493 -</subsection>
494 -<subsection>
495 -<title>kde-source.eclass</title>
496 -<body>
497 -
498 -<p>
499 -Questa eclass lavora al di sopra di cvs.eclass, aggiungendo alcune funzionalità
500 -specifiche di kde. Per esempio, recupera automaticamente la directoy admin/ dal
501 -modulo kde-common del cvs di kde. Per saperne di più, incluse le impostazioni
502 -specifiche per il cvs di kde che si possono passare, leggere l'eclass.
503 -</p>
504 -
505 -</body>
506 -</subsection>
507 -</section>
508 -<section>
509 -<title>Scrittura di ebuild per KDE</title>
510 -<subsection>
511 -<title>Introduzione</title>
512 -<body>
513 -
514 -<p>
515 -Questo capitolo spiega come scrivere ebuild standard per KDE. Tutto quanto è
516 -detto qui è un ripasso di tutte le informazioni sulle eclass spiegate in
517 -precedenza. Se si è in dubbio, guardare gli altri ebuild, le altre eclass,
518 -oppure chiedere.
519 -</p>
520 -
521 -</body>
522 -</subsection>
523 -<subsection>
524 -<title>Un tipico ebuild di KDE</title>
525 -<body>
526 -
527 -<p>
528 -Il codice sottostante dovrebbe essere chiaro dopo avere letto questa guida:
529 -</p>
530 -
531 -<pre caption = "Un semplice ebuild di KDE, #1">
532 -&lt;L'intestazione va qui...&gt;
533 -inherit kde
534 -</pre>
535 -
536 -<p>
537 -Alcuni ebuild terminano proprio qui. Altri necessitano di alcune
538 -personalizzazioni.
539 -</p>
540 -
541 -<p>
542 -Il prossimo passo serve per aggiungere delle dipendenze extra. Ricordarsi di
543 -estendere *sempre* le variabili, non sovrascriverle mai!
544 -</p>
545 -
546 -<p>
547 -Siccome lo scopo è quello di evitare la definizione di funzioni ebuild
548 -personalizzate a meno che non ci sia altra scelta, vengono usate tutte le
549 -impostazioni possibili e chiamate tutte le possibili funzioni d'aiuto,
550 -direttamente dalla sezione principale dell'ebuild. Ricordarsi però che ci sono
551 -limitazioni sul codice nella sezione principale; per esempio, essa non deve
552 -produrre nessun output (l'output di debug-print() probabilmente non conta).
553 -</p>
554 -
555 -<pre caption="Un semplice ebuild di KDE, #2: aggiungere dipendenze extra">
556 -DEPEND="foo/bar"
557 -RDEPEND="bar/foo"
558 -</pre>
559 -
560 -<p>
561 -Si vogliono anche aggiungere alcuni argomenti extra a myconf, che vengono
562 -passati allo script configure (assumendo di usare la sezione di configurazione
563 -kde_src_compile):
564 -</p>
565 -
566 -<pre caption="Un semplice ebuild di KDE, #4: passare argomenti alla
567 -configurazione" >
568 -myconf="$myconf --with-foobar"
569 -</pre>
570 -
571 -<p>
572 -C'è anche una patch da aggiungere. Se può essere applicata usando -p0 in ${S},
573 -si può usare la sezione <c>autopatch</c> di base_src_unpack. Ricordarsi che
574 -kde_src_unpack() chiama base_src_unpack() passando tutti i parametri che gli
575 -vengono dati.
576 -</p>
577 -
578 -<pre caption="Un semplice ebuild di KDE, #5: autopatching">
579 -PATCHES="$FILESDIR/$P-myfix.diff"
580 -</pre>
581 -
582 -<p>
583 -Infine si vuole estendere src_install() per installare della documentazione:
584 -</p>
585 -
586 -<pre caption="Un semplice ebuild di KDE, #6: estendere src_install()">
587 -src_unpack() {
588 - kde_src_install
589 - dodoc $S/doc/*
590 -}
591 -</pre>
592 -
593 -<p>
594 -Questo è l'ebuild creato in questo esempio:
595 -</p>
596 -
597 -<pre caption="Un semplice ebuild di KDE - codice completo">
598 -&lt;L'intestazione va qui...&gt;
599 -inherit kde
600 -
601 -# aggiungere le dipendenze
602 -DEPEND="foo/bar"
603 -RDEPEND="bar/foo"
604 -
605 -# abilitare sempre foobar
606 -myconf="${myconf} --with-foobar"
607 -
608 -# correzione di un terribile bug
609 -PATCHES="${FILESDIR}/${P}-myfix.diff"
610 -
611 -src_unpack() {
612 - kde_src_install
613 - # installare alcuna documentazione extra non inclusa nel target di male
614 - # install
615 - dodoc ${S}/doc/*
616 -}
617 -</pre>
618 -
619 -</body>
620 -</subsection>
621 -<subsection>
622 -<title>Un tipico ebuild con funzionalità KDE opzionali</title>
623 -<body>
624 -
625 -<p>
626 -Quando si aggiungono funzionalità (eclass) kde ad un ebuild esistente, basta
627 -anteporre <c>use kde &amp;&amp;</c> ad ogni linea specifica per kde, oppure
628 -creare interi blocchi <c>if [ -n "`use kde`" ]; then; fi</c>.
629 -</p>
630 -
631 -<p>
632 -Alla sezione generale, aggiungere il codice seguente (solo se la USE kde è
633 -impostata, chiaramente):
634 -</p>
635 -
636 -<pre caption="Supporto opzionale per KDE - sezione principale dell'ebuild">
637 -inherit kde-functions
638 -
639 -# Questo aggiungerà kdelibs, kde-env alla stringa delle dipendenze e imposta
640 -# ${KDEDIR} con il valore corretto:
641 -
642 -need-kde ${version} # versione minima di kde richiesta dalla propria applicazione
643 -
644 -# Aggiunge tutto il resto di cui hai bisogno per il supporto di kde:
645 -use kde &amp;&amp; myconf="${myconf} --with-my-parameter"
646 -</pre>
647 -
648 -<p>
649 -A questo punto chiedere alla propria applicazione di cercare KDE nelle
650 -impostazioni di ${KDEDIR} che sarà disponibile dopo aver chiamato need-kde(). Se
651 -non si vuole che la dipendenza a kdelibs sia aggiunta, chiamare set-kdedir() al
652 -posto di need-kde().
653 +È possibile effettuare l'emerge di app-portage/eclass-manpages per ottenere la
654 +documentazione delle eclass esistenti.
655 </p>
656
657 </body>