From: Vladimír Čunát Date: Wed, 7 Jul 2021 15:14:44 +0000 (+0200) Subject: meson.build: add a simple sanity check of kres-gen result X-Git-Tag: v5.4.0~6^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ba45e7939f010888ce29ecf8693e3e6f9a32d18e;p=thirdparty%2Fknot-resolver.git meson.build: add a simple sanity check of kres-gen result --- diff --git a/daemon/lua/meson.build b/daemon/lua/meson.build index fabf0414b..f98fd631a 100644 --- a/daemon/lua/meson.build +++ b/daemon/lua/meson.build @@ -42,6 +42,38 @@ run_target( # run manually to re-generate kres-gen.lua command: find_program('./kres-gen.sh'), ) +# A simple config test: check that sizes of some structures match +# in C and pre-generated lua bindings. +# The point is that regeneration is quite expensive in time and dependencies, +# but this basic sanity check could be ran always. +if get_option('kres_gen_test') + types_to_check = { + 'time_t' : '#include ', + 'struct timeval' : '#include ', + 'zs_scanner_t' : '#include ', + 'knot_pkt_t' : '#include ', + } + # Construct the lua tester as a meson string. + kres_gen_test_luastr = ''' + dofile('@0@') + local ffi = require('ffi') + '''.format(meson.current_source_dir() / 'kres-gen.lua') + foreach tname, tinclude: types_to_check + kres_gen_test_luastr += ''' + assert(ffi.sizeof(ffi.typeof('@0@')) == @1@, + 'Lua binding for C type ' .. '@0@' .. ' has incorrect size: ' + .. ffi.sizeof(ffi.typeof('@0@')) + ) + '''.format(tname, meson.get_compiler('c').sizeof(tname, prefix : tinclude)) + endforeach + # Now feed it directly into luajit. + kres_gen_test = run_command(find_program('luajit'), '-e', kres_gen_test_luastr) + if kres_gen_test.returncode() != 0 + error('if you use released Knot* versions, please contact us: https://www.knot-resolver.cz/contact/\n' + + kres_gen_test.stderr().strip()) + endif +endif + lua_src = [ files('postconfig.lua'), files('kres.lua'), diff --git a/meson_options.txt b/meson_options.txt index f7ca06aab..572cd643d 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -175,6 +175,13 @@ option( description: 'html documentation dependencies and installation', ) +option( + 'kres_gen_test', + type: 'boolean', + value: true, + description: 'run kres_gen_test: a simple sanity check for our lua bindings', +) + option( 'config_tests', type: 'combo',