Stage jsh directly with vendored Jerboa source

ober

2b7bd264129cb7e604713c31f1ef1aecd470b0f8

diff --git a/Makefile b/Makefile
index 6aedfe6..0af3fc3 100644
--- a/Makefile
+++ b/Makefile
@@ -1314,9 +1314,6 @@ MUSL_SCINTILLA_LIBDIR ?= /tmp/jemacs-build/jerboa-scintilla
 MUSL_JSH_ROOT ?= $(MUSL_DEPS)/jerboa-shell
 MUSL_JSH ?= $(MUSL_JSH_ROOT)/src
 MUSL_JSQLITE_STAGE ?= $(MUSL_JSH_ROOT)/_jerbuild-stage
-MUSL_JERBUILD ?= $(shell if [ -x "$(MUSL_JERBOA)/dist/jerbuild" ]; then printf '%s\n' "$(MUSL_JERBOA)/dist/jerbuild"; elif command -v jerbuild >/dev/null 2>&1; then command -v jerbuild; fi)
-MUSL_JERBUILD_ARG = $(if $(MUSL_JERBUILD),JERBUILD="$(MUSL_JERBUILD)")
-MUSL_JSH_MAKE_ARGS = VENDOR="$(abspath $(MUSL_JSH_ROOT)/vendor)" JSQLITE_REPO="$(abspath $(MUSL_DEPS)/jsqlite)" JSQLITE_DIR="$(abspath $(MUSL_DEPS)/jsqlite/src)" JERBOA_WORMHOLE="$(abspath $(MUSL_JSH_ROOT)/vendor/jerboa-wormhole)"
 MUSL_SCI_VENDOR ?= $(SCINTILLA_VENDOR)
 QT_STATIC_PREFIX ?= /opt/qt6-static
 QT_STATIC_SHIM_DIR ?= /opt/qt-shim
@@ -1347,9 +1344,23 @@ linux-tui-local: vendor-deps
 	rm -f $(MUSL_JERBOA)/lib/jerboa/*.wpo
 	$(MUSL_SCHEME) --libdirs $(MUSL_JERBOA)/lib --script $(MUSL_JERBOA)/jerbuild.ss src/ lib/
 	sh scripts/patch-jerboa-shell-compat.sh "$(CURDIR)"
-	$(MAKE) -C $(MUSL_JSH_ROOT) $(MUSL_JERBUILD_ARG) $(MUSL_JSH_MAKE_ARGS) stage-jsqlite
-	$(MAKE) -C $(MUSL_JSH_ROOT) $(MUSL_JERBUILD_ARG) $(MUSL_JSH_MAKE_ARGS) jerboa
-	$(MAKE) -C $(MUSL_JSH_ROOT) $(MUSL_JERBUILD_ARG) $(MUSL_JSH_MAKE_ARGS) gen-embed </dev/null
+	rm -rf $(MUSL_JSQLITE_STAGE)/jsqlite
+	mkdir -p $(MUSL_JSQLITE_STAGE)/jsqlite
+	cp -a $(MUSL_DEPS)/jsqlite/src/jsqlite/. $(MUSL_JSQLITE_STAGE)/jsqlite/
+	find $(MUSL_JSQLITE_STAGE) -type f \( -name '*.so' -o -name '*.wpo' -o -name '*.ta6le' -o -name '*.ta6fb' -o -name '*.tarm64osx' -o -name '*.tx86_64osx' \) -delete 2>/dev/null || true
+	cd $(MUSL_JSH_ROOT) && $(MUSL_SCHEME) --libdirs $(MUSL_JERBOA)/lib --script support/jerbuild.ss jsh-src src --force
+	cd $(MUSL_JSH_ROOT) && $(MUSL_SCHEME) --libdirs $(MUSL_JERBOA)/lib --script support/jerbuild.ss jerboa-src/src src --force
+	@if [ ! -f "$(MUSL_JSH)/jsh/embed-data.sls" ]; then \
+	  printf '%s\n' '#!chezscheme' '(library (jsh embed-data)' \
+	    '  (export %embed-file-table %embed-encrypted? %embed-salt %record-pubkey)' \
+	    '  (import (chezscheme))' \
+	    '  (define %embed-encrypted? #f)' \
+	    '  (define %embed-salt #vu8())' \
+	    '  (define %record-pubkey #f)' \
+	    '  (define %embed-file-table (make-hashtable string-hash string=?))' \
+	    ')' > "$(MUSL_JSH)/jsh/embed-data.sls"; \
+	fi
+	scripts/patch-static-load-shared.sh $(MUSL_JSH_ROOT)
 	rm -rf $(MUSL_PCRE2_LIBDIR) $(MUSL_SCINTILLA_LIBDIR)
 	mkdir -p $(MUSL_PCRE2_LIBDIR) $(MUSL_SCINTILLA_LIBDIR)
 	cp $(MUSL_PCRE2)/jerboa_pcre2_shim.c $(MUSL_PCRE2_LIBDIR)/pcre2_shim.c
@@ -1455,9 +1466,23 @@ linux-qt-local: vendor-deps
 	rm -f $(MUSL_JERBOA)/lib/jerboa/*.wpo
 	$(MUSL_SCHEME) --libdirs $(MUSL_JERBOA)/lib --script $(MUSL_JERBOA)/jerbuild.ss src/ lib/
 	sh scripts/patch-jerboa-shell-compat.sh "$(CURDIR)"
-	$(MAKE) -C $(MUSL_JSH_ROOT) $(MUSL_JERBUILD_ARG) $(MUSL_JSH_MAKE_ARGS) stage-jsqlite
-	$(MAKE) -C $(MUSL_JSH_ROOT) $(MUSL_JERBUILD_ARG) $(MUSL_JSH_MAKE_ARGS) jerboa
-	$(MAKE) -C $(MUSL_JSH_ROOT) $(MUSL_JERBUILD_ARG) $(MUSL_JSH_MAKE_ARGS) gen-embed </dev/null
+	rm -rf $(MUSL_JSQLITE_STAGE)/jsqlite
+	mkdir -p $(MUSL_JSQLITE_STAGE)/jsqlite
+	cp -a $(MUSL_DEPS)/jsqlite/src/jsqlite/. $(MUSL_JSQLITE_STAGE)/jsqlite/
+	find $(MUSL_JSQLITE_STAGE) -type f \( -name '*.so' -o -name '*.wpo' -o -name '*.ta6le' -o -name '*.ta6fb' -o -name '*.tarm64osx' -o -name '*.tx86_64osx' \) -delete 2>/dev/null || true
+	cd $(MUSL_JSH_ROOT) && $(MUSL_SCHEME) --libdirs $(MUSL_JERBOA)/lib --script support/jerbuild.ss jsh-src src --force
+	cd $(MUSL_JSH_ROOT) && $(MUSL_SCHEME) --libdirs $(MUSL_JERBOA)/lib --script support/jerbuild.ss jerboa-src/src src --force
+	@if [ ! -f "$(MUSL_JSH)/jsh/embed-data.sls" ]; then \
+	  printf '%s\n' '#!chezscheme' '(library (jsh embed-data)' \
+	    '  (export %embed-file-table %embed-encrypted? %embed-salt %record-pubkey)' \
+	    '  (import (chezscheme))' \
+	    '  (define %embed-encrypted? #f)' \
+	    '  (define %embed-salt #vu8())' \
+	    '  (define %record-pubkey #f)' \
+	    '  (define %embed-file-table (make-hashtable string-hash string=?))' \
+	    ')' > "$(MUSL_JSH)/jsh/embed-data.sls"; \
+	fi
+	scripts/patch-static-load-shared.sh $(MUSL_JSH_ROOT)
 	# Set up writable jerboa-qt copy from vendor (compile Scheme library)
 	mkdir -p /tmp/jemacs-build/jerboa-qt
 	cp -a vendor/jerboa-qt/. /tmp/jemacs-build/jerboa-qt/