From cc606b54394abcdad4cf97031226b53338e87e04 Mon Sep 17 00:00:00 2001 From: Hur Ali Date: Wed, 10 Jun 2026 12:59:45 +0500 Subject: [PATCH 1/2] fix: keep only one reference of xcframeworks when spm enabled --- .../__tests__/createLocalSpmPackage.test.ts | 2 +- .../prepareLocalSpmArtifacts.test.ts | 25 ++----------------- .../brownfield/utils/createLocalSpmPackage.ts | 2 +- .../utils/prepareLocalSpmArtifacts.ts | 2 +- 4 files changed, 5 insertions(+), 26 deletions(-) diff --git a/packages/cli/src/brownfield/utils/__tests__/createLocalSpmPackage.test.ts b/packages/cli/src/brownfield/utils/__tests__/createLocalSpmPackage.test.ts index 4312a291..77c4fec1 100644 --- a/packages/cli/src/brownfield/utils/__tests__/createLocalSpmPackage.test.ts +++ b/packages/cli/src/brownfield/utils/__tests__/createLocalSpmPackage.test.ts @@ -59,7 +59,7 @@ describe('createLocalSpmPackage', () => { ).toBe(true); expect( fs.existsSync(path.join(tempDir, 'BrownfieldLib.xcframework')) - ).toBe(true); + ).toBe(false); const readmePath = path.join(tempDir, 'README.md'); expect(fs.existsSync(readmePath)).toBe(true); diff --git a/packages/cli/src/brownfield/utils/__tests__/prepareLocalSpmArtifacts.test.ts b/packages/cli/src/brownfield/utils/__tests__/prepareLocalSpmArtifacts.test.ts index ddd4859a..d6c55745 100644 --- a/packages/cli/src/brownfield/utils/__tests__/prepareLocalSpmArtifacts.test.ts +++ b/packages/cli/src/brownfield/utils/__tests__/prepareLocalSpmArtifacts.test.ts @@ -46,7 +46,7 @@ describe('prepareLocalSpmArtifacts', () => { fs.rmSync(tempDir, { recursive: true, force: true }); }); - it('copies xcframeworks into spm-artifacts and removes embedded code signature data', () => { + it('moves xcframeworks into spm-artifacts and removes embedded code signature data', () => { createSignedMockXcframework(tempDir, 'React'); const spmArtifactsDir = prepareLocalSpmArtifacts({ @@ -82,28 +82,7 @@ describe('prepareLocalSpmArtifacts', () => { ['--remove-signature', path.join(copiedFrameworkDir, 'React')], expect.objectContaining({ stdio: 'pipe' }) ); - expect( - fs.existsSync( - path.join( - tempDir, - 'React.xcframework', - '_CodeSignature', - 'CodeResources' - ) - ) - ).toBe(true); - expect( - fs.existsSync( - path.join( - tempDir, - 'React.xcframework', - 'ios-arm64_x86_64-simulator', - 'React.framework', - '_CodeSignature', - 'CodeResources' - ) - ) - ).toBe(true); + expect(fs.existsSync(path.join(tempDir, 'React.xcframework'))).toBe(false); }); it('ignores remove-signature errors for unsigned binaries', () => { diff --git a/packages/cli/src/brownfield/utils/createLocalSpmPackage.ts b/packages/cli/src/brownfield/utils/createLocalSpmPackage.ts index cefaa9a0..5be41f4b 100644 --- a/packages/cli/src/brownfield/utils/createLocalSpmPackage.ts +++ b/packages/cli/src/brownfield/utils/createLocalSpmPackage.ts @@ -148,7 +148,7 @@ ${frameworks} 1. In Xcode, choose **File > Add Package Dependencies...** 2. Click **Add Local...** -3. Select this folder, the one containing both \`Package.swift\` and the \`*.xcframework\` artifacts +3. Select this folder, the one containing \`Package.swift\` and the \`spm-artifacts\` directory 4. Add the \`${libraryName}\` library product to your app target ## Troubleshooting diff --git a/packages/cli/src/brownfield/utils/prepareLocalSpmArtifacts.ts b/packages/cli/src/brownfield/utils/prepareLocalSpmArtifacts.ts index f74b9ddb..88144a4e 100644 --- a/packages/cli/src/brownfield/utils/prepareLocalSpmArtifacts.ts +++ b/packages/cli/src/brownfield/utils/prepareLocalSpmArtifacts.ts @@ -109,7 +109,7 @@ export function prepareLocalSpmArtifacts({ const sourcePath = path.join(packageDir, `${targetName}.xcframework`); const destinationPath = path.join(spmArtifactsDir, `${targetName}.xcframework`); - fs.cpSync(sourcePath, destinationPath, { recursive: true }); + fs.renameSync(sourcePath, destinationPath); normalizeCopiedXcframeworkSignature(destinationPath); } From cb66d466e13a16b46287ecc428923eb1dfd2bbc6 Mon Sep 17 00:00:00 2001 From: Hur Ali Date: Wed, 10 Jun 2026 13:12:32 +0500 Subject: [PATCH 2/2] chore: changeset --- .changeset/gold-loops-live.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/gold-loops-live.md diff --git a/.changeset/gold-loops-live.md b/.changeset/gold-loops-live.md new file mode 100644 index 00000000..9e92cde7 --- /dev/null +++ b/.changeset/gold-loops-live.md @@ -0,0 +1,5 @@ +--- +'@callstack/brownfield-cli': minor +--- + +keep only one reference of xcframeworks when spm enabled