Written by nomorelogic Settembre 03, 2013, 07:41:00 pm15356 ViewsRating: (1 Rates)Print
fpcup
Introduzione
Lazarus e FPC sono due progetti complementari e - tutti e due - sono in costante fase di sviluppo. Ogni OS ha il suo sistema di installazione più o meno allineato all'ultima versione stabile sia del compilatore che dell'IDE. Però cosa accade se abbiamo già un ambiente lazarus/fpc installato e: - abbiamo bisogno di una versione precedente - vogliamo provare lazarus nella versione in fase di sviluppo per dare il nostro contributo - vogliamo provare una nuova caratteristica del compilatore fpc che è stata implementata ma non rilasciata - abbiamo la necessità di provare un nostro progetto con una nuova versione appena rilasciata - tramite il forum ufficiale sappiamo che un bug che è stato fixato ma non possiamo aspettare il prossimo installer - sappiamo che nella nostra versione è stato introdotto un nuovo componente ma questo è nella versione fixed - vogliamo un ambiente lazarus/fpc compilato dai sorgenti (ma siamo semplici esseri umani...) - qualsiasi altro motivo che si risolva con una seconda installazione di lazarus sul nostro sistema (a patto che non interferisca con l'installazione in uso)
Ovviamente ci sono parecchie strade per rimediare a quanto sopra, una su tutte una macchina virtuale. Però ce un'altra strada molto comoda e funzionale allo stesso tempo: fpcup. Se volete approfondire, i sorgenti e la documentazione li trovate al link https://bitbucket.org/reiniero/fpcup.
Cos'è fpcup fpcup è uno strumento che permette di scaricare una determinata versione dei sorgenti del compilatore FreePascal e dell'IDE Lazarus con lo scopo di compilarli ed ottenere così il relativo ambiente di sviluppo.
E' pensato per ottenere installazioni parallele ad altre, senza nessun tipo di interferenza, a prescindere dalla modalità del processo di installazione di quelle già presenti. Per ottenere questo risultato, compilatore fpc, ide Lazarus e cartella delle impostazioni vengono installate in cartelle isolate. Il compilatore fpc è sostituito da uno script (sotto linux fpc.sh) in modo da non interferire con quello eventualmente installato con un installer che mette il compilatore sotto PATH. Riassumendo il lavoro di fpcup: - scarica (se non lo trova) il compilatore bootstrap adatto alla nostra versione dell'OS (fpc è scritto in pascal e il bootstrap è un compilatore pascal di base) - scarica i sorgenti di fpc - scarica i sorgenti di lazarus - tramite il compilatore bootstrap si compilano i sorgenti fpc per ottenere il compilatore fpc stesso alla versione voluta - con il compilatore fpc ottenuto dal punto sopra, si compilano i sorgenti dell'IDE e cioè di Lazarus - vengono create delle impostazioni isolate - viene creato uno script per il lancio di lazarus - viene creato uno script per aggiornare i sorgenti in qualsiasi momento e ricostruire tutto Ci sono molte guide in giro per fare questo a mano ma con questo strumento in 20/30 minuti (dipende dal sistema) abbiamo il nostro ambiente pronto!
A corredo ci sono molte funzionalità come la possibilità di installare l'help, di impostare dei cross-compiler ed addirittura di installare automaticamente alcuni package (questa ultima caratteristica da Lazarus 1.1). In questa breve introduzione si sceglierà una combinazione Lazarus/FPC la si installerà e verrà mostrato come mantenere il tutto aggiornato direttamente dai repository. Non ci sono problemi se l'installazione non dovesse andare a buon fine o non dovesse soddisfarci: basterà eliminare la cartella principale con tutte le sottocartelle ed il gioco è fatto! Non rimarrà nulla di sporco in nessun OS.
Una nota abbastanza importante per chi proverà fpcup sotto linux. Prerequisiti per l'installazione di fpc/lazarus sono: - binutils (make ecc...) - bunzip2 - unzip - subversion client: svn ed io aggiungo anche: - il debugger gdb Quindi, prima di continuare, accertatevi di avere installati i pacchetti elencati sopra. Se non vi sentite troppo esperti del mondo linux vi consiglio un semplice workaround: installate l'ultimo lazarus che il vostro sistema di gestione di pacchetti vi propone. Con questo trucco avrete sistemato tutte le dipendenze necessarie .
Quale versione di FPC e Lazarus? Nel momento in cui scrivo, ci sono 4 versioni del compilatore FreePascal più interessanti delle altre: - stabile precedente: 2.6.0 - stabile corrente: 2.6.2 - stabile corrente con fix: 2.6.3 - trunk (in fase di sviluppo): 2.7.1 Per una lista completa, è possibile dare un'occhiata in: http://svn.freepascal.org/svn/fpc/
Per quanto riguarda Lazarus, le versioni più gettonate sono: - stabile precedente: 1.0.6 - stabile corrente: 1.0.8 - trunk (in fase di sviluppo): 1.1 Per una lista completa, è possibile dare un'occhiata in: http://svn.freepascal.org/svn/lazarus/
Già solo guardando le versioni disponibili si intuiscono le potenzialità di fpcup. Ad esempio l'installazione che preferisco (che tra l'altro è quella proposta di default) è una installazione con la versione fixed di fpc con la quale compilo l'IDE Lazarus. In questo modo posso aggiornare in qualsiasi momento la mia installazione principale con la certezza di avere tutti i fix del compilatore fpc. Alla versione sopra ne aggiungo spesso una seconda con fpc e lazarus ambedue nella versione trunk. Ovviamente, leggete la documentazione ufficiale per sapere la versione minima di fpc necessaria per compilare una certa versione di Lazarus.
Passiamo ai fatti
1) La cartella di installazione. Ho deciso di installare tutto ciò che riguarda lo sviluppo in una sottocartella 'dev' della home del mio utente. Al suo interno farò una installazione di lazarus/fpc.
Quindi apro una shell e digito i seguenti comandi:
Se tutto è andato a buon fine, potete passare al punto successivo.
In alternativa, potete aprire un browser su https://bitbucket.org/reiniero/fpcup/downloads per individuare la versione di fpcup adatta al vostro OS. Date sempre un'occhiata alle date di compilazione delle varie versioni di fpcup: se quella che interessa non è recentissima possiamo sempre scaricare i sorgenti e compilare fpcup con le ultimissime modifiche. Una volta scaricato fpcup, copiamolo in una cartella dedicata ad esso e apriamo una shell sulla cartella.
3) Pronti al lancio Fpcup ha tutta una serie di parametri per configurare l'installazione di cui abbiamo bisogno e tutti questi parametri hanno un default. E' quindi possibile lanciare fpcup senza alcun parametro ma, credetemi, ci prenderete gusto a personalizzare la vostra installazione e quindi iniziamo con il seguente comando:
Con questo comando installo un ambiente dove: - fpc: versione stabile attuale più fixes - lazarus: versione in fase di sviluppo (trunk) I valori che ho passato ai parametri --fpcURL e --lazURL sono degli alias che potete trovare nel file fpcup.ini. Questi alias corrispondono a degli url svn, esattamente quelli visti sopra nella sezione "Quale versione di FPC e Lazarus?". Se quindi non trovate gli alias che vi soddisfano potete tranquillamente mettere gli URL che prefetite. Per il parametro installdir, potete consultare la documentazione di fpcup ma sappiate che serve a definire una cartella in cui isolare compilatore, ide ed impostazioni.
Ci vorrà un po' di tempo perché il lavoro termini. Alla fine dovrete ottenere un log simile al seguente.
fpcup An FPC/Lazarus downloader/updater/installer Open source freeware (modified LGPL/BSD), see: https://bitbucket.org/reiniero/fpcup
This program will download the FPC and Lazarus sources from the source Subversion/SVN repositories, compile, and install. Result: you get a fresh, up-to-date Lazarus/FPC installation.
Version: based on commit 16105d7c3ec3 (Mon Jun 10 08:58:32 2013 +0200) Build date: 2013/06/10 09:12:05 Compiled for CPU: x86_64 on linux
The "binutilsdir" parameter (currently set to /home/user/dev/lazfpc01/fpcup) is not necessary or supported on this system. The parameter will be ignored.
Continue (Y/n): Info: 3-9-13 09:03:20: fpcup 16105d7c3ec3 (Mon Jun 10 08:58:32 2013 +0200) started. Info: /home/user/dev/lazfpc01/fpcbootstrap/x86_64-linux-ppcx64 is not a valid x86_64-linux-ppcx64 application (x86_64-linux-ppcx64 result code was: -1) Info: Going to download /tmp/TMP00000.tmp from URL: ftp.freepascal.org/pub/fpc/dist/2.6.0/bootstrap/x86_64-linux-ppcx64.bz2 Info: Going to move /tmp/TMP00000.tmp.out to /home/user/dev/lazfpc01/fpcbootstrap/x86_64-linux-ppcx64 Info: FPC: running make distclean: Info: Checking out/updating FPC sources... Info: FPC was at: branch revision FRET_UNKNOWN_REVISION (repository revision ) Info: FPC is now at: branch revision 25401 (repository revision 25402) Info: TFPCInstaller: building module FPC... Info: Running make all for FPC: Info: Running make install for FPC: Info: Created launcher script for FPC:/home/user/dev/lazfpc01/fpc/bin/x86_64-linux/fpc.sh Info: Creating fpc.cfg: Info: Checking out/updating Lazarus sources: Info: Lazarus was at: branch revision FRET_UNKNOWN_REVISION (repository revision ) Info: Lazarus is now at: revision 42568 Info: TLazarusNativeInstaller: building module BIGIDE... Info: BIGIDE: running make bigide: Info: Created Lazarus primary config directory: /home/user/dev/lazfpc01/config_lazarus Info: Lazarus: creating desktop shortcut: Info: helplazarus: documentation directory: /home/user/dev/lazfpc01/lazarus/docs/chm/ Info: Going to download /tmp/TMP00000.tmp.zip from URL: http://sourceforge.net/projects/lazarus/files/Lazarus%20Documentation/Lazarus%201.0/fpc-lazarus-doc-chm-1.0.zip/download Info: helplazarus: documentation directory: /home/user/dev/lazfpc01/lazarus/docs/chm/ Info: /home/user/dev/lazfpc01/lazarus/docs/html/build_lcl_docs is not a valid build_lcl_docs application (build_lcl_docs result code was: -1) Info: helplazarus: compiling build_lcl_docs help compiler: Info: helplazarus: compiling chm help docs: Info: helplazarus: WARNING: /home/user/dev/lazfpc01/lazarus/docs/chm/lcl/lcl.chm was created but is empty (perhaps due to FPC bugs). Lcl.chm may be out of date! Try running with --verbose to see build_lcl_docs error messages. Info: Getting module lazdatadesktop Info: TUniversalInstaller: building module lazdatadesktop... Info: Getting module doceditor Info: TUniversalInstaller: building module doceditor... Info: Getting module suggestedpackages Info: TUniversalInstaller: building module suggestedpackages... Info: Getting module fpcdocs Info: TUniversalInstaller: building module fpcdocs... Info: Getting module lazres Info: TUniversalInstaller: building module lazres... Info: TLazarusNativeInstaller: building module USERIDE... Info: Lazarus: running lazbuild to get IDE with user-specified packages: Info: Lazarus: creating desktop shortcut: Info: 3-9-13 09:21:16: fpcup finished. Info: Checking out/updating FPC sources...
Info: FPC: WARNING: found modified files. /home/user/dev/lazfpc01/fpc/utils/fpcmkcfg/fppkg.inc Diff with last revision stored in /home/user/dev/lazfpc01/fpc/REV25401.diff FPC: reverting before updating.
Info: FPC was at: branch revision 25401 (repository revision 25402) Info: No updates for FPC found. Info: TFPCInstaller: building module FPC... Info: Running make all for FPC: Info: Running make install for FPC: Info: fpc.sh launcher script already exists (/home/user/dev/lazfpc01/fpc/bin/x86_64-linux/fpc.sh); trying to overwrite it. Info: Created launcher script for FPC:/home/user/dev/lazfpc01/fpc/bin/x86_64-linux/fpc.sh Info: fpc.cfg already exists; leaving it alone. Info: Checking out/updating Lazarus sources: Info: Lazarus was at: revision 42568 Info: No updates for Lazarus found. Info: TLazarusNativeInstaller: building module BIGIDE... Info: BIGIDE: running make bigide: Info: Lazarus: creating desktop shortcut: Info: helplazarus: documentation directory: /home/user/dev/lazfpc01/lazarus/docs/chm/ Info: helplazarus: skipping docs download: FPC rtl.chm and fcl.chm already present in docs directory /home/user/dev/lazfpc01/lazarus/docs/chm/ Info: helplazarus: documentation directory: /home/user/dev/lazfpc01/lazarus/docs/chm/ Info: helplazarus: compiling chm help docs: Info: helplazarus: WARNING: /home/user/dev/lazfpc01/lazarus/docs/chm/lcl/lcl.chm was created but is empty (perhaps due to FPC bugs). Lcl.chm may be out of date! Try running with --verbose to see build_lcl_docs error messages. Info: Getting module lazdatadesktop Info: TUniversalInstaller: building module lazdatadesktop... Info: Getting module doceditor Info: TUniversalInstaller: building module doceditor... Info: Getting module suggestedpackages Info: TUniversalInstaller: building module suggestedpackages... Info: Getting module fpcdocs Info: TUniversalInstaller: building module fpcdocs... Info: Getting module lazres Info: TUniversalInstaller: building module lazres... Info: TLazarusNativeInstaller: building module USERIDE... Info: Lazarus: running lazbuild to get IDE with user-specified packages: Info: Lazarus: creating desktop shortcut: Info: 3-9-13 09:23:53: fpcup finished. Info: Checking out/updating FPC sources... Info: FPC was at: branch revision 25401 (repository revision 25403) Info: No updates for FPC found. Info: TFPCInstaller: building module FPC... Info: Running make all for FPC: Info: Running make install for FPC: Info: fpc.sh launcher script already exists (/home/user/dev/lazfpc01/fpc/bin/x86_64-linux/fpc.sh); trying to overwrite it. Info: Created launcher script for FPC:/home/user/dev/lazfpc01/fpc/bin/x86_64-linux/fpc.sh Info: fpc.cfg already exists; leaving it alone. Info: Checking out/updating Lazarus sources: Info: Lazarus was at: revision 42568 Info: No updates for Lazarus found. Info: TLazarusNativeInstaller: building module BIGIDE... Info: BIGIDE: running make bigide: Info: Lazarus: creating desktop shortcut: Info: helplazarus: documentation directory: /home/user/dev/lazfpc01/lazarus/docs/chm/ Info: helplazarus: skipping docs download: FPC rtl.chm and fcl.chm already present in docs directory /home/user/dev/lazfpc01/lazarus/docs/chm/ Info: helplazarus: documentation directory: /home/user/dev/lazfpc01/lazarus/docs/chm/ Info: helplazarus: compiling chm help docs: Info: helplazarus: WARNING: /home/psuser/dev/lazfpc01/lazarus/docs/chm/lcl/lcl.chm was created but is empty (perhaps due to FPC bugs). Lcl.chm may be out of date! Try running with --verbose to see build_lcl_docs error messages. Info: Getting module lazdatadesktop Info: TUniversalInstaller: building module lazdatadesktop... Info: Getting module doceditor Info: TUniversalInstaller: building module doceditor... Info: Getting module suggestedpackages Info: TUniversalInstaller: building module suggestedpackages... Info: Getting module fpcdocs Info: TUniversalInstaller: building module fpcdocs... Info: Getting module lazres Info: TUniversalInstaller: building module lazres... Info: TLazarusNativeInstaller: building module USERIDE... Info: Lazarus: running lazbuild to get IDE with user-specified packages: Info: Lazarus: creating desktop shortcut: Info: 3-9-13 09:28:23: fpcup finished.
Andiamo ad osservare cosa abbiamo ottenuto nella cartella lazfpc01: config_lazarus : cartella di settings per lazarus, isolata da quella standard dell'installer ufficiale extras : cartella extras di fpc fpc : installazione del compilatore fpc (quì troverete fpc.sh con cui compilare i vostri progetti) fpcbootstrap : compilatore di bootstrap (tramite porametro potremo impedire nuovi download) fpcup : la nostra cartella di lavoro di fpcup lazarus : installazione dell'ide lazarus
In aggiunta: - sul desktop abbiamo un link 'Lazarus_lazfpc01' col quale lanciare il nuovo ambiente - nella cartella home dell'utente abbiamo lo script fpcupdate con il quale ricostruire il tutto con i nuovi sorgenti che verranno scaricati da snv - nella cartella home dell'utente abbiamo un secondo script per lanciare il nuovo ambiente - nella cartella home dell'utente abbiamo il log fpcup.log Consiglio vivamente di spostare i 3 file (fpcupdate.sh, Lazarus_lazfpc01.sh e fpcup.log) nella home dell'utente in "~/dev/lazfpc01/fpcup" poichè se installerete altre combinazioni fpc/lazarus potreste vederli sovrascrivere.
Tra questi, molto importante è lo script fpcupdate .sh. Grazie a questo script potrete infatti aggiornare il vostro ambiente di sviluppo con gli ultimi sorgenti scaricati da svn!
In aggiunta a tutto questo devo dire che fpcup è un tool in costante sviluppo e possono capitare dei piccoli malfunzionamenti. E' anche vero che ad oggi di bug seri non ne ho notati (anche perchè non uso proprio tutti i parametri) e comunque sia gli autori sono sempre pronti a sistemare eventuali bug.
Buon divertimento.
About the author
nomorelogic registered at Italian community of Lazarus and Free Pascal on Marzo 10, 2012, 12:27:59 pm and has posted 2870 posts in the boards since then. Last visit was Oggi alle 09:12:49 am.
Questo blog non rappresenta una testata giornalistica poiché viene
aggiornato senza alcuna periodicità. Non può pertanto considerarsi un
prodotto editoriale ai sensi della legge n. 62/2001.
Questo sito utilizza cookie, anche di terze parti, per offriti servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina, cliccando su un link o proseguendo la navigazione in altra maniera, acconsenti all’uso dei cookie.