#!/bin/sh # Mathew — lean server entrypoint. # # In the usual image this does nothing: the built Mathlib already sits under # the project and the server starts straight away. # # With the image built as `--build-arg BAKE_MATHLIB=false` (see README's # "Keeping Mathlib out of the image"), the project's .lake is meant to be a # volume: a fresh one gets filled once, at first start, so Mathlib's ~7GB of # compiled cache never travels through the registry. set -eu PROJECT=/opt/lean4web/Projects/MathlibDemo if [ ! -f "$PROJECT/.lake/build/lib/lean/MathlibDemo.olean" ]; then echo "[mathew-lean] $PROJECT/.lake holds no built Mathlib — fetching it once (expect ~10 minutes)" cd "$PROJECT" # lake update pulls the sources pinned in lake-manifest.json, and Mathlib's # post-update hook fetches the matching precompiled cache; lake build then # only writes the project's own module. The image's pinned toolchain # (elan) stays as it is — no lean-toolchain re-curl, no surprise downloads. lake update -R lake build echo "[mathew-lean] Mathlib ready" fi exec "$@"