@invarn/cibuild 2.9.2 → 2.9.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/cli.cjs +97 -12
  2. package/dist/src/yaml/steps/android.d.ts.map +1 -1
  3. package/dist/src/yaml/steps/android.js +11 -3
  4. package/dist/src/yaml/steps/capture-injection.d.ts +30 -0
  5. package/dist/src/yaml/steps/capture-injection.d.ts.map +1 -0
  6. package/dist/src/yaml/steps/capture-injection.js +88 -0
  7. package/dist/src/yaml/steps/capture-injection.test.d.ts +2 -0
  8. package/dist/src/yaml/steps/capture-injection.test.d.ts.map +1 -0
  9. package/dist/src/yaml/steps/capture-injection.test.js +163 -0
  10. package/dist/src/yaml/steps/cocoapods-deployment-floor.d.ts +42 -0
  11. package/dist/src/yaml/steps/cocoapods-deployment-floor.d.ts.map +1 -0
  12. package/dist/src/yaml/steps/cocoapods-deployment-floor.js +140 -0
  13. package/dist/src/yaml/steps/cocoapods-deployment-floor.test.d.ts +11 -0
  14. package/dist/src/yaml/steps/cocoapods-deployment-floor.test.d.ts.map +1 -0
  15. package/dist/src/yaml/steps/cocoapods-deployment-floor.test.js +176 -0
  16. package/dist/src/yaml/steps/gradle-memory.d.ts +1 -1
  17. package/dist/src/yaml/steps/gradle-memory.d.ts.map +1 -1
  18. package/dist/src/yaml/steps/gradle-memory.js +78 -3
  19. package/dist/src/yaml/steps/gradle-memory.test.js +48 -1
  20. package/dist/src/yaml/steps/ios-deps.d.ts.map +1 -1
  21. package/dist/src/yaml/steps/ios-deps.js +2 -0
  22. package/dist/src/yaml/steps/xcode-derived-data.test.js +47 -4
  23. package/dist/src/yaml/steps/xcode-simulator-archs.d.ts +53 -0
  24. package/dist/src/yaml/steps/xcode-simulator-archs.d.ts.map +1 -0
  25. package/dist/src/yaml/steps/xcode-simulator-archs.js +98 -0
  26. package/dist/src/yaml/steps/xcode-simulator-archs.test.d.ts +21 -0
  27. package/dist/src/yaml/steps/xcode-simulator-archs.test.d.ts.map +1 -0
  28. package/dist/src/yaml/steps/xcode-simulator-archs.test.js +155 -0
  29. package/dist/src/yaml/steps/xcode.d.ts.map +1 -1
  30. package/dist/src/yaml/steps/xcode.js +43 -4
  31. package/package.json +1 -1
@@ -0,0 +1,98 @@
1
+ /**
2
+ * The simulator architecture, chosen at run time.
3
+ *
4
+ * A pipeline pins `ARCHS=arm64` on its simulator builds: a *generic* simulator
5
+ * destination otherwise exports `ARCHS='arm64 x86_64'`, and anything that maps
6
+ * ARCHS onto a second toolchain meets an architecture nothing on the runner
7
+ * builds. But a project can exclude arm64 from the simulator
8
+ * (`EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64`, an Intel-era workaround),
9
+ * and then the pin leaves nothing to build: "None of the architectures in
10
+ * ARCHS (arm64) are valid", and CocoaPods' `[CP] Embed Pods Frameworks` dies
11
+ * on `ARCHS[@]: unbound variable`.
12
+ *
13
+ * Invarn switches to x86_64 at pipeline creation when the exclusion is in the
14
+ * repository (the pbxproj or the Podfile). A pod can also carry it, in its
15
+ * podspec's `user_target_xcconfig`, which CocoaPods writes into the app's
16
+ * `Pods-…debug.xcconfig` — and that exists only after `pod install`
17
+ * (ExistOrLive/GithubClient: WoodPeckeriOS 1.4.3, nightly-baseline issue 54).
18
+ * So the step asks Xcode, right before it builds, for the effective settings:
19
+ * `-showBuildSettings` reads the pbxproj, every xcconfig and the pods at once.
20
+ *
21
+ * Only an `ARCHS=arm64` pin is checked. An `ARCHS=x86_64` chosen at creation
22
+ * is left as it is, and options without a pin have nothing to decide.
23
+ */
24
+ const ARM64_PIN = /(^|\s)ARCHS=arm64(?=\s|$)/;
25
+ /** The variable the build line reads its simulator architecture from. */
26
+ export const SIMULATOR_ARCHS_VAR = 'CIBUILD_SIMULATOR_ARCHS';
27
+ /** Whether `xcodebuild_options` pins the simulator build to arm64. */
28
+ export function pinsSimulatorArm64(xcodebuildOptions) {
29
+ return ARM64_PIN.test(xcodebuildOptions);
30
+ }
31
+ /** The options with the arm64 pin replaced by the run-time choice. */
32
+ export function withRuntimeSimulatorArchs(xcodebuildOptions) {
33
+ return xcodebuildOptions.replace(ARM64_PIN, (_m, lead) => `${lead}ARCHS="$${SIMULATOR_ARCHS_VAR}"`);
34
+ }
35
+ /**
36
+ * Reads `xcodebuild -showBuildSettings -json` on stdin and prints one line
37
+ * naming the target that excludes arm64, or nothing. The application target
38
+ * decides when the scheme lists one; a framework the scheme also lists is not
39
+ * what is being built for the simulator. Output it cannot read is no
40
+ * evidence: it prints nothing and exits 0, and the build keeps arm64.
41
+ */
42
+ export const ARM64_EXCLUSION_READER_SOURCE = String.raw `
43
+ var input = '';
44
+ process.stdin.setEncoding('utf8');
45
+ process.stdin.on('data', function (d) { input += d; });
46
+ process.stdin.on('end', function () {
47
+ var entries;
48
+ try { entries = JSON.parse(input); } catch (err) { return; }
49
+ if (!Array.isArray(entries)) return;
50
+ var apps = entries.filter(function (e) {
51
+ return e && e.buildSettings && e.buildSettings.PRODUCT_TYPE === 'com.apple.product-type.application';
52
+ });
53
+ var judged = apps.length > 0 ? apps : entries;
54
+ for (var i = 0; i < judged.length; i++) {
55
+ var e = judged[i];
56
+ var excluded = String((e && e.buildSettings && e.buildSettings.EXCLUDED_ARCHS) || '').trim();
57
+ if (excluded.split(/\s+/).indexOf('arm64') >= 0) {
58
+ process.stdout.write('target ' + e.target + ' sets EXCLUDED_ARCHS = ' + excluded + '\n');
59
+ return;
60
+ }
61
+ }
62
+ });
63
+ `;
64
+ /**
65
+ * The lines that set `$CIBUILD_SIMULATOR_ARCHS`: arm64, or x86_64 when the
66
+ * project's effective simulator settings exclude arm64, saying so in the log.
67
+ * They expect `$PROJECT_TYPE` and `$DERIVED_DATA_PATH` to be set, and go after
68
+ * package resolution, so the settings are read from the graph the build uses.
69
+ */
70
+ export function simulatorArchsLines(opts) {
71
+ let ask = 'xcodebuild -showBuildSettings -json';
72
+ ask += ` "$PROJECT_TYPE" '${opts.projectPath}'`;
73
+ ask += ` -scheme '${opts.scheme}'`;
74
+ if (opts.configuration)
75
+ ask += ` -configuration '${opts.configuration}'`;
76
+ ask += ` -destination '${opts.destination}'`;
77
+ ask += ' -derivedDataPath "$DERIVED_DATA_PATH"';
78
+ if (opts.xcconfig)
79
+ ask += ' -xcconfig "$XCCONFIG_FILE"';
80
+ return [
81
+ '# The simulator architecture, read after pod install: a pod can exclude',
82
+ '# arm64 through its user_target_xcconfig, which no file in the repository',
83
+ '# says until CocoaPods has run. See xcode-simulator-archs.ts.',
84
+ `${SIMULATOR_ARCHS_VAR}=arm64`,
85
+ 'ARCHS_READER="$(mktemp -t cibuild-sim-archs).cjs"',
86
+ `cat > "$ARCHS_READER" << 'CIBUILD_SIM_ARCHS_EOF'`,
87
+ ARM64_EXCLUSION_READER_SOURCE.trim(),
88
+ 'CIBUILD_SIM_ARCHS_EOF',
89
+ `ARM64_EXCLUDED_BY=$(${ask} 2>/dev/null | node "$ARCHS_READER" 2>/dev/null || true)`,
90
+ 'rm -f "$ARCHS_READER"',
91
+ 'if [ -n "$ARM64_EXCLUDED_BY" ]; then',
92
+ ` ${SIMULATOR_ARCHS_VAR}=x86_64`,
93
+ ' echo "Building the simulator app as x86_64, not arm64: $ARM64_EXCLUDED_BY in the project\'s effective simulator settings (after pod install)"',
94
+ 'fi',
95
+ '',
96
+ ];
97
+ }
98
+ //# sourceMappingURL=xcode-simulator-archs.js.map
@@ -0,0 +1,21 @@
1
+ /**
2
+ * A simulator build pinned to arm64, on a project whose effective settings
3
+ * exclude arm64 from the simulator, builds x86_64 instead — decided at run
4
+ * time, after `pod install`, from what Xcode itself reports.
5
+ *
6
+ * The witness (nightly-baseline issue 54): ExistOrLive/GithubClient @ 7969212a.
7
+ * Its pod WoodPeckeriOS 1.4.3 ships `user_target_xcconfig:
8
+ * { "EXCLUDED_ARCHS[sdk=iphonesimulator*]": "arm64" }`, which CocoaPods writes
9
+ * into the app's `Pods-…debug.xcconfig`. The pipeline pinned `ARCHS=arm64`, so
10
+ * nothing was left to build and `[CP] Embed Pods Frameworks` died on
11
+ * `ARCHS[@]: unbound variable` (bld_b91e230368d6505e97ec9b75). Nothing in the
12
+ * repository says so before `pod install` has run.
13
+ *
14
+ * Measured on a clone, Xcode 26.4, 2026-10-01: after `pod install`,
15
+ * `xcodebuild -showBuildSettings -json … -destination 'generic/platform=iOS
16
+ * Simulator'` reported, for target ZLGitHubClient
17
+ * (com.apple.product-type.application), `EXCLUDED_ARCHS = "arm64"`, in 3 s;
18
+ * and `ARCHS=x86_64` compiled the app's sources.
19
+ */
20
+ export {};
21
+ //# sourceMappingURL=xcode-simulator-archs.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xcode-simulator-archs.test.d.ts","sourceRoot":"","sources":["../../../../src/yaml/steps/xcode-simulator-archs.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * A simulator build pinned to arm64, on a project whose effective settings
3
+ * exclude arm64 from the simulator, builds x86_64 instead — decided at run
4
+ * time, after `pod install`, from what Xcode itself reports.
5
+ *
6
+ * The witness (nightly-baseline issue 54): ExistOrLive/GithubClient @ 7969212a.
7
+ * Its pod WoodPeckeriOS 1.4.3 ships `user_target_xcconfig:
8
+ * { "EXCLUDED_ARCHS[sdk=iphonesimulator*]": "arm64" }`, which CocoaPods writes
9
+ * into the app's `Pods-…debug.xcconfig`. The pipeline pinned `ARCHS=arm64`, so
10
+ * nothing was left to build and `[CP] Embed Pods Frameworks` died on
11
+ * `ARCHS[@]: unbound variable` (bld_b91e230368d6505e97ec9b75). Nothing in the
12
+ * repository says so before `pod install` has run.
13
+ *
14
+ * Measured on a clone, Xcode 26.4, 2026-10-01: after `pod install`,
15
+ * `xcodebuild -showBuildSettings -json … -destination 'generic/platform=iOS
16
+ * Simulator'` reported, for target ZLGitHubClient
17
+ * (com.apple.product-type.application), `EXCLUDED_ARCHS = "arm64"`, in 3 s;
18
+ * and `ARCHS=x86_64` compiled the app's sources.
19
+ */
20
+ import { describe, test, expect } from '@jest/globals';
21
+ import { execFileSync } from 'node:child_process';
22
+ import { mkdtempSync, rmSync, writeFileSync } from 'node:fs';
23
+ import { tmpdir } from 'node:os';
24
+ import { join } from 'node:path';
25
+ import { ARM64_EXCLUSION_READER_SOURCE, pinsSimulatorArm64, withRuntimeSimulatorArchs, } from './xcode-simulator-archs.js';
26
+ import { XcodeBuildForSimulatorStepExecutor, XcodeBuildForTestStepExecutor, } from './xcode.js';
27
+ import { testConfig } from './test-config.js';
28
+ /** What `-showBuildSettings -json` printed for GithubClient, cut to the fields read. */
29
+ const githubClient = [
30
+ {
31
+ action: 'build',
32
+ target: 'ZLGitHubClient',
33
+ buildSettings: {
34
+ PRODUCT_TYPE: 'com.apple.product-type.application',
35
+ EXCLUDED_ARCHS: 'arm64',
36
+ ARCHS: 'x86_64',
37
+ },
38
+ },
39
+ ];
40
+ const read = (settings) => {
41
+ const dir = mkdtempSync(join(tmpdir(), 'sim-archs-'));
42
+ try {
43
+ const reader = join(dir, 'reader.cjs');
44
+ writeFileSync(reader, ARM64_EXCLUSION_READER_SOURCE);
45
+ return execFileSync('node', [reader], {
46
+ input: typeof settings === 'string' ? settings : JSON.stringify(settings),
47
+ encoding: 'utf8',
48
+ }).trim();
49
+ }
50
+ finally {
51
+ rmSync(dir, { recursive: true, force: true });
52
+ }
53
+ };
54
+ describe('the arm64 exclusion reader', () => {
55
+ test('names the app target that excludes arm64, and its setting', () => {
56
+ expect(read(githubClient)).toBe('target ZLGitHubClient sets EXCLUDED_ARCHS = arm64');
57
+ });
58
+ test('says nothing when arm64 is not excluded', () => {
59
+ expect(read([{ ...githubClient[0], buildSettings: { PRODUCT_TYPE: 'com.apple.product-type.application', EXCLUDED_ARCHS: '' } }])).toBe('');
60
+ expect(read([{ ...githubClient[0], buildSettings: { PRODUCT_TYPE: 'com.apple.product-type.application' } }])).toBe('');
61
+ });
62
+ test('reads arm64 as a word, not a substring', () => {
63
+ const s = (v) => [{ ...githubClient[0], buildSettings: { PRODUCT_TYPE: 'com.apple.product-type.application', EXCLUDED_ARCHS: v } }];
64
+ expect(read(s('i386 arm64'))).toBe('target ZLGitHubClient sets EXCLUDED_ARCHS = i386 arm64');
65
+ expect(read(s('arm64e'))).toBe('');
66
+ });
67
+ test('judges the application target, not a library the scheme also lists', () => {
68
+ const settings = [
69
+ { target: 'SomeKit', buildSettings: { PRODUCT_TYPE: 'com.apple.product-type.framework', EXCLUDED_ARCHS: 'arm64' } },
70
+ { target: 'App', buildSettings: { PRODUCT_TYPE: 'com.apple.product-type.application', EXCLUDED_ARCHS: '' } },
71
+ ];
72
+ expect(read(settings)).toBe('');
73
+ });
74
+ test('with no application target listed, any target that excludes arm64 counts', () => {
75
+ expect(read([{ target: 'Lib', buildSettings: { EXCLUDED_ARCHS: 'arm64' } }])).toBe('target Lib sets EXCLUDED_ARCHS = arm64');
76
+ });
77
+ test('unreadable output is no evidence: says nothing, exits 0', () => {
78
+ expect(read('')).toBe('');
79
+ expect(read('xcodebuild: error: not json')).toBe('');
80
+ expect(read({ not: 'an array' })).toBe('');
81
+ });
82
+ });
83
+ describe('pinsSimulatorArm64 / withRuntimeSimulatorArchs', () => {
84
+ const template = "-skipMacroValidation -skipPackagePluginValidation 'OTHER_CFLAGS=$(inherited) -Wno-error=parentheses' ARCHS=arm64";
85
+ test('the template line pins arm64', () => {
86
+ expect(pinsSimulatorArm64(template)).toBe(true);
87
+ });
88
+ test('an x86_64 already chosen at creation (issue 10) is not touched', () => {
89
+ const chosen = template.replace('ARCHS=arm64', 'ARCHS=x86_64');
90
+ expect(pinsSimulatorArm64(chosen)).toBe(false);
91
+ expect(withRuntimeSimulatorArchs(chosen)).toBe(chosen);
92
+ });
93
+ test('only a whole ARCHS=arm64 token counts', () => {
94
+ expect(pinsSimulatorArm64('VALID_ARCHS=arm64')).toBe(false);
95
+ expect(pinsSimulatorArm64('ARCHS=arm64e')).toBe(false);
96
+ expect(pinsSimulatorArm64('ARCHS=arm64 -quiet')).toBe(true);
97
+ });
98
+ test('the pin becomes the run-time variable, the rest of the line unchanged', () => {
99
+ expect(withRuntimeSimulatorArchs(template)).toBe("-skipMacroValidation -skipPackagePluginValidation 'OTHER_CFLAGS=$(inherited) -Wno-error=parentheses' ARCHS=\"$CIBUILD_SIMULATOR_ARCHS\"");
100
+ });
101
+ });
102
+ const steps = [
103
+ ['xcode-build-for-simulator', () => new XcodeBuildForSimulatorStepExecutor(), 'xcodebuild build "$PROJECT_TYPE"'],
104
+ ['xcode-build-for-test', () => new XcodeBuildForTestStepExecutor(), 'xcodebuild build-for-testing'],
105
+ ];
106
+ describe.each(steps)('%s reads the exclusion at run time', (_name, make, buildMarker) => {
107
+ const script = async (xcodebuild_options) => (await make().execute({
108
+ project_path: 'ZLGitHubClient/ZLGitHubClient.xcworkspace',
109
+ scheme: 'ZLGitHubClient',
110
+ configuration: 'Debug',
111
+ destination: 'generic/platform=iOS Simulator',
112
+ xcodebuild_options,
113
+ }, {}, testConfig)).script;
114
+ const pinned = "'OTHER_CFLAGS=$(inherited) -Wno-error=parentheses' ARCHS=arm64";
115
+ test('asks Xcode for the effective settings, after resolution and before the build', async () => {
116
+ const s = await script(pinned);
117
+ const ask = s.indexOf('xcodebuild -showBuildSettings -json');
118
+ expect(ask).toBeGreaterThan(s.indexOf('xcodebuild -resolvePackageDependencies'));
119
+ expect(ask).toBeLessThan(s.indexOf(buildMarker));
120
+ const line = s.split('\n').find((l) => l.includes('-showBuildSettings'));
121
+ expect(line).toContain("-scheme 'ZLGitHubClient'");
122
+ expect(line).toContain("-configuration 'Debug'");
123
+ expect(line).toContain("-destination 'generic/platform=iOS Simulator'");
124
+ });
125
+ test('builds with the run-time choice, arm64 unless the project excludes it', async () => {
126
+ const s = await script(pinned);
127
+ expect(s).toContain('CIBUILD_SIMULATOR_ARCHS=arm64');
128
+ expect(s).toContain('CIBUILD_SIMULATOR_ARCHS=x86_64');
129
+ const build = s.split('\n').find((l) => l.startsWith(buildMarker.split(' "')[0]) && !l.includes('-showBuildSettings') && !l.includes('-resolvePackageDependencies'));
130
+ expect(build).toContain('ARCHS="$CIBUILD_SIMULATOR_ARCHS"');
131
+ expect(build).not.toContain('ARCHS=arm64');
132
+ });
133
+ test('says so in the log, as the creation-time switch does', async () => {
134
+ expect(await script(pinned)).toContain('Building the simulator app as x86_64, not arm64: ');
135
+ });
136
+ test('without an arm64 pin there is nothing to check', async () => {
137
+ for (const opts of ['', pinned.replace('arm64', 'x86_64')]) {
138
+ const s = await script(opts);
139
+ expect(s).not.toContain('-showBuildSettings');
140
+ expect(s).not.toContain('CIBUILD_SIMULATOR_ARCHS');
141
+ }
142
+ });
143
+ test('the emitted script is valid bash', async () => {
144
+ const dir = mkdtempSync(join(tmpdir(), 'sim-archs-sh-'));
145
+ try {
146
+ const f = join(dir, 's.sh');
147
+ writeFileSync(f, await script(pinned));
148
+ expect(() => execFileSync('bash', ['-n', f])).not.toThrow();
149
+ }
150
+ finally {
151
+ rmSync(dir, { recursive: true, force: true });
152
+ }
153
+ });
154
+ });
155
+ //# sourceMappingURL=xcode-simulator-archs.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"xcode.d.ts","sourceRoot":"","sources":["../../../../src/yaml/steps/xcode.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAI7C,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AA6BhF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,gBAAgB;IAC1D,yBAAyB,CACvB,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,OAAO,EAAE,QAAQ,GAChB,qBAAqB,EAAE;IAmDpB,OAAO,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;CA2IzG;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,gBAAgB;IACzD,yBAAyB,CACvB,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,OAAO,EAAE,QAAQ,GAChB,qBAAqB,EAAE;IAmDpB,OAAO,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;CAuExG;AAMD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wBAAwB;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oDAAoD;IACpD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,kCAAkC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iEAAiE;IACjE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oDAAoD;IACpD,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,6EAA6E;IAC7E,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,6CAA6C;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oDAAoD;IACpD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qEAAqE;IACrE,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC;iEAC6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;qDAGiD;IACjD,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,qBAAa,wBAAyB,SAAQ,gBAAgB;IAC5D,yBAAyB,CACvB,MAAM,EAAE,kBAAkB,EAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,OAAO,EAAE,QAAQ,GAChB,qBAAqB,EAAE;IA6B1B,UAAU,IAAI,UAAU,EAAE;IASpB,OAAO,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;CAwU3G;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,gBAAgB;IAC1D,yBAAyB,CACvB,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,OAAO,EAAE,QAAQ,GAChB,qBAAqB,EAAE;IA4BpB,OAAO,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;CAyEzG;AAMD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;sDACkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,gBAAgB;IAC1D,yBAAyB,CACvB,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,OAAO,EAAE,QAAQ,GAChB,qBAAqB,EAAE;IAS1B,UAAU;;;;;IAUJ,OAAO,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;CAuH3G;AAMD,MAAM,WAAW,uBAAuB;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,6BAA8B,SAAQ,gBAAgB;IACjE,yBAAyB,CACvB,MAAM,EAAE,uBAAuB,EAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,OAAO,EAAE,QAAQ,GAChB,qBAAqB,EAAE;IAsB1B,UAAU,IAAI,UAAU,EAAE;IAOpB,OAAO,CAAC,MAAM,EAAE,uBAAuB,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;CA8GlH;AAMD,MAAM,WAAW,8BAA8B;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,qBAAa,oCAAqC,SAAQ,gBAAgB;IACxE,yBAAyB,CACvB,MAAM,EAAE,8BAA8B,EACtC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,OAAO,EAAE,QAAQ,GAChB,qBAAqB,EAAE;IAgB1B,UAAU,IAAI,UAAU,EAAE;IAMpB,OAAO,CAAC,MAAM,EAAE,8BAA8B,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;CAkFzH;AAMD,MAAM,WAAW,4BAA4B;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,kCAAmC,SAAQ,gBAAgB;IACtE,yBAAyB,CACvB,MAAM,EAAE,4BAA4B,EACpC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,OAAO,EAAE,QAAQ,GAChB,qBAAqB,EAAE;IAsB1B,UAAU,IAAI,UAAU,EAAE;IAMpB,OAAO,CAAC,MAAM,EAAE,4BAA4B,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;CAsMvH;AAMD,MAAM,WAAW,qBAAqB;IACpC,8BAA8B;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6CAA6C;IAC7C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yCAAyC;IACzC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,gBAAgB;IAC/D,yBAAyB,CACvB,OAAO,EAAE,qBAAqB,EAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,OAAO,EAAE,QAAQ,GAChB,qBAAqB,EAAE;IAM1B,UAAU,IAAI,UAAU,EAAE;IAOpB,OAAO,CAAC,MAAM,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;CAkHhH"}
1
+ {"version":3,"file":"xcode.d.ts","sourceRoot":"","sources":["../../../../src/yaml/steps/xcode.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { existsSync } from 'node:fs';
5
5
  import { BaseStepExecutor } from './base.js';
6
6
  import { resolveDestinationInput } from './xcode-destination.js';
7
7
  import { APP_PRODUCT_RESOLVER_SOURCE } from './xcode-app-product.js';
8
+ import { pinsSimulatorArm64, simulatorArchsLines, withRuntimeSimulatorArchs } from './xcode-simulator-archs.js';
8
9
  import { refusedFetchHelpers, retryOnRefusedFetch } from './git-fetch-retry.js';
9
10
  /**
10
11
  * Where derived data goes: outside the source tree, keyed by the output dir.
@@ -23,12 +24,30 @@ import { refusedFetchHelpers, retryOnRefusedFetch } from './git-fetch-retry.js';
23
24
  * name the same output_dir still share derived data (the iOS template relies
24
25
  * on that to avoid compiling the app twice) and two that name different ones
25
26
  * stay apart, as they did before.
27
+ *
28
+ * **Never under /tmp** (nightly-baseline 58). analogcode/Swift-Radio-Pro's
29
+ * LNPopupController builds its header search paths by deleting
30
+ * `Context.packageDirectory` from the paths FileManager lists, and under /tmp
31
+ * the two disagree by `/private`: xcodebuild folds `/private/tmp` back to
32
+ * `/tmp` however the path is given, and FileManager does not, so every header
33
+ * path came out eight characters short ("troller/…"). Resolving the path did
34
+ * not help, for that reason. The guest's scratch root is
35
+ * `/tmp/cibuild-work-<id>`, so there derived data goes to the build user's
36
+ * real home instead. Measured on runner-mac-01 2026-10-03: the same build
37
+ * fails under /tmp and succeeds under the home, in a fresh VM each. Not
38
+ * /var/folders (TMPDIR): it built correctly there too. SwiftPM caches a
39
+ * manifest's evaluation, relative paths and all, so the first evaluation in a
40
+ * VM decides — another reason the root must be right from the first build.
26
41
  */
27
42
  function derivedDataPathLines() {
28
43
  return [
29
- '# Derived data outside the source tree, keyed by the output dir',
30
- 'DERIVED_DATA_PATH="${CIBUILD_SCRATCH:-${TMPDIR:-/tmp}}/cibuild-derived-data/$(printf \'%s\' "$OUTPUT_DIR" | cksum | cut -d\' \' -f1)"',
44
+ '# Derived data outside the source tree, keyed by the output dir, and never under /tmp',
45
+ 'cibuild_dd_root="${CIBUILD_SCRATCH:-${TMPDIR:-/tmp}}"',
46
+ 'case "$(cd "$cibuild_dd_root" 2>/dev/null && pwd -P)" in /private/tmp|/private/tmp/*) cibuild_dd_root="${CIBUILD_USER_HOME:-$HOME}/Library/Developer/cibuild" ;; esac',
47
+ 'DERIVED_DATA_PATH="$cibuild_dd_root/cibuild-derived-data/$(printf \'%s\' "$OUTPUT_DIR" | cksum | cut -d\' \' -f1)"',
31
48
  'mkdir -p "$DERIVED_DATA_PATH"',
49
+ '# Its real path: /tmp and TMPDIR are symlinks on macOS, and a package that builds paths by text arithmetic breaks on them',
50
+ 'DERIVED_DATA_PATH="$(cd "$DERIVED_DATA_PATH" && pwd -P)"',
32
51
  'echo "Derived data: $DERIVED_DATA_PATH"',
33
52
  ];
34
53
  }
@@ -863,6 +882,16 @@ export class XcodeBuildForTestStepExecutor extends BaseStepExecutor {
863
882
  ` -scheme '${escapedScheme}'` +
864
883
  ' -derivedDataPath "$DERIVED_DATA_PATH"',
865
884
  }));
885
+ const pinsArm64 = pinsSimulatorArm64(xcodebuildOptions);
886
+ if (pinsArm64) {
887
+ commands.push(...simulatorArchsLines({
888
+ projectPath: escapedPath,
889
+ scheme: escapedScheme,
890
+ configuration: this.escapeBash(configuration),
891
+ destination: this.escapeBash(destination),
892
+ xcconfig: Boolean(xcconfigContent.trim()),
893
+ }));
894
+ }
866
895
  // Build command
867
896
  let cmd = 'xcodebuild build-for-testing';
868
897
  cmd += ` "$PROJECT_TYPE" '${escapedPath}'`;
@@ -877,7 +906,7 @@ export class XcodeBuildForTestStepExecutor extends BaseStepExecutor {
877
906
  cmd += ' -xcconfig "$XCCONFIG_FILE"';
878
907
  }
879
908
  if (xcodebuildOptions) {
880
- cmd += ` ${xcodebuildOptions}`;
909
+ cmd += ` ${pinsArm64 ? withRuntimeSimulatorArchs(xcodebuildOptions) : xcodebuildOptions}`;
881
910
  }
882
911
  commands.push(cmd);
883
912
  commands.push('');
@@ -1071,6 +1100,16 @@ export class XcodeBuildForSimulatorStepExecutor extends BaseStepExecutor {
1071
1100
  ` -scheme '${escapedScheme}'` +
1072
1101
  ' -derivedDataPath "$DERIVED_DATA_PATH"',
1073
1102
  }));
1103
+ const pinsArm64 = pinsSimulatorArm64(xcodebuildOptions);
1104
+ if (pinsArm64) {
1105
+ commands.push(...simulatorArchsLines({
1106
+ projectPath: escapedPath,
1107
+ scheme: escapedScheme,
1108
+ configuration: configuration ? this.escapeBash(configuration) : '',
1109
+ destination: this.escapeBash(destination),
1110
+ xcconfig: true,
1111
+ }));
1112
+ }
1074
1113
  // Build command
1075
1114
  let cmd = 'xcodebuild';
1076
1115
  if (performClean === 'yes') {
@@ -1119,7 +1158,7 @@ export class XcodeBuildForSimulatorStepExecutor extends BaseStepExecutor {
1119
1158
  cmd += ` -derivedDataPath "$DERIVED_DATA_PATH"`;
1120
1159
  cmd += ' -xcconfig "$XCCONFIG_FILE"';
1121
1160
  if (xcodebuildOptions) {
1122
- cmd += ` ${xcodebuildOptions}`;
1161
+ cmd += ` ${pinsArm64 ? withRuntimeSimulatorArchs(xcodebuildOptions) : xcodebuildOptions}`;
1123
1162
  }
1124
1163
  commands.push(cmd);
1125
1164
  commands.push('');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@invarn/cibuild",
3
- "version": "2.9.2",
3
+ "version": "2.9.5",
4
4
  "description": "CI Build CLI — local pipeline orchestration and validation",
5
5
  "type": "module",
6
6
  "main": "dist/cli.cjs",