summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@jolla.com>2026-06-29 16:40:30 +0200
committerAndrew Branson <andrew.branson@jolla.com>2026-06-29 17:50:20 +0200
commiteb92561bd685961889cc553cd96db4a569eefec5 (patch)
treea4df385847e712d1dfb428f28d23df58b9ed298d /README.md
parent21dcc7e6413cf1e93a37cce2098a86c2a3ab5e5a (diff)
Add remote Android build tools and request logging
Add Android build host config and MCP tools for remote AppSupport builds. Extend device RPM installs to copy dependency sets and install them together. Log MCP request and tool-call lifecycle events, and document the config.
Diffstat (limited to 'README.md')
-rw-r--r--README.md30
1 files changed, 30 insertions, 0 deletions
diff --git a/README.md b/README.md
index 23257e1..a2e01f7 100644
--- a/README.md
+++ b/README.md
@@ -23,6 +23,7 @@ The server currently exposes tools for:
- user-session command execution with the configured D-Bus environment
- Sailfish Browser launch/debug helpers
- Docker/mb2 RPM builds through the local `build-sailfishos` helper
+- remote Android/AppSupport builds on configured build hosts
- installed SDK repository metadata refresh
- Jolla OBS result and build-log lookup through `osc`
- repository status and search under the configured git root
@@ -67,6 +68,12 @@ Example MCP client configuration:
}
```
+The wrapper writes startup, shutdown, MCP request, and tool-call logs to
+`~/.local/state/sailfish-devel-mcp/server.log` by default. Override the log
+directory with `SAILFISH_DEVEL_MCP_LOG_DIR`. If the MCP client uses a different
+server label, set `SAILFISH_DEVEL_MCP_SERVER_LABEL` in the client environment so
+the wrapper startup line includes the same label.
+
## Configuration
Example:
@@ -90,6 +97,14 @@ Example:
"ssh_config": "~/.ssh/config",
"local_sdk": "/srv/mer/sdks/sfossdk/sdk-chroot",
"osc_api_alias": "your-obs-alias"
+ },
+ "default_android_build_host": "android-builder",
+ "android_build_hosts": {
+ "android-builder": {
+ "ssh_target": "user@android-build-host",
+ "project_dir": "/path/to/alien-aliendalvik-system",
+ "state_dir": "/tmp/sailfish-devel-mcp/android-builds"
+ }
}
}
```
@@ -112,6 +127,7 @@ Mutating tools are annotated as non-read-only:
- `sailfish_device_restart_service`
- `sailfish_device_browser_launch`
- `sailfish_build_rpm`
+- `sailfish_android_build`
- `sailfish_sdk_refresh_metadata`
`sailfish_device_lipstick_screenshot` defaults to
@@ -139,6 +155,11 @@ structured result separately.
Set `run_as_user` when the command should execute as the configured Sailfish
username through `runuser` or `su`.
+`sailfish_device_install_rpm` accepts either `rpm_path` for one local RPM or
+`rpm_paths` for a dependency set. With `rpm_paths`, the tool copies every RPM to
+the remote `remote_dir` and runs one `pkcon install-local` or `rpm -Uvh`
+command with all copied files, so dependencies can be resolved together.
+
`sailfish_device_browser_launch` stops the browser booster service and stale
browser/firejail PIDs when requested, launches Sailfish Browser through
`invoker` with the display and user-session environment, then queries Lipstick
@@ -156,6 +177,15 @@ wrapper image defaults to `sailfish-sdk-build-engine:$USER` and can be
overridden with
`SAILFISH_SDK_BUILD_ENGINE_IMAGE`.
+`sailfish_android_build` starts a remote Android/AppSupport build on the
+configured build host. Configure `android_build_hosts.<host>.project_dir` or
+pass `project_dir` to point at the remote Android tree, for example an
+`alien-aliendalvik-system` checkout. The tool writes job state under the remote
+`state_dir`, creates a per-job `run.sh`, and starts it with `nohup`, so the SSH
+session used to launch the job can disconnect without killing the build. Poll
+with `sailfish_android_build_status`; omit `job_id` to list recent jobs, or pass
+a job id to read state and tail `build.log`.
+
`sailfish_sdk_refresh_metadata` refreshes zypper metadata in the installed SDK
main target, for example `aarch64.default`, using the same privileged Docker
wrapper style as local SDK builds. Use it when local SDK builds fail because a