Files
mathew/lean/entrypoint.sh
Aran Roig 097160a6cd
Some checks failed
Build and Deploy / changes (push) Successful in 1s
Build and Deploy / deploy (push) Successful in 6s
Build and Deploy / deploy-lean (push) Has been cancelled
jdsjkdjk
2026-10-19 22:28:12 +02:00

42 lines
1.8 KiB
Bash

#!/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.
#
# The manifest pairing matters: `lake update` advances the packages in .lake
# AND rewrites lake-manifest.json — but the manifest sits in the (ephemeral)
# image while the packages sit in the (permanent) volume. Without help, a new
# container would find manifest ≠ volume and try to re-sync Mathlib from
# GitHub at every session. So the first start saves the manifest it resolved
# into the volume, and every later start puts that saved copy over the
# image's — manifest and packages always tell the same story.
set -eu
PROJECT=/opt/lean4web/Projects/MathlibDemo
MANIFEST="$PROJECT/lake-manifest.json"
SAVED_MANIFEST="$PROJECT/.lake/mathew-lake-manifest.json"
if [ -f "$SAVED_MANIFEST" ]; then
cp "$SAVED_MANIFEST" "$MANIFEST"
fi
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)"
# 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.
# (subshell: its cd must not leak into the server's working directory)
( cd "$PROJECT" && lake update -R && lake build )
cp "$MANIFEST" "$SAVED_MANIFEST"
echo "[mathew-lean] Mathlib ready"
fi
exec "$@"