new features

This commit is contained in:
Mark Gregory
2026-11-08 17:28:29 +00:00
parent 8c34e965fd
commit ecfa74a35f
30 changed files with 1651 additions and 27 deletions
+6
View File
@@ -0,0 +1,6 @@
.DS_Store
.build/
DerivedData/
*.xcuserstate
xcuserdata/
*.bak-*
+5
View File
@@ -0,0 +1,5 @@
# Default ignored files
/shelf/
/workspace.xml
# Markdown personal settings
/markdown.xml
+16
View File
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/Sources" type="swift-source" />
<excludePattern pattern=".DS_Store" />
<excludePattern pattern=".build" />
<excludePattern pattern=".fvm" />
<excludePattern pattern=".swiftpm" />
<excludePattern pattern="DerivedData" />
<excludePattern pattern="build" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JsonSchemaCatalogProjectConfiguration">
<enabled>false</enabled>
</component>
</project>
+8
View File
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/AppleContainerCompose.iml" filepath="$PROJECT_DIR$/.idea/AppleContainerCompose.iml" />
</modules>
</component>
</project>
+23
View File
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="NoctuleModules">
<modules>
<module name="AppleContainerCompose" />
</modules>
</component>
<component name="NoctuleProjectSettings">
<option name="buildEnabled" value="true" />
</component>
<component name="NoctuleWorkspaceSettings">
<fileSettings>
<settings filePath="$PROJECT_DIR$/AppleContainerCompose.xcodeproj/project.pbxproj">
<projectSettings projectType="noctule.xcode">
<filePath>$PROJECT_DIR$/AppleContainerCompose.xcodeproj/project.pbxproj</filePath>
</projectSettings>
</settings>
</fileSettings>
</component>
<component name="SwiftToolchain">
<option name="toolchain" value="xcode-/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift" />
</component>
</project>
Generated
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>
@@ -0,0 +1,46 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {};
objectVersion = 56;
objects = {
A00000000000000000000001 = {isa = PBXProject; attributes = {LastUpgradeCheck = 1600; TargetAttributes = {A00000000000000000000002 = {CreatedOnToolsVersion = 16.0; }; }; }; buildConfigurationList = A00000000000000000000010; compatibilityVersion = "Xcode 14.0"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = (en, Base); mainGroup = A00000000000000000000003; packageReferences = (A00000000000000000000020); productRefGroup = A00000000000000000000004; projectDirPath = ""; projectRoot = ""; targets = (A00000000000000000000002, B00000000000000000000002); };
A00000000000000000000002 = {isa = PBXNativeTarget; buildConfigurationList = A00000000000000000000011; buildPhases = (A00000000000000000000005, A00000000000000000000006, A00000000000000000000007); buildRules = (); dependencies = (); name = AppleContainerCompose; packageProductDependencies = (A00000000000000000000021); productName = AppleContainerCompose; productReference = A00000000000000000000008; productType = "com.apple.product-type.application"; };
A00000000000000000000003 = {isa = PBXGroup; children = (A00000000000000000000009, A00000000000000000000004); sourceTree = "<group>"; };
A00000000000000000000004 = {isa = PBXGroup; children = (A00000000000000000000008, B00000000000000000000008); name = Products; sourceTree = "<group>"; };
A00000000000000000000009 = {isa = PBXGroup; children = (A00000000000000000000030, A00000000000000000000031, A00000000000000000000032, A00000000000000000000034, A00000000000000000000035); path = Sources; sourceTree = "<group>"; };
A00000000000000000000030 = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = App.swift; sourceTree = "<group>"; };
A00000000000000000000031 = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeModel.swift; sourceTree = "<group>"; };
A00000000000000000000032 = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
A00000000000000000000034 = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeCore.swift; sourceTree = "<group>"; };
A00000000000000000000035 = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CLI.swift; sourceTree = "<group>"; };
A00000000000000000000008 = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AppleContainerCompose.app; sourceTree = BUILT_PRODUCTS_DIR; };
A00000000000000000000040 = {isa = PBXBuildFile; fileRef = A00000000000000000000030; };
A00000000000000000000041 = {isa = PBXBuildFile; fileRef = A00000000000000000000031; };
A00000000000000000000042 = {isa = PBXBuildFile; fileRef = A00000000000000000000032; };
A00000000000000000000043 = {isa = PBXBuildFile; fileRef = A00000000000000000000034; };
B00000000000000000000043 = {isa = PBXBuildFile; fileRef = A00000000000000000000034; };
B00000000000000000000044 = {isa = PBXBuildFile; fileRef = A00000000000000000000035; };
B00000000000000000000045 = {isa = PBXBuildFile; productRef = A00000000000000000000021; };
A00000000000000000000044 = {isa = PBXBuildFile; productRef = A00000000000000000000021; };
A00000000000000000000005 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (A00000000000000000000040, A00000000000000000000041, A00000000000000000000042, A00000000000000000000043); runOnlyForDeploymentPostprocessing = 0; };
A00000000000000000000006 = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (A00000000000000000000044); runOnlyForDeploymentPostprocessing = 0; };
A00000000000000000000007 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (); runOnlyForDeploymentPostprocessing = 0; };
A00000000000000000000010 = {isa = XCConfigurationList; buildConfigurations = (A00000000000000000000012, A00000000000000000000013); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; };
A00000000000000000000011 = {isa = XCConfigurationList; buildConfigurations = (A00000000000000000000014, A00000000000000000000015); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; };
A00000000000000000000012 = {isa = XCBuildConfiguration; buildSettings = {CLANG_ENABLE_MODULES = YES; MACOSX_DEPLOYMENT_TARGET = 26.0; SDKROOT = macosx; SWIFT_VERSION = 5.0; }; name = Debug; };
A00000000000000000000013 = {isa = XCBuildConfiguration; buildSettings = {CLANG_ENABLE_MODULES = YES; MACOSX_DEPLOYMENT_TARGET = 26.0; SDKROOT = macosx; SWIFT_VERSION = 5.0; }; name = Release; };
A00000000000000000000014 = {isa = XCBuildConfiguration; buildSettings = {ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_CFBundleDisplayName = "Apple Container Compose"; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools"; MACOSX_DEPLOYMENT_TARGET = 26.0; MARKETING_VERSION = 0.1.0; PRODUCT_BUNDLE_IDENTIFIER = net.absdev.AppleContainerCompose; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; ENABLE_APP_SANDBOX = NO; }; name = Debug; };
A00000000000000000000015 = {isa = XCBuildConfiguration; buildSettings = {ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_KEY_CFBundleDisplayName = "Apple Container Compose"; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.developer-tools"; MACOSX_DEPLOYMENT_TARGET = 26.0; MARKETING_VERSION = 0.1.0; PRODUCT_BUNDLE_IDENTIFIER = net.absdev.AppleContainerCompose; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; ENABLE_APP_SANDBOX = NO; }; name = Release; };
B00000000000000000000002 = {isa = PBXNativeTarget; buildConfigurationList = B00000000000000000000011; buildPhases = (B00000000000000000000005, B00000000000000000000006); buildRules = (); dependencies = (); name = accompose; packageProductDependencies = (A00000000000000000000021); productName = accompose; productReference = B00000000000000000000008; productType = "com.apple.product-type.tool"; };
B00000000000000000000008 = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = accompose; sourceTree = BUILT_PRODUCTS_DIR; };
B00000000000000000000005 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (B00000000000000000000043, B00000000000000000000044); runOnlyForDeploymentPostprocessing = 0; };
B00000000000000000000006 = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (B00000000000000000000045); runOnlyForDeploymentPostprocessing = 0; };
B00000000000000000000011 = {isa = XCConfigurationList; buildConfigurations = (B00000000000000000000014, B00000000000000000000015); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; };
B00000000000000000000014 = {isa = XCBuildConfiguration; buildSettings = {CODE_SIGNING_ALLOWED = NO; MACOSX_DEPLOYMENT_TARGET = 26.0; PRODUCT_NAME = accompose; SWIFT_VERSION = 5.0; }; name = Debug; };
B00000000000000000000015 = {isa = XCBuildConfiguration; buildSettings = {CODE_SIGNING_ALLOWED = NO; MACOSX_DEPLOYMENT_TARGET = 26.0; PRODUCT_NAME = accompose; SWIFT_VERSION = 5.0; }; name = Release; };
A00000000000000000000020 = {isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/jpsim/Yams.git"; requirement = {kind = upToNextMajorVersion; minimumVersion = 5.1.3; }; };
A00000000000000000000021 = {isa = XCSwiftPackageProductDependency; package = A00000000000000000000020; productName = Yams; };
};
rootObject = A00000000000000000000001;
}
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:">
</FileRef>
</Workspace>
@@ -0,0 +1,15 @@
{
"originHash" : "00fc82b0de716b0b6fae8646fae1c289e5b4679f93a4b0a9aca7e47cd71f9315",
"pins" : [
{
"identity" : "yams",
"kind" : "remoteSourceControl",
"location" : "https://github.com/jpsim/Yams.git",
"state" : {
"revision" : "3d6871d5b4a5cd519adf233fbb576e0a2af71c17",
"version" : "5.4.0"
}
}
],
"version" : 3
}
+41
View File
@@ -0,0 +1,41 @@
name: laravel
services:
web:
build:
context: ./docker/php
args:
uid: ${UID:-1000}
gid: ${GID:-1000}
depends_on:
- db
volumes:
- ./:/home/devuser/app
- ./storage/tmp/composer:/home/devuser/.composer/cache
- ./storage/tmp/npm:/home/devuser/.npm
ports:
- ${WORKSPACE_PORT:-8080}:8080
restart: always
db:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=root_secret
- MYSQL_DATABASE=zeus
- MYSQL_USER=zeus_user
- MYSQL_PASSWORD=secret
volumes:
- ./storage/tmp/db:/var/lib/mysql
restart: always
adminer:
image: adminer
restart: always
ports:
- 9000:8080
nginx:
build: ./docker/nginx
ports:
- ${NGINX_PORT:-80}:80
volumes:
- ./:/home/devuser/app
depends_on:
- web
restart: always
+12
View File
@@ -0,0 +1,12 @@
name: demo
services:
web:
image: docker.io/library/nginx:alpine
ports:
- "8080:80"
volumes:
- ./site:/usr/share/nginx/html:ro
networks:
- frontend
networks:
frontend: {}
+1
View File
@@ -0,0 +1 @@
<!doctype html><html lang="en"><meta charset="utf-8"><title>AppleContainerCompose</title><h1>AppleContainerCompose is running</h1></html>
+7
View File
@@ -0,0 +1,7 @@
# App icon
Generated with the built-in image generation tool, then resized into standard macOS AppIcon slots. The selected image is bundled in this asset catalog; no external file is required.
Design prompt: Create a finished professional macOS application icon for Apple Container Compose, a native container orchestration developer tool. Use case logo-brand. Square 1024x1024 icon artwork, full-bleed opaque soft pearl white background, no pre-rounded outer corners and no exterior shadow. Single centered abstract blue container cube made from three simple carefully proportioned interlocking rounded panels, suggesting composition and order. Sparse, calm, confident Apple-like craftsmanship, subtle dimensional shading and restrained cool blue gradients, crisp silhouette recognizable at 16 pixels, generous negative space, large geometric shapes, no tiny details. No text, no letters, no Apple logo, no whale, no border, no mockup, no watermark. The image itself is the icon, not a picture of an icon.
Reference: https://developer.apple.com/design/human-interface-guidelines/app-icons
+86 -27
View File
@@ -1,37 +1,96 @@
# Apple Container Compose — Xcode macOS application (prototype) # AppleContainerCompose — Native Xcode project (developer preview)
A native SwiftUI macOS front end for Apple's `container` runtime. Includes a bundled Python Compose-style orchestration engine from the initial MVP. A SwiftUI macOS application and **native Swift** `accompose` CLI that operate Apple's `container` runtime. No Python, PyYAML, ServBay, Docker Desktop, or Docker daemon is needed. Both targets compile the same `ComposeCore.swift` orchestration implementation and use the Yams Swift package for YAML parsing.
## Requirements ## Requirements
- Apple silicon Mac running macOS 26 or newer
- Xcode 26 or newer
- Apple's `container` CLI installed and configured
- Python 3 with PyYAML available to the **python3** interpreter launched by the app
- Internet access on first Xcode build to resolve the Yams Swift package
## Open and build - Apple silicon, macOS 26+, Xcode 26+
1. Open `AppleContainerCompose.xcodeproj` in Xcode. - Apple's [`container`](https://github.com/apple/container) CLI installed, with a configured kernel (`container system start`)
2. Select the `AppleContainerCompose` scheme and `My Mac` destination. - Internet on first build to fetch the Yams Swift package
3. Build and run (Command-R).
4. Click **Open YAML** and choose a Compose file (sample in `Examples/compose.yaml`).
5. Use **Up**, **Down**, **Status**, **Logs**, **Restart**, **Pull Images**, or **Build Images**.
## Python dependency ## Build and run GUI
The bundled engine imports PyYAML. Install it for the Python interpreter available in your macOS app's PATH. For example, using Homebrew Python:
```sh Open `AppleContainerCompose.xcodeproj`, select the `AppleContainerCompose` scheme and run. Use **Open YAML** to load `Examples/compose.yaml`, then Up / Down / Status / Logs. The GUI invokes the same native Swift engine as the CLI, not Python.
brew install python
/opt/homebrew/bin/python3 -m venv ~/.local/share/accompose-venv ## Install command line utility
~/.local/share/accompose-venv/bin/pip install PyYAML
From Terminal, in the project root:
```bash
./Scripts/install-cli.sh
accompose doctor
cd Examples
accompose up -d
accompose ps
accompose logs
accompose down
``` ```
The current app executes `python3` from PATH, not the venv automatically. Install PyYAML into that interpreter, or modify `executeEngine` to use `~/.local/share/accompose-venv/bin/python` (recommended for isolated dependencies). The installer builds the `accompose` Xcode scheme in Release and copies the binary to `/opt/homebrew/bin/accompose` (override `PREFIX=/your/prefix`). It asks for administrator permissions only if the destination directory is not writable. Add the prefix's `bin` directory to your PATH if needed.
## Current implementation scope ## CLI usage
- Native Xcode project with SwiftUI project browser, service summary, and command output
- Compose YAML parsing for service listing using Yams
- Bundled MVP engine: up/down, start/stop/restart, ps/logs, build/pull, state, dependencies, networks and volumes
- App process runs without macOS sandbox because it invokes the host's container CLI
## Limitations ```
This is a development prototype, not a fully native orchestration engine or production-grade Docker Compose replacement. Runtime integration is not tested on macOS here. The Python engine requires PyYAML; service status is currently based on project state; logs are batch output, not continuous streaming; health checks, advanced Compose compatibility, restart supervision, service scaling and secure secrets management remain future work. The UI's restart action restarts the whole project. Consult Apple's `container` version for supported CLI flags. accompose init
accompose [-f compose.yaml] [-p project] config
accompose [-v|-vv|-vvv] up [-d|--detach] [--build]
accompose down [--volumes]
accompose ps
accompose pull
accompose build
accompose logs [service]
accompose start|stop|restart [service]
accompose exec SERVICE COMMAND [ARG ...]
accompose doctor
```
The default file discovery order is `compose.yaml`, `compose.yml`, `docker-compose.yaml`, `docker-compose.yml`. `.env` substitution, build contexts, Dockerfiles, service dependency ordering, environment variables, published ports, bind mounts, named volumes, and custom networks have initial support. Names are scoped by project.
## Limitations / important safety notes
This is an **early developer preview**, not a drop-in Docker Compose implementation. Only a subset of Compose YAML is parsed. Long-form mounts/ports, secrets, service health gating, robust reconciliation, profiles, scaling, live `logs -f`, restart supervision, and full network aliases are **not implemented**. A service with multiple networks only attaches to its first network; the CLI prints a warning. Restart policies are parsed but **not enforced**. `up` does not update an existing container when YAML changes: use `down` then `up`. `ps` currently lists all Apple containers, not just the project. Named volumes are not removed by `down` unless `--volumes` is provided. `down` may stop/remove project containers: check the project name before running it. The installer never automatically downloads or configures an unverified kernel.
Debug and Release builds of both Xcode targets and real Apple container runtime checks passed on macOS. See `Validation/VALIDATION.md` for the environment, checks and limitations.
## Updated developer preview: CLI rename and cleanup
The CLI target and installer are now named `accompose`. Re-run `./Scripts/install-cli.sh` after replacing your old project. The older `acccompose` executable is not automatically deleted. Verify using `accompose --help`.
Additional commands:
```sh
accompose import ./docker-compose.yml # validate existing YAML without modifying it
accompose import ~/Projects/example # validate directory's default Compose file
accompose clean web --dry-run # preview deletion
accompose clean web # delete managed service container
accompose clean --all --dry-run # preview project container deletion
accompose clean --all # delete project containers
accompose prune --images # request runtime unused-image cleanup
```
The sample `Examples/site/index.html` is included to prevent the original Nginx bind mount failure. Missing directory bind sources are created during `up`; do not use a missing *file* bind source because it will be created as a directory.
### Compatibility limitations
This is **not** full Docker Compose support. Import validates only the subset of YAML handled by ComposeCore. Unrecognized service keys cause an explicit error rather than being silently ignored. Import does not yet persist projects to a GUI library, multi-file merging and YAML extension semantics are incomplete, and clean only deletes managed project containers (not host data, volumes, images or networks). Image pruning relies on the installed Apple `container` version supporting `container image prune`. The kernel and all host bind files are preserved. `--dry-run` is only supported for clean and prune. The detached/foreground lifecycle has been integration-tested on the runtime version recorded in `Validation/VALIDATION.md`.
## Foreground and detached mode fix
- `accompose up` streams each service's logs live and stays attached until log followers finish or the command is interrupted.
- `accompose up -d` and `accompose up --detach` return after startup, leaving containers running.
- `-v`, `-vv` and `-vvv` change diagnostics only. They work before or after `up`, for example `accompose -vvv up -d` and `accompose up -d -vvv`.
- Ctrl+C (or SIGTERM) in foreground mode stops managed containers in reverse dependency order using the runtime's graceful `stop`; containers are preserved for subsequent `up`. Interrupted startup stops the containers reached so far.
- Existing stopped containers are restarted. Configuration changes still require `down` and `up`.
- The GUI's Up action retains its asynchronous, detached engine behavior.
- The runtime executable is resolved from PATH first, with Homebrew/system fallback paths.
Verbosity levels add mode/project details, Compose file location, then startup order. They do not change container execution mode. `logs` remains a snapshot command; foreground `up` uses independent live log followers. Multiple service logs share the terminal without added service prefixes.
To rerun the isolated regression suite (Python 3 is needed only for tests):
```sh
python3 Tests/cli_regression.py /absolute/path/to/built/accompose
```
The suite substitutes a temporary fake runtime and never changes real containers.
+21
View File
@@ -0,0 +1,21 @@
#!/bin/bash
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
PREFIX="${PREFIX:-/opt/homebrew}"
if ! command -v xcodebuild >/dev/null 2>&1; then
echo 'Xcode command-line tools / Xcode required.' >&2; exit 1
fi
xcodebuild -project "$ROOT/AppleContainerCompose.xcodeproj" -scheme accompose \
-configuration Release -derivedDataPath "$ROOT/.build" CODE_SIGNING_ALLOWED=NO build
BIN="$ROOT/.build/Build/Products/Release/accompose"
if [ ! -x "$BIN" ]; then
echo "CLI executable not found at $BIN" >&2; exit 1
fi
mkdir -p "$PREFIX/bin" 2>/dev/null || sudo mkdir -p "$PREFIX/bin"
if [ -w "$PREFIX/bin" ]; then
install -m 755 "$BIN" "$PREFIX/bin/accompose"
else
sudo install -m 755 "$BIN" "$PREFIX/bin/accompose"
fi
printf 'Installed: %s/bin/accompose\n' "$PREFIX"
"$PREFIX/bin/accompose" --help
+10
View File
@@ -0,0 +1,10 @@
import SwiftUI
@main
struct AppleContainerComposeApp: App {
@StateObject private var model = ComposeModel()
var body: some Scene {
WindowGroup("Apple Container Compose") { ContentView().environmentObject(model) }
.defaultSize(width: 1050, height: 720)
}
}
+111
View File
@@ -0,0 +1,111 @@
import Foundation
@main
struct AppleComposeCLI {
static func main() {
do { try execute() }
catch { fputs("accompose: \(error)\n", stderr); exit(1) }
}
static func execute() throws {
var arguments = Array(CommandLine.arguments.dropFirst())
let help = """
accompose — Apple Container Compose CLI
Usage: accompose [-f FILE] [-p PROJECT] COMMAND [OPTIONS]
Commands:
init Create a starter compose.yaml
doctor Check Apple Container runtime
config Validate Compose file and display configuration
up [-d|--detach] [--build] Start; attach to logs unless detached
down [--volumes] Stop and delete project containers
ps List containers
logs [SERVICE] Display service logs (snapshot only)
pull Pull service images
build Build services with Dockerfiles
start [SERVICE] Start containers
stop [SERVICE] Stop containers
restart [SERVICE] Restart containers
exec SERVICE CMD Execute a command in a container
clean SERVICE Delete one managed container
clean --all Delete all containers of current project
clean --dry-run Preview managed container deletion
prune --images Ask runtime to remove unused images
import PATH Validate a Compose file or project directory
Global options:
-f, --file FILE Compose file path
-p, --project-name N Override project name
-v, -vv, -vvv Increase diagnostics (independent of detach)
-h, --help Display help
Supported: basic images, Dockerfile builds, ports, directory binds,
named volumes, environment, dependencies, networks, commands.
Other service keys are rejected instead of silently ignored.
This is NOT a complete Docker Compose implementation.
"""
if arguments.contains("--help") || arguments.contains("-h") || arguments.isEmpty {
print(help)
return
}
var file: String?; var name: String?
var verbosity = 0
var index = 0
while index < arguments.count {
if ["-f", "--file", "-p", "--project-name"].contains(arguments[index]) {
guard index + 1 < arguments.count else { throw ComposeError.message("Missing value for \(arguments[index])") }
if arguments[index] == "-f" || arguments[index] == "--file" { file = arguments[index + 1] } else { name = arguments[index + 1] }
arguments.removeSubrange(index...index + 1)
} else if ["-v", "-vv", "-vvv"].contains(arguments[index]) {
verbosity = min(3, verbosity + arguments[index].count - 1)
arguments.remove(at: index)
} else {
// exec's command arguments belong to the invoked program.
if arguments[index] == "exec" { break }
index += 1
}
}
guard let command = arguments.first else { throw ComposeError.message("Missing command") }
if command == "doctor" && file == nil && (try? ComposeProject.discover()) == nil {
print("Apple Container Compose diagnostics")
guard let binary = Shell.executable("container") else { throw ComposeError.message("Apple container CLI not found. Install from https://github.com/apple/container/releases") }
print("CLI: \(binary)")
print(try Shell.checked("container", ["--version"]))
let result = try Shell.run("container", ["system", "status"])
print(result.output)
if result.status != 0 { throw ComposeError.message("Container runtime not ready. Try: container system start") }
return
}
if command == "import" {
guard arguments.count >= 2 else { throw ComposeError.message("Usage: accompose import PATH") }
let url = URL(fileURLWithPath: arguments[1]).standardizedFileURL
var isDir: ObjCBool = false
guard FileManager.default.fileExists(atPath: url.path, isDirectory: &isDir) else { throw ComposeError.message("Path not found: \(url.path)") }
let input: URL
if isDir.boolValue {
let candidates = ["compose.yaml", "compose.yml", "docker-compose.yaml", "docker-compose.yml"]
guard let match = candidates.map({ url.appendingPathComponent($0) }).first(where: { FileManager.default.fileExists(atPath: $0.path) }) else { throw ComposeError.message("No Compose file found in \(url.path)") }
input = match
} else { input = url }
let project = try ComposeProject(file: input, overrideName: name)
print("Validated \(project.services.count) services from \(input.path). No files modified.")
return
}
if command == "init" {
let target = URL(fileURLWithPath: FileManager.default.currentDirectoryPath).appendingPathComponent("compose.yaml")
guard !FileManager.default.fileExists(atPath: target.path) else { throw ComposeError.message("compose.yaml already exists") }
try "services:\n web:\n image: docker.io/library/nginx:alpine\n ports:\n - \"8080:80\"\n".write(to: target, atomically: true, encoding: .utf8)
print("Created \(target.path)"); return
}
let commandArgs = Array(arguments.dropFirst())
if command == "up" {
let supported: Set<String> = ["-d", "--detach", "--build"]
if let unknown = commandArgs.first(where: { !supported.contains($0) }) {
throw ComposeError.message("Unsupported up option: \(unknown)")
}
}
let project = try ComposeProject(file: ComposeProject.discover(file), overrideName: name)
let attached = command == "up" && !commandArgs.contains("-d") && !commandArgs.contains("--detach")
let output = try ComposeEngine(project).execute(command, args: commandArgs, attached: attached, verbosity: verbosity)
print(output, terminator: output.hasSuffix("\n") ? "" : "\n")
}
}
+367
View File
@@ -0,0 +1,367 @@
import Foundation
import Yams
import Darwin
// Signal handlers only enqueue cancellation. Runtime stop commands run on the caller.
private final class ForegroundInterrupt {
private let lock = NSLock()
private var cancelled = false
private var sources: [DispatchSourceSignal] = []
private var previous: [(Int32, sig_t?)] = []
var interrupted: Bool { lock.lock(); defer { lock.unlock() }; return cancelled }
init() {
for number in [SIGINT, SIGTERM] {
previous.append((number, signal(number, { _ in })))
let source = DispatchSource.makeSignalSource(signal: number, queue: .global())
source.setEventHandler { [weak self] in
guard let self else { return }
self.lock.lock(); self.cancelled = true; self.lock.unlock()
}
source.resume()
sources.append(source)
}
}
deinit {
for source in sources { source.cancel() }
for (number, handler) in previous { signal(number, handler) }
}
}
public struct ComposeService: Identifiable {
public let id: String
public var image: String
public var buildContext: String?
public var dockerfile: String?
public var ports: [String]
public var volumes: [String]
public var environment: [String]
public var dependencies: [String]
public var networks: [String]
public var command: [String]
public var workingDirectory: String?
public var restart: String?
}
public enum ComposeError: Error, CustomStringConvertible {
case message(String)
public var description: String { if case .message(let value) = self { return value }; return "Unknown error" }
}
public struct CommandResult {
public let status: Int32
public let output: String
}
public enum Shell {
public static func executable(_ name: String) -> String? {
let paths = (ProcessInfo.processInfo.environment["PATH"] ?? "").split(separator: ":").map(String.init) + ["/opt/homebrew/bin", "/usr/local/bin", "/usr/bin", "/bin"]
return paths.map { ($0 as NSString).appendingPathComponent(name) }.first { FileManager.default.isExecutableFile(atPath: $0) }
}
@discardableResult public static func run(_ name: String, _ args: [String], directory: URL? = nil, streaming: Bool = false) throws -> CommandResult {
guard let binary = executable(name) else { throw ComposeError.message("Missing executable: \(name). Install Apple's container runtime first.") }
let process = Process()
process.executableURL = URL(fileURLWithPath: binary)
process.arguments = args
if let directory { process.currentDirectoryURL = directory }
let pipe = Pipe()
process.standardOutput = pipe
process.standardError = pipe
try process.run()
// Drain while running to avoid blocking on full pipe buffers.
let data = pipe.fileHandleForReading.readDataToEndOfFile()
process.waitUntilExit()
let output = String(decoding: data, as: UTF8.self)
if streaming { print(output, terminator: "") }
return CommandResult(status: process.terminationStatus, output: output)
}
@discardableResult public static func checked(_ name: String, _ args: [String], directory: URL? = nil) throws -> String {
let result = try run(name, args, directory: directory)
guard result.status == 0 else { throw ComposeError.message("\(name) \(args.joined(separator: " ")) failed (\(result.status)):\n\(result.output)") }
return result.output
}
}
public struct ComposeProject {
public let file: URL
public let name: String
public let services: [ComposeService]
public let networks: [String]
public let volumes: [String]
public var directory: URL { file.deletingLastPathComponent() }
public static func discover(_ supplied: String? = nil) throws -> URL {
let manager = FileManager.default
if let supplied { let url = URL(fileURLWithPath: supplied, relativeTo: URL(fileURLWithPath: manager.currentDirectoryPath)).standardizedFileURL; guard manager.fileExists(atPath: url.path) else { throw ComposeError.message("Compose file not found: \(url.path)") }; return url }
for name in ["compose.yaml", "compose.yml", "docker-compose.yaml", "docker-compose.yml"] {
let url = URL(fileURLWithPath: manager.currentDirectoryPath).appendingPathComponent(name)
if manager.fileExists(atPath: url.path) { return url }
}
throw ComposeError.message("No compose.yaml found. Use -f FILE or run accompose init.")
}
public init(file: URL, overrideName: String? = nil) throws {
self.file = file
let source = try String(contentsOf: file, encoding: .utf8)
let envFile = file.deletingLastPathComponent().appendingPathComponent(".env")
let dotenv = (try? String(contentsOf: envFile, encoding: .utf8)) ?? ""
var vars = ProcessInfo.processInfo.environment
for line in dotenv.split(separator: "\n") {
let line = line.trimmingCharacters(in: .whitespaces)
if line.isEmpty || line.hasPrefix("#") { continue }
let parts = line.split(separator: "=", maxSplits: 1).map(String.init)
if parts.count == 2 && vars[parts[0]] == nil { vars[parts[0]] = parts[1].trimmingCharacters(in: CharacterSet(charactersIn: "\"'")) }
}
let expanded = try Self.interpolate(source, vars: vars)
guard let root = try Yams.load(yaml: expanded) as? [String: Any], let rawServices = root["services"] as? [String: Any], !rawServices.isEmpty else { throw ComposeError.message("Compose file must contain a nonempty services mapping") }
let requestedName = overrideName ?? (root["name"] as? String) ?? file.deletingLastPathComponent().lastPathComponent
self.name = Self.safeName(requestedName)
self.networks = (root["networks"] as? [String: Any]).map { Array($0.keys).sorted() } ?? []
self.volumes = (root["volumes"] as? [String: Any]).map { Array($0.keys).sorted() } ?? []
let resolvedProjectName = self.name
self.services = try rawServices.keys.sorted().map { key in
guard let raw = rawServices[key] as? [String: Any] else { throw ComposeError.message("Service \(key) must be a mapping") }
let supported: Set<String> = ["image", "build", "ports", "volumes", "environment", "depends_on", "networks", "command", "working_dir", "restart"]
let ignored = Set(raw.keys).subtracting(supported)
if !ignored.isEmpty {
throw ComposeError.message("Service \(key) contains options not yet supported by Apple Container: \(ignored.sorted().joined(separator: ", ")). Refusing to silently ignore them.")
}
let build = raw["build"]
let buildMap = build as? [String: Any]
let context = (build as? String) ?? (buildMap?["context"] as? String)
let image = (raw["image"] as? String) ?? "\(resolvedProjectName)-\(key):latest"
guard context != nil || raw["image"] is String else { throw ComposeError.message("Service \(key) requires image or build") }
let deps: [String]
if let values = raw["depends_on"] as? [String] { deps = values }
else if let values = raw["depends_on"] as? [String: Any] { deps = Array(values.keys) }
else { deps = [] }
let env: [String]
if let values = raw["environment"] as? [String] { env = values }
else if let values = raw["environment"] as? [String: Any] { env = values.keys.sorted().compactMap { key in values[key].map { "\(key)=\($0)" } } }
else { env = [] }
let networks = (raw["networks"] as? [String]) ?? (raw["networks"] as? [String: Any]).map { Array($0.keys) } ?? []
let command: [String]
if let arr = raw["command"] as? [String] { command = arr }
else if let str = raw["command"] as? String { command = ["sh", "-c", str] }
else { command = [] }
return ComposeService(id: key, image: image, buildContext: context, dockerfile: buildMap?["dockerfile"] as? String, ports: Self.strings(raw["ports"]), volumes: Self.strings(raw["volumes"]), environment: env, dependencies: deps, networks: networks, command: command, workingDirectory: raw["working_dir"] as? String, restart: raw["restart"] as? String)
}
let ids = Set(services.map(\.id))
for service in services { for dep in service.dependencies where !ids.contains(dep) { throw ComposeError.message("Unknown dependency \(dep) for service \(service.id)") } }
_ = try orderedServices()
}
private static func strings(_ value: Any?) -> [String] { (value as? [Any])?.compactMap { $0 as? String ?? ($0 as? Int).map(String.init) } ?? [] }
public static func safeName(_ value: String) -> String {
let mapped = value.lowercased().map { $0.isASCII && ($0.isLetter || $0.isNumber || $0 == "-" || $0 == "_") ? $0 : "-" }
return String(mapped).trimmingCharacters(in: CharacterSet(charactersIn: "-_"))
}
private static func interpolate(_ text: String, vars: [String: String]) throws -> String {
let regex = try NSRegularExpression(pattern: #"\$\{([A-Za-z_][A-Za-z0-9_]*)(?:(:-|:\?|\?|-)([^}]*))?\}"#)
var output = text
for match in regex.matches(in: text, range: NSRange(text.startIndex..., in: text)).reversed() {
guard let range = Range(match.range, in: output), let keyRange = Range(match.range(at: 1), in: output) else { continue }
let key = String(output[keyRange]); let mode = Range(match.range(at: 2), in: output).map { String(output[$0]) } ?? ""
let fallback = Range(match.range(at: 3), in: output).map { String(output[$0]) } ?? ""
let value = vars[key]
if (mode == "?" || mode == ":?") && (value == nil || (mode == ":?" && value == "")) { throw ComposeError.message("Missing required environment variable \(key): \(fallback)") }
let replacement = ((mode == ":-" && (value == nil || value == "")) || (mode == "-" && value == nil)) ? fallback : (value ?? "")
output.replaceSubrange(range, with: replacement)
}
return output.replacingOccurrences(of: "$$", with: "$")
}
public func orderedServices() throws -> [ComposeService] {
var result: [ComposeService] = []; var visiting = Set<String>(); var visited = Set<String>()
let lookup = Dictionary(uniqueKeysWithValues: services.map { ($0.id, $0) })
func visit(_ key: String) throws {
if visiting.contains(key) { throw ComposeError.message("Dependency cycle involving \(key)") }
if visited.contains(key) { return }
visiting.insert(key)
for dependency in lookup[key]!.dependencies.sorted() { try visit(dependency) }
visiting.remove(key); visited.insert(key); result.append(lookup[key]!)
}
for service in services { try visit(service.id) }
return result
}
public func containerName(_ service: ComposeService) -> String { "\(name)-\(service.id)-1" }
public func networkName(_ name: String) -> String { "\(self.name)-\(name)" }
public func volumeName(_ name: String) -> String { "\(self.name)-\(name)" }
}
public struct ComposeEngine {
public let project: ComposeProject
public init(_ project: ComposeProject) { self.project = project }
private func run(_ args: [String]) throws -> String { try Shell.checked("container", args, directory: project.directory) }
private func path(_ value: String) -> String { URL(fileURLWithPath: value, relativeTo: project.directory).standardizedFileURL.path }
private func existingContainers() throws -> String { try run(["list", "--all"]) }
private func exists(_ name: String) throws -> Bool { let result = try Shell.run("container", ["inspect", name]); return result.status == 0 }
private func ensureNetwork(_ network: String) throws {
let name = project.networkName(network)
let result = try Shell.run("container", ["network", "create", name])
if result.status != 0 && !result.output.localizedCaseInsensitiveContains("already exists") { throw ComposeError.message(result.output) }
}
private func ensureVolume(_ volume: String) throws {
let name = project.volumeName(volume)
let result = try Shell.run("container", ["volume", "create", name])
if result.status != 0 && !result.output.localizedCaseInsensitiveContains("already exists") { throw ComposeError.message(result.output) }
}
private func build(_ service: ComposeService) throws {
guard let context = service.buildContext else { return }
var args = ["build", "-t", service.image]
if let dockerfile = service.dockerfile { args += ["-f", path((context as NSString).appendingPathComponent(dockerfile))] }
args.append(path(context))
print(try run(args))
}
public func execute(_ action: String, args: [String] = [], attached: Bool = false, verbosity: Int = 0) throws -> String {
switch action {
case "doctor":
var lines = ["Apple Container Compose diagnostics", "Project: \(project.file.path)"]
guard let binary = Shell.executable("container") else { return (lines + ["FAIL: Apple container CLI not found. Install from https://github.com/apple/container/releases"]).joined(separator: "\n") }
lines.append("CLI: \(binary)")
let version = try Shell.run("container", ["--version"]); lines.append(version.output.trimmingCharacters(in: .whitespacesAndNewlines))
let status = try Shell.run("container", ["system", "status"]); lines.append("Runtime: \(status.status == 0 ? "available" : "not ready")\n\(status.output)")
return lines.joined(separator: "\n")
case "config": return try String(contentsOf: project.file, encoding: .utf8) + "\nValidated \(project.services.count) services; startup order: \(project.orderedServices().map(\.id).joined(separator: ", "))\n"
case "pull":
var output = ""
for service in project.services where service.buildContext == nil { output += try run(["image", "pull", service.image]) }
return output
case "build":
for service in project.services { try build(service) }
return "Build completed.\n"
case "up":
let interrupt = attached ? ForegroundInterrupt() : nil
var managed: [String] = []
var followers: [Process] = []
defer {
for follower in followers where follower.isRunning { follower.terminate() }
for follower in followers { follower.waitUntilExit() }
if interrupt?.interrupted == true {
fputs("Stopping project gracefully…\n", stderr)
for name in managed.reversed() {
do { _ = try run(["stop", name]) }
catch { fputs("Failed to stop \(name): \(error)\n", stderr) }
}
}
}
let rebuild = args.contains("--build")
if verbosity > 0 {
fputs("accompose: project=\(project.name) mode=\(attached ? "foreground" : "detached") verbosity=\(verbosity)\n", stderr)
}
if verbosity > 1 { fputs("Compose file: \(project.file.path)\n", stderr) }
if verbosity > 2 { fputs("Startup order: \(try project.orderedServices().map(\.id).joined(separator: ", "))\n", stderr) }
for network in project.networks { try ensureNetwork(network) }
for volume in project.volumes { try ensureVolume(volume) }
var output = ""
for service in try project.orderedServices() {
if interrupt?.interrupted == true { break }
if rebuild { try build(service) }
let name = project.containerName(service)
managed.append(name)
if try exists(name) {
let inspection = try run(["inspect", name])
let containers = try JSONSerialization.jsonObject(with: Data(inspection.utf8)) as? [[String: Any]]
if let status = containers?.first?["status"] as? [String: Any], status["state"] as? String == "stopped" {
output += try run(["start", name])
}
output += "Already exists: \(name) (use down before changing configuration)\n"; continue }
var cmd = ["run", "-d", "--name", name]
for port in service.ports { cmd += ["-p", port] }
for item in service.environment { cmd += ["-e", item] }
if let wd = service.workingDirectory { cmd += ["-w", wd] }
for item in service.volumes {
let parts = item.split(separator: ":", omittingEmptySubsequences: false).map(String.init)
guard parts.count >= 2 else { throw ComposeError.message("Invalid volume mount: \(item)") }
let source = parts[0].hasPrefix(".") || parts[0].hasPrefix("/") || parts[0].hasPrefix("~") ? path((parts[0] as NSString).expandingTildeInPath) : project.volumeName(parts[0])
if source.hasPrefix("/") && !FileManager.default.fileExists(atPath: source) {
// Docker Compose creates missing directory bind sources by default.
try FileManager.default.createDirectory(atPath: source, withIntermediateDirectories: true)
}
cmd += ["-v", ([source] + parts.dropFirst()).joined(separator: ":")]
}
if let first = service.networks.first { cmd += ["--network", project.networkName(first)] }
cmd.append(service.image); cmd += service.command
output += try run(cmd) + "\nStarted \(name)\n"
if service.networks.count > 1 { output += "WARNING: multiple networks requested for \(service.id); only first attached\n" }
if service.restart != nil { output += "WARNING: restart policy requires external supervision; not enabled for \(service.id)\n" }
}
if attached && interrupt?.interrupted != true {
print(output, terminator: "")
fflush(stdout)
guard let binary = Shell.executable("container") else { throw ComposeError.message("Missing container executable") }
for name in managed {
let follower = Process()
follower.executableURL = URL(fileURLWithPath: binary)
follower.arguments = ["logs", "--follow", name]
follower.standardOutput = FileHandle.standardOutput
follower.standardError = FileHandle.standardError
try follower.run()
followers.append(follower)
}
while followers.contains(where: { $0.isRunning }) && interrupt?.interrupted != true {
if let failed = followers.first(where: { !$0.isRunning && $0.terminationStatus != 0 }) {
throw ComposeError.message("Log follower failed (\(failed.terminationStatus))")
}
Thread.sleep(forTimeInterval: 0.05)
}
if interrupt?.interrupted != true {
for follower in followers where follower.terminationStatus != 0 {
throw ComposeError.message("Log follower failed (\(follower.terminationStatus))")
}
}
return ""
}
return output
case "down":
var output = ""
for service in (try project.orderedServices()).reversed() {
let name = project.containerName(service)
if try exists(name) { _ = try? run(["stop", name]); output += try run(["delete", name]) }
}
for network in project.networks { _ = try? run(["network", "delete", project.networkName(network)]) }
if args.contains("--volumes") { for volume in project.volumes { _ = try? run(["volume", "delete", project.volumeName(volume)]) } }
return output + "Project stopped.\n"
case "clean":
let dry = args.contains("--dry-run")
let all = args.contains("--all") || args.contains("--project")
let selected = args.first { !$0.hasPrefix("-") }
let targets = all ? project.services : project.services.filter { $0.id == selected || project.containerName($0) == selected }
guard !targets.isEmpty else { throw ComposeError.message("Select a service/container or use --all; see accompose clean --help") }
var output = ""
for service in targets {
let name = project.containerName(service)
if try exists(name) {
output += "\(dry ? "Would remove" : "Removing") container \(name)\n"
if !dry { _ = try? run(["stop", name]); output += try run(["delete", name]) }
}
}
output += "Named volumes, shared images, external networks and host bind paths were preserved.\n"
return output
case "prune":
// Only safe, explicit image cleanup; no blind deletion of user data.
guard args.contains("--images") else { return "No resources deleted. Use accompose prune --images to request unused image pruning; named volumes are never pruned automatically.\n" }
if args.contains("--dry-run") { return "Dry run: inspect unused images with container image list; no changes made.\n" }
let result = try Shell.run("container", ["image", "prune"])
guard result.status == 0 else { throw ComposeError.message("Image prune unsupported or failed: \(result.output)") }
return result.output
case "ps": return try run(["list", "--all"])
case "logs":
let selected = args.filter { !$0.hasPrefix("-") }
let services = selected.isEmpty ? project.services : project.services.filter { selected.contains($0.id) }
var output = ""
for service in services { output += "=== \(service.id) ===\n" + (try run(["logs", project.containerName(service)])) }
return output
case "start", "stop", "restart":
let selected = args.filter { !$0.hasPrefix("-") }
let services = selected.isEmpty ? project.services : project.services.filter { selected.contains($0.id) }
var output = ""
for service in services {
let name = project.containerName(service)
if action == "restart" { output += try run(["stop", name]); output += try run(["start", name]) }
else { output += try run([action, name]) }
}
return output
case "exec":
guard let service = args.first, let match = project.services.first(where: { $0.id == service }), args.count > 1 else { throw ComposeError.message("Usage: accompose exec SERVICE COMMAND [ARGS]") }
return try run(["exec", project.containerName(match)] + Array(args.dropFirst()))
default: throw ComposeError.message("Unsupported command: \(action)")
}
}
}
+47
View File
@@ -0,0 +1,47 @@
import SwiftUI
import AppKit
@MainActor final class ComposeModel: ObservableObject {
@Published var projectURL: URL?
@Published var services: [ComposeService] = []
@Published var selectedService: String?
@Published var status = "Ready"
@Published var busy = false
@Published var output = "Open a compose.yaml file to begin.\n"
func openProject() {
let panel = NSOpenPanel()
panel.allowedContentTypes = [.yaml, .init(filenameExtension: "yml")!]
panel.canChooseDirectories = false
if panel.runModal() == .OK, let url = panel.url { load(url) }
}
func load(_ url: URL) {
do {
let project = try ComposeProject(file: url)
projectURL = url; services = project.services
selectedService = services.first?.id
output += "Loaded \(url.path) (\(services.count) services)\n"
} catch { output += "ERROR: \(error)\n" }
}
func clearLog() { output = "" }
func checkRuntime() {
guard let url = projectURL else { output += "Open a Compose project first.\n"; return }
run(url: url, action: "doctor")
}
func perform(_ action: String) {
guard let url = projectURL else { return }
run(url: url, action: action)
}
private func run(url: URL, action: String) {
guard !busy else { return }
busy = true; status = "Running \(action)…"; output += "\n$ acccompose \(action)\n"
Task.detached {
let result: String
do { result = try ComposeEngine(ComposeProject(file: url)).execute(action) }
catch { result = "ERROR: \(error)\n" }
await MainActor.run {
self.output += result + "\n"
self.busy = false; self.status = "Ready"
}
}
}
}
+77
View File
@@ -0,0 +1,77 @@
import SwiftUI
struct ContentView: View {
@EnvironmentObject private var model: ComposeModel
var body: some View {
NavigationSplitView {
VStack(alignment: .leading, spacing: 12) {
HStack {
Image(systemName: "shippingbox.fill").foregroundStyle(.blue)
Text("Services").font(.headline)
Spacer()
Text("\(model.services.count)").foregroundStyle(.secondary)
}.padding(.horizontal)
List(selection: $model.selectedService) {
ForEach(model.services) { service in
VStack(alignment: .leading, spacing: 4) {
Text(service.id).font(.headline)
Text(service.image).font(.caption).foregroundStyle(.secondary).lineLimit(1)
}.padding(.vertical, 4).tag(service.id)
}
}
Text(model.projectURL?.lastPathComponent ?? "No project opened")
.font(.caption).foregroundStyle(.secondary).lineLimit(1).padding()
}
.navigationSplitViewColumnWidth(min: 220, ideal: 265)
} detail: {
VStack(alignment: .leading, spacing: 14) {
HStack {
VStack(alignment: .leading, spacing: 4) {
Text("Apple Container Compose").font(.title2.bold())
Text(model.projectURL?.deletingLastPathComponent().path ?? "Open a Compose project to get started")
.font(.caption).foregroundStyle(.secondary).textSelection(.enabled)
}
Spacer()
Text(model.status).foregroundStyle(.secondary)
}
if let service = model.services.first(where: { $0.id == model.selectedService }) {
GroupBox("Selected service") {
VStack(alignment: .leading, spacing: 6) {
LabeledContent("Name", value: service.id)
LabeledContent("Image", value: service.image)
LabeledContent("Ports", value: service.ports.joined(separator: ", ").isEmpty ? "None" : service.ports.joined(separator: ", "))
LabeledContent("Depends on", value: service.dependencies.joined(separator: ", ").isEmpty ? "None" : service.dependencies.joined(separator: ", "))
}.frame(maxWidth: .infinity, alignment: .leading).padding(5)
}
}
HStack {
Text("Command output").font(.headline)
Spacer()
Button("Clear") { model.clearLog() }
}
ScrollView {
Text(model.output).font(.system(size: 12, design: .monospaced))
.frame(maxWidth: .infinity, alignment: .leading)
.textSelection(.enabled).padding(12)
}
.background(.black.opacity(0.87), in: RoundedRectangle(cornerRadius: 9))
.foregroundStyle(.green)
}.padding(20)
}
.toolbar {
ToolbarItemGroup {
Button("Open YAML", systemImage: "folder") { model.openProject() }
Button("Up", systemImage: "play.fill") { model.perform("up") }.disabled(model.busy || model.projectURL == nil)
Button("Down", systemImage: "stop.fill") { model.perform("down") }.disabled(model.busy || model.projectURL == nil)
Button("Restart", systemImage: "arrow.clockwise") { model.perform("restart") }.disabled(model.busy || model.projectURL == nil)
Button("Status", systemImage: "list.bullet.rectangle") { model.perform("ps") }.disabled(model.busy || model.projectURL == nil)
Button("Logs", systemImage: "text.alignleft") { model.perform("logs") }.disabled(model.busy || model.projectURL == nil)
Menu("More") {
Button("Pull Images") { model.perform("pull") }
Button("Build Images") { model.perform("build") }
Button("Check Runtime") { model.checkRuntime() }
}
}
}
}
}
+86
View File
@@ -0,0 +1,86 @@
#!/usr/bin/env python3
"""Run against a built CLI: python3 Tests/cli_regression.py /absolute/path/accompose.
Uses a fake container executable; never touches the real runtime.
"""
import json, os, pathlib, signal, subprocess, sys, tempfile, time
binary = str(pathlib.Path(sys.argv[1]).resolve())
with tempfile.TemporaryDirectory(prefix='accompose-regression-', dir='/private/tmp') as tmp:
root = pathlib.Path(tmp)
fake = root / 'container'
fake.write_text('#!' + sys.executable + '\n' + r'''
import json, os, signal, sys, time
args = sys.argv[1:]
with open(os.environ['CALLS'], 'a') as f: f.write(json.dumps(args) + '\n')
if args[0] == 'inspect': sys.exit(1)
if args[0] == 'run':
if os.environ.get('SLOW_START'): time.sleep(0.7)
print('created', flush=True)
if args[0] == 'logs':
print('LIVE ' + args[-1], flush=True)
if os.environ.get('FAIL_LOGS'): sys.exit(7)
while True: time.sleep(0.05)
''')
fake.chmod(0o755)
compose = root / 'compose.yaml'
compose.write_text('name: regression\nservices:\n db:\n image: example/db\n web:\n image: example/web\n depends_on: [db]\n')
calls = root / 'calls.jsonl'
env = dict(os.environ, PATH=str(root)+':'+os.environ.get('PATH',''), CALLS=str(calls))
def recorded(): return [json.loads(x) for x in calls.read_text().splitlines()]
def reset(): calls.write_text('')
def command(args, extra=None):
return subprocess.Popen([binary, '-f', str(compose)] + args, env=env | (extra or {}), stdout=subprocess.PIPE, stderr=subprocess.STDOUT, start_new_session=True)
count = 0
# Both detach aliases, verbosity positions and all requested verbosity levels.
for detach in ['-d', '--detach']:
for level in ['', '-v', '-vv', '-vvv']:
for before in [False, True]:
reset()
args = ([level] if level and before else []) + ['up', detach] + ([level] if level and not before else [])
p = command(args); output = p.communicate(timeout=5)[0].decode()
assert p.returncode == 0, output
records = recorded()
assert len([x for x in records if x[0]=='run']) == 2, records
assert not any(x[0] in ['logs','stop'] for x in records), records
if level: assert 'mode=detached' in output and f'verbosity={len(level)-1}' in output, output
count += 1
# Attached log output arrives while CLI is still alive. Interrupt parent or process group.
for level in ['', '-v', '-vv', '-vvv']:
for before in [False, True]:
reset()
args = ([level] if level and before else []) + ['up'] + ([level] if level and not before else [])
p = command(args)
output = b''
import select
deadline = time.monotonic()+5
while b'LIVE regression-db-1' not in output or b'LIVE regression-web-1' not in output:
assert time.monotonic()<deadline, output
if select.select([p.stdout],[],[],0.1)[0]: output += os.read(p.stdout.fileno(),4096)
assert p.poll() is None, (p.returncode, output, p.stdout.read(), recorded())
if before: os.killpg(p.pid, signal.SIGINT)
else: p.send_signal(signal.SIGINT)
output += p.communicate(timeout=5)[0]
assert p.returncode == 0, output
assert [x for x in recorded() if x[0]=='stop'] == [['stop','regression-web-1'],['stop','regression-db-1']], recorded()
assert not any(x[0]=='delete' for x in recorded())
count += 1
reset()
p = command(['up'], {'SLOW_START':'1'})
deadline = time.monotonic()+5
while not any(x[0]=='run' for x in recorded()):
assert time.monotonic()<deadline
time.sleep(.02)
p.send_signal(signal.SIGINT)
output = p.communicate(timeout=5)[0]
assert p.returncode==0, output
assert [x for x in recorded() if x[0]=='stop']==[['stop','regression-db-1']], recorded()
count += 1
reset()
p=command(['up'],{'FAIL_LOGS':'1'}); output=p.communicate(timeout=5)[0]
assert p.returncode!=0 and b'Log follower failed' in output, output
count += 1
reset()
p=command(['up','--bogus']); output=p.communicate(timeout=5)[0]
assert p.returncode!=0 and recorded()==[], output
count += 1
print(f'PASS: {count} CLI regression cases')
+13
View File
@@ -0,0 +1,13 @@
# Verification — 8 November 2026
Environment: Xcode 27.2, macOS 27.2, Apple silicon; Apple Container 1.7.1.
- Release app and CLI compiled successfully, with no compiler warnings in the build logs. Debug builds also passed during development.
- 85 fixture-based CLI checks passed against Release: per-command help, global image-prune routing without YAML, argument handling, global operation without YAML, service/name resolution, listing options, force deletion, single-target following, correct build paths/default context, ignore-file selection, old-runtime rejection, dependencies and interpolation.
- Three real FROM scratch builds passed. OCI image layers were examined to verify exclusions, ordered negation, globstar, question marks, character classes, directory/root patterns, nested contexts, ignored Dockerfile metadata, specific-ignore replacement of root rules, nested custom Dockerfile and external Dockerfile/ignore paths.
- Real container lifecycle checks passed using a uniquely named Nginx container: running/all global filters, project filters, service and literal-name targeting, inspect, logs, refusal to delete a running container without force, stop, start, restart and delete. The test container was removed.
- Test images were UUID-tagged and deleted. Existing user images and containers were retained. Build caches and captured logs were placed in a task-specific OS temporary directory.
Limitations: GUI controls were compiled but not visually exercised in this update. Live log following was verified through a runtime fixture; its real long-running/cancellation behavior was not exercised. The real builder checks cover selected Docker semantics, not the entire upstream Docker conformance suite. Native builder image compatibility still depends on keeping Apple's CLI and builder paired. This remains a Compose subset, as documented in README.md.
Reproduce with Tests/cli_smoke.py, Tests/runtime_build.py and Tests/runtime_containers.py, passing the built accompose executable. Runtime tests are opt-in and require a running runtime; lifecycle tests require a cached nginx:alpine image.
+120
View File
@@ -0,0 +1,120 @@
Command line invocation:
/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -project /private/tmp/accompose-detach-20261108/AppleContainerCompose/AppleContainerCompose.xcodeproj -scheme AppleContainerCompose -configuration Debug -derivedDataPath /private/tmp/accompose-detach-20261108/DerivedData -clonedSourcePackagesDirPath /private/tmp/accompose-detach-20261108/SourcePackages -disableAutomaticPackageResolution CODE_SIGNING_ALLOWED=NO build
Build settings from command line:
CODE_SIGNING_ALLOWED = NO
Resolve Package Graph
Resolved source packages:
Yams: https://github.com/jpsim/Yams.git @ 5.4.0
2026-11-08 17:17:00.726 xcodebuild[19334:287533] [MT] IDERunDestination: Supported platforms for the buildables in the current scheme is empty.
--- xcodebuild: WARNING: Using the first of multiple matching destinations:
{ platform:macOS, arch:arm64, id:00006030-000C01641102001C, name:My Mac }
{ platform:macOS, arch:x86_64, id:00006030-000C01641102001C, name:My Mac }
{ platform:macOS, name:Any Mac }
ComputePackagePrebuildTargetDependencyGraph
Prepare packages
CreateBuildRequest
SendProjectDescription
CreateBuildOperation
ComputeTargetDependencyGraph
note: Building targets in dependency order
note: Target dependency graph (4 targets)
Target 'AppleContainerCompose' in project 'AppleContainerCompose'
➜ Explicit dependency on target 'Yams-product' in project 'Yams'
Target 'Yams-product' in project 'Yams'
➜ Explicit dependency on target 'Yams' in project 'Yams'
➜ Explicit dependency on target 'CYaml' in project 'Yams'
Target 'Yams' in project 'Yams'
➜ Explicit dependency on target 'CYaml' in project 'Yams'
Target 'CYaml' in project 'Yams' (no dependencies)
GatherProvisioningInputs
CreateBuildDescription
ExecuteExternalTool /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc --version
ExecuteExternalTool /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -v -E -dM -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk -x c -c /dev/null
ExecuteExternalTool /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -v -E -dM -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk -x c -c /dev/null
ExecuteExternalTool /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld -version_details
Build description signature: 64f040e1832ed064b0831d41041074fe
Build description path: /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/XCBuildData/64f040e1832ed064b0831d41041074fe.xcbuilddata
ClangStatCache /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang-stat-cache /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk /tmp/accompose-detach-20261108/DerivedData/SDKStatCaches.noindex/macosx27.2-26B118-9aa026f88bf9ed31cff8761912ac5bd1a7ff82d74745d5ef33555b35c4238456.sdkstatcache
cd /tmp/accompose-detach-20261108/AppleContainerCompose/AppleContainerCompose.xcodeproj
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang-stat-cache /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk -o /tmp/accompose-detach-20261108/DerivedData/SDKStatCaches.noindex/macosx27.2-26B118-9aa026f88bf9ed31cff8761912ac5bd1a7ff82d74745d5ef33555b35c4238456.sdkstatcache
SwiftDriver AppleContainerCompose normal arm64 com.apple.xcode.tools.swift.compiler (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
builtin-SwiftDriver -- /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -module-name AppleContainerCompose -O @/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.SwiftFileList -Xcc -fmodule-map-file\=/tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams/Sources/CYaml/include/module.modulemap -enable-bare-slash-regex -enable-experimental-feature DebugDescriptionMacro -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk -target arm64-apple-macos26.0 -g -module-cache-path /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex -Xfrontend -serialize-debugging-options -swift-version 5 -I /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug -F /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/PackageFrameworks -F /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug -c -j11 -enable-batch-mode -incremental -Xcc -ivfsstatcache -Xcc /tmp/accompose-detach-20261108/DerivedData/SDKStatCaches.noindex/macosx27.2-26B118-9aa026f88bf9ed31cff8761912ac5bd1a7ff82d74745d5ef33555b35c4238456.sdkstatcache -output-file-map /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose-OutputFileMap.json -save-temps -no-color-diagnostics -explicit-module-build -module-cache-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules -clang-scanner-module-cache-path /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex -sdk-module-cache-path /tmp/accompose-detach-20261108/DerivedData/SDKExplicitPrecompiledModules -emit-dependencies -emit-module -emit-module-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.swiftmodule -serialize-diagnostics -dependency-scan-serialize-diagnostics-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose-dependency-scan.dia -validate-clang-modules-once -clang-build-session-file /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex/Session.modulevalidation -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -emit-const-values -const-gather-protocols-list /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose_const_extract_protocols.json -Xcc -iquote -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/AppleContainerCompose-generated-files.hmap -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/AppleContainerCompose-own-target-headers.hmap -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/AppleContainerCompose-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose-1f501520fab5b8b9712388b123e07018-VFS/all-product-headers.yaml -Xcc -iquote -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/AppleContainerCompose-project-headers.hmap -Xcc -I/tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams/Sources/CYaml/include -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/include -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/DerivedSources-normal/arm64 -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/DerivedSources/arm64 -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/DerivedSources -emit-objc-header -emit-objc-header-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose-Swift.h -working-directory /tmp/accompose-detach-20261108/AppleContainerCompose -experimental-emit-module-separately -disable-cmo
SwiftCompile normal arm64 Compiling\ ComposeCore.swift /tmp/accompose-detach-20261108/AppleContainerCompose/Sources/ComposeCore.swift (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
SwiftCompile normal arm64 /tmp/accompose-detach-20261108/AppleContainerCompose/Sources/ComposeCore.swift (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
builtin-SwiftPerFileCompile ComposeCore.swift
SwiftEmitModule normal arm64 Emitting\ module\ for\ AppleContainerCompose (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
SwiftCompile normal arm64 (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
SwiftDriverJobDiscovery normal arm64 Emitting module for AppleContainerCompose (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
SwiftDriver\ Compilation\ Requirements AppleContainerCompose normal arm64 com.apple.xcode.tools.swift.compiler (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
builtin-Swift-Compilation-Requirements -- /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -module-name AppleContainerCompose -O @/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.SwiftFileList -Xcc -fmodule-map-file\=/tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams/Sources/CYaml/include/module.modulemap -enable-bare-slash-regex -enable-experimental-feature DebugDescriptionMacro -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk -target arm64-apple-macos26.0 -g -module-cache-path /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex -Xfrontend -serialize-debugging-options -swift-version 5 -I /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug -F /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/PackageFrameworks -F /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug -c -j11 -enable-batch-mode -incremental -Xcc -ivfsstatcache -Xcc /tmp/accompose-detach-20261108/DerivedData/SDKStatCaches.noindex/macosx27.2-26B118-9aa026f88bf9ed31cff8761912ac5bd1a7ff82d74745d5ef33555b35c4238456.sdkstatcache -output-file-map /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose-OutputFileMap.json -save-temps -no-color-diagnostics -explicit-module-build -module-cache-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules -clang-scanner-module-cache-path /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex -sdk-module-cache-path /tmp/accompose-detach-20261108/DerivedData/SDKExplicitPrecompiledModules -emit-dependencies -emit-module -emit-module-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.swiftmodule -serialize-diagnostics -dependency-scan-serialize-diagnostics-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose-dependency-scan.dia -validate-clang-modules-once -clang-build-session-file /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex/Session.modulevalidation -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -emit-const-values -const-gather-protocols-list /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose_const_extract_protocols.json -Xcc -iquote -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/AppleContainerCompose-generated-files.hmap -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/AppleContainerCompose-own-target-headers.hmap -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/AppleContainerCompose-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose-1f501520fab5b8b9712388b123e07018-VFS/all-product-headers.yaml -Xcc -iquote -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/AppleContainerCompose-project-headers.hmap -Xcc -I/tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams/Sources/CYaml/include -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/include -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/DerivedSources-normal/arm64 -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/DerivedSources/arm64 -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/DerivedSources -emit-objc-header -emit-objc-header-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose-Swift.h -working-directory /tmp/accompose-detach-20261108/AppleContainerCompose -experimental-emit-module-separately -disable-cmo
Copy /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/AppleContainerCompose.swiftmodule/arm64-apple-macos.abi.json /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.abi.json (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
builtin-copy -exclude .DS_Store -exclude CVS -exclude .svn -exclude .git -exclude .hg -strip-unsigned-binaries -strip-deterministic -strip-tool /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip -resolve-src-symlinks -rename /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.abi.json /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/AppleContainerCompose.swiftmodule/arm64-apple-macos.abi.json
Copy /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/AppleContainerCompose.swiftmodule/Project/arm64-apple-macos.swiftsourceinfo /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.swiftsourceinfo (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
builtin-copy -exclude .DS_Store -exclude CVS -exclude .svn -exclude .git -exclude .hg -strip-unsigned-binaries -strip-deterministic -strip-tool /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip -resolve-src-symlinks -rename /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.swiftsourceinfo /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/AppleContainerCompose.swiftmodule/Project/arm64-apple-macos.swiftsourceinfo
SwiftDriverJobDiscovery normal arm64 Compiling ComposeCore.swift (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
SwiftDriver\ Compilation AppleContainerCompose normal arm64 com.apple.xcode.tools.swift.compiler (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
builtin-Swift-Compilation -- /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -module-name AppleContainerCompose -O @/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.SwiftFileList -Xcc -fmodule-map-file\=/tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams/Sources/CYaml/include/module.modulemap -enable-bare-slash-regex -enable-experimental-feature DebugDescriptionMacro -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk -target arm64-apple-macos26.0 -g -module-cache-path /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex -Xfrontend -serialize-debugging-options -swift-version 5 -I /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug -F /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/PackageFrameworks -F /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug -c -j11 -enable-batch-mode -incremental -Xcc -ivfsstatcache -Xcc /tmp/accompose-detach-20261108/DerivedData/SDKStatCaches.noindex/macosx27.2-26B118-9aa026f88bf9ed31cff8761912ac5bd1a7ff82d74745d5ef33555b35c4238456.sdkstatcache -output-file-map /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose-OutputFileMap.json -save-temps -no-color-diagnostics -explicit-module-build -module-cache-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules -clang-scanner-module-cache-path /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex -sdk-module-cache-path /tmp/accompose-detach-20261108/DerivedData/SDKExplicitPrecompiledModules -emit-dependencies -emit-module -emit-module-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.swiftmodule -serialize-diagnostics -dependency-scan-serialize-diagnostics-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose-dependency-scan.dia -validate-clang-modules-once -clang-build-session-file /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex/Session.modulevalidation -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -emit-const-values -const-gather-protocols-list /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose_const_extract_protocols.json -Xcc -iquote -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/AppleContainerCompose-generated-files.hmap -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/AppleContainerCompose-own-target-headers.hmap -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/AppleContainerCompose-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose-1f501520fab5b8b9712388b123e07018-VFS/all-product-headers.yaml -Xcc -iquote -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/AppleContainerCompose-project-headers.hmap -Xcc -I/tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams/Sources/CYaml/include -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/include -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/DerivedSources-normal/arm64 -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/DerivedSources/arm64 -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/DerivedSources -emit-objc-header -emit-objc-header-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose-Swift.h -working-directory /tmp/accompose-detach-20261108/AppleContainerCompose -experimental-emit-module-separately -disable-cmo
Ld /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/AppleContainerCompose.app/Contents/MacOS/AppleContainerCompose normal (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -Xlinker -reproducible -target arm64-apple-macos26.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk -Os -Xlinker -no_warn_duplicate_libraries -L/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/EagerLinkingTBDs/Debug -L/tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug -F/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/EagerLinkingTBDs/Debug -F/tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/PackageFrameworks -F/tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug -filelist /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.LinkFileList -Xlinker -rpath -Xlinker @loader_path -Xlinker -rpath -Xlinker /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/PackageFrameworks -Xlinker -object_path_lto -Xlinker /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose_lto.o -Xlinker -dependency_info -Xlinker /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose_dependency_info.dat -fobjc-link-runtime -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx -L/usr/lib/swift -Xlinker -add_ast_path -Xlinker /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.swiftmodule -o /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/AppleContainerCompose.app/Contents/MacOS/AppleContainerCompose
CopySwiftLibs /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/AppleContainerCompose.app (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
builtin-swiftStdLibTool --copy --verbose --scan-executable /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/AppleContainerCompose.app/Contents/MacOS/AppleContainerCompose --scan-folder /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/AppleContainerCompose.app/Contents/Frameworks --scan-folder /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/AppleContainerCompose.app/Contents/PlugIns --scan-folder /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/AppleContainerCompose.app/Contents/Library/SystemExtensions --scan-folder /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/AppleContainerCompose.app/Contents/Extensions --platform macosx --toolchain /var/run/com.apple.security.cryptexd/mnt/com.apple.MobileAsset.MetalToolchain-v27.2.47.0.MkGduq/Metal.xctoolchain --toolchain /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain --destination /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/AppleContainerCompose.app/Contents/Frameworks --strip-bitcode --strip-bitcode-tool /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/bitcode_strip --emit-dependency-info /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/SwiftStdLibToolInputDependencies.dep --filter-for-swift-os
Ignoring --strip-bitcode because --sign was not passed
ExtractAppIntentsMetadata (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/appintentsmetadataprocessor --toolchain-dir /var/run/com.apple.security.cryptexd/mnt/com.apple.MobileAsset.MetalToolchain-v27.2.47.0.MkGduq/Metal.xctoolchain --module-name AppleContainerCompose --sdk-root /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk --xcode-version 27B52 --platform-family macOS --deployment-target 26.0 --bundle-identifier net.absdev.AppleContainerCompose --output /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/AppleContainerCompose.app/Contents/Resources --target-triple arm64-apple-macos26.0 --binary-file /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/AppleContainerCompose.app/Contents/MacOS/AppleContainerCompose --dependency-file /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose_dependency_info.dat --stringsdata-file /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/ExtractedAppShortcutsMetadata.stringsdata --source-file-list /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.SwiftFileList --metadata-file-list /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/AppleContainerCompose.DependencyMetadataFileList --static-metadata-file-list /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/AppleContainerCompose.DependencyStaticMetadataFileList --swift-const-vals-list /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.SwiftConstValuesFileList --compile-time-extraction --deployment-aware-processing --no-app-shortcuts-localization
2026-11-08 17:17:03.657 appintentsmetadataprocessor[19429:287952] Starting App Intents metadata extraction
2026-11-08 17:17:03.658 appintentsmetadataprocessor[19429:287952] warning: Metadata extraction skipped, no AppIntents.framework dependency found
ProcessInfoPlistFile /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/AppleContainerCompose.app/Contents/Info.plist /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/empty-AppleContainerCompose.plist (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
builtin-infoPlistUtility /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose.build/empty-AppleContainerCompose.plist -producttype com.apple.product-type.application -genpkginfo /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/AppleContainerCompose.app/Contents/PkgInfo -expandbuildsettings -platform macosx -o /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/AppleContainerCompose.app/Contents/Info.plist
PruneExplicitPrecompiledModules /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/ExplicitPrecompiledModules
PruneExplicitPrecompiledModules /tmp/accompose-detach-20261108/DerivedData/SDKExplicitPrecompiledModules
PruneExplicitPrecompiledModules /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules
** BUILD SUCCEEDED **
@@ -0,0 +1,120 @@
Command line invocation:
/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -project /private/tmp/accompose-detach-20261108/AppleContainerCompose/AppleContainerCompose.xcodeproj -scheme AppleContainerCompose -configuration Release -derivedDataPath /private/tmp/accompose-detach-20261108/DerivedData -clonedSourcePackagesDirPath /private/tmp/accompose-detach-20261108/SourcePackages -disableAutomaticPackageResolution CODE_SIGNING_ALLOWED=NO build
Build settings from command line:
CODE_SIGNING_ALLOWED = NO
Resolve Package Graph
Resolved source packages:
Yams: https://github.com/jpsim/Yams.git @ 5.4.0
2026-11-08 17:17:11.163 xcodebuild[19554:288552] [MT] IDERunDestination: Supported platforms for the buildables in the current scheme is empty.
--- xcodebuild: WARNING: Using the first of multiple matching destinations:
{ platform:macOS, arch:arm64, id:00006030-000C01641102001C, name:My Mac }
{ platform:macOS, arch:x86_64, id:00006030-000C01641102001C, name:My Mac }
{ platform:macOS, name:Any Mac }
ComputePackagePrebuildTargetDependencyGraph
Prepare packages
CreateBuildRequest
SendProjectDescription
CreateBuildOperation
ComputeTargetDependencyGraph
note: Building targets in dependency order
note: Target dependency graph (4 targets)
Target 'AppleContainerCompose' in project 'AppleContainerCompose'
➜ Explicit dependency on target 'Yams-product' in project 'Yams'
Target 'Yams-product' in project 'Yams'
➜ Explicit dependency on target 'Yams' in project 'Yams'
➜ Explicit dependency on target 'CYaml' in project 'Yams'
Target 'Yams' in project 'Yams'
➜ Explicit dependency on target 'CYaml' in project 'Yams'
Target 'CYaml' in project 'Yams' (no dependencies)
GatherProvisioningInputs
CreateBuildDescription
ExecuteExternalTool /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -v -E -dM -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk -x c -c /dev/null
ExecuteExternalTool /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -v -E -dM -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk -x c -c /dev/null
ExecuteExternalTool /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc --version
ExecuteExternalTool /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld -version_details
Build description signature: 5e9c489eb3f1bd1a6819c84e9c2cb185
Build description path: /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/XCBuildData/5e9c489eb3f1bd1a6819c84e9c2cb185.xcbuilddata
ClangStatCache /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang-stat-cache /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk /tmp/accompose-detach-20261108/DerivedData/SDKStatCaches.noindex/macosx27.2-26B118-9aa026f88bf9ed31cff8761912ac5bd1a7ff82d74745d5ef33555b35c4238456.sdkstatcache
cd /tmp/accompose-detach-20261108/AppleContainerCompose/AppleContainerCompose.xcodeproj
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang-stat-cache /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk -o /tmp/accompose-detach-20261108/DerivedData/SDKStatCaches.noindex/macosx27.2-26B118-9aa026f88bf9ed31cff8761912ac5bd1a7ff82d74745d5ef33555b35c4238456.sdkstatcache
SwiftDriver AppleContainerCompose normal arm64 com.apple.xcode.tools.swift.compiler (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
builtin-SwiftDriver -- /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -module-name AppleContainerCompose -O @/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.SwiftFileList -Xcc -fmodule-map-file\=/tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams/Sources/CYaml/include/module.modulemap -enable-bare-slash-regex -enable-experimental-feature DebugDescriptionMacro -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk -target arm64-apple-macos26.0 -g -module-cache-path /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex -Xfrontend -serialize-debugging-options -swift-version 5 -I /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release -F /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/PackageFrameworks -F /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release -c -j11 -enable-batch-mode -incremental -Xcc -ivfsstatcache -Xcc /tmp/accompose-detach-20261108/DerivedData/SDKStatCaches.noindex/macosx27.2-26B118-9aa026f88bf9ed31cff8761912ac5bd1a7ff82d74745d5ef33555b35c4238456.sdkstatcache -output-file-map /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose-OutputFileMap.json -save-temps -no-color-diagnostics -explicit-module-build -module-cache-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules -clang-scanner-module-cache-path /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex -sdk-module-cache-path /tmp/accompose-detach-20261108/DerivedData/SDKExplicitPrecompiledModules -emit-dependencies -emit-module -emit-module-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.swiftmodule -serialize-diagnostics -dependency-scan-serialize-diagnostics-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose-dependency-scan.dia -validate-clang-modules-once -clang-build-session-file /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex/Session.modulevalidation -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -emit-const-values -const-gather-protocols-list /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose_const_extract_protocols.json -Xcc -iquote -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/AppleContainerCompose-generated-files.hmap -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/AppleContainerCompose-own-target-headers.hmap -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/AppleContainerCompose-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose-1f501520fab5b8b9712388b123e07018-VFS/all-product-headers.yaml -Xcc -iquote -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/AppleContainerCompose-project-headers.hmap -Xcc -I/tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams/Sources/CYaml/include -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/include -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/DerivedSources-normal/arm64 -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/DerivedSources/arm64 -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/DerivedSources -emit-objc-header -emit-objc-header-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose-Swift.h -working-directory /tmp/accompose-detach-20261108/AppleContainerCompose -experimental-emit-module-separately -disable-cmo
SwiftCompile normal arm64 Compiling\ ComposeCore.swift /tmp/accompose-detach-20261108/AppleContainerCompose/Sources/ComposeCore.swift (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
SwiftCompile normal arm64 /tmp/accompose-detach-20261108/AppleContainerCompose/Sources/ComposeCore.swift (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
builtin-SwiftPerFileCompile ComposeCore.swift
SwiftEmitModule normal arm64 Emitting\ module\ for\ AppleContainerCompose (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
SwiftCompile normal arm64 (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
SwiftDriverJobDiscovery normal arm64 Emitting module for AppleContainerCompose (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
SwiftDriver\ Compilation\ Requirements AppleContainerCompose normal arm64 com.apple.xcode.tools.swift.compiler (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
builtin-Swift-Compilation-Requirements -- /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -module-name AppleContainerCompose -O @/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.SwiftFileList -Xcc -fmodule-map-file\=/tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams/Sources/CYaml/include/module.modulemap -enable-bare-slash-regex -enable-experimental-feature DebugDescriptionMacro -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk -target arm64-apple-macos26.0 -g -module-cache-path /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex -Xfrontend -serialize-debugging-options -swift-version 5 -I /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release -F /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/PackageFrameworks -F /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release -c -j11 -enable-batch-mode -incremental -Xcc -ivfsstatcache -Xcc /tmp/accompose-detach-20261108/DerivedData/SDKStatCaches.noindex/macosx27.2-26B118-9aa026f88bf9ed31cff8761912ac5bd1a7ff82d74745d5ef33555b35c4238456.sdkstatcache -output-file-map /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose-OutputFileMap.json -save-temps -no-color-diagnostics -explicit-module-build -module-cache-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules -clang-scanner-module-cache-path /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex -sdk-module-cache-path /tmp/accompose-detach-20261108/DerivedData/SDKExplicitPrecompiledModules -emit-dependencies -emit-module -emit-module-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.swiftmodule -serialize-diagnostics -dependency-scan-serialize-diagnostics-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose-dependency-scan.dia -validate-clang-modules-once -clang-build-session-file /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex/Session.modulevalidation -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -emit-const-values -const-gather-protocols-list /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose_const_extract_protocols.json -Xcc -iquote -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/AppleContainerCompose-generated-files.hmap -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/AppleContainerCompose-own-target-headers.hmap -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/AppleContainerCompose-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose-1f501520fab5b8b9712388b123e07018-VFS/all-product-headers.yaml -Xcc -iquote -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/AppleContainerCompose-project-headers.hmap -Xcc -I/tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams/Sources/CYaml/include -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/include -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/DerivedSources-normal/arm64 -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/DerivedSources/arm64 -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/DerivedSources -emit-objc-header -emit-objc-header-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose-Swift.h -working-directory /tmp/accompose-detach-20261108/AppleContainerCompose -experimental-emit-module-separately -disable-cmo
Copy /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/AppleContainerCompose.swiftmodule/Project/arm64-apple-macos.swiftsourceinfo /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.swiftsourceinfo (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
builtin-copy -exclude .DS_Store -exclude CVS -exclude .svn -exclude .git -exclude .hg -strip-unsigned-binaries -strip-deterministic -strip-tool /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip -resolve-src-symlinks -rename /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.swiftsourceinfo /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/AppleContainerCompose.swiftmodule/Project/arm64-apple-macos.swiftsourceinfo
Copy /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/AppleContainerCompose.swiftmodule/arm64-apple-macos.abi.json /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.abi.json (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
builtin-copy -exclude .DS_Store -exclude CVS -exclude .svn -exclude .git -exclude .hg -strip-unsigned-binaries -strip-deterministic -strip-tool /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip -resolve-src-symlinks -rename /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.abi.json /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/AppleContainerCompose.swiftmodule/arm64-apple-macos.abi.json
SwiftDriverJobDiscovery normal arm64 Compiling ComposeCore.swift (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
SwiftDriver\ Compilation AppleContainerCompose normal arm64 com.apple.xcode.tools.swift.compiler (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
builtin-Swift-Compilation -- /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -module-name AppleContainerCompose -O @/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.SwiftFileList -Xcc -fmodule-map-file\=/tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams/Sources/CYaml/include/module.modulemap -enable-bare-slash-regex -enable-experimental-feature DebugDescriptionMacro -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk -target arm64-apple-macos26.0 -g -module-cache-path /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex -Xfrontend -serialize-debugging-options -swift-version 5 -I /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release -F /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/PackageFrameworks -F /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release -c -j11 -enable-batch-mode -incremental -Xcc -ivfsstatcache -Xcc /tmp/accompose-detach-20261108/DerivedData/SDKStatCaches.noindex/macosx27.2-26B118-9aa026f88bf9ed31cff8761912ac5bd1a7ff82d74745d5ef33555b35c4238456.sdkstatcache -output-file-map /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose-OutputFileMap.json -save-temps -no-color-diagnostics -explicit-module-build -module-cache-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules -clang-scanner-module-cache-path /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex -sdk-module-cache-path /tmp/accompose-detach-20261108/DerivedData/SDKExplicitPrecompiledModules -emit-dependencies -emit-module -emit-module-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.swiftmodule -serialize-diagnostics -dependency-scan-serialize-diagnostics-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose-dependency-scan.dia -validate-clang-modules-once -clang-build-session-file /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex/Session.modulevalidation -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -emit-const-values -const-gather-protocols-list /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose_const_extract_protocols.json -Xcc -iquote -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/AppleContainerCompose-generated-files.hmap -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/AppleContainerCompose-own-target-headers.hmap -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/AppleContainerCompose-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose-1f501520fab5b8b9712388b123e07018-VFS/all-product-headers.yaml -Xcc -iquote -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/AppleContainerCompose-project-headers.hmap -Xcc -I/tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams/Sources/CYaml/include -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/include -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/DerivedSources-normal/arm64 -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/DerivedSources/arm64 -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/DerivedSources -emit-objc-header -emit-objc-header-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose-Swift.h -working-directory /tmp/accompose-detach-20261108/AppleContainerCompose -experimental-emit-module-separately -disable-cmo
Ld /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/AppleContainerCompose.app/Contents/MacOS/AppleContainerCompose normal (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -Xlinker -reproducible -target arm64-apple-macos26.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk -Os -Xlinker -no_warn_duplicate_libraries -L/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/EagerLinkingTBDs/Release -L/tmp/accompose-detach-20261108/DerivedData/Build/Products/Release -F/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/EagerLinkingTBDs/Release -F/tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/PackageFrameworks -F/tmp/accompose-detach-20261108/DerivedData/Build/Products/Release -filelist /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.LinkFileList -Xlinker -object_path_lto -Xlinker /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose_lto.o -Xlinker -dependency_info -Xlinker /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose_dependency_info.dat -fobjc-link-runtime -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx -L/usr/lib/swift -Xlinker -add_ast_path -Xlinker /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.swiftmodule -o /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/AppleContainerCompose.app/Contents/MacOS/AppleContainerCompose
CopySwiftLibs /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/AppleContainerCompose.app (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
builtin-swiftStdLibTool --copy --verbose --scan-executable /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/AppleContainerCompose.app/Contents/MacOS/AppleContainerCompose --scan-folder /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/AppleContainerCompose.app/Contents/Frameworks --scan-folder /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/AppleContainerCompose.app/Contents/PlugIns --scan-folder /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/AppleContainerCompose.app/Contents/Library/SystemExtensions --scan-folder /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/AppleContainerCompose.app/Contents/Extensions --platform macosx --toolchain /var/run/com.apple.security.cryptexd/mnt/com.apple.MobileAsset.MetalToolchain-v27.2.47.0.MkGduq/Metal.xctoolchain --toolchain /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain --destination /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/AppleContainerCompose.app/Contents/Frameworks --strip-bitcode --strip-bitcode-tool /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/bitcode_strip --emit-dependency-info /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/SwiftStdLibToolInputDependencies.dep --filter-for-swift-os
Ignoring --strip-bitcode because --sign was not passed
ExtractAppIntentsMetadata (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/appintentsmetadataprocessor --toolchain-dir /var/run/com.apple.security.cryptexd/mnt/com.apple.MobileAsset.MetalToolchain-v27.2.47.0.MkGduq/Metal.xctoolchain --module-name AppleContainerCompose --sdk-root /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk --xcode-version 27B52 --platform-family macOS --deployment-target 26.0 --bundle-identifier net.absdev.AppleContainerCompose --output /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/AppleContainerCompose.app/Contents/Resources --target-triple arm64-apple-macos26.0 --binary-file /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/AppleContainerCompose.app/Contents/MacOS/AppleContainerCompose --dependency-file /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose_dependency_info.dat --stringsdata-file /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/ExtractedAppShortcutsMetadata.stringsdata --source-file-list /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.SwiftFileList --metadata-file-list /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/AppleContainerCompose.DependencyMetadataFileList --static-metadata-file-list /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/AppleContainerCompose.DependencyStaticMetadataFileList --swift-const-vals-list /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/Objects-normal/arm64/AppleContainerCompose.SwiftConstValuesFileList --compile-time-extraction --deployment-aware-processing --no-app-shortcuts-localization
2026-11-08 17:17:14.270 appintentsmetadataprocessor[19587:288780] Starting App Intents metadata extraction
2026-11-08 17:17:14.270 appintentsmetadataprocessor[19587:288780] warning: Metadata extraction skipped, no AppIntents.framework dependency found
ProcessInfoPlistFile /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/AppleContainerCompose.app/Contents/Info.plist /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/empty-AppleContainerCompose.plist (in target 'AppleContainerCompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
builtin-infoPlistUtility /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Release/AppleContainerCompose.build/empty-AppleContainerCompose.plist -producttype com.apple.product-type.application -genpkginfo /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/AppleContainerCompose.app/Contents/PkgInfo -expandbuildsettings -platform macosx -o /tmp/accompose-detach-20261108/DerivedData/Build/Products/Release/AppleContainerCompose.app/Contents/Info.plist
PruneExplicitPrecompiledModules /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/ExplicitPrecompiledModules
PruneExplicitPrecompiledModules /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules
PruneExplicitPrecompiledModules /tmp/accompose-detach-20261108/DerivedData/SDKExplicitPrecompiledModules
** BUILD SUCCEEDED **
+36
View File
@@ -0,0 +1,36 @@
# AppleContainerCompose validation — 8 November 2026
Source: AppleContainerCompose-Updated-Xcode (1).zip, inspected and corrected for this delivery.
## Build results
Environment: Apple silicon arm64, macOS 27.2 (26B123), Xcode 27.2 (27B52).
Dependency: Yams 5.4.0, revision 3d6871d5b4a5cd519adf233fbb576e0a2af71c17.
| Target | Debug | Release |
| --- | --- | --- |
| accompose | PASS | PASS |
| AppleContainerCompose | PASS | PASS |
All four builds used xcodebuild with CODE_SIGNING_ALLOWED=NO. DerivedData and package working copies were stored under a task-specific /private/tmp directory. Complete successful build logs are included here. The app build emits the standard “Metadata extraction skipped, no AppIntents.framework dependency found” warning; no Swift compilation errors or warnings occurred.
## Automated CLI regressions
27 cases passed for each of the Debug and Release CLI binaries (54 executions total). Tests cover both detach aliases; verbosity levels before and after the subcommand; detached return without following logs or stopping containers; simultaneous live logs from two services; parent-only and terminal-process-group Ctrl+C; graceful stop in reverse dependency order; interrupt during startup; log follower failure; and rejection of an unknown up option. The repeatable suite is Tests/cli_regression.py.
## Real runtime integration
Apple container CLI/server 1.7.1, using the existing docker.io/library/nginx:alpine image and a uniquely named test project without host mounts or published ports:
- up -d returned; inspected container state was running.
- -vvv up --detach returned; inspected container state was running.
- up -vv streamed ACCOMPOSE_LIVE while the CLI remained active.
- SIGINT to the foreground process group returned success; inspected state was stopped.
- up -d restarted that existing stopped container; inspected state was running.
- The test project's container was removed using down afterward. Pre-existing containers were not modified.
Runtime transcript: runtime-validation.log.
## Scope and limits
The ZIP contains the editable Xcode source project, example, installer, regression suite and validation evidence. Open AppleContainerCompose.xcodeproj and choose the app or accompose scheme. Build again locally; Yams package resolution may require internet access. Builds were unsigned and the GUI was compiled, not interactively exercised. This remains a subset of Compose, with the limitations listed in README.md. The regression suite uses a fake runtime; the separate runtime integration above exercises the actual lifecycle. Shutdown delegates grace period and escalation policy to container stop. Startup subprocesses finish before cancellation cleanup runs.
File diff suppressed because one or more lines are too long
+125
View File
@@ -0,0 +1,125 @@
Command line invocation:
/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -project /private/tmp/accompose-detach-20261108/AppleContainerCompose/AppleContainerCompose.xcodeproj -scheme accompose -configuration Debug -derivedDataPath /private/tmp/accompose-detach-20261108/DerivedData -clonedSourcePackagesDirPath /private/tmp/accompose-detach-20261108/SourcePackages -disableAutomaticPackageResolution CODE_SIGNING_ALLOWED=NO build
Build settings from command line:
CODE_SIGNING_ALLOWED = NO
Resolve Package Graph
Resolved source packages:
Yams: https://github.com/jpsim/Yams.git @ 5.4.0
2026-11-08 17:16:46.306 xcodebuild[19201:286740] [MT] IDERunDestination: Supported platforms for the buildables in the current scheme is empty.
--- xcodebuild: WARNING: Using the first of multiple matching destinations:
{ platform:macOS, arch:arm64, id:00006030-000C01641102001C, name:My Mac }
{ platform:macOS, arch:x86_64, id:00006030-000C01641102001C, name:My Mac }
{ platform:macOS, name:Any Mac }
ComputePackagePrebuildTargetDependencyGraph
Prepare packages
CreateBuildRequest
SendProjectDescription
CreateBuildOperation
ComputeTargetDependencyGraph
note: Building targets in dependency order
note: Target dependency graph (4 targets)
Target 'accompose' in project 'AppleContainerCompose'
➜ Explicit dependency on target 'Yams-product' in project 'Yams'
Target 'Yams-product' in project 'Yams'
➜ Explicit dependency on target 'Yams' in project 'Yams'
➜ Explicit dependency on target 'CYaml' in project 'Yams'
Target 'Yams' in project 'Yams'
➜ Explicit dependency on target 'CYaml' in project 'Yams'
Target 'CYaml' in project 'Yams' (no dependencies)
GatherProvisioningInputs
CreateBuildDescription
ExecuteExternalTool /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -v -E -dM -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk -x c -c /dev/null
ExecuteExternalTool /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -v -E -dM -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk -x c -c /dev/null
ExecuteExternalTool /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc --version
ExecuteExternalTool /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld -version_details
Build description signature: 37ec8e3629d32c2d121d0c03c7c44a71
Build description path: /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/XCBuildData/37ec8e3629d32c2d121d0c03c7c44a71.xcbuilddata
ClangStatCache /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang-stat-cache /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk /tmp/accompose-detach-20261108/DerivedData/SDKStatCaches.noindex/macosx27.2-26B118-9aa026f88bf9ed31cff8761912ac5bd1a7ff82d74745d5ef33555b35c4238456.sdkstatcache
cd /tmp/accompose-detach-20261108/AppleContainerCompose/AppleContainerCompose.xcodeproj
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang-stat-cache /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk -o /tmp/accompose-detach-20261108/DerivedData/SDKStatCaches.noindex/macosx27.2-26B118-9aa026f88bf9ed31cff8761912ac5bd1a7ff82d74745d5ef33555b35c4238456.sdkstatcache
Copy /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/GeneratedModuleMaps/Yams.modulemap /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/Yams.modulemap (in target 'Yams' from project 'Yams')
cd /tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams
builtin-copy -exclude .DS_Store -exclude CVS -exclude .svn -exclude .git -exclude .hg -resolve-src-symlinks /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/Yams.modulemap /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/GeneratedModuleMaps
SwiftDriver Yams normal arm64 com.apple.xcode.tools.swift.compiler (in target 'Yams' from project 'Yams')
cd /tmp/accompose-detach-20261108/AppleContainerCompose/AppleContainerCompose.xcodeproj
builtin-SwiftDriver -- /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -parse-as-library -module-name Yams -Onone @/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/Objects-normal/arm64/Yams.SwiftFileList -DSWIFT_PACKAGE -DDEBUG -DSWIFT_MODULE_RESOURCE_BUNDLE_UNAVAILABLE -Xcc -fmodule-map-file\=/tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams/Sources/CYaml/include/module.modulemap -DXcode -plugin-path /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/host/plugins/testing -enable-experimental-feature DebugDescriptionMacro -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk -target arm64-apple-macos12.0 -g -module-cache-path /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex -Xfrontend -serialize-debugging-options -enable-testing -suppress-warnings -index-store-path /tmp/accompose-detach-20261108/DerivedData/Index.noindex/DataStore -Xcc -D_LIBCPP_HARDENING_MODE\=_LIBCPP_HARDENING_MODE_DEBUG -swift-version 5 -I /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug -Isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib -F /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/PackageFrameworks -F /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug -F /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks -c -j11 -enable-batch-mode -incremental -Xcc -ivfsstatcache -Xcc /tmp/accompose-detach-20261108/DerivedData/SDKStatCaches.noindex/macosx27.2-26B118-9aa026f88bf9ed31cff8761912ac5bd1a7ff82d74745d5ef33555b35c4238456.sdkstatcache -output-file-map /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/Objects-normal/arm64/Yams-OutputFileMap.json -save-temps -no-color-diagnostics -explicit-module-build -module-cache-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules -clang-scanner-module-cache-path /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex -sdk-module-cache-path /tmp/accompose-detach-20261108/DerivedData/SDKExplicitPrecompiledModules -emit-dependencies -emit-module -emit-module-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/Objects-normal/arm64/Yams.swiftmodule -serialize-diagnostics -dependency-scan-serialize-diagnostics-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/Objects-normal/arm64/Yams-dependency-scan.dia -validate-clang-modules-once -clang-build-session-file /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex/Session.modulevalidation -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -emit-const-values -const-gather-protocols-list /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/Objects-normal/arm64/Yams_const_extract_protocols.json -Xcc -I/tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams/Sources/CYaml/include -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/include -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/DerivedSources-normal/arm64 -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/DerivedSources/arm64 -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/DerivedSources -Xcc -DSWIFT_PACKAGE -Xcc -DDEBUG\=1 -Xcc -DYAML_DECLARE_STATIC -emit-objc-header -emit-objc-header-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/Objects-normal/arm64/Yams-Swift.h -working-directory /tmp/accompose-detach-20261108/AppleContainerCompose/AppleContainerCompose.xcodeproj -experimental-emit-module-separately -disable-cmo
SwiftDriver\ Compilation\ Requirements Yams normal arm64 com.apple.xcode.tools.swift.compiler (in target 'Yams' from project 'Yams')
cd /tmp/accompose-detach-20261108/AppleContainerCompose/AppleContainerCompose.xcodeproj
builtin-Swift-Compilation-Requirements -- /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -parse-as-library -module-name Yams -Onone @/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/Objects-normal/arm64/Yams.SwiftFileList -DSWIFT_PACKAGE -DDEBUG -DSWIFT_MODULE_RESOURCE_BUNDLE_UNAVAILABLE -Xcc -fmodule-map-file\=/tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams/Sources/CYaml/include/module.modulemap -DXcode -plugin-path /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/host/plugins/testing -enable-experimental-feature DebugDescriptionMacro -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk -target arm64-apple-macos12.0 -g -module-cache-path /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex -Xfrontend -serialize-debugging-options -enable-testing -suppress-warnings -index-store-path /tmp/accompose-detach-20261108/DerivedData/Index.noindex/DataStore -Xcc -D_LIBCPP_HARDENING_MODE\=_LIBCPP_HARDENING_MODE_DEBUG -swift-version 5 -I /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug -Isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib -F /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/PackageFrameworks -F /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug -F /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks -c -j11 -enable-batch-mode -incremental -Xcc -ivfsstatcache -Xcc /tmp/accompose-detach-20261108/DerivedData/SDKStatCaches.noindex/macosx27.2-26B118-9aa026f88bf9ed31cff8761912ac5bd1a7ff82d74745d5ef33555b35c4238456.sdkstatcache -output-file-map /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/Objects-normal/arm64/Yams-OutputFileMap.json -save-temps -no-color-diagnostics -explicit-module-build -module-cache-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules -clang-scanner-module-cache-path /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex -sdk-module-cache-path /tmp/accompose-detach-20261108/DerivedData/SDKExplicitPrecompiledModules -emit-dependencies -emit-module -emit-module-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/Objects-normal/arm64/Yams.swiftmodule -serialize-diagnostics -dependency-scan-serialize-diagnostics-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/Objects-normal/arm64/Yams-dependency-scan.dia -validate-clang-modules-once -clang-build-session-file /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex/Session.modulevalidation -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -emit-const-values -const-gather-protocols-list /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/Objects-normal/arm64/Yams_const_extract_protocols.json -Xcc -I/tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams/Sources/CYaml/include -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/include -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/DerivedSources-normal/arm64 -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/DerivedSources/arm64 -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/DerivedSources -Xcc -DSWIFT_PACKAGE -Xcc -DDEBUG\=1 -Xcc -DYAML_DECLARE_STATIC -emit-objc-header -emit-objc-header-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/Objects-normal/arm64/Yams-Swift.h -working-directory /tmp/accompose-detach-20261108/AppleContainerCompose/AppleContainerCompose.xcodeproj -experimental-emit-module-separately -disable-cmo
SwiftDriver\ Compilation Yams normal arm64 com.apple.xcode.tools.swift.compiler (in target 'Yams' from project 'Yams')
cd /tmp/accompose-detach-20261108/AppleContainerCompose/AppleContainerCompose.xcodeproj
builtin-Swift-Compilation -- /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -parse-as-library -module-name Yams -Onone @/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/Objects-normal/arm64/Yams.SwiftFileList -DSWIFT_PACKAGE -DDEBUG -DSWIFT_MODULE_RESOURCE_BUNDLE_UNAVAILABLE -Xcc -fmodule-map-file\=/tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams/Sources/CYaml/include/module.modulemap -DXcode -plugin-path /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/host/plugins/testing -enable-experimental-feature DebugDescriptionMacro -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk -target arm64-apple-macos12.0 -g -module-cache-path /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex -Xfrontend -serialize-debugging-options -enable-testing -suppress-warnings -index-store-path /tmp/accompose-detach-20261108/DerivedData/Index.noindex/DataStore -Xcc -D_LIBCPP_HARDENING_MODE\=_LIBCPP_HARDENING_MODE_DEBUG -swift-version 5 -I /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug -Isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib -F /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/PackageFrameworks -F /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug -F /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks -c -j11 -enable-batch-mode -incremental -Xcc -ivfsstatcache -Xcc /tmp/accompose-detach-20261108/DerivedData/SDKStatCaches.noindex/macosx27.2-26B118-9aa026f88bf9ed31cff8761912ac5bd1a7ff82d74745d5ef33555b35c4238456.sdkstatcache -output-file-map /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/Objects-normal/arm64/Yams-OutputFileMap.json -save-temps -no-color-diagnostics -explicit-module-build -module-cache-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules -clang-scanner-module-cache-path /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex -sdk-module-cache-path /tmp/accompose-detach-20261108/DerivedData/SDKExplicitPrecompiledModules -emit-dependencies -emit-module -emit-module-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/Objects-normal/arm64/Yams.swiftmodule -serialize-diagnostics -dependency-scan-serialize-diagnostics-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/Objects-normal/arm64/Yams-dependency-scan.dia -validate-clang-modules-once -clang-build-session-file /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex/Session.modulevalidation -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -emit-const-values -const-gather-protocols-list /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/Objects-normal/arm64/Yams_const_extract_protocols.json -Xcc -I/tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams/Sources/CYaml/include -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/include -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/DerivedSources-normal/arm64 -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/DerivedSources/arm64 -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/DerivedSources -Xcc -DSWIFT_PACKAGE -Xcc -DDEBUG\=1 -Xcc -DYAML_DECLARE_STATIC -emit-objc-header -emit-objc-header-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/Yams.build/Debug/Yams-t.build/Objects-normal/arm64/Yams-Swift.h -working-directory /tmp/accompose-detach-20261108/AppleContainerCompose/AppleContainerCompose.xcodeproj -experimental-emit-module-separately -disable-cmo
SwiftDriver accompose normal arm64 com.apple.xcode.tools.swift.compiler (in target 'accompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
builtin-SwiftDriver -- /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -module-name accompose -O @/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose.SwiftFileList -Xcc -fmodule-map-file\=/tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams/Sources/CYaml/include/module.modulemap -enable-bare-slash-regex -enable-experimental-feature DebugDescriptionMacro -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk -target arm64-apple-macos26.0 -g -module-cache-path /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex -Xfrontend -serialize-debugging-options -swift-version 5 -I /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug -F /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/PackageFrameworks -F /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug -c -j11 -enable-batch-mode -incremental -Xcc -ivfsstatcache -Xcc /tmp/accompose-detach-20261108/DerivedData/SDKStatCaches.noindex/macosx27.2-26B118-9aa026f88bf9ed31cff8761912ac5bd1a7ff82d74745d5ef33555b35c4238456.sdkstatcache -output-file-map /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose-OutputFileMap.json -save-temps -no-color-diagnostics -explicit-module-build -module-cache-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules -clang-scanner-module-cache-path /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex -sdk-module-cache-path /tmp/accompose-detach-20261108/DerivedData/SDKExplicitPrecompiledModules -emit-dependencies -emit-module -emit-module-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose.swiftmodule -serialize-diagnostics -dependency-scan-serialize-diagnostics-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose-dependency-scan.dia -validate-clang-modules-once -clang-build-session-file /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex/Session.modulevalidation -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -emit-const-values -const-gather-protocols-list /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose_const_extract_protocols.json -Xcc -iquote -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/accompose-generated-files.hmap -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/accompose-own-target-headers.hmap -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/accompose-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose-1f501520fab5b8b9712388b123e07018-VFS/all-product-headers.yaml -Xcc -iquote -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/accompose-project-headers.hmap -Xcc -I/tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams/Sources/CYaml/include -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/include -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/DerivedSources-normal/arm64 -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/DerivedSources/arm64 -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/DerivedSources -emit-objc-header -emit-objc-header-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose-Swift.h -working-directory /tmp/accompose-detach-20261108/AppleContainerCompose -experimental-emit-module-separately -disable-cmo
SwiftCompile normal arm64 Compiling\ ComposeCore.swift /tmp/accompose-detach-20261108/AppleContainerCompose/Sources/ComposeCore.swift (in target 'accompose' from project 'AppleContainerCompose')
SwiftCompile normal arm64 /tmp/accompose-detach-20261108/AppleContainerCompose/Sources/ComposeCore.swift (in target 'accompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
builtin-SwiftPerFileCompile ComposeCore.swift
SwiftEmitModule normal arm64 Emitting\ module\ for\ accompose (in target 'accompose' from project 'AppleContainerCompose')
SwiftCompile normal arm64 (in target 'accompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
SwiftDriverJobDiscovery normal arm64 Emitting module for accompose (in target 'accompose' from project 'AppleContainerCompose')
SwiftDriver\ Compilation\ Requirements accompose normal arm64 com.apple.xcode.tools.swift.compiler (in target 'accompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
builtin-Swift-Compilation-Requirements -- /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -module-name accompose -O @/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose.SwiftFileList -Xcc -fmodule-map-file\=/tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams/Sources/CYaml/include/module.modulemap -enable-bare-slash-regex -enable-experimental-feature DebugDescriptionMacro -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk -target arm64-apple-macos26.0 -g -module-cache-path /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex -Xfrontend -serialize-debugging-options -swift-version 5 -I /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug -F /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/PackageFrameworks -F /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug -c -j11 -enable-batch-mode -incremental -Xcc -ivfsstatcache -Xcc /tmp/accompose-detach-20261108/DerivedData/SDKStatCaches.noindex/macosx27.2-26B118-9aa026f88bf9ed31cff8761912ac5bd1a7ff82d74745d5ef33555b35c4238456.sdkstatcache -output-file-map /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose-OutputFileMap.json -save-temps -no-color-diagnostics -explicit-module-build -module-cache-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules -clang-scanner-module-cache-path /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex -sdk-module-cache-path /tmp/accompose-detach-20261108/DerivedData/SDKExplicitPrecompiledModules -emit-dependencies -emit-module -emit-module-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose.swiftmodule -serialize-diagnostics -dependency-scan-serialize-diagnostics-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose-dependency-scan.dia -validate-clang-modules-once -clang-build-session-file /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex/Session.modulevalidation -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -emit-const-values -const-gather-protocols-list /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose_const_extract_protocols.json -Xcc -iquote -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/accompose-generated-files.hmap -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/accompose-own-target-headers.hmap -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/accompose-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose-1f501520fab5b8b9712388b123e07018-VFS/all-product-headers.yaml -Xcc -iquote -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/accompose-project-headers.hmap -Xcc -I/tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams/Sources/CYaml/include -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/include -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/DerivedSources-normal/arm64 -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/DerivedSources/arm64 -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/DerivedSources -emit-objc-header -emit-objc-header-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose-Swift.h -working-directory /tmp/accompose-detach-20261108/AppleContainerCompose -experimental-emit-module-separately -disable-cmo
Copy /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/accompose.swiftmodule/Project/arm64-apple-macos.swiftsourceinfo /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose.swiftsourceinfo (in target 'accompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
builtin-copy -exclude .DS_Store -exclude CVS -exclude .svn -exclude .git -exclude .hg -strip-unsigned-binaries -strip-deterministic -strip-tool /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip -resolve-src-symlinks -rename /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose.swiftsourceinfo /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/accompose.swiftmodule/Project/arm64-apple-macos.swiftsourceinfo
Copy /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/accompose.swiftmodule/arm64-apple-macos.abi.json /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose.abi.json (in target 'accompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
builtin-copy -exclude .DS_Store -exclude CVS -exclude .svn -exclude .git -exclude .hg -strip-unsigned-binaries -strip-deterministic -strip-tool /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip -resolve-src-symlinks -rename /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose.abi.json /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/accompose.swiftmodule/arm64-apple-macos.abi.json
SwiftDriverJobDiscovery normal arm64 Compiling ComposeCore.swift (in target 'accompose' from project 'AppleContainerCompose')
SwiftDriver\ Compilation accompose normal arm64 com.apple.xcode.tools.swift.compiler (in target 'accompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
builtin-Swift-Compilation -- /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -module-name accompose -O @/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose.SwiftFileList -Xcc -fmodule-map-file\=/tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams/Sources/CYaml/include/module.modulemap -enable-bare-slash-regex -enable-experimental-feature DebugDescriptionMacro -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk -target arm64-apple-macos26.0 -g -module-cache-path /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex -Xfrontend -serialize-debugging-options -swift-version 5 -I /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug -F /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/PackageFrameworks -F /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug -c -j11 -enable-batch-mode -incremental -Xcc -ivfsstatcache -Xcc /tmp/accompose-detach-20261108/DerivedData/SDKStatCaches.noindex/macosx27.2-26B118-9aa026f88bf9ed31cff8761912ac5bd1a7ff82d74745d5ef33555b35c4238456.sdkstatcache -output-file-map /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose-OutputFileMap.json -save-temps -no-color-diagnostics -explicit-module-build -module-cache-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules -clang-scanner-module-cache-path /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex -sdk-module-cache-path /tmp/accompose-detach-20261108/DerivedData/SDKExplicitPrecompiledModules -emit-dependencies -emit-module -emit-module-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose.swiftmodule -serialize-diagnostics -dependency-scan-serialize-diagnostics-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose-dependency-scan.dia -validate-clang-modules-once -clang-build-session-file /tmp/accompose-detach-20261108/DerivedData/ModuleCache.noindex/Session.modulevalidation -Xcc -fmodules-prune-interval\=86400 -Xcc -fmodules-prune-after\=345600 -emit-const-values -const-gather-protocols-list /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose_const_extract_protocols.json -Xcc -iquote -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/accompose-generated-files.hmap -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/accompose-own-target-headers.hmap -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/accompose-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/AppleContainerCompose-1f501520fab5b8b9712388b123e07018-VFS/all-product-headers.yaml -Xcc -iquote -Xcc /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/accompose-project-headers.hmap -Xcc -I/tmp/accompose-detach-20261108/SourcePackages/checkouts/Yams/Sources/CYaml/include -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/include -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/DerivedSources-normal/arm64 -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/DerivedSources/arm64 -Xcc -I/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/DerivedSources -emit-objc-header -emit-objc-header-path /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose-Swift.h -working-directory /tmp/accompose-detach-20261108/AppleContainerCompose -experimental-emit-module-separately -disable-cmo
Ld /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/accompose normal (in target 'accompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -Xlinker -reproducible -target arm64-apple-macos26.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX27.2.sdk -Os -Xlinker -no_warn_duplicate_libraries -L/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/EagerLinkingTBDs/Debug -L/tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug -F/tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/EagerLinkingTBDs/Debug -F/tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/PackageFrameworks -F/tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug -filelist /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose.LinkFileList -Xlinker -rpath -Xlinker @loader_path -Xlinker -rpath -Xlinker /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/PackageFrameworks -Xlinker -object_path_lto -Xlinker /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose_lto.o -Xlinker -dependency_info -Xlinker /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose_dependency_info.dat -fobjc-link-runtime -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx -L/usr/lib/swift -Xlinker -add_ast_path -Xlinker /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/AppleContainerCompose.build/Debug/accompose.build/Objects-normal/arm64/accompose.swiftmodule -o /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/accompose
RegisterExecutionPolicyException /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/accompose (in target 'accompose' from project 'AppleContainerCompose')
cd /tmp/accompose-detach-20261108/AppleContainerCompose
builtin-RegisterExecutionPolicyException /tmp/accompose-detach-20261108/DerivedData/Build/Products/Debug/accompose
PruneExplicitPrecompiledModules /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/ExplicitPrecompiledModules
PruneExplicitPrecompiledModules /tmp/accompose-detach-20261108/DerivedData/Build/Intermediates.noindex/SwiftExplicitPrecompiledModules
PruneExplicitPrecompiledModules /tmp/accompose-detach-20261108/DerivedData/SDKExplicitPrecompiledModules
** BUILD SUCCEEDED **
+49
View File
@@ -0,0 +1,49 @@
DETACHED RETURNED: [0/6] [0s]
[1/6] Fetching image [0s]
[2/6] Unpacking image [0s]
[3/6] Fetching kernel [0s]
[4/6] Fetching init image [0s]
[5/6] Unpacking init image [0s]
[6/6] Starting container [0s]
[6/6] Starting container [0s]
accompose-detach-validation-20261108-ticker-1
Started accompose-detach-validation-20261108-ticker-1
DETACHED RETURNED: accompose: project=accompose-detach-validation-20261108 mode=detached verbosity=3
Compose file: /tmp/accompose-detach-20261108/integration.yaml
Startup order: ticker
[0/6] [0s]
[1/6] Fetching image [0s]
[2/6] Unpacking image [0s]
[3/6] Fetching kernel [0s]
[4/6] Fetching init image [0s]
[5/6] Unpacking init image [0s]
[6/6] Starting container [0s]
[6/6] Starting container [0s]
accompose-detach-validation-20261108-ticker-1
Started accompose-detach-validation-20261108-ticker-1
FOREGROUND LIVE LOGS AND CTRL+C STOP: PASS
accompose: project=accompose-detach-validation-20261108 mode=foreground verbosity=2
Compose file: /tmp/accompose-detach-20261108/integration.yaml
[0/6] [0s]
[1/6] Fetching image [0s]
[2/6] Unpacking image [0s]
[3/6] Fetching kernel [0s]
[4/6] Fetching init image [0s]
[5/6] Unpacking init image [0s]
[6/6] Starting container [0s]
[6/6] Starting container [0s]
accompose-detach-validation-20261108-ticker-1
Started accompose-detach-validation-20261108-ticker-1
ACCOMPOSE_LIVE
Stopping project gracefully…
RESTART EXISTING STOPPED CONTAINER: PASS
accompose-detach-validation-20261108-ticker-1
Project stopped.
+47
View File
@@ -0,0 +1,47 @@
#!/usr/bin/env python3
from pathlib import Path
from datetime import datetime
import sys
source = (
Path.home()
/ "Developer/Applications/AppleContainerCompose"
/ "Sources/ComposeCore.swift"
)
if not source.exists():
sys.exit(f"ERROR: File not found: {source}")
original = source.read_text(encoding="utf-8")
old = ''' self.services = try rawServices.keys.sorted().map { key in'''
new = ''' let projectName = self.name
self.services = try rawServices.keys.sorted().map { key in'''
old_image = '''"\\(self.name)-\\(key):latest"'''
new_image = '''"\\(projectName)-\\(key):latest"'''
if original.count(old) != 1:
sys.exit("ERROR: Expected services initializer not found exactly once.")
if original.count(old_image) != 1:
sys.exit("ERROR: Expected image expression not found exactly once.")
updated = original.replace(old, new, 1)
updated = updated.replace(old_image, new_image, 1)
backup = source.with_name(
source.name + ".bak-" + datetime.now().strftime("%Y%m%d-%H%M%S")
)
backup.write_text(original, encoding="utf-8")
source.write_text(updated, encoding="utf-8")
print(f"Backup: {backup}")
print(f"Updated: {source}")
print("Fixed self.name capture during services initialization.")
print("Rebuild both Xcode targets.")