From 64f80706fbe428e4a93ac92f22cf6f5905a1e977 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Vladim=C3=ADr=20=C4=8Cun=C3=A1t?= Date: Mon, 14 Nov 2016 14:54:15 +0100 Subject: [PATCH] lua: embed bytecode instead of stripped source It seems a bit cleaner, though impact on size and load speed should not be noticeable. We simply install most of the lua code, as before, and I assume that we *do* want to keep that visibility, at least by default. Suggested on !57. --- config.mk | 6 +++--- daemon/daemon.mk | 2 +- daemon/engine.c | 14 ++++++-------- scripts/embed-lua.sh | 10 ---------- 4 files changed, 10 insertions(+), 22 deletions(-) delete mode 100755 scripts/embed-lua.sh diff --git a/config.mk b/config.mk index 162384e71..60686fa2a 100644 --- a/config.mk +++ b/config.mk @@ -20,10 +20,10 @@ MODULEDIR ?= $(LIBDIR)/kdns_modules ETCDIR ?= $(PREFIX)/etc/kresd # Tools -CC ?= cc -RM := rm -f +CC ?= cc +RM := rm -f LN := ln -s -XXD_LUA := ./scripts/embed-lua.sh +LUA := luajit -b -t h INSTALL := install # Flags diff --git a/daemon/daemon.mk b/daemon/daemon.mk index fcdbde5ba..583e2830a 100644 --- a/daemon/daemon.mk +++ b/daemon/daemon.mk @@ -12,7 +12,7 @@ kresd_DIST := daemon/lua/kres.lua daemon/lua/trust_anchors.lua # Embedded resources %.inc: %.lua - @$(call quiet,XXD_LUA,$<) $< > $@ + @$(call quiet,LUA,$<) $< $@ ifeq ($(AMALG), yes) kresd.amalg.c: daemon/lua/sandbox.inc daemon/lua/config.inc else diff --git a/daemon/engine.c b/daemon/engine.c index e4d05d011..63b0046b1 100644 --- a/daemon/engine.c +++ b/daemon/engine.c @@ -688,10 +688,9 @@ static int engine_loadconf(struct engine *engine, const char *config_path) lua_pop(engine->L, 1); } /* Init environment */ - static const char sandbox_bytecode[] = { - #include "daemon/lua/sandbox.inc" - }; - if (l_dobytecode(engine->L, sandbox_bytecode, sizeof(sandbox_bytecode), "init") != 0) { + #include "daemon/lua/sandbox.inc" + if (l_dobytecode(engine->L, luaJIT_BC_sandbox, + sizeof(luaJIT_BC_sandbox), "init") != 0) { fprintf(stderr, "[system] error %s\n", lua_tostring(engine->L, -1)); lua_pop(engine->L, 1); return kr_error(ENOEXEC); @@ -705,10 +704,9 @@ static int engine_loadconf(struct engine *engine, const char *config_path) } if (ret == 0) { /* Load defaults */ - static const char config_bytecode[] = { - #include "daemon/lua/config.inc" - }; - ret = l_dobytecode(engine->L, config_bytecode, sizeof(config_bytecode), "config"); + #include "daemon/lua/config.inc" + ret = l_dobytecode(engine->L, luaJIT_BC_config, + sizeof(luaJIT_BC_config), "config"); } /* Evaluate */ diff --git a/scripts/embed-lua.sh b/scripts/embed-lua.sh deleted file mode 100755 index 80f6cba26..000000000 --- a/scripts/embed-lua.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -set -e -# Clean unnecessary stuff from the lua file; note the significant tabulator. -alias strip="sed -e 's/^[ ]*//g; s/ */ /g; /^--/d; /^$/d'" -if command -v xxd > /dev/null 2>&1; then - strip < "$1" | xxd -i - -else - strip < "$1" | hexdump -v -e '/1 "0x%02X, " " "' -fi -exit $? -- 2.47.2