Fix tree-sitter static build: FFI scanner, grammar tags, boot order
ober
ef8602bca4f2e7eeaf7bf490a70a5e9b584e5ada
--- a/Dockerfile +++ b/Dockerfile @@ -194,6 +194,7 @@ RUN git clone --depth 1 --branch v${TS_VERSION} \ https://github.com/tree-sitter/tree-sitter /tmp/tree-sitter && \ cd /tmp/tree-sitter && \ cc -c -O2 -Ilib/include lib/src/lib.c -o lib/src/lib.o && \ + mkdir -p /opt/tree-sitter-lib && \ ar rcs /opt/tree-sitter-lib/libtree-sitter.a lib/src/lib.o && \ mkdir -p /opt/tree-sitter-include/tree_sitter && \ cp lib/include/tree_sitter/api.h /opt/tree-sitter-include/tree_sitter/ && \ @@ -204,7 +205,7 @@ RUN mkdir -p /opt/tree-sitter-grammars && \ build_grammar() { \ name=$1; repo=$2; tag=$3; subdir=${4:-.}; \ git clone --depth 1 --branch "$tag" \ - "https://github.com/$repo" /tmp/ts-$name 2>/dev/null && \ + "https://github.com/$repo" /tmp/ts-$name && \ cd /tmp/ts-$name/$subdir && \ SRC_DIR=src && \ gcc -c -O2 -I/opt/tree-sitter-include -I$SRC_DIR \ @@ -219,7 +220,7 @@ RUN mkdir -p /opt/tree-sitter-grammars && \ cd / && rm -rf /tmp/ts-$name; \ } && \ build_grammar c tree-sitter/tree-sitter-c v0.23.5 && \ - build_grammar cpp tree-sitter/tree-sitter-cpp v0.23.6 && \ + build_grammar cpp tree-sitter/tree-sitter-cpp v0.23.4 && \ build_grammar python tree-sitter/tree-sitter-python v0.23.6 && \ build_grammar javascript tree-sitter/tree-sitter-javascript v0.23.1 && \ build_grammar rust tree-sitter/tree-sitter-rust v0.23.3 && \ @@ -231,7 +232,7 @@ RUN mkdir -p /opt/tree-sitter-grammars && \ build_grammar css tree-sitter/tree-sitter-css v0.23.2 && \ build_grammar html tree-sitter/tree-sitter-html v0.23.2 && \ build_grammar lua tree-sitter-grammars/tree-sitter-lua v0.3.0 && \ - build_grammar scheme 6cdh/tree-sitter-scheme master && \ + build_grammar scheme 6cdh/tree-sitter-scheme main && \ echo "Grammars built:" && ls /opt/tree-sitter-grammars/ # ── Phase 6: Gerbil/Chez dependencies ────────────────────────────────── --- a/build-binary-qt.ss +++ b/build-binary-qt.ss @@ -380,13 +380,17 @@ ;; define-foreign name "c-name" — jsh macro (C name is the second string) (gen-cmd (format - "{ { cat ~a ~a; find ~a ~a ~a lib/jerboa-emacs lib/jerboa vendor -name '*.sls' -o -name '*.ss' | xargs cat 2>/dev/null; cat ~a/jerboa-coreutils/top.sls 2>/dev/null; } | \ + "{ { cat ~a ~a; find ~a ~a/jerboa ~a/chez-scintilla lib/jerboa-emacs lib/jerboa vendor -name '*.sls' -o -name '*.ss' | xargs cat 2>/dev/null; cat ~a/jerboa-coreutils/top.sls 2>/dev/null; } | \ sed 's/;;.*//' | grep -oE '(foreign-procedure|foreign-entry\\?) \"[^\"]*\"' | sed 's/.* \"//;s/\"//'; \ { cat ~a ~a; } | sed 's/;;.*//' | grep -o 'define-optional-ffi [^ ]* \"[^\"]*\"' | sed 's/.*define-optional-ffi [^ ]* \"//;s/\"//'; \ find ~a -name '*.sls' -o -name '*.ss' | \ - xargs grep -oh 'define-foreign [^ ]* \"[^\"]*\"' 2>/dev/null | \ - sed 's/.*define-foreign [^ ]* \"//;s/\".*//'; } | \ -sort -u | grep -v '^$' | grep -v '^_NSGetExecutablePath$' | grep -v '^io_uring_' > /tmp/ffi_syms.txt && \ + xargs cat 2>/dev/null | tr '\\n' ' ' | \ + grep -oE 'define-foreign [^ ]+ +\"[^\"]+\"' | \ + sed 's/.*define-foreign [^ ]* *\"//;s/\".*//'; } | \ +sort -u | grep -v '^$' | grep -v '^_NSGetExecutablePath$' | grep -v '^io_uring_' | \ +grep -v '^jerboa_' | grep -v '^SSL_' | grep -v '^TLS_' | grep -v '^EVP_' | \ +grep -v '^CRYPTO_' | grep -v '^PKCS5_' | grep -v '^RAND_' | \ +grep -v '^QRcode_' | grep -v '^embed_encrypt$' | grep -v '^embed_random_bytes$' > /tmp/ffi_syms.txt && \ awk '\ BEGIN{ print \"/* Auto-generated — do not edit */\"; \ print \"#include \\\"scheme.h\\\"\"; print \"\"; } \ --- a/src/jerboa-emacs/treesitter.ss +++ b/src/jerboa-emacs/treesitter.ss @@ -38,10 +38,17 @@ (import :std/sugar :std/srfi/13 - :chez-scintilla/constants :jerboa-emacs/core :jerboa-emacs/qt/sci-shim) +;; Scintilla styling constants (avoid chez-scintilla/constants dep for boot order) +(define SCI_STARTSTYLING 2032) +(define SCI_SETSTYLING 2033) +(define SCI_STYLESETFORE 2051) +(define SCI_STYLESETBACK 2052) +(define SCI_STYLESETBOLD 2053) +(define SCI_STYLESETITALIC 2054) + ;;;============================================================================ ;;; Load the C shim shared library ;;;============================================================================ @@ -346,11 +353,7 @@ ((java) "java") ((css) "css") ((xml) "html") - ((yaml) "yaml") - ((toml) "toml") ((lua) "lua") - ((sql) "sql") - ((markdown) "markdown") (else #f))) ;;;============================================================================ --- a/support/treesitter_shim.c +++ b/support/treesitter_shim.c @@ -34,11 +34,7 @@ extern const TSLanguage *tree_sitter_ruby(void); extern const TSLanguage *tree_sitter_java(void); extern const TSLanguage *tree_sitter_css(void); extern const TSLanguage *tree_sitter_html(void); -extern const TSLanguage *tree_sitter_yaml(void); -extern const TSLanguage *tree_sitter_toml(void); extern const TSLanguage *tree_sitter_lua(void); -extern const TSLanguage *tree_sitter_sql(void); -extern const TSLanguage *tree_sitter_markdown(void); extern const TSLanguage *tree_sitter_scheme(void); /* Embedded highlight queries (generated by embed_queries.py) */ @@ -63,11 +59,7 @@ const TSLanguage *ts_shim_language_get(const char *name) { if (strcmp(name, "java") == 0) return tree_sitter_java(); if (strcmp(name, "css") == 0) return tree_sitter_css(); if (strcmp(name, "html") == 0) return tree_sitter_html(); - if (strcmp(name, "yaml") == 0) return tree_sitter_yaml(); - if (strcmp(name, "toml") == 0) return tree_sitter_toml(); if (strcmp(name, "lua") == 0) return tree_sitter_lua(); - if (strcmp(name, "sql") == 0) return tree_sitter_sql(); - if (strcmp(name, "markdown") == 0) return tree_sitter_markdown(); if (strcmp(name, "scheme") == 0) return tree_sitter_scheme(); return NULL; }