Commit 4237b587 authored by Vladimír Čunát's avatar Vladimír Čunát

Revert "lua: embed bytecode instead of stripped source"

This reverts commit 64f80706.
TL;DR: it brought almost no benefits AFAIK and potential for problems.

The "portable bytecode" produced by luajit isn't compatible when
(lib)luajit version changes or when some build-time configuration of it
changes.  If you mix these up, kresd fails to start.
parent 82ccbbd3
......@@ -23,7 +23,7 @@ ETCDIR ?= $(PREFIX)/etc/kresd
CC ?= cc
RM := rm -f
LN := ln -s
LUA := luajit -b -t h
XXD_LUA := ./scripts/embed-lua.sh
INSTALL := install
# Flags
......
......@@ -12,7 +12,7 @@ kresd_DIST := daemon/lua/kres.lua daemon/lua/trust_anchors.lua
# Embedded resources
%.inc: %.lua
@$(call quiet,LUA,$<) $< $@
@$(call quiet,XXD_LUA,$<) $< > $@
ifeq ($(AMALG), yes)
kresd.amalg.c: daemon/lua/sandbox.inc daemon/lua/config.inc
else
......
......@@ -690,9 +690,10 @@ static int engine_loadconf(struct engine *engine, const char *config_path)
lua_pop(engine->L, 1);
}
/* Init environment */
#include "daemon/lua/sandbox.inc"
if (l_dobytecode(engine->L, luaJIT_BC_sandbox,
sizeof(luaJIT_BC_sandbox), "init") != 0) {
static const char sandbox_bytecode[] = {
#include "daemon/lua/sandbox.inc"
};
if (l_dobytecode(engine->L, sandbox_bytecode, sizeof(sandbox_bytecode), "init") != 0) {
fprintf(stderr, "[system] error %s\n", lua_tostring(engine->L, -1));
lua_pop(engine->L, 1);
return kr_error(ENOEXEC);
......@@ -706,9 +707,10 @@ static int engine_loadconf(struct engine *engine, const char *config_path)
}
if (ret == 0) {
/* Load defaults */
#include "daemon/lua/config.inc"
ret = l_dobytecode(engine->L, luaJIT_BC_config,
sizeof(luaJIT_BC_config), "config");
static const char config_bytecode[] = {
#include "daemon/lua/config.inc"
};
ret = l_dobytecode(engine->L, config_bytecode, sizeof(config_bytecode), "config");
}
/* Evaluate */
......
#!/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 $?
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment