textmachine/eval/pkg7/minerharness/build.sh

45 lines
2.1 KiB
Bash
Executable file
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
# Собирает minerharness КАК МОДУЛЬ ВНЕ РЕПО (прецедент пакета-6): исходник живёт в eval/ (чтобы был
# ревьюируем и воспроизводим), а go.mod + `replace` материализуются в рабочем каталоге вне git.
# В репозитории второго go.mod не появляется — сборка/vet бэкенда его не видят.
#
# ./build.sh <work-dir> [commit]
#
# work-dir — куда положить модуль и пин-копию бэкенда (скретчпад сессии).
# commit — какой коммит бэкенда пинить (по умолчанию HEAD). Пин обязателен: параллельная
# бэкенд-сессия правит рабочее дерево, и `replace` на него дал бы невоспроизводимый прогон.
set -euo pipefail
WORK="${1:?usage: build.sh <work-dir> [commit]}"
COMMIT="${2:-HEAD}"
REPO="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)"
SHA="$(git -C "$REPO" rev-parse --short "$COMMIT")"
PIN="$WORK/pinned-$SHA"
MOD="$WORK/minerharness"
mkdir -p "$PIN" "$MOD"
if [ ! -d "$PIN/backend" ]; then
git -C "$REPO" archive "$COMMIT" backend | tar -x -C "$PIN"
fi
cp "$(dirname "${BASH_SOURCE[0]}")/main.go" "$MOD/main.go"
cp "$PIN/backend/go.sum" "$MOD/go.sum"
# Требования зеркалим из go.mod пина, чтобы версии совпали побайтно и `go mod tidy` не понадобился
# (сеть в сборке не участвует: GOFLAGS=-mod=mod, всё берётся из локального модуль-кеша).
{
echo "module textmachine/backend/minerharness"
echo
sed -n '/^go /p' "$PIN/backend/go.mod"
echo
echo "require textmachine/backend v0.0.0"
echo
sed -n '/^require (/,/^)/p' "$PIN/backend/go.mod"
echo
echo "replace textmachine/backend => $PIN/backend"
} > "$MOD/go.mod"
cd "$MOD"
GOFLAGS=-mod=mod GOPROXY=off go build -o "$MOD/minerharness" .
echo "built: $MOD/minerharness (backend pinned at $SHA in $PIN/backend)"