Volkov: добавить Sprinter Commander
Реализовать двухпанельный Commander от платформенного PoC до этапов P6-P20: EMM-каталог, сортировку и выбор, операции с файлами и деревьями, транзакционное копирование, метаданные, политику конфликтов и предварительную проверку свободного места. Добавить проектную документацию, HDD/MAME-сценарии и проверенные артефакты. Расширить libc операцией bank_write_page, исправлением режима O_RDONLY и связанными регрессионными проверками.
This commit is contained in:
+36
@@ -0,0 +1,36 @@
|
||||
#!/bin/sh
|
||||
# Создаёт HDD с точными FAT date/time и R/H/S/A у source-файла.
|
||||
|
||||
set -eu
|
||||
|
||||
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"
|
||||
"$PROJECT_DIR/../../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"
|
||||
Reference in New Issue
Block a user