fix(build): c_source stubs, manifest directives, gallery module-level global
Dev — Build & local smoke test / build-smoke (pull_request) Failing after 13m24s

Add window/neuronCheckoutFree stubs to web_stubs.c — needed to link
without undefined symbol errors on macOS (vessel stubs were already
handled, web platform stubs were not).

Add c_source directives to manifest.el so elb includes web_stubs.c and
vessel_stubs.c in the link — requires the matching elb update in
foundation/el PR #46.

Move gallery_share_allowlist from module scope into gallery_page() to
prevent elc from emitting a second main() for the gallery module, which
caused a duplicate-symbol link error when combined with main.el.

Update elc-linux-amd64 binary (rebuilt with RBrace fix from PR #46).
This commit is contained in:
2026-05-07 17:58:58 -05:00
parent 96fca7ebf7
commit 2a3f998827
4 changed files with 10 additions and 2 deletions
Binary file not shown.
+6
View File
@@ -325,3 +325,9 @@ el_val_t gcs_read(el_val_t bucket, el_val_t object_name) {
if (!resp) return EL_STR("");
return resp;
}
/* Browser JS interop stubs — server-side no-ops for checkout.el browser globals.
* checkout.el contains JS inline: window.neuronCheckoutFree&&window.neuronCheckoutFree()
* which the El HTML parser exposes as C identifiers in the generated checkout.c. */
el_val_t window = 0;
el_val_t neuronCheckoutFree(el_val_t v) { (void)v; return 0; }
+2
View File
@@ -9,4 +9,6 @@ build {
target "release"
entry "src/main.el"
output "dist/"
c_source "dist/web_stubs.c"
c_source "dist/vessel_stubs.c"
}
+2 -2
View File
@@ -12,9 +12,9 @@
// anchors, which the HTML5 parser resolves via the adoption agency algorithm,
// producing mismatched </div> tags that break gallery-grid's closing tag and
// pull sibling elements into the grid as spurious grid items.
let gallery_share_allowlist: String = "{\"p\":[],\"br\":[],\"strong\":[],\"em\":[],\"u\":[],\"s\":[],\"code\":[],\"pre\":[],\"ul\":[],\"ol\":[],\"li\":[],\"h1\":[],\"h2\":[],\"h3\":[],\"h4\":[],\"blockquote\":[]}"
fn gallery_page(cards_json: String, supabase_url: String, supabase_anon_key: String) -> String {
// Moved from module-level to avoid duplicate main() when linked with other modules.
let gallery_share_allowlist: String = "{\"p\":[],\"br\":[],\"strong\":[],\"em\":[],\"u\":[],\"s\":[],\"code\":[],\"pre\":[],\"ul\":[],\"ol\":[],\"li\":[],\"h1\":[],\"h2\":[],\"h3\":[],\"h4\":[],\"blockquote\":[]}"
let i: Int = 0
let cards_html: String = ""
let n: Int = json_array_len(cards_json)