Gambas3 op iMac/OSX

Gambas draait niet “native” op Mac OS/X. Maar je kan een virtual machine met Linux installeren, en daarin Gambas.

Een voorbeeld, geïnstalleerd in 2024: Apple M1 met 16 GB en macOS Sequoia versie 15.6.1 met UTM Version 4.5.3 (99), met daarin OpenSuse Leap 15.5.

Deze virtuele openSUSE werkt vlot, in een venster dat je op een deel van het scherm kan draaien, vergroten, enz. Het werkt niet helemaal perfect; zo zie ik dat Firefox een zwarte “rand” heeft, het lijkt wel een zwart “kader” rond het venster van de browser.

Maar er zijn ook wel een paar Gambas dingen die niet perfect werken. Na wat problemen met elementen op het scherm heb ik mijn gambas3 applicatie (voor de desktop) wat aangepast, in grote lijnen komt het er op neer dat ik een aantal typische QT dingen niet gebruik. Ik heb mijn desktop keuze in Gambas ingesteld op iets LXDE of XFCE achtig, en nu kan ik de software perfect draaien.

En het valt me op dat Gambas daar razendsnel op draait, ondanks dat het “maar” in een VM is…

Database verbinding gebroken?

Database verbindingsprobleem

De combinatie Gambas 3.20+ met openSUSE Tumbleweed en/of Leap 15.6 geeft een probleem met bestaande gambas3 programma’s bij de verbinding met een mysql/mariadb database, zowel een oude als een recentere, op verschillende systemen:

  • Server version: 10.11.13-MariaDB-0ubuntu0.24.04.1 Ubuntu 24.04.
  • Server version: 10.0.32-MariaDB SLE 12 SP1 package =openSUSE.

Vastgesteld dat het niet (meer) werkt bij de combinatie OpenSUSE/Gambas … (zie verder welke versies nog wel werkten)

  • Leap 15.6 + Gambas 3.20.4
  • Tw 20250617 + Gambas 3.20.4
  • Tw 20250923 + Gambas 3.20.99 + libmariadb3 v. 3.4.5-2.1 + mariadb 11.8.3-MariaDB x86_64 ElDskM

Vanuit de IDE kan je in de console van de IDE (F11) de foutmelding zien:

Try hConnection.Open: Cannot open database: TLS/SSL error: SSL is required, but the server does not support it

deze zag ik ook in bepaalde versiecombinatie:

gb.db.mysql: warning: disabling SSL connection is not supported with your version of MySQL client library.

De fout lijkt voor te komen vanaf de versie waar de client standaard SSL probeert te gebruiken (zie ook MySQL/MariaDb zonder ssl?)

Maar manueel met de mariadbclient kan je er wel voorbij met –skip_ssl of met skip-ssl=true in het .my.cnf bestand; dat bestand heeft geen invloed op de werking van gambas.

Gambas versie?

Ik vermoed dat het vooral Gambas is, Het valt me op dat Gambas vanaf versie 3.20 wijzigingen heeft aan de database componenten. Er is nu zowel de oorspronkelijke gb.db die “grijs staat” om aan te geven dat die “deprecated” is. En er is een gb.db2 beschikbaar die “grotendeels backward compatible” is…

In Gambas 3.18.4 (openSUSE 15.4) is de gb.db component nog aanwezig (componenten in gebruik naast gb.form, gb.gui, gb.image en gb.setttings; geen extra gd.db.mysql of zo geselecteerd). In nieuwe gambas alleen nog gb.db2.

Upd: mijn oorsponkelijke idee dat het aan gb.db2 lag lijkt niet te kloppen. Het heeft waarschijnlijk meer met de mariadb client kant te maken.

Upd: Ik onderzoek nog welke de mariadb client library versies zijn…bv :

  • Tumbleweed 20250730 = libmariadb3 3.4.5-2.1
  • Leap 15.5 = 3.1.22-150000.3.36.

Suse versie? Database client versie?

Deze combinaties werken nog wel Leap=OpenSUSE, Tw= Tumbleweed

  • Leap 15.4 + Gambas 3.18.4 + libmariadb3 v. 3.1.22-150000.3.36.1 + mariadb 15.1 Distrib 10.6.15-MariaDB (lapt)
  • Leap 15.5 + Gambas 3.19.6 (**) + libmariadb3 v 3.1.22-150000.3.36.1 + mariadb 15.1 Distrib 10.6.20-MariaDB (E)
  • Leap 15.5 + Gambas 3.14.3 (1) + libmariadb3 3.1.22-150000.3.36.1 + mariadb 10.6.15-150400.3.29.3 (UTM imac) (1)uit openSUSE:Backports:SLE-15-SP2
  • Leap 15.5 + Gambas3.19.3-lp155.2.1 (munix9) + libmariadb3 v. 3.1.22-150000.3.36.1 + mariadb-client 10.6.15-150400.3.29.3
  • Leap 15.6(*) + Gambas 3.20.2 + libmariadb3 v. 3.1.22-150600.16.3 + mariadb 15.1 Distrib 10.11.9-MariaDB (Villers)
  • Tw2014… + Gambas 3.19.x
  • Tw20250216 + Gambas 3.20.99

(1) https://software.opensuse.org/package/gambas3, Niet-ondersteunde distributies, SUSE:SLE-15:GA, openSUSE:Backports:SLE-15-SP2 : 3.14.3

!(*) Leap 15.6 + Gambas3 3.20.2 : gb3.20.2-lp156.10.1 maar met “oude” gb.db, gb.db.mysql geselecteerd (die doorgeschrapt en grijs staan bij componenten) en zonder ~/.my.cnf en met een update naar gambas 3.20.4-lp156.20.2 die klaarstaat maar (nog) niet uitgevoerd is, beide van home:munix9 als bron. Misschien een openSUSE 15.5 die een upgrade kreeg naar 15.6? Met een native 15.6 werkt het niet.

(**) Leap 15.5 (iso van 2023) + download gambas-3.19.16.tar.gz en gecompileerd van source. Daarna start Gambas niet als root, wel als user. Bij het maken van een nieuw database project krijg je de componenten (en de databaseverbinding werkt):

  • gb.db
  • gb.db.form

Raspbian

Ter vergelijking, werkt ok in Raspbian :

  • Raspbian 11: 6.1.21 + Gb 3.15.2 + mariadb-10.5 + libmariadb3 1:10.5.23-0+deb11u1 (libmariadb3_10.5.29-0+deb11u1_armhf.deb)
  • Raspbian 11 6.1.21 + Gb 3.15.2 + mariadb-10.5 + libmariadb3 1:10.5.26-0+deb11u2 (libmariadb3_10.5.26-0+deb11u2_armhf.deb)

Dringendste is: hoe bestaande programma’s terug aan het werk krijgen? Oude distributies installeren? Kan alleen de mariadb client een oude versie blijven?

Volgende vraag is: hoe de nieuwe gb.db2 gebruiken, wat moet aangepast worden, wat is anders?

Update: 2025 09 26 : Tumbleweed 20250617 krijgt een update inclusief Gambas…dat loste het niet op.

Wat is gambas?

Featured

  • Gambas is een laagdrempelige programmeeromgeving op Linux om (Linux-) programma’s te maken voor de verschillende desktops of voor de commandolijn (CLI; scripts die manueel gestart, of automatische gestart kunnen worden, of op een server draaien), het geheel doet een beetje denken aan Delphi, maar dan als free software / open source project en met basic als basis voor de taal.
  • De Gambas programmeertaal is een object georiënteerde knipoog naar visual basic, maar voelt vooral erg native Linux aan, en de IDE is volledig in Gambas geschreven.
  • Git gebruik is geïntegreerd.
  • Continue reading

Programmeer of gebruiksversie

Ik heb doorgaans problemen bij het tegelijk schrijven en gebruiken van software

  1. de gegevens (database): ik wil niet het risico lopen om gegevens te verliezen door programmeerwerk dat nog niet in orde is, dus moet mijn programmeren gebeuren met andere data dan mijn “gebruik”.
  2. de bestanden: als ik bestanden gebruik om te lezen of te manipuleren (verplaatsen naar ander directories bv), wil ik ook niet bij het programmeren door fouten daar bestanden verliezen of wanorde creëren in de structuur.
  3. Extreem uit elkaar lopende versies, wat gemakkelijk kan met git, levert mij bij eenzelfde gambas programma het probleem op dat het uitvoerbare programma dat gemaakt wordt dezelfde naam heeft, en dat bv de executable van de programmeerversie de “goede” versie die in gebruik is, zal overschrijven.

Gambas3 op Tumbleweed 202507..

Ik ben overgestapt op Tumbleweed en Gambas 3.20.4 na een mislukte installatie op openSUSE 15.6

Tumbleweed.. 14/6/2025 (0613)

Distributions

openSUSE Tumbleweed

Education Experimental 3.14.3

home:gambas:stable Community 3.20.4+20250520+1

Dit lukte en deze is in gebruik: 3.20.4.

Enkel kijken of

  • ik deze kan updaten zonder Gambas te verliezen
  • Ik dit kan herhalen op een nieuwe Tumbleweed installatie…

Tumbleweed 0702 lukt het in eerste instantie niet met de 3.20.4 uit de community repository. Ik doe eerst een zypper dup.

Er is nog de “master” versie 3.20.99…

Gambas verstaat Note, Todo en Old

Note en Todo worden herkend

Ik heb een beetje toevallig ontdekt dat Gambas een mooi overzichtje geeft van bepaalde opmerkingen die ik in de broncode heb gemaakt. Ini het deel van het venster onderaan waar de foutmeldingen van het compileren komen, kan je ook kiezen om de “Notes” te zien. Selecteer het Notes icoon in het rijtje “Konsole”, “Waarschuwingen”, “Notes”, “Versiecontrole (Git)”.

In vier kolommen krijg je een ovezicht van opmerkingen (commentaren) die je in je broncode gemaakt hebt met een bepaald voorvoegsel, bv “Todo” of “Note”. NOTE’s worden in het zwart getoond, TODO’s in het groen.

Type | Klasse | Lijn | Tekst

NOTE | Klassenaam1 | Lijnnummer | Tekst van de commentaar

TODO | Klassenaam2 | Lijnnummer | Tekst van de commentaar

Als je op een lijn klikt ga je onmiddellijk naar die code in de editor. Zeker handig als je een onafgewerkt stuk code aangeduid had met Todo, en het nadien vergeten was. Andere commentaren die in mijn code staan verschijnen niet, zoals “reload list”, “ok” enz.

Bestandsnaam met .old wordt herkend

Even toevallig ontdekt: ik had een betere versie gemaakt van een Form en hernoemde via mijn bestandbeheer (dus niet in de Gambas IDE) de oorspronkelijke versie naar “… .old”; tot mijn verrassing werd dat .old bestand in de IDE zichtbaar met een vuilbakje ernaast.

Ik had beide bestanden van de Form FHtmlOut hernoemd naar FHtmlOut.Form.old en FHtml.Class.old, en dan geeft hij die beide bestanden weer maar met een rood vuilbakje ervoor.
Je kan dat hernoemen niet in de IDE doen, dan wordt de nieuwe naam geweigerd wegens de “.” in de naam (het zou handig zijn moest de IDE de nieuwe .old naam aanvaarden en zelf beide bestanden hernoemen, en bv ook ineens de code controleren of het nergens meer aangeroepen wordt)

Scripting

In forum.gambas.one vind je een voorbeeld om snel te starten:

#!/usr/bin/env gbs3
 Public Sub Main()
    Dim strFiles as String

    Exec ["ls", "-l"] To strFiles
    Print strFiles
 End

Bewaar het als script, met een naam bv Gb3TestScript1.gbs en maak het uitvoerbaar (chmod +x of in je bestandsbeheerder).

Om het te starten ga je in die directorie staan en doet

./Gb3TestScript1.gbs

Dit scipt doet niet veel bijzonders, maar het is een aanknopingspunt; zo kan je de uitvoer bv

  • op een gedeelde locatie zetten (bv nextcloud) om beschikbaar te maken voor collega’s
  • in html opmaken en in een directory van de webserver bewaren om zichtbaar te maken enz.

Programmanaam en datum

Gegevens over het gambas programma zelf krijg je vanuit code met Application

Print Application.Name
Print Application.Version

* Name is niet noodzakelijk hetzelfde als Application.Title (die kan anders gekozen zijn – zie Project Eigenschappen, Titel; het is een vrije tekst. Dit in tegenstelling tot de naam die overeenkomt met de projectmap-naam).

Moeilijker is de datum van het programma zelf, want terwijl je werkt in de IDE is dat eigenlijk niet gedefinieerd. Pas als je een executable hebt gemaakt (Project, Maak uitvoeringsbestand) kan je weten wat de datum van het uitvoerbare programma is.

Gegevens van een bestand vraag je op de commandolijn op met stat, en dat is overgenomen in Gambas in het commando Stat

De naam van de executable kan je niet direct opvragen, maar wel samenstellen uit pad, naam en de uitgang .gambas

De datum van een bestand: Stat(“naamvaneenbestand”) kan je zo invullen:

Stat(Application.Path &/ Application.Name & ".gambas").LastModified

Maar! als je deze code draait vanuit de IDE (F5 uitvoeren) krijg je een foutmelding: “File or directory does not exist”

Dat kan je opvangen door er Try voor te zetten, toon eventueel de foutmelding ergens:

' (er is een TextLabel voor de titel gemaakt) 
txlbTitle.Text = Application.Name & " (datum ...)"
Try txlbTitle.Tooltip = Stat(Application.Path &/ Application.Name & ".gambas").LastModified
If Error Then
txlbTitle.Tooltip &= " tried path/name: " & Application.Path &/ Application.Name & ".gambas" & " err: " & Error.Text
Endif

MySQL/mariadb zonder ssl?

In openSUSE Tumbleweed werkt de databaseverbinding naar een lokale server niet vanuit een Gambas programma.

Op de commandline met mysql client wordt duidelijk dat een veilige verbinding verondersteld wordt (ssl), maar mijn interne server heeft dat niet. Je kan met een parameter --skip_ssl afdwingen om dat niet te doen, maar hoe doe je dat vanuit je Gambas programma? Ik dacht het ooit al eens opgelost te hebben maar ik weet niet meer hoe…

De help van de client zegt: Default options are read from the following files in the given order:
/etc/my.cnf ~/.my.cnf

In een post las ik:

“If you don’t want to type --skip-ssl on the command line every time, you can instead add this to /etc/mysql/mariadb.conf.d/50-client.cnf or ${HOME}/.my.cnf
[client]
skip-ssl = true

Maar dat lijkt niet gebruikt of gelezen te worden door het gambas programma…

In openSUSE Leap 15.6 werkt het (nog) wel en is Gambas3 (ook/weer) installeerbaar (te verifiëren, niet altijd blijkbaar).

Bladwijzer in de broncode (bookmark)

Als je een probleem in de broncode aan het oplossen bent, moet je kunnen heen en weer springen tussen verschillende stukken code. Daarvoor kan je een bladwijzer zetten om je vorige positie te onthouden: sta op een lijn en druk Ctrl-B. Er verschijnt een zacht (lichtblauw bij mij) pijltje voor de lijn.

Ga naar een willekeurige andere lijn in je text (als je weet dat je rond 500 bezig was, druk Ctrl-G 500.

Ga nu snel terug naar je bookmark met Alt-PageUp of Alt-PageDown.

Dat is handiger dan er breekpunten voor te gebruiken, die kunnen later hinderen.