Compilare Gambas

Da Gambas-it.org - Wikipedia.

I Repository

Per chi viene da altri sistemi operativi l’installazione di un programma in Linux può apparire poco chiara.
Ormai, visto che tutti abbiamo uno smartphone, l’idea di uno Store, cioè di un luogo virtuale da cui scaricare un’applicazione che ci serve, non è più una novità e infatti il sistema è stato copiato da Linux e dai suoi Repository.
Se in Linux serve un dato programma basta sceglierlo nel repository, fra le tante applicazioni del genere disponibili liberamente, installarlo e siamo subito operativi.

Purtroppo date le tante distribuzioni che arricchiscono Linux, non sempre i programmi ivi presenti sono all’ultima versione, questo accade per i programmi più diffusi figurarsi per quelli di nicchia come Gambas.

Quindi se si vuole l’ultima versione di Gambas, Stable oppure Master quella fresca di giornata con tutti gli ultimi fix, non rimane altra scelta che compilare.

Invero per chi usa Ubuntu o una sua derivata tipo Mint esistono dei repository speciali chiamati PPA, quello di Gambas è curato direttamente da Benoit Minisini ideatore di Gambas.
Normalmente 24 ore dopo l’uscita, la nuova versione è disponibile.
A questo link troviamo i comandi per il terminale:
https://gambaswiki.org/wiki/install/ubuntu#t1


Cosa significa compilare

Compilare è una semplicissima operazione che permette di trasformare un file di codice sorgente in un file binario eseguibile dalla nostra distribuzione.

L’operazione consiste nell’inviare al compilatore gcc attraverso il terminale alcuni comandi che eseguono degli script di shell e delle macro che automatizzano il tutto.
Per prima cosa vengono eseguiti gli script che predispongono il codice per la nostra distribuzione quindi le funzioni (macro) che creano e installano l’eseguibile.

Compilare un programma in GNU/Linux consiste in pratica nel dare tre comandi da terminale (configure [script], make e make install [funzioni]), quale è dunque il motivo che spaventa i più?

Credo che quello principale sia che Windows ci ha abituato a fare tutto attraverso le finestre e pertanto scrivere comandi in un terminale ci appare una cosa aliena, però se abbiamo velleità di programmazione la cosa risulta risibile, visto che programmare altro non è che scrivere comandi, i nostri comandi.

Gambas, come tutte le applicazioni open source viene rilasciato sotto forma di codice sorgente [Nota 1] ed è attualmente presente su GitLab a questo indirizzo:
https://gitlab.com/gambas/gambas

GitLab si apre sulla versione Master (quella in corso di sviluppo), ma agendo sul pulsante menu è possibile scegliere la versione stabile (Stable).
Quindi il suo codice può essere scaricato da li, anche graficamente, come file compresso: Tarball (con estensione .tar.gz, .tar.bz2 o .tar) oppure Zip (.zip).

Dopo aver scaricato il file nella cartella desiderata, tipicamente la nostra home, si può decomprimerlo usando il tasto destro del mouse e l’apposita voce di menu, ma visto che comunque per compilare dai sorgenti si dovrà fare uso del terminale e più avanti verrà descritta l’intera operazione di scaricamento da GitLab, scaricare il file in questo modo appare inutile, a meno che si stia cercando una versione precedente l’attuale.
Quindi è comunque bene sapere che anche da GitLab sotto la voce Comit si può scaricare in forma compressa qualunque Gambas precedente sia stabile che di sviluppo.

Le librerie dinamiche

Tutto troppo facile, vero?
Uno potrebbe immaginare che vengano celate delle difficoltà !
E infatti, la difficoltà del caso si chiama Libreria.
Un programma per funzionare ha bisogno che nel sistema siano installate determinate librerie, esattamente quelle della giusta versione.
Pertanto installare un programma è semplice, trovare le librerie di cui si necessita per la distribuzione in nostro uso lo è un po’ meno e non perché sia difficile installarle ma perché è difficile capire come è stata nominata quella specifica libreria.
Gambas oltre che un programma è anche un linguaggio di programmazione e va da se che si basi su moltissime librerie.

Niente panico

La stragrande maggioranza delle distribuzioni deriva da poche altre distribuzioni, per le più diffuse, le librerie utili a Gambas sono elencate nel file di configurazione YAML a questo indirizzo:
https://gitlab.com/gambas/gambas/-/blob/master/.gitlab-ci.yml

 Nota: il tipo di desktop in uso non è importante per la compilazione, quello che conta riguardo alle librerie da scaricare è la distribuzione che è il modo in uso a GNU/Linux di chiamare il sistema operativo.


I passaggi per compilare Gambas


 Nota: la compilazione va fatta su una distribuzione pulita, vale a dire che Gambas non può essere già presente anche se scaricato dai repository.
Se è già presente, prima di poter compilare Gambas occorre rimuoverlo completamente.

Qui come esempio useremo una distribuzione basata su Arch Linux, tipo Manjaro, Endeavour oltre che naturalmente a Arch stesso.
Attualmente Benoit Minisini utilizza Manjaro con KDE.

Quanto qui descritto si può adattare a qualunque altra distribuzione ed è indirizzato a programmatori dilettanti come lo scrivente, se siete dei professionisti il consiglio è di dare un’occhiata comunque.
Quello che segue servirà a preparare la giusta lista dei comandi che poi daremo da terminale usando il copia e incolla.

  • Copiamo il codice yaml su cui è basata la nostra distribuzione.
    Ad esempio se noi utilizzassimo Mint 22, dovremmo copiare il codice yaml di Ubuntu Noble sulla quale Mint 22 è basata.
    Attenzione: le librerie in yaml sono scritte in modo differente in base alla distribuzione, alcune sono incolonnate come quelle di Arch altre scritte sequenzialmente in un unica lunga stringa vedi Ubuntu, dobbiamo accertarci di copiare tutto.
  • Incolliamo il codice yaml su un file di testo con l’aiuto di un editor e andiamo a cambiarlo così:
    • eliminiamo le prime quattro righe
    • anteponiamo sudo davanti al/ai comando che installa le librerie, nel caso di Arch si dovrà dare due comandi come scritto nel file, se nella nostra distribuzione non abbiamo sudo ci dobbiamo trasformare in utente root per poter installare le librerie.
      Dopo averle incollate le librerie vanno cambiate in modo che siano separate fra di loro da uno spazio eliminando così eventuali tabulazioni e/o gli accapo.
    • Ora dipende da quale Gambas desideriamo scaricare e installare, questo nuovo comando dobbiamo inserirlo, in una nuova riga, nel file di testo subito dopo le librerie e serve a copiare in una nuova cartella all’interno della nostra home il progetto Gambas da compilare, per la versione stabile il comando è:
      git clone --branch stable --depth=1 https://gitlab.com/gambas/gambas.git gambas-stable
      Per la versione sviluppo chiamata Master il comando è:
      git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel
    • Dopo aver aggiunto il comando desiderato, occorre spostarsi all’interno della nuova cartella con uno di questi comandi, per la versione stabile il comando è:
      cd gambas-stable
      Per la versione sviluppo il comando è:
      cd gambasdevel
    • Gli altri comandi incollati rimangono invariati, tranne l'ultimo anch'esso preceduto da sudo, vale a dire:
      ./reconf-all
      GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl
      make -j$(nproc)
      sudo make install

A questo punto, se avessimo scelto la versione di sviluppo (Master), il nostro file di testo dovrebbe assomigliare a questo, da notare che per facilitare la lettura, ho aggiunto degli spazi tra un comando e l’altro:

 sudo pacman -Syu --needed --noconfirm alure autoconf automake bzip2 zstd coreutils curl dbus gcc gdk-pixbuf2 git glew glib2 gmime3 gsl gst-plugins-base gstreamer gtk2 gtk3 imlib2 intltool libffi libgl libgnome-keyring mariadb-libs librsvg libsm libxcursor libxml2 libxslt libxtst mariadb make mesa ncurses pcre
 
 sudo pacman -Syu --needed --noconfirm pkg-config poppler poppler-glib postgresql postgresql-libs qt5-svg qt5-x11extras sdl2 sdl2_gfx sdl2_image sdl2_mixer sdl2_net sdl2_ttf sdl_mixer sdl_ttf smpeg sqlite unixodbc v4l-utils xdg-utils zlib gettext qt5-webengine webkit2gtk qt6-svg qt6-webengine mongo-c-driver
 
 git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel
 
 cd gambasdevel
 
 ./reconf-all
 
 GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl
 
 make -j$(nproc)
 
 sudo make install

Non ci rimane che copiare e incollare, un comando alla volta, nel terminale della nostra distribuzione che nel caso dell'esempio è Manjaro Linux.
Come detto se la nostra distribuzione non usa sudo occorre che al posto di sudo ci eleviamo a utente root, senza mettere sudo nel comando.


I passaggi per aggiornare

Questo sistema è un po' drastico e se si ha padronanza di git possiamo anche saltarlo, occorre solo sapere che è l’unico sistema che garantisce l’aggiornamento sicuro di Gambas:

 cd gambasdevel
 
 sudo make uninstall
 
 cd
 
 rm -rf gambasdevel/
 
 git clone --depth=1 https://gitlab.com/gambas/gambas.git gambasdevel
 
 cd gambasdevel
 
 ./reconf-all
 
 GAMBAS_CONFIG_FAILURE=1 ./configure -C --disable-sqlite2 --disable-qt4 --disable-pdf --disable-qt5webkit --disable-gtkopengl
 
 make -j$(nproc)
 
 sudo make install

Nota: se usiamo la versione stabile dobbiamo sostituire gambasdevel con gambas-stable e combiare il comando git clone con quello del ramo stabile (git clone --branch stable --depth=1 https://gitlab.com/gambas/gambas.git gambas-stable).


Note

[1] È proprio il fatto di dover nascondere il codice per poterlo vendere che in Windows i programmi vengono distribuiti come binari (.exe).
Sono decisamente facili da installare (meno che da repository) rispetto alla compilazione, ma dobbiamo ammettere che compilare è molto meno oneroso.