Quali bordate?
IO dico semplicememente:
a. Solo le opzioni di compilazione (i.e. CFLAGS) influenzano la produzione dl codice binario a fronte di un dato sorgente.
b. gentoo non aggiunge opzioni di compilazioni proprie, sono le stesse di tutti i sistemi GNU.
c. le USE FLAGS non rientrano tra le opzioni di compilazione, quindi non possono influenzare il binario.
d. le USE FLAGS non possono modificare le dipendenze dinamiche, dichiarate nei sorgenti ma soddisfatte al runtime.
e. le USE FLAGS nulla aggiungono in termini di possibilità, rispetto di diverse versioni di codice a soddisfazione di dipendenze dinamiche. E' possibile solo se le due versioni sono compatibili rispetto a quanto stipulato nei sorgenti, come in qualsiasi altro sistema operativo.
f. le USE FLAGS dichiarano dipendenze DA e VERSO pacchetti, utilizzate in fase di installazione ed aggiornamento allo scopo di automatizzarne ed ottimizzarne la gestione.
Sono bordate? Non mi pare.
Tu (e forse Filippo) dici che almeno a, b e c NON sono vere perchè le USE FLAGS influenzao la compilazione.
Al che ti ho dimostrato, anche con esempio pratico, che così non è, ma è necessaria logica 'collante', scritta nell'ebuild.
Visto che non si discute di percezione, ma di tecnica ben documentata, o accetti la mia imostrazione o la confuti caltrettanto praticamente.
Ciao, Marco.
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction."
— E. F. Schumacher (mis-attributed to A. Einstein)
________________________________________________________________________________
Autore della patch R2 per Squeezelite e del plugin C-3PO. note libere
Logitech media Server 7.9 > miniPc + squeezelite-R2 / SB+ > "Lu Scalmentu" NOS R2R DAC by TubeOne/ AudioResearch DAC 1-20 >
Klimo Merlino Gold TPS > DIS Interconnect > Kent Gold > Reference > Monitor Audio Studio 20 SE
Sono daccordo su QUASI tutto, se sostituiscii sostituire "innescano" con un "possono innescare" sottoscrivo pienamente, come se lo avessi scritto io, nel senso che non c'è NULLA di automatico, la logica di innesco è scritta caso per caso senza nessuna granzia di congruenza con quelle che sono le reali dipendenze dell'applicativo.
Mi osno spiegato male, volevo dire che nella frase "gentoo risulta particolarmente ottimizzato grazie alla sua modalità di compilazione guidata dalle USE FLAGS" l'unico 'passaggio logico'
che non condivido è "modalità di compilazione guidata dalle USE FLAGS".
se invece di guidata da, metti un "e", svincolando le due cose, ancora una volta non avrei difficoltà a sottoscrivere.
possibilità di infuire sul binario prodotto tramite strumenti diversi da quelli disponili con GCC su qualsiasi altro sistema GNU.
Non mi pare ce ne siano.
Si, questo è il grande valore delle USE FLAGS e di portage, ne convengo. Facilitano e di molto un compito che altrimenti sarebbe immane.
Detto questo, le USE in se non bastano. Devi assicurarti che decsrivano correttamente le dipendenze presenti nel software, assemblando i pacchetti in modo da non introdurre inutili dipendenze artificiali. e questo richiede l'intervento dell'intelletto umano, supportato ma non sostituito da portage.
Mi è chiaro, personalmente non mi piace e questo conta poco e non è certo un meccanismo 'proprio' solo di gentoo.
Nell'ottica di ' a mali estremi, estremi rimedi' ci sta, ma non stai 'gestendo le dipendenz con le USE': modifichi il sorgente prima di ircompilarlo, ... di fatto è come se qualcuno facesse una fork per gento e ti scaricassi e compilassi quella (cosa che farei io).
Potresti farlo anche indipendentemente dalla USE, non sempre 'dipendi' da lei strettamente: se non devii scaricare nulla ma solo togliere, ad esempio , la dipendenza da una libreria che sai che non ti serve perchè in gentoo non c'è? Perchè mettere la USE? fai la patch e basta.
Ciò a dire, che non c'è legame biunivoco tra le cose, sono collegate solo tramite una logica esterna ai due tools, GCC non sa che esistono le USE.
Qui non siamo daccordo.
La build intesa come compilazione + link la fa il make, usando il makefile. L'unica cosa che viene presa in considerazione da GCC sono le ozpioni di compilazione, Tra cui NON ci sono le USE, gcc NON SA nemmeno cosa sono.
Perchè prenda in considerazione i concetti che le USE rappresentano (per chi crea il pacchetto, non in assoluto e nemmeno per chi ha scritto il codice, che nemmeno sa che verrà utilizzato su gento ed inserito in pacchetti, qui sta il punto), qualcosa (la ebuild) DEVE convertire le USE in CFLAGS o altro riconosciuto dal make.
L'esempio di squeezelite ti mostra come fare.
Il risultato finale del processo completo governato da portage PUO' portare a questo, ma che lo faccia o meno non dipende dalle USE in se, ma dal fatto che qualcuno abbia scritto gli ebuild 'orchestrando' bene i pacchetti in funzione delle dipendenze del codice.
Non so se è un bene o un male, ma non c'è automatismo, non discuto che tra la manina santa e portage il secondo sia preferibile.
E' chiaro il mio punto di vista?
Ultima modifica di marcoc1712 : 20-10-2016 a 02:53
Ciao, Marco.
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction."
— E. F. Schumacher (mis-attributed to A. Einstein)
________________________________________________________________________________
Autore della patch R2 per Squeezelite e del plugin C-3PO. note libere
Logitech media Server 7.9 > miniPc + squeezelite-R2 / SB+ > "Lu Scalmentu" NOS R2R DAC by TubeOne/ AudioResearch DAC 1-20 >
Klimo Merlino Gold TPS > DIS Interconnect > Kent Gold > Reference > Monitor Audio Studio 20 SE
ovvio.
La "funzionalità esclusiva di Gentoo" è casomai il modo in cui è stato architettato il sistema, l'insieme dei tools che consentono di gestire il tutto in maniera molto comoda (fatta salva la implicita scomodità di doversi compilare tutto...) ed efficacie, nonché -e soprattutto- il fatto che la cosa è applicata all'intero sistema, partendo da zero. Permettendo quindi di "tagliarsi su misura" ed "ottimizzare" non solo uno specifico programma, ma anche tutto ciò da cui questo eventualmente dipende, nonché l'intero sistema.
(per altro si tratta di una "funzionalità esclusiva" fino ad un certo punto, dato che Gentoo non è certo il solo sistema a poter essere costruito interamente a partire dai sorgenti e che il meccanismo dei "portage" è ispirato a quello dei "ports" di BSD).
Esatto. Senza alcun dubbio.
ça va sans dire... :-)
Ciao, Paolo.
«Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
Chiarsisco il punto precedente con un esempio:
...codice:... IUSE="aac dsd ffmpeg flac mad mpg123 resample visexport vorbis" ... src_compile() { if use dsd; then append-cflags "-DDSD" einfo "dsd support enabled via dsd2pcm" fi # Build it emake || die "emake failed" }
così l'ebuild informa il compilatore che se è presente la USE dsd, allora va aggiunto il CFLAG -DDSD, non è automatico e non è detto che questa sia la sola logica possibile, quindi è si possibile influenzare la compilazione con le USE FLAGS, a patto di farlo con portage all'interno della ebuild e di definirne la specific alogica al suo interno, caso per caso.
Diverso dal dire che le USE FLAGS influenzano la compilazione.
Se conveniamo anche su questo, siamo perfettamente allineati.
Ultima modifica di marcoc1712 : 20-10-2016 a 03:01
Ciao, Marco.
"Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction."
— E. F. Schumacher (mis-attributed to A. Einstein)
________________________________________________________________________________
Autore della patch R2 per Squeezelite e del plugin C-3PO. note libere
Logitech media Server 7.9 > miniPc + squeezelite-R2 / SB+ > "Lu Scalmentu" NOS R2R DAC by TubeOne/ AudioResearch DAC 1-20 >
Klimo Merlino Gold TPS > DIS Interconnect > Kent Gold > Reference > Monitor Audio Studio 20 SE
Ci sono attualmente 1 utenti che stanno visualizzando questa discussione. (0 utenti e 1 ospiti)