[Gfoss] QGIS build Win32+MinGW: UPDATE

Suppongo che interessi soprattutto a Marco Pasetti, ma visto
che non ho la sua e-mail personale scrivo a tutta la lista
(chissà, magari può servire anche a qualcun'altro ...)

Ho appena terminato la build di QGIS 0.11.0 su Win32+MinGW
seguendo alla lettera le *FAVOLOSE* istruzioni pubblicate
da Marco su:
http://www.webalice.it/marco.pasetti/qgis+grass/BuildFromSource.html

Dato che le istruzioni di Marco risalgono al 15 Luglio 2008,
ovviamente ho trovato qualche nuovo intoppo, visto che nel
frattempo sono stati rilasciati nuovi aggiornamenti etc;
ecco i punti critici ed i "rattoppi" che ho adottato
(applicando le varie patches trovate su NABBLE etc):

Step 14 - GEOS

Marco usava la 3.0.0; nel frattempo sono state rilasciate
sia la 3.0.2 che 3.0.3; prudenzialmente ho continuato ad
usare la 3.0.0
Il problema è che con l'ultimo aggiornamento di MinGW
[ottobre 2008] non si riesce proprio a compilare nessuna
versione di GEOS; vswprintf non è compatibile con STRICT_ANSI
Alla fine ho 'resuscitato temporaneamente' la precedente
versione di MinGW e sono riuscito a fare correttamente
la build per tutte le versioni di GEOS

Step 17 - PostgreSQL

Marco usava la 8.3.1 [obsoleta e non più disponibile];
broken-link nella pagina html

io ho usato la 8.3.4, ma ho incontrato un paio di errori
bloccanti, che ho aggirato come segue:

postgresql-8.3.4/src/include/libpq/libpq-be.h
---------------------------------------------
riga 48 e seguenti; occorre includere <ntdef.h>

#ifdef ENABLE_SSPI
#define SECURITY_WIN32
#include <ntdef.h>
#include <security.h>
#undef SECURITY_WIN32

postgresql-8.3.4/src/interfaces/libpq/libpq-int.h
-------------------------------------------------
riga 55 e seguenti; anche qui occorre includere
<ntdef.h>, esattamente come in libpq-be.h

Step 18 - SQLite

Marco usava la 3.5.9 [obsoleta]

io ho usato la 3.6.2.2; tutto fila liscio come l'olio

Step 28 - SIP

Marco usava la 4.7.6 [obsoleta e non più disponibile];
broken-link nella pagina html

io ho usato la 4.7.9; tutto fila liscio come l'olio

Step 29 - PyQT

Marco usava la 4.4.2 [obsoleta e non più disponibile];
broken-link nella pagina html

io ho usato la 4.4.4; ma ho incontrato un errore bloccante,
che ho aggirato come segue:

Qt/4.4.0/src/corelib/arch/qatomic_windows.h
-------------------------------------------
riga 390 e seguenti: occorre modificare tutto il blocco delle
dichiarazioni dei prototipi-funzione:

#ifndef __INTERLOCKED_DECLARED
#define __INTERLOCKED_DECLARED
extern "C" {
    __declspec(dllimport) long __stdcall InterlockedCompareExchange(long *, long, long);
    __declspec(dllimport) long __stdcall InterlockedIncrement(long *);
    __declspec(dllimport) long __stdcall InterlockedDecrement(long *);
    __declspec(dllimport) long __stdcall InterlockedExchange(long *, long);
    __declspec(dllimport) long __stdcall InterlockedExchangeAdd(long *, long);
}
#endif

Step 31 - QuantumGIS

Sia io che Marco abbiamo usato la 0.11.0
tuttavia SIP nel frattempo è cambiato, quindi ora saltano
fuori un paio di errori bloccanti, che ho aggirato così:

qgis_0.11.0/python/core/qgsgeometry.sip
---------------------------------------
spostare la riga 55 subito dopo la riga 16
typedef unsigned int size_t;
deve essere esterno alla classe, non interno

qgis_0.11.0/python/core/qgsfeature.sip
--------------------------------------
eliminare la riga 11
typedef unsigned int size_t;

ciao, Sandro Furieri

Alessandro Furieri ha scritto:

Suppongo che interessi soprattutto a Marco Pasetti, ma visto
che non ho la sua e-mail personale scrivo a tutta la lista
(chissà, magari può servire anche a qualcun'altro ...)

Grazie Alessandro. NB: ormai la 1.0 e' di imminente pubblicazione, e
IMHO e' gia' piu' stabile della 0.11, quindi secondo me non conviene
lavorare sulla versione vecchia.
Saluti.
pc
--
Paolo Cavallini, see: * http://www.faunalia.it/pc *

Il giorno ven, 12/12/2008 alle 11.11 +0100, Paolo Cavallini ha scritto:

Grazie Alessandro. NB: ormai la 1.0 e' di imminente pubblicazione, e
IMHO e' gia' piu' stabile della 0.11, quindi secondo me non conviene
lavorare sulla versione vecchia.

Sarà anche stabile, ma il modo sensato di lavorarci è aspettare che esca
la versione *veramente* definitiva (codice fermo) e poi lavorarci.

Stabile per l'utente != Stabile per lo sviluppatore

In generale, il "release early, release often" sta bene, ma se diventa
una fonte di frustrazioni per gli utenti e/o gli sviluppatori di plugin
e altro che hanno a che fare con versioni in continuo aggiornamento,
meglio aspettare che ci siano i rilasci ufficiali.

Ciao,
Steko

--
Stefano Costa
http://www.iosa.it/ Open Archaeology

On Fri, Dec 12, 2008 at 11:21:21AM +0100, Stefano Costa wrote:

In generale, il "release early, release often" sta bene, ma se diventa
una fonte di frustrazioni per gli utenti e/o gli sviluppatori di plugin
e altro che hanno a che fare con versioni in continuo aggiornamento,
meglio aspettare che ci siano i rilasci ufficiali.

+1

--
Francesco P. Lovergine

Ciao Alessandro,

grazie, ottimo lavoro!

Il problema è che con l'ultimo aggiornamento di MinGW
[ottobre 2008] non si riesce proprio a compilare nessuna
versione di GEOS; vswprintf non è compatibile con STRICT_ANSI

penso tu ti riferisca all'aggiornamento di MinGW Runtime
Purtroppo l'intero progetto di MinGW/MSYS (nonchè, nell'insieme, GNUWin32) è estremamente disordinato e confusionario. Ci vuole molta attenzione e un po' tentativi (spesso fallimentari) per costruirsi un ambiente di compilazione stabile e funzionante.
A partire da questa mattina mi metterò all'opera per "ricostruire" l'ambiente MSYS/MinGW per le prossime release di GRASS e QGIS, e già so che sarà un'operazione "rognosa"... speriamo bene!

Step 31 - QuantumGIS
Sia io che Marco abbiamo usato la 0.11.0
tuttavia SIP nel frattempo è cambiato, quindi ora saltano
fuori un paio di errori bloccanti

a questo punto credo non vi sia più ragione di lavorare sulla 0.11; è meglio lavorare direttamente in trunk.

Ciao,

Marco