#!/bin/sh # Создаёт HDD с точными FAT date/time и R/H/S/A у source-файла. set -eu : "${SPRINTER_ROOT:?задайте SPRINTER_ROOT для упаковки HDD}" PROJECT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd) IMAGE=${1:-$PROJECT_DIR/build/hdd/p18_metadata.chd} COMMANDER=${2:-$PROJECT_DIR/build/sprcmd.exe} TEMP_DIR=$(mktemp -d "${TMPDIR:-/tmp}/sprcmd-metadata.XXXXXX") BASE_CHD="$TEMP_DIR/base.chd" RAW="$TEMP_DIR/p18_metadata.raw" MTC="$TEMP_DIR/mtools.conf" cleanup() { rm -rf -- "$TEMP_DIR" } trap cleanup EXIT HUP INT TERM python3 "$PROJECT_DIR/tests/p18_metadata_fixture.py" create "$TEMP_DIR" "$SPRINTER_ROOT/toolchain/make_hdd.sh" "$BASE_CHD" \ "$COMMANDER" "$TEMP_DIR/MSRC" "$TEMP_DIR/MDST" chdman extractraw -i "$BASE_CHD" -o "$RAW" -f >/dev/null printf 'drive z: file="%s" partition=1\n' "$RAW" > "$MTC" export MTOOLSRC="$MTC" MTOOLS_SKIP_CHECK=1 # Базовый make_hdd копирует дерево без host mtime. Повторная запись с -m # задаёт контролируемые FAT date/time до включения readonly. mcopy -m -o "$TEMP_DIR/MSRC/META.BIN" z:/MSRC/META.BIN mattrib +r +h +s +a z:/MSRC/META.BIN python3 "$PROJECT_DIR/tests/p18_metadata_fixture.py" verify-source "$RAW" mkdir -p "$(dirname -- "$IMAGE")" chdman createhd -i "$RAW" -o "$IMAGE" -c none \ -chs 128,16,32 -ss 512 -f printf 'P18 metadata HDD ready: %s\n' "$IMAGE"