Gluon-Bug: führende Ziffern

Moin,

der site.conf-Validator in Gluon bricht offensichtlich ins Essen, wenn eine Domain z. B. mit 0 beginnt (000.conf mit domain_names = { 000 = 'Testmesh 4830.org e. V.' },). Das gibt dann merkwürdige Fehlermeldungen wie diese:

openwrt/staging_dir/hostpkg/bin/lua: scripts/site_config.lua:10: [string "domains/000.conf"]:4: '}' expected (to close '{' at line 3) near '='
stack traceback:
        [C]: in function 'assert'
        scripts/site_config.lua:10: in function <scripts/site_config.lua:3>
        (command line):1: in main chunk
        [C]: ?
Your site configuration (domains/000.conf) did not pass validation

Bei Änderung von 000 = in zz0 = in 000.conf hat site_config.lua nichts zu beanstanden …

Problem: wir nutzen für die Domainnamen den UN-Locode , und da beginnen einige Orte nun einmal mit Ziffern (und der Block mit führender 0 ist leer, sodaß wir da Sonderfälle abbilden). 0xy ergibt die Meldung einer falsch formattierten Zahl, '0xy' führt dann wieder zum falschen Fehler oben.

Lt. einem der Entwickler ist wohl ein entsprechendes Github-Issue notwendig, bevor sie sich das – trotz Kenntnissnahme im ›großen Forum‹ – überhaupt angucken.

Seriously: ich bin zu alt für derlei Kindergartenspielchen und werde aus $Gründen kein Gluon-Issue erstellen — für die daraus folgenden Diskussionen ist mir meine Lebenszeit – basierend auf historischen Issues – schlicht zu schade.

Kurzum:

  • Möchte jemand sich auf den Workflow der Gluon-Entwickler einlassen und via Github-Issue – alle Daten liegen auf dem Tisch – um einen Fix betteln?

Oder …

  • Spricht wer lua flüssig genug, um den Bug für die 4830.org-Firmware schlicht und einfach zu fixen, da es ›Upstream‹ offensichtlich nicht interessiert?

Hey Kai,

Ferienzeiten im Edu-Bereich sind Projektzeiten, also stressig, darum nur kurz ein paar Gedanken zu dem Problem ohne tief in den Code eingestiegen zu sein.

Ich denke, der Fehler ist nicht in der Configdatei, auch wenn der Debug Output das schließen lassen würde. Auch sehe ich keinen groben Fehler in der site_config.lua.

Im Makefile gluon/Makefile at 5a854853faf3111ce2b9c87f62263dc75519cbc2 · freifunk-gluon/gluon · GitHub auf Line 153. Da wird Lua in der Kommandozeile ausgeführt. In der Lua-Kommandozeile könnte der Dateiname mit ner führenden Zahl als arithmetischer Ausdruck interpretiert werden, anstatt als String… Unsicher.

Kannst du mal testen den Funktionsblock auszutauschen?

define CheckSite
	if ! GLUON_SITEDIR='$(GLUON_SITEDIR)' GLUON_SITE_CONFIG='$(1).conf' $(LUA) -e 'assert(dofile("scripts/site_config.lua")("$(1).conf"))'; then
		echo 'Your site configuration ($(1).conf) did not pass validation'
		exit 1
	fi
endef

In dieser Version wird "$(1).conf" direkt als String-Argument an die Funktion übergeben, anstatt über die Umgebungsvariable.

Bin gespannt. :wink:

Gruß
Björn

1 „Gefällt mir“

Sonst könnte auch so gehen - Makefile Funktionsblock ab Zeile 152:

define CheckSite
	if ! GLUON_SITEDIR='$(GLUON_SITEDIR)' GLUON_SITE_CONFIG='$(1).conf' $(LUA) -e 'assert(dofile("scripts/site_config.lua")('"'"'$(1).conf'"'"'))'; then
		echo 'Your site configuration ($(1).conf) did not pass validation'
		exit 1
	fi
endef

Stellt sicher, dass der Dateiname ein String ist. Sollte es zumindest. :wink:

Wenn es unpraktisch ist, die Makefile zu patchen, könnten wir versuchen, die site_config.lua zu patchen.

Zeile 6 gluon/scripts/site_config.lua at 5a854853faf3111ce2b9c87f62263dc75519cbc2 · freifunk-gluon/gluon · GitHub

		coroutine.yield(io.open(site..'"'..config..'"'):read('*a'))