Skip to content

The compact build cannot complete itself off Linux: the fetcher serves no emulator for macOS or Windows #514

Description

@A13xB0

The compact builds in #509 are only a fair offer if they can finish themselves. On Linux they can: Configuration > Setup fetches the chip model, qemu-system-xtensa and renode, pinned by tag and checked by digest, about 105 MB once and cached for every scenario after. Off Linux they cannot, so a compact macOS or Windows build means building the forks by hand.

That is a reasonable thing to offer somebody who wants it. It is not a reasonable thing to hand over silently behind a button marked "compact".

What is actually missing

From internal/app/resource/toolchaincatalogue.go:

  • macOS: the chip model has a darwin/arm64 asset and so, since v9.2.2-meshbench-sx1262-11, does QEMU - the fork's release matrix builds aarch64-apple-darwin and the catalogue pins its digest. What has never happened is anybody starting a board with it, so it is pinned and unproven rather than missing. Renode is the real gap: the fork publishes a macOS build tree rather than a portable package, with no launcher, and no nRF52 board has ever been brought up on macOS.
  • Windows: nothing at all, refused by windowsHasNoEmulation. See Packaging and the runtime catalogue disagree about whether emulation works on Windows #513, because that refusal and the packaging job currently disagree.

And a smaller thing underneath it

formatOf in internal/app/resource/execformat.go recognises ELF and Mach-O and nothing else, so a PE binary fails the post-fetch check with "no ELF or Mach-O header" even if everything above it were solved. A Windows fetch needs a PE case (MZ, then the COFF machine word at the e_lfanew offset) before any of this can work.

Order

  1. Add the PE case to execformat.go. Small, testable now, blocks nothing else.
  2. Settle Packaging and the runtime catalogue disagree about whether emulation works on Windows #513, which decides whether Windows emulator assets are worth fetching at all.
  3. Bring one ESP32 board up on macOS against the pinned QEMU, which is now a question of running it rather than of building it.
  4. Get the Renode fork publishing a portable macOS package rather than a build tree, and bring one nRF52 board up on macOS to prove it. Setup must also place Renode's renode-support/ files, or a machine with both emulators still starts only ESP32 boards.

Until 3 and 4 land, the compact macOS chips on the download page say what they hand over: the fork URLs, the branch names, and MESHBENCH_QEMU / MESHBENCH_RENODE. Stock builds will not do, and that has to be the first line rather than a footnote: stock QEMU has no SX1262 device, and stock Renode sleeps for ever on a wake condition that is already true.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions