Compilare MariaDB su Windows

Il procedimento per compilare MariaDB 5.2 e successivi su Windows è compatibile con MySQL5.5, perciò si possono usare le istruzioni sul MySQL CMake Wiki. Inoltre, sono disponibili qui le istruzioni di compilazione passo-passo per Visual Studio Express. Le istruzioni in questa pagina presuppongono che si siano lette queste due risorse.

Requisiti

Per compilare MariaDB occorre quanto segue:

  • Visual C++: attualmente supportiamo Visual Studio 2008 e 2010, comprese le edizioni gratuite express (generalmente cerchiamo di supportare le due versioni più recenti). Si installino anche i service pack più recenti, che sono (al momento in cui si scrive) SP1 per VS2008 e VS2010.
  • Bazaar: Necessario per compilare dai sorgenti. Si usi l'installer standalone e si scelgano le opzioni predefinite.
  • CMake 2.8: Il sistema di build.
  • Bison di GnuWin32: Bison crea alcune parti del parser SQL parser. Si selezioni "Complete package except sources" (pacchetto completo senza i sorgenti) quando si scarica.
    • NOTA: Non non lo si installi in un percorso che contiene spazi (esempio: C:\Program Files\GnuWin32), la build non funzionerebbe a causa di un bug di bison. Invece, si installi sotto C:\GnuWin32.
    • Si aggiunga C:\GnuWin32\bin alla variabile di sistema PATH dopo l'installazione.
  • Strawberry perl: Necessario per eseguire la test suite. ActiveState Perl è un'altra distribuzione di Perl per Win32 che dovrebbe andare bene (ma non è stata testata allo stesso modo).
  • Opzionale: Se si intende creare pacchetti MSI, si installi Windows Installer XML version 3.0 o superiore
  • Opzionale: Gnu Diff, raccomandato per gli sviluppatori MariaDB, migliora l'output degli errori della utility di test mysql-test-run.pl

Si verifichi che bison.exe, bzr.exe, cmake.exe e perl.exe si trovino nella variabile di ambiente PATH, con "where bison", "where bzr", etc. dal prompt dei comandi.

Creare i binari per Windows

Queste istruzioni presuppongono che si abbia MariaDB 5.2 o superiore. Per le istruzioni su come compilare la versione 5.1, si veda la sezione "Build vecchio stile".

Si esegua un branch del repository bzr di MariaDB, o si decomprima l'archivio dei sorgenti. Dal prompt dei comandi, ci si porti nella directory dei sorgenti e si esegua:

mkdir bld
cd bld
cmake ..
cmake --build . --config Relwithdebinfo

L'esempio sopra compila una release configurata per i sistemi a 32 bit in una sottodirectory chiamata bld. "cmake ..." è la configurazione, "cmake --build . --config Relwithdebinfo" è la compilazione.

Varianti

Build di debug

Per compilare versioni di debug:

cmake --build . --config Debug

Build per x64

Per default, cmake crea progetti a 32 bit. Per i 64 bit, occorre passate a CMake il parametro "generator" specificando -G durante la configurazione, esempio:

cmake .. -G "Visual Studio 10 Win64"

per VS2010 oppure

cmake .. -G "Visual Studio 9 2008 Win64"

per VS2008.

Per visualizzare un elenco completo dei generatori disponibili, si chiami "cmake" senza alcun parametro.

Creare build con la IDE

Invece di chiamare "cmake --build" come sopra, si apra MySQL.sln. Quando Visual Studio è avviato, si scelga Build/Compile.

Build di NMake

Ci si accerti che a variabile di ambiente di Visual Studio sia impostata correttamente, per esempio "Visual Studio 2010 Command prompt" (Start=>All Programs=>Microsoft Visual Studio 2010=>Visual Studio tools=>Visual Studio Command Prompt (2010)). Può essere comodo creare una scorciatoia da "Visual Studio Command Prompt(2010)" sulla scrivania (navigare nel menu Start per trovarlo, poi si clicchi col destro "=>Send To=>Desktop (create shortcut)" Dalla riga di comando, si esegua:

mkdir bld
cd bld
cmake .. -G "NMake Makefiles"
nmake

Opzionalmente si può passare -DCMAKE_BUILD_TYPE={Debug|RelWithDebInfo} a cmake per compilare per il debug o per il rilascio.

Build di devenv

Ci si accerti che la variabile di ambiente di Visual Studio sia impostata correttamente (vedi sopra). Per compilare si esegua:

  devenv mysql.sln /build relwithdebinfo

oppure, per le build di debug:

  devenv mysql.sln /build debug

Parametri opzionali

Il MySQL CMake Wiki spiega come utilizzare i parametri di compilazione opzionali. Forse il solo parametro importante per MariaDB è WITH_EMBEDDED_SERVER (compila l'embedded server). Non è impostato per default, perché raddoppia il tempo di compilazione. Si usi cmake -DWITH_EMBEDDED_SERVER=1 per abilitare le build embedded.

Creare i pacchetti ZIP

cmake --build . --config relwithdebinfo --target package

Creare i pacchetti MSI

cmake --build . -- config relwithdebinfo --target msi

Alcune versioni di CMake 2.8 (fino alla 2.8.3) richiedono comandi leggermente diversi per compilare un MSI con VS2010

cmake --build . --config relwithdebinfo  --target win/packaging/msi

Includere HeidiSQL nell'installer MSI

A partire da MariaDB 5.2.7 è possibile creare un installer che includa prodotti di terze parti, come spiegato alla pagina MWL#200. Attualmente è implementato il supporto solo per HeidiSQL, che è incluso anche nelle build ufficiali. Si usi il parametro -DWITH_THIRD_PARTY=HeidiSQL di CMake per includerlo nell'installer.

Supporto alla firma del codice per le release di MariaDB

MariaDB si compila opzionalmente con la firma del codice authenticode tramite il parametro opzionale SIGNCODE. Si usi cmake -DSIGNCODE=1 durante la configurazione per firmare i binari nei pacchetti ZIP e MSI.

Importante: perché SIGNCODE=1 funzioni, l'utente che crea la build deve installare un certificato digitale valido di authenticode, altrimenti la creazione del pacchetto fallisce.

Creare pacchetti per il rilascio di MariaDB

Uno script per creare un rilascio "out-of-source" con Visual Studio 2010 che contiene i binari firmati potrebbe essere:

mkdir bld
cd bld
cmake .. -DWITH_EMBEDDED_SERVER=1 -DSIGNCODE=1 -DWITH_THIRD_PARTY=HeidiSQL
cmake --build . --config relwithdebinfo --target package
cmake --build . --config relwithdebinfo  --target msi

Questa sequenza di comandi produce un pacchetto ZIP (esempio: mariadb-5.2.6-win32.zip) e uno MSI(esempio: mariadb-5.2.6-win32.msi) nella directory bld.

Build vecchio stile (MariaDB 5.1)

Le differenze tra le build della famiglia MariaDB 5.1 e quelle più recenti sono:

  • 5.1 non può essere compilato out-of-source.
  • 5.1 richiede un passaggio aggiuntivo (win\configure-mariadb.bat) durante la configurazione.
  • 5.1 richiede una distribuzione dei sorgenti già preparata (realizzata necessariamente su Unix) per poter creare il pacchetto ZIP. Richiede inoltre Cygwin per creare lo ZIP.
  • 5.1 non supporta il nuovo installer MSI, ma usa NSIS. Anche il build con NSIS richiede una distribuzione dei sorgenti già pronta e non si può fare tramite un repository bzr.

Ecco come compilare 5.1:

  win\configure-mariadb.bat
  cmake .
  cmake . --build relwithdebinfo

Creare pacchetti ZIP in 5.1

Il procedimento per creare pacchetti ZIP binari di 5.1è il seguente:

  • Si crei il tarball dei sorgenti. Questo si può fare solo su Unix (gli sviluppatori usano Linux) eseguendo BUILD/compile-dist && make dist. Si veda Creare il tarball dei sorgenti per trovare le istruzioni complete.
  • Si compili e si creino i pacchetti su Windows. Per farlo, si spacchetti il tarball dei sorgenti su Windows e si avvii sh win/make_mariadb_win_dist.

L'installer NSIS in 5.1

Se si vuole creare un rilascio, è necessario anche NSIS.

Si compili il server come al solito. Si crei poi la release, non per il debug o altre opzioni. Dopo aver fatto questo, si esegua semplicemente "cpack" nella directory principale per creare il pacchetto .exe.

Varie

  • In 5.2 e successive, Cygwin non è più necessario né supportato. Non lo si usi, se possibile.
  • Per compilare lo Storage Engine OQGRAPH, è necessario installare Boost. Si scarichi la distribuzione da http://www.boost.org/ e la si spacchetti. Si imposti la variabile di ambiente BOOST_ROOT in modo tale che punti alla directory dove Boost è stato appena spacchettato. Nota: il build di OQGRAPHè attualmente disabilitato in x64 a causa del Bug #756966

Commenti

Sto caricando i commenti......
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.