zhixi-document-runtime/scripts/check-symbols.sh

78 lines
2.5 KiB
Bash
Executable File

#!/bin/bash
# Verify UniFFI C ABI symbols exist in the static library.
# Run after build-ios.sh or independently to diagnose FFI issues.
set -e
LIB="${1:-bindings/ios/simulator/libzx_document_ffi.a}"
if [ ! -f "$LIB" ]; then
echo "ERROR: Library not found: $LIB"
exit 1
fi
echo "==> Checking UniFFI C ABI symbols in $LIB..."
PASS=0
FAIL=0
check() {
if nm "$LIB" 2>/dev/null | grep -q "_$1"; then
PASS=$((PASS + 1))
else
echo " MISSING: _$1"
FAIL=$((FAIL + 1))
fi
}
# API dispatch functions
check uniffi_zx_document_ffi_fn_func_detect_material_type
check uniffi_zx_document_ffi_fn_func_parse_markdown
check uniffi_zx_document_ffi_fn_func_parse_text
check uniffi_zx_document_ffi_fn_func_read_image_meta
check uniffi_zx_document_ffi_fn_func_read_text_stats
check uniffi_zx_document_ffi_fn_func_search_markdown_blocks
check uniffi_zx_document_ffi_fn_func_search_text_content
check uniffi_zx_document_ffi_fn_func_create_note_anchor
check uniffi_zx_document_ffi_fn_func_push_reading_event
check uniffi_zx_document_ffi_fn_func_update_reading_position
check uniffi_zx_document_ffi_fn_func_export_pending_events
check uniffi_zx_document_ffi_fn_func_clear_exported_events
# V2 session lifecycle
check uniffi_zx_document_ffi_fn_func_start_reading_session_v2
check uniffi_zx_document_ffi_fn_func_pause_reading_session_v2
check uniffi_zx_document_ffi_fn_func_resume_reading_session_v2
check uniffi_zx_document_ffi_fn_func_close_reading_session_v2
# V2 event push
check uniffi_zx_document_ffi_fn_func_push_material_opened_v2
check uniffi_zx_document_ffi_fn_func_push_material_closed_v2
check uniffi_zx_document_ffi_fn_func_push_position_changed_v2
check uniffi_zx_document_ffi_fn_func_push_heartbeat_v2
check uniffi_zx_document_ffi_fn_func_push_marked_as_read_v2
# V2 buffer management
check uniffi_zx_document_ffi_fn_func_export_pending_events_v2
check uniffi_zx_document_ffi_fn_func_ack_events_v2
check uniffi_zx_document_ffi_fn_func_mark_events_failed_v2
check uniffi_zx_document_ffi_fn_func_reload_stale_events_v2
check uniffi_zx_document_ffi_fn_func_get_event_buffer_state_v2
check uniffi_zx_document_ffi_fn_func_cleanup_stale_sessions_ffi
# Buffer management
check ffi_zx_document_ffi_rustbuffer_alloc
check ffi_zx_document_ffi_rustbuffer_from_bytes
check ffi_zx_document_ffi_rustbuffer_free
check ffi_zx_document_ffi_rustbuffer_reserve
check ffi_zx_document_ffi_uniffi_contract_version
echo ""
echo "Results: $PASS passed, $FAIL missing"
if [ "$FAIL" -gt 0 ]; then
echo "ERROR: $FAIL required symbol(s) missing."
exit 1
fi
echo "All symbols OK!"