mirror of
https://github.com/quer3q/ps5-dump-forge.git
synced 2026-10-19 03:59:52 -05:00
- PS5 payload (plain .elf): the core runs on the console, built in Docker against the ps5-payload-dev SDK v0.43 (ps5/: target JSON, ps5-ai-cli shims, entry.c, compat.c, linker.sh; FreeBSD 11 ABI via --cfg libc_unstable_freebsd_version="11", struct sizes asserted). - New crate ps5-dump-forge-server and `ps5-dump-forge serve`: the React UI over HTTP on port 8095 (fetch transport, polling, folder/file browser, Show path, Stop), no access control by design. Home-screen tile PDFG00001; the payload saves a copy of itself (two-stage build) so the tile's AppCache'd page can start it through elfldr after a restart. - FreeBSD platform layer in core: destination probe (dest.rs), publish by link or checked rename behind a device guard, bounded dirty data with adaptive fsync cadence (durable.rs), read-ahead (prefetch.rs), drive-removal messages, rest-mode PowerTick. A retried fsync fails the job. - Fast verification is the default on every platform: structure + sampled BLAKE3 slices; "Full verification" switch / --full-verify re-reads every byte; .pkg always full. One hash pass per byte. - vendor patch 0015: UFS2 range reads (cached pointer blocks, contiguous runs, checked offsets). - Tests and tooling: scripts/test-freebsd.sh (FreeBSD VM: UFS, FAT32, nullfs), scripts/release-ps5.sh (ELF, embedded UI, self copy and debug-route checks), CI and release jobs for the .elf. - Hardware (PS5 fw 13.60, /data): .ffpkg/folder sources to .exfat and folder pass their checks; writes ~273 MB/s of the drive's ~288 MB/s; tile launch after a reboot works. Other output formats and USB output are not console-tested yet (TODO.md). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
15 lines
611 B
Python
15 lines
611 B
Python
#!/usr/bin/env python3
|
|
"""Apply the narrowly scoped FreeBSD 11 adaptation inside the build container."""
|
|
from pathlib import Path
|
|
import subprocess
|
|
|
|
sysroot = Path(subprocess.check_output(["rustc", "--print", "sysroot"], text=True).strip())
|
|
source = sysroot / "lib/rustlib/src/rust/library/std/src/sys/fs/unix.rs"
|
|
before = "d_ino: (*entry_ptr).d_fileno,"
|
|
after = "d_ino: (*entry_ptr).d_fileno.into(),"
|
|
text = source.read_text()
|
|
if after not in text:
|
|
if text.count(before) != 1:
|
|
raise SystemExit("Rust std patch context changed; refusing to patch")
|
|
source.write_text(text.replace(before, after))
|