如何为 Pascal 到 WASM 编译器 web2js 创建 docker 环境?

如何为 Pascal 到 WASM 编译器 web2js 创建 docker 环境?

什么是 web2js?

这是一个针对 WebAssembly 的 Pascal 编译器,专门用于编译 TeX,以便可以在浏览器中运行。更具体地说,这个存储库包含一个名为 jsTeX 的 TeX 引擎,它类似于 LuaTeX,但它嵌入的是 JavaScript,而不是 Lua。

具体来说,web2js 通过以下方式生成 core.dump 和 tex.wasm:这一步Makefile

问题

web2js有一些依赖项需要生成core.dump。很难设置本地环境,因此我需要 Docker 环境。

FROM adnrv/texlive:full 

# Update tex packages
RUN tlmgr update --self --all

ARG WORKDIR=/usr/var
WORKDIR ${WORKDIR}

# Install apt pacakges
RUN apt update && apt install -y \
  build-essential \
  cmake \
  git \
  libkpathsea-dev \
  python3-pip

# Install npm and node
ARG NODE_MAJOR_VERSION=14
ARG NODE_MINOR_VERSION=14.18.1
RUN wget https://deb.nodesource.com/node_${NODE_MAJOR_VERSION}.x/pool/main/n/nodejs/nodejs_${NODE_MINOR_VERSION}-deb-1nodesource1_amd64.deb \
  && apt install ./nodejs_${NODE_MINOR_VERSION}-deb-1nodesource1_amd64.deb \
  && rm nodejs_${NODE_MINOR_VERSION}-deb-1nodesource1_amd64.deb

# Install binaryen
ARG BINARYEN_VERSION=91
RUN wget https://github.com/WebAssembly/binaryen/archive/refs/tags/version_${BINARYEN_VERSION}.tar.gz \
  && tar -zxf version_${BINARYEN_VERSION}.tar.gz \
  && cd binaryen-version_${BINARYEN_VERSION} \
  && cmake . && make \
  && make install \
  && cd ../ && rm -rf binaryen-version_${BINARYEN_VERSION} version_${BINARYEN_VERSION}.tar.gz

# Install node packages
COPY package.json ${WORKDIR}/
RUN npm install

# Build
COPY . ${WORKDIR}/

# Produce tex.wasm and core.dump
RUN make core.dump

# Compile sampleLatex.tex by running
# RUN node tex.js sample/sampleLatex

这是我的Dockerfile,但! I can't read TEX.POOL.在发生了错误node initex.js

以下是该日志。

! I can't read TEX.POOL.
[Object: null prototype] {
  '0': Memory [WebAssembly.Memory] {},
  getStackPointer: [Function: 20],
  setStackPointer: [Function: 21],
  main: [Function: 385],
  asyncify_start_unwind: [Function: 386],
  asyncify_stop_unwind: [Function: 387],
  asyncify_start_rewind: [Function: 388],
  asyncify_stop_rewind: [Function: 387]
}
! I can't read TEX.POOL.

此消息是从源文件发出的,但我不知道需要什么或错误什么。 tex.pool文件肯定存在tangle。我该如何修复它?

相关内容