From eb92561bd685961889cc553cd96db4a569eefec5 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Mon, 29 Jun 2026 16:40:30 +0200 Subject: 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. --- README.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'README.md') 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..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 -- cgit v1.2.3