| 1234567891011121314151617181920212223242526272829303132 |
- #!/usr/bin/env bash
- # Build the SM121 GLM-5.3-Flash NVFP4-4p67 image: lab image + the
- # packed_modules_mapping model-class patch (see Dockerfile header).
- #
- # Generic driver: forwards every KEY=VAL pin in versions.env as a --build-arg
- # to the Dockerfile. TAG is set by the sm121 launcher to the recipe's
- # docker_image (manual build: TAG=glm53-flash-nvfp4-4p67:local bash build.sh).
- set -euo pipefail
- cd "$(dirname "$0")"
- TAG="${TAG:-glm53-flash-nvfp4-4p67:local}"
- ARGS=()
- while read -r line; do
- case "$line" in
- ''|\#*) continue ;;
- esac
- key="${line%%=*}"; val="${line#*=}"
- val="${val%\"}"; val="${val#\"}" # versions.env values may be shell-quoted
- [ -n "$key" ] && ARGS+=(--build-arg "${key}=${val}")
- done < versions.env
- echo "=== Building ${TAG} ==="
- # Persistent buildkit cache (per node, shared across image dirs): the
- # version-independent stages (apt, torch, CUDA base) are reused across
- # rebuilds — only the pinned source stages (vllm/b12x/…) re-download and
- # re-compile. Override the dir with SM121_BUILDKIT_CACHE if desired.
- CACHE_DIR="${SM121_BUILDKIT_CACHE:-$HOME/sm121-cache/buildkit}"
- mkdir -p "${CACHE_DIR}"
- docker buildx build "${ARGS[@]}" --cache-from "type=local,src=${CACHE_DIR}" \
- --cache-to "type=local,dest=${CACHE_DIR},mode=max" \
- --progress=plain --load -t "${TAG}" -f Dockerfile . 2>&1
- echo "=== Done: ${TAG} ==="
|