build: register static FFI symbols in jcode
ober
ad8bc0197bb00a51dae43c52e05780b70f4dd04f
--- a/support/ffi-symbols.list +++ b/support/ffi-symbols.list @@ -39,7 +39,6 @@ jerboa_tls_server_new jerboa_tls_server_new_pem jerboa_tls_server_new_mtls jerboa_tls_server_free -jerboa_x509_generate_self_signed_mem jerboa_tls_accept jerboa_tls_connect jerboa_tls_connect_timeout @@ -87,12 +86,9 @@ jerboa_wasm_memory_size jerboa_wasm_add_fuel jerboa_wasm_fuel_remaining jerboa_wasm_get_log -jerboa_wasm_allow_cdb_dir -jerboa_wasm_set_socket # ── jerboa-native always-on runtime helpers ───────────────────── jerboa_regex_compile -jerboa_regex_compile_ex jerboa_regex_is_match jerboa_regex_find jerboa_regex_find_at --- a/support/jcode-main.c +++ b/support/jcode-main.c @@ -250,6 +250,7 @@ int main(int argc, const char *argv[]) { Sregister_boot_file_bytes("scheme", (void *)scheme_boot_data, scheme_boot_size); Sbuild_heap(NULL, NULL); + register_ffi_symbols(); char *prog_path = write_program_tmpfile(); int status = Sscheme_program(prog_path, argc, argv); --- a/test/binary-startup.sh +++ b/test/binary-startup.sh @@ -56,6 +56,27 @@ case "$help" in ;; esac +# A published native package contains only the executable. Verify the static +# FFI registration works without repository libraries or runtime overrides. +mkdir -p "$stage/standalone" +cp "$binary" "$stage/standalone/jcode" +standalone_version=$(cd "$stage/standalone" && run_clean ./jcode --version) +case "$standalone_version" in + "jcode "*) ;; + *) + echo "FAIL: standalone jcode did not start: $standalone_version" >&2 + exit 1 + ;; +esac +standalone_help=$(cd "$stage/standalone" && run_clean ./jcode --help) +case "$standalone_help" in + *"Portable AI coding agent"* ) ;; + *) + echo "FAIL: standalone jcode --help did not print CLI help" >&2 + exit 1 + ;; +esac + clean_home=$stage/home mkdir -p "$clean_home" set +e