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?
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.
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.
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.