[Gfoss] Compilazione qgis su windows

a.furieri a lqt.it a.furieri a lqt.it
Dom 8 Ago 2010 12:47:03 CEST


Scusatemi se abuso della paciosa tranquillità di una 
domenica mattina di agosto, ma dato che "ho un sassolino 
nella scarpa", ne approfitto per togliermelo.

le regole elementari della GNU foundation sono assai
chiare (e ben solidamente motivate): perchè un SW
possa dirsi libero (ma libero veramente) non basta
semplicemente rilasciare i sorgenti.
e non basta neppure adottare una qualche licenza o.s.

occorre anche utilizzare un build-system conforme,
in modo tale che tutto risulti facilmente interoperabile,
senza costringere sviluppatori e system maintainer
a dover fare le capriole per aggirare le cento buche 
ed i mille ostacoli che impediscono di fare una build
effettivamente funzionante.

esiste un compilatore standard (anzi, una ricca di suite 
di compilatori): GCC
ed esiste una serie di strumenti standard per la
configurazione: AUTOTOOL (libtool, autoconf, automake)

funzionano, sono efficienti, sono disponibili su
tutte le piattoforme "ragionevoli", garantiscono
efficacemente tutto quello che serve per una facile 
migrazione cross-platform.

p.es. su WinOz esiste MinGW/MSYS, che permette di
sviluppare agevolmente usando strumenti assolutamente
conformi.

esistono anche altre alternative (CMake etc): sicuramente
possono anche essere "appetibili" in alcuni casi.
resta il fatto che possono causano problemi (anche grossi)
di interoperabilità con gli autotools.

quindi perchè vengono utilizzati ?
risposta facile facile: perchè rendono molto più facile
l'integrazione con gli strumenti M$ tipo VisualStudio.

ok, nulla in contrario. più opzioni abbiamo, meglio è.
a patto però non rendano più incasinata l'integrazione 
con gli autotools e con gcc.
non a caso, la GPLv3 *impone* l'uso degli strumenti
standard GNU per il build-system: il mancato rispetto
di questa clausola è di per se stesso una violazione
della licenza.

infine, abbiamo i mille problemi che nascono da MSVC,
cioè dal compilatore C/C++ di M$

ripeto: non ho nulla in contrario, chi vuole e lo
trova comodo usi tranquillamente MSVC.
nessuna scomunica, nessun interdetto: consesso che
a volte anch'io lo uso, se non altro per verificare
la compatibilità del codice che sviluppo.
resta il fatto che MSVC *non* è affatto uno strumento 
free-sw (anche se è disponibile gratuitamente).

non solo: MSVC presenta un sacco ed una sporta di
'idiosincrasie' assolutamente fuori standard.
sviluppare C/C++ su MSVC è una ricetta sicura al 100%
per ottenere codice assolutamente non-portabile.
viceversa, adattare codice sviluppato su GCC in modo
tale che possa essere compilato con successo anche da 
MSVC è cosa abbastanza agevole.

allora, se tutto questo è vero (è vero, è vero ...),
perchè mai organizzazioni che tanto sbandierano al vento
la propria appartenenza al movimento per il sw libero
poi usano e supportano proprio MSVC ?????????????

io la trovo personalmente una grossa, enorme contraddizione.
e non si tratta affatto di un semplice puntiglio formale:
la cosa implica svariate conseguenze di ordine pratico.

molti packages che si compilano in modo assolutamente liscio
su Linux danno invece mille problemi con MinGW/MSYS.
perchè succede questo ?
semplice, perchè gli sviluppatori hanno letteralmente
farcito il codice con macro condizionali assolutamente
specifiche per MSVC che risultano quindi incompatibili
con gli strumenti standard.

paradossale, vero ? però è esattamente così.
vogliamo guardare "in casa nostra" ?
- geos
- proj4
- geotiff
sicuramente sono librerie assolutamente strategiche.
altrettanto certamente per riuscire a fare una
build su MinGW/MSYS occorre armarsi di santa
pazienza e procedere al sapiente "scaccolamento"
manuale del codice, dei makefiles etc etc.

e non mi si venga a dire che "la colpa è di WinOz,
che ha le sue stranezze".
packages *mostruosi* come p.es. wxWidgets (100 MB
di sorgenti) compilano in modo assolutamente
liscio e senza nessun problema di sorta anche in
ambiente MinGW/MSYS
ergo, non è un problema 'tecnico': direi che
piuttosto è un problema di volonta è di priorità
nelle scelte strategiche.

et in cauda venenum: io personalmente non ho mai
avuto il piacere di riuscire a fare una build
*completa* di QGIS su WinOz ... neppure usando
MSVC: mi sono sempre dovuto accontentare di una
build "castrata" (p.es. senza supporto python),
e comunque ho sempre dovuto sudare non poco per 
"aggiustare a martellate" qualche intoppo qua e la.
non dubito affatto che il sistema automatico delle
nightly-build adottato da OsGeo4W funzioni perfettamente;
ma evidentemente c'è qualche "pezzetto magico" che
non è mai stato rilasciato ne tantomeno pubblicamente 
documentato.

scusatemi se vi ho tediato con queste mie considerazioni,
ma credo proprio che ... c'è del marcio in Danimarca :-)

ciao Sandro


Maggiori informazioni sulla lista Gfoss