Files
skate-3-rust-engine/docs/hails-additions/01-iso-extraction.md
T
Hails ea549ab042 Setup: pass extract-xiso options before the image path
extract-xiso stops parsing options at the first image path, so
`-x <iso> -d <dir>` extracted into the working directory and then failed
on "-d" as a second image (exit 1 -> "Conversion failed"). Use
`-x -d <dir> <iso>` in both call sites.

See docs/hails-additions/01-iso-extraction.md.
2026-09-30 19:26:12 -06:00

1.8 KiB

1. ISO extraction argument order

Problem

Selecting a Skate 3 ISO in setup failed with Conversion failed. See ...\extract.log right after "Extracting your ISO". Setup deletes its temporary directory on failure, so the log named in the message no longer exists.

Root cause

extract-xiso (the pinned build-202505152050 Windows release, v2.7.1) stops parsing options at the first image path. Setup called it as

extract-xiso -x <iso> -d <dir>

so -d and <dir> were treated as two more images to extract. The tool extracted the real ISO into the current working directory as <iso name>\ (not the temporary directory), then failed on the "images":

open error: -d No such file or directory

and exited with code 1, which setup reports as a conversion failure. The extraction itself was complete: all 103 files and 6,404,940,920 bytes matched extract-xiso -l.

Change

Pass options before the image, in both call sites:

  • tools/asset_pipeline/customiser_setup.py (install, used by the setup GUI)
  • tools/asset_pipeline/install.py (_install)
extract-xiso -x -d <dir> <iso>

Note: -d does not create parent directories. Both call sites extract into a subdirectory of an existing temporary/work directory, so this holds.

Verification

  • Reproduced the failure by running the tool with the original argument order (stderr above, exit code 1, files written to the working directory).
  • With the new order: exit code 0, all 103 files in the target directory, byte total identical to the image listing, nothing written to the working directory.

Notes for upstream

  • Upstream PR #9 (Linux/macOS port) contains the same fix, credited there to PR #7 ("BSD getopt compatibility"). If #9 is merged first, this change is already covered.