Commit Graph
11 Commits
Author SHA1 Message Date
Ole André Vadla Ravnås cf72d48425 build: Build on UNIX in a fixed environment
SwiftPM re-reads every manifest when the environment changes, and
both it and Xcode key link and plugin tasks on PATH. An agent's shell
has a different PATH than the terminal's, so a build that was a no-op
in one relinks everything and regenerates the GTK bindings in the
other.

Run swift and xcodebuild from an allowlisted environment, with PATH
reduced to the directories that exist, each named once.
2026-09-26 21:46:33 +02:00
Ole André Vadla Ravnås f303a1d3f0 build: Run the pre-action without build settings
Xcode exported them to swift run, which warned about each package and
could not locate libSwiftScan.
2026-09-26 21:10:18 +02:00
Ole André Vadla Ravnås 02962abfa3 deps: Bump SwiftyPharo
Its VM now starts on macOS 27.
2026-09-26 20:43:53 +02:00
Ole André Vadla Ravnås 74f3f499e6 deps: Bump SwiftyPharo
Its VM now builds from frida/pharo-vm, and the image comes from the
release built that way.
2026-09-26 09:11:26 +02:00
Ole André Vadla Ravnås 54fdc97e6d build: Pin the QEMU archives
The scripts printed the build on stdout too, so the release body was a
truncated log without the checksums. Keep stdout for the notes.
2026-09-10 15:46:58 +02:00
Ole André Vadla Ravnås 6a943824e1 ci: Build QEMU for macOS too
Same slim build as the Windows one, published to the same qemu-<build>
release as qemu-<build>-macos-arm64.zip -- arm64 only, which is what
the runners are. The binaries link Homebrew dylibs, so the closure is
copied into lib/, every load command rewritten to
@executable_path-relative names, and the touched Mach-Os re-signed
ad hoc. iOS is left out: nothing spawns subprocesses there.
2026-09-08 18:54:43 +02:00
Ole André Vadla Ravnås 0e933206fb Boot virtual machines from the target picker
Add a machine abstraction to LumaCore, with QEMU as its first
backend: templates mirroring frida-core's test guests, a QMP client,
and a display that maps QEMU's surface over D-Bus rather than
copying frames.

Leave readiness to the user: drive the guest, mark it ready, and come
back to that snapshot later. Keep the machine in the project, so
booting it again resumes where it was marked. Hand the stub to
addBareboneDevice, so it joins the picker beside the other devices.

Show the display while booting, and afterwards in a Machines panel,
which the side panel now models as an enum to share its slot.
2026-08-20 14:52:52 +02:00
Ole André Vadla Ravnås df91278690 build: Stage the Pharo image before xcodebuild
Xcode enumerates a package target's resources when it loads the
package graph, before any build phase runs. An image staged from a
script phase is missing from that build's LumaCore, and the playground
crashes on the unwrap in boot().

Move the staging into scripts/stage-pharo-image.sh, called from
generate-sources.sh and both Makefiles.
2026-08-18 11:27:48 +02:00
Ole André Vadla Ravnås 64a3a92fd0 build: Generate sources before xcodebuild
Xcode enumerates a package target's sources when it loads the package
graph, before any build phase or scheme pre-action runs, so generated
Swift that appears during a build is missing from that build.

Move generation into scripts/generate-sources.sh, run it from the
Makefile, CI and the Luma scheme's pre-action, and drop the
AgentBundle target. Say what to run when the files are not there yet.
2026-08-17 15:00:19 +02:00
Ole André Vadla Ravnås b6ee7d7187 Put the whole surface on iOS too
The playground, the notebook cells, the source editor with its
marks, the inspector columns and the canvas are written once for
both Apple platforms, with a file naming what the two frameworks
call differently. The editor is where they really part company.

The engine owns the image and its start-up, so a mission reaches
the whole of Pharo.
2026-08-13 12:46:09 +02:00
Ole André Vadla Ravnås 02ca1ff8a5 Make the shader toolchain, don't find one
glslang and SPIRV-Cross build under neither SwiftPM nor Xcode, so
CI makes them into an xcframework and publishes it against a tag.
The manifest names that artifact; a build downloads it and needs
nothing local.
2026-08-13 12:46:09 +02:00