was genau passiert hier:
define Package/ffnw-config-mode-geo-location/postinst #!/bin/sh $(call GluonCheckSite,check_site.lua) endef
Gruß
Johannes
Hi,
On 03/16/17 22:32, Johannes Rudolph via Dev wrote:
was genau passiert hier:
define Package/ffnw-config-mode-geo-location/postinst
postinst ist eine makefile Definition die vom OpenWRT buildroot zur Verfügung gestellt wird. Dort können shell Scripte formuliert werden die nach der Installation des eigentlichen pkg Inhaltes ausgeführt werden [0].
#!/bin/sh
Wichtig beim postinst define ist, das ein shebang zwingend gesetzt werden muss. Dieser gibt an wie folglich interpretiert werden soll.
$(call GluonCheckSite,check_site.lua)
Das ist der Aufruf eines Call defines names GluonCheckSite mit dem übergebenen Parameter check_site.lua welches im pkg dir enthalten ist.
siehe dazu [1] <-- aktueller upstream von gluon bei uns ist es noch in $(GLUONDIR)/include/package.mk
# Annoyingly, make's shell function replaces all newlines with spaces, so we have to do some escaping work. Yuck. define GluonCheckSite [ -z "$$IPKG_INSTROOT" ] || sed -e 's/-@/\n/g' -e 's/+@/@/g' <<'END__GLUON__CHECK__SITE' | "${TOPDIR}/staging_dir/hostpkg/bin/lua" -e 'dofile()' local f = assert(io.open(os.getenv('IPKG_INSTROOT') .. '/lib/gluon/site.json')) local site_json = f:read('*a') f:close()
site = require('cjson').decode(site_json) $(shell cat '$(TOPDIR)/../scripts/check_site_lib.lua' '$(1)' | sed -ne '1h; 1!H; $$ {g; s/@/+@/g; s/\n/-@/g; p}') END__GLUON__CHECK__SITE endef
Hier wird im Grunde zuvor geprüft ob bestimmte Bedingungen erfüllt z.b. ober ein lua interperter vorhanden ist oder oder das router root fs existiert über global envs. Danach wird die site.json aus dem Router root fs mit lua geparserd und mit den übergebenden Parametern also dem check_site.lua welches die site.conf Parameter liefert angepasst.
Falls ich den call def noch mal genau erklären soll z.b. die funktion des regex usw. gerne fragen hab mir das jetzt um 00:10 Uhr eher verkniffen ;-P
endef
endef beendet den Definitionsbereich von postinst
cheers Tarek
[0] https://wiki.openwrt.org/doc/devel/packages [1] https://github.com/freifunk-gluon/gluon/blob/master/package/gluon.mk#L7-L16