skiptools / skiptools/skip

skip checkup / skip init fail to compile SkipPlugin.swift under Xcode 27: "unknown argument: '-target-arch-variant'"

Open
#733 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Swift
Stars
3.2k
Forks
106
Avg merge
6d 13h
Merged PRs (30d)
1

Description

Summary

skip checkup and skip init (with a brand-new, unmodified project) both fail before ever reaching user code or skip-ui — the build-tool plugin bundled with this package, SkipPlugin.swift, fails to compile.

This started after updating to Xcode 27.0 / macOS 27.0 (Golden Gate). The identical Skip/Swift/Swiftly toolchain versions worked cleanly on Xcode 26.6 six days earlier (skip checkup passed all twelve checks, skip init + skip android build succeeded). No project code, dependencies, or Skip/Swift/Swiftly versions changed between the two runs — only the OS/Xcode update.

This is unrelated to #521 in skip-ui (a separate skip-ui regression we reported on Sep 9). That bug never gets reached here, because this failure happens earlier, in this package's own plugin.

Environment

Skip 1.9.8
macOS 27.0 (Golden Gate), build 26A428
Xcode 27.0, build 27A266a
Swift 6.3.3 (swiftly 1.1.3)
Swift Android SDK 6.3.3
Gradle 9.7.1 · OpenJDK 26.0.2.1 · adb 1.0.41 · Android SDK 37.0.1

Six days earlier, on the same machine, with identical Skip/Swift/Swiftly/Gradle/SDK versions but Xcode 26.6 / macOS 26.6.2: skip checkup passed all twelve checks, and skip init + skip android build both ran (surfacing the unrelated skip-ui #521 instead).

Steps to reproduce

skip checkup

or, from an empty directory:

skip init --transpiled-app --appid=com.example.spike --no-fastlane --no-git-repo spike Spike

Both fail identically. skip checkup's own internal "Build hello-skip" step hits the same error.

Actual result

[✗] Build hello-skip (4.68s)
[✗] error: emit-module command failed with exit code 1 (use -v to see invocation)
<unknown>:0: error: unknown argument: '-target-arch-variant'

(repeated 20 times), followed by a cascade in this package's own plugin:

.build/checkouts/skip/Plugins/SkipPlugin/SkipPlugin.swift:43:87: error: cannot find type 'Command' in scope
.build/checkouts/skip/Plugins/SkipPlugin/SkipPlugin.swift:69:108: error: cannot find type 'Command' in scope
.build/checkouts/skip/Plugins/SkipPlugin/SkipPlugin.swift:76:108: error: cannot find type 'Command' in scope
.build/checkouts/skip/Plugins/SkipPlugin/SkipPlugin.swift:6:14: error: type 'SkipPlugin' cannot conform to protocol 'BuildToolPlugin' because it has requirements that cannot be satisfied
.build/checkouts/skip/Plugins/SkipPlugin/SkipPlugin.swift:379:26: error: cannot find type 'LocalizedError' in scope
.build/checkouts/skip/Plugins/SkipPlugin/SkipPlugin.swift:108:23: error: thrown expression type 'SkipPluginError' does not conform to 'Error'
.build/checkouts/skip/Plugins/SkipPlugin/SkipPlugin.swift:158:25: error: cannot find 'URL' in scope
.build/checkouts/skip/Plugins/SkipPlugin/SkipPlugin.swift:256:38: error: cannot find 'URL' in scope

then, for skip init specifically:

error: build planning stopped due to build-tool plugin failures
[✗] Skip 1.9.8 init failed with 2 errors

Command, URL, and LocalizedError are ordinary Foundation/PackagePlugin types — this reads as a cascade from the first rejected compiler invocation, not as separate missing imports.

Expected result

skip checkup and skip init succeed under Xcode 27, as they did under Xcode 26.6.

Notes

  • -target-arch-variant looks like a driver flag mismatch — plausibly the host-side compiler invocation used to build SwiftPM build-tool plugins under Xcode 27 emits a flag that the swiftly-installed Swift 6.3.3 frontend doesn't recognize, even though swift --version and skip checkup's own version check both report 6.3.3 as matching.
  • We did not change swiftly, the Android SDK, or any Skip/skip-ui version between the two test runs — only the OS.
  • Happy to provide -v verbose invocation output, or any other diagnostic, on request.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the failure with skip checkup or the provided skip init command, then inspect Plugins/SkipPlugin/SkipPlugin.swift and the verbose compiler invocation. Compare the Xcode 27 invocation with the known-working Xcode 26.6 environment. Done means both commands compile the plugin and succeed under Xcode 27.

Written by the indexing model from the issue text.

Assessment

Tech stack
swift
Domain
build-system, devtools
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.