textmachine/eval/softsign-decl/build.sh

43 lines
1.8 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
# Собирает softsign-decl КАК МОДУЛЬ ВНЕ РЕПО (прецедент pkg7/minerharness): исходник живёт в 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/softsign-decl"
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"
{
echo "module textmachine/backend/softsign-decl"
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/softsign-decl" .
echo "built: $MOD/softsign-decl (backend pinned at $SHA in $PIN/backend)"