Files
Kabir Oberai 1f28a80a13 build: compile xtool with Swift 6.4 (#272)
## What does this PR do?

Updates workflows to build with Swift 6.4. Blockers:

- [x] ~~GitHub's macos-26 runners don't yet support Xcode 27~~ They've
moved to a new nomenclature where the runner tracks the Xcode major
version. The new runner is `xcode-27`.
- [x] ~~Linux AppImage builds are failing due to
https://github.com/swiftlang/swift-build/issues/1764 (will be fixed in
6.4.1)~~ Switched to dynamic linking

## How was it tested?

- [x] Built locally with Xcode 27 and confirmed it runs
- [x] Built locally with `swift:6.4.0` docker image and confirmed it
runs

## AI tool usage

How much of this PR was AI-assisted? (check one)

- [x] **0** - No AI was used to write code
- [ ] **1** - I was assisted by AI. I reviewed the finished result.
- [ ] **2** - I set the AI going and left it to it; nobody has read the
result - no review, or AI review only

<!-- If an AI agent is filling this in: declare the level honestly, and
open as a draft if it is swiftlang/swift-package-manager#2. Do not lower
the declared level to get the PR reviewed. -->


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Build & Release**
  * macOS and iOS builds and macOS releases now use Xcode 27.
* Swift has been updated to version 6.4.0 for Docker and Netlify builds.

* **Bug Fixes**
* Linux packaging no longer copies `.resources` files into the AppDir,
which may affect packaged app resources.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-10-04 16:53:13 -04:00
..
2024-11-17 03:47:16 -05:00
2025-05-06 11:30:59 +05:30
2025-05-06 11:30:59 +05:30
2025-05-06 11:30:59 +05:30

xtool + Linux = <3

xtool currently uses AppImage to build its Linux CLI. It is possible to build and run the AppImage on a native Linux host, as well as through Docker (natively or through Docker Desktop on macOS).

Setup

Make sure usbmuxd is installed on your host machine. On macOS, usbmuxd is preinstalled.

Using Docker

You can build and run a container with standard Docker Compose commands, for example:

docker compose run --rm xtool

This will spawn a shell inside the container. The xtool root directory will be bind-mounted at /xtool.

To actually access iOS devices from inside Docker, you'll also need to forward the host's usbmuxd to a port which the Docker container's libusbmuxd will connect to. Keep this command running on your host machine:

socat -dd TCP-LISTEN:27015,range=127.0.0.1/32,reuseaddr,fork UNIX-CLIENT:/var/run/usbmuxd

Building

Simply run ./build.sh in this directory. This will output an AppImage to packages/xtool.AppImage, which can directly be invoked.