From 39931994aedecb31057ce2843fe7a548d18ec55f Mon Sep 17 00:00:00 2001 From: Paul LeMarquand Date: Mon, 10 Nov 2025 12:30:00 -0500 Subject: [PATCH 1/2] Ensure resource bundles aren't marked as executable This patch reverts a single line from https://github.com/swiftlang/swift-package-manager/commit/a112ab817dafb40f3d95daaa31b034f7c766fa8e#diff-b1845cad8f64e37500b06818ff71629726c14cf5a8d34add6ef3a9d38236cfe5 The executable name should be deliberately omitted from the build settings to avoid having the bundle be marked as executable with the CFBundleExecutable in its Info.plist. --- Fixtures/Miscellaneous/TIF/.gitignore | 5 ++ Fixtures/Miscellaneous/TIF/Package.swift | 17 ++++++ Fixtures/Miscellaneous/TIF/README.md | 3 ++ .../TIF/Sources/TIF/SomeAlert.swift | 26 ++++++++++ .../TIF/Sources/TIF/SomeAlert.xib | 49 ++++++++++++++++++ .../TIF/SomeAssets.xcassets/Contents.json | 6 +++ .../this_is_fine.imageset/Contents.json | 21 ++++++++ .../this_is_fine.imageset/this_is_fine.jpg | Bin 0 -> 53072 bytes .../Miscellaneous/TIF/Sources/TIF/some.txt | 1 + .../PackagePIFProjectBuilder.swift | 1 + Tests/CommandsTests/BuildCommandTests.swift | 39 ++++++++++++++ 11 files changed, 168 insertions(+) create mode 100644 Fixtures/Miscellaneous/TIF/.gitignore create mode 100644 Fixtures/Miscellaneous/TIF/Package.swift create mode 100644 Fixtures/Miscellaneous/TIF/README.md create mode 100644 Fixtures/Miscellaneous/TIF/Sources/TIF/SomeAlert.swift create mode 100644 Fixtures/Miscellaneous/TIF/Sources/TIF/SomeAlert.xib create mode 100644 Fixtures/Miscellaneous/TIF/Sources/TIF/SomeAssets.xcassets/Contents.json create mode 100644 Fixtures/Miscellaneous/TIF/Sources/TIF/SomeAssets.xcassets/this_is_fine.imageset/Contents.json create mode 100644 Fixtures/Miscellaneous/TIF/Sources/TIF/SomeAssets.xcassets/this_is_fine.imageset/this_is_fine.jpg create mode 100644 Fixtures/Miscellaneous/TIF/Sources/TIF/some.txt diff --git a/Fixtures/Miscellaneous/TIF/.gitignore b/Fixtures/Miscellaneous/TIF/.gitignore new file mode 100644 index 00000000000..95c4320919a --- /dev/null +++ b/Fixtures/Miscellaneous/TIF/.gitignore @@ -0,0 +1,5 @@ +.DS_Store +/.build +/Packages +/*.xcodeproj +xcuserdata/ diff --git a/Fixtures/Miscellaneous/TIF/Package.swift b/Fixtures/Miscellaneous/TIF/Package.swift new file mode 100644 index 00000000000..b14b92366c2 --- /dev/null +++ b/Fixtures/Miscellaneous/TIF/Package.swift @@ -0,0 +1,17 @@ +// swift-tools-version:5.3 +import PackageDescription + +let package = Package( + name: "TIF", + products: [ + .library(name: "TIF", targets: ["TIF"]) + ], + targets: [ + .target( + name: "TIF", + resources: [ + .copy("some.txt") + ] + ), + ] +) diff --git a/Fixtures/Miscellaneous/TIF/README.md b/Fixtures/Miscellaneous/TIF/README.md new file mode 100644 index 00000000000..e32520dc79b --- /dev/null +++ b/Fixtures/Miscellaneous/TIF/README.md @@ -0,0 +1,3 @@ +# TIF + +A description of this package. diff --git a/Fixtures/Miscellaneous/TIF/Sources/TIF/SomeAlert.swift b/Fixtures/Miscellaneous/TIF/Sources/TIF/SomeAlert.swift new file mode 100644 index 00000000000..9f0895cc761 --- /dev/null +++ b/Fixtures/Miscellaneous/TIF/Sources/TIF/SomeAlert.swift @@ -0,0 +1,26 @@ +// +// SomeAlert.swift +// MyFwk +// +// Created by ankit on 10/31/19. +// Copyright © 2019 Ankit. All rights reserved. +// + +import Cocoa + +public class SomeAlert: NSViewController { + + @IBOutlet var label: NSTextField! + + override public func viewDidLoad() { + super.viewDidLoad() + let bundlePath = Bundle.main.path(forResource: "TIF_TIF", ofType: "bundle")! + let bundle = Bundle(path: bundlePath)! + + let txt = bundle.path(forResource: "some", ofType: "txt")! + let c = FileManager.default.contents(atPath: txt)! + + label.stringValue = String(data:c, encoding: .utf8)! + // Do view setup here. + } +} diff --git a/Fixtures/Miscellaneous/TIF/Sources/TIF/SomeAlert.xib b/Fixtures/Miscellaneous/TIF/Sources/TIF/SomeAlert.xib new file mode 100644 index 00000000000..25914673c2c --- /dev/null +++ b/Fixtures/Miscellaneous/TIF/Sources/TIF/SomeAlert.xib @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Fixtures/Miscellaneous/TIF/Sources/TIF/SomeAssets.xcassets/Contents.json b/Fixtures/Miscellaneous/TIF/Sources/TIF/SomeAssets.xcassets/Contents.json new file mode 100644 index 00000000000..73c00596a7f --- /dev/null +++ b/Fixtures/Miscellaneous/TIF/Sources/TIF/SomeAssets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Fixtures/Miscellaneous/TIF/Sources/TIF/SomeAssets.xcassets/this_is_fine.imageset/Contents.json b/Fixtures/Miscellaneous/TIF/Sources/TIF/SomeAssets.xcassets/this_is_fine.imageset/Contents.json new file mode 100644 index 00000000000..516317731f0 --- /dev/null +++ b/Fixtures/Miscellaneous/TIF/Sources/TIF/SomeAssets.xcassets/this_is_fine.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "this_is_fine.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Fixtures/Miscellaneous/TIF/Sources/TIF/SomeAssets.xcassets/this_is_fine.imageset/this_is_fine.jpg b/Fixtures/Miscellaneous/TIF/Sources/TIF/SomeAssets.xcassets/this_is_fine.imageset/this_is_fine.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3c605bfd150bbe5be553059c70d747d9200a5fd0 GIT binary patch literal 53072 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%0DtnK9z)-p0a!|YVN0dvTdFJ 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 Z<7k*UjQ;>rC35WdjCLOhq-pW#|JeZVfb0MO literal 0 HcmV?d00001 diff --git a/Fixtures/Miscellaneous/TIF/Sources/TIF/some.txt b/Fixtures/Miscellaneous/TIF/Sources/TIF/some.txt new file mode 100644 index 00000000000..4662991d0b5 --- /dev/null +++ b/Fixtures/Miscellaneous/TIF/Sources/TIF/some.txt @@ -0,0 +1 @@ +This is being read from some.txt file in the bundle. diff --git a/Sources/SwiftBuildSupport/PackagePIFProjectBuilder.swift b/Sources/SwiftBuildSupport/PackagePIFProjectBuilder.swift index 391fb15be9d..13b02f49c03 100644 --- a/Sources/SwiftBuildSupport/PackagePIFProjectBuilder.swift +++ b/Sources/SwiftBuildSupport/PackagePIFProjectBuilder.swift @@ -211,6 +211,7 @@ struct PackagePIFProjectBuilder { settings[.PRODUCT_MODULE_NAME] = bundleName settings[.PRODUCT_BUNDLE_IDENTIFIER] = "\(self.package.identity).\(module.name).resources" .spm_mangledToBundleIdentifier() + settings[.EXECUTABLE_NAME] = "" settings[.GENERATE_INFOPLIST_FILE] = "YES" settings[.PACKAGE_RESOURCE_TARGET_KIND] = "resource" diff --git a/Tests/CommandsTests/BuildCommandTests.swift b/Tests/CommandsTests/BuildCommandTests.swift index 59cef0466b2..35eca4d2c1d 100644 --- a/Tests/CommandsTests/BuildCommandTests.swift +++ b/Tests/CommandsTests/BuildCommandTests.swift @@ -1760,6 +1760,45 @@ struct BuildCommandTestCases { data.config == .release } } + + @Test( + .requireHostOS(.macOS), + .tags( + .Feature.CommandLineArguments.BuildSystem, + .Feature.CommandLineArguments.Configuration, + ), + arguments: getBuildData(for: [.swiftbuild]), + ) + func trivialPackageResources( + data: BuildData, + ) async throws { + let buildSystem = data.buildSystem + try await fixture(name: "Miscellaneous/TIF") { fixturePath in + let result = try await build( + [], + packagePath: fixturePath, + configuration: data.config, + cleanAfterward: false, + buildSystem: buildSystem, + ) + try #require(result.binContents.contains("TIF_TIF.bundle")) + let contentsDir = result.binPath.appending("TIF_TIF.bundle", "Contents") + let bundleResourceDir = contentsDir.appending("Resources") + + let bundleResources = try localFileSystem.getDirectoryContents(bundleResourceDir) + #expect(bundleResources.contains("some.txt")) + #expect(bundleResources.contains("Assets.car")) + #expect(bundleResources.contains("SomeAlert.nib")) + + // Check that the Info.plist of the resource bundle looks reasonable. In particular, it shouldn't have a CFBundleExecutable key, since it's a codeless bundle. + let infoPlistPath = contentsDir.appending("Info.plist") + let infoPlistBytes = try localFileSystem.readFileContents(infoPlistPath) + let infoPlist = try infoPlistBytes.withData({ + try #require(PropertyListSerialization.propertyList(from: $0, options: [], format: nil) as? NSDictionary, "couldn't parse built resource bundle's Info.plist as a property list") + }) + #expect(infoPlist["CFBundleExecutable"] == nil, "Expected CFBundleExecutable to be omitted from the Info.plist of a codeless resource bundle") + } + } } extension Triple { From 74eaf6447e012a7185e5cac214af2bd2929befda Mon Sep 17 00:00:00 2001 From: Paul LeMarquand Date: Mon, 10 Nov 2025 14:04:05 -0500 Subject: [PATCH 2/2] Address feedback --- Fixtures/Miscellaneous/TIF/.gitignore | 5 ----- Sources/SwiftBuildSupport/PackagePIFProjectBuilder.swift | 2 ++ 2 files changed, 2 insertions(+), 5 deletions(-) delete mode 100644 Fixtures/Miscellaneous/TIF/.gitignore diff --git a/Fixtures/Miscellaneous/TIF/.gitignore b/Fixtures/Miscellaneous/TIF/.gitignore deleted file mode 100644 index 95c4320919a..00000000000 --- a/Fixtures/Miscellaneous/TIF/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -.DS_Store -/.build -/Packages -/*.xcodeproj -xcuserdata/ diff --git a/Sources/SwiftBuildSupport/PackagePIFProjectBuilder.swift b/Sources/SwiftBuildSupport/PackagePIFProjectBuilder.swift index 13b02f49c03..6684a2e5e9e 100644 --- a/Sources/SwiftBuildSupport/PackagePIFProjectBuilder.swift +++ b/Sources/SwiftBuildSupport/PackagePIFProjectBuilder.swift @@ -211,6 +211,8 @@ struct PackagePIFProjectBuilder { settings[.PRODUCT_MODULE_NAME] = bundleName settings[.PRODUCT_BUNDLE_IDENTIFIER] = "\(self.package.identity).\(module.name).resources" .spm_mangledToBundleIdentifier() + // Resource bundles are not executable. Setting the name to an empty string will + // omit the CFBundleExecutable key from the Info.plist. settings[.EXECUTABLE_NAME] = "" settings[.GENERATE_INFOPLIST_FILE] = "YES" settings[.PACKAGE_RESOURCE_TARGET_KIND] = "resource"