Skip to content

Commit 3eb7700

Browse files
Fix reinstalls of Built with Bazel apps to device (#531)
If an Info.plist file is set Xcode will do post processing on it after all other build steps. This currently changes the order of the keys, which results in a different code signature, breaking validation and thus re-installs to devices. For now we don't associate the Info.plist to Device platforms when Building with Bazel.
1 parent b072a72 commit 3eb7700

File tree

9 files changed

+34
-14
lines changed

9 files changed

+34
-14
lines changed

examples/ios_app/test/fixtures/bwb.xcodeproj/project.pbxproj

+1
Original file line numberDiff line numberDiff line change
@@ -1608,6 +1608,7 @@
16081608
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(BAZEL_PACKAGE_BIN_DIR)";
16091609
COPY_PHASE_STRIP = NO;
16101610
DEPLOYMENT_LOCATION = "$(INDEXING_DEPLOYMENT_LOCATION__$(INDEX_ENABLE_BUILD_ARENA)),";
1611+
DONT_GENERATE_INFOPLIST_FILE = YES;
16111612
DSTROOT = "$(PROJECT_TEMP_DIR)";
16121613
GEN_DIR = "$(LINKS_DIR)/gen_dir";
16131614
INDEXING_BUILT_PRODUCTS_DIR__ = "$(BUILD_DIR)";

test/fixtures/cc/bwb.xcodeproj/project.pbxproj

+1
Original file line numberDiff line numberDiff line change
@@ -775,6 +775,7 @@
775775
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(BAZEL_PACKAGE_BIN_DIR)";
776776
COPY_PHASE_STRIP = NO;
777777
DEPLOYMENT_LOCATION = "$(INDEXING_DEPLOYMENT_LOCATION__$(INDEX_ENABLE_BUILD_ARENA)),";
778+
DONT_GENERATE_INFOPLIST_FILE = YES;
778779
DSTROOT = "$(PROJECT_TEMP_DIR)";
779780
GEN_DIR = "$(LINKS_DIR)/gen_dir";
780781
INDEXING_BUILT_PRODUCTS_DIR__ = "$(BUILD_DIR)";

test/fixtures/command_line/bwb.xcodeproj/project.pbxproj

+1
Original file line numberDiff line numberDiff line change
@@ -1091,6 +1091,7 @@
10911091
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(BAZEL_PACKAGE_BIN_DIR)";
10921092
COPY_PHASE_STRIP = NO;
10931093
DEPLOYMENT_LOCATION = "$(INDEXING_DEPLOYMENT_LOCATION__$(INDEX_ENABLE_BUILD_ARENA)),";
1094+
DONT_GENERATE_INFOPLIST_FILE = YES;
10941095
DSTROOT = "$(PROJECT_TEMP_DIR)";
10951096
GEN_DIR = "$(LINKS_DIR)/gen_dir";
10961097
INDEXING_BUILT_PRODUCTS_DIR__ = "$(BUILD_DIR)";

test/fixtures/generator/bwb.xcodeproj/project.pbxproj

+1
Original file line numberDiff line numberDiff line change
@@ -2371,6 +2371,7 @@
23712371
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(BAZEL_PACKAGE_BIN_DIR)";
23722372
COPY_PHASE_STRIP = NO;
23732373
DEPLOYMENT_LOCATION = "$(INDEXING_DEPLOYMENT_LOCATION__$(INDEX_ENABLE_BUILD_ARENA)),";
2374+
DONT_GENERATE_INFOPLIST_FILE = YES;
23742375
DSTROOT = "$(PROJECT_TEMP_DIR)";
23752376
GEN_DIR = "$(LINKS_DIR)/gen_dir";
23762377
INDEXING_BUILT_PRODUCTS_DIR__ = "$(BUILD_DIR)";

test/fixtures/multiplatform/bwb.xcodeproj/project.pbxproj

+5-4
Original file line numberDiff line numberDiff line change
@@ -1580,7 +1580,7 @@
15801580
"__TIME__=\"redacted\"",
15811581
);
15821582
INFOPLIST_FILE = "$(GEN_DIR)/applebin_ios-ios_x86_64-dbg-ST-e7c08a7bb9db/bin/examples/multiplatform/iOSApp/iOSApp-intermediates/Info.xcode.plist";
1583-
"INFOPLIST_FILE[sdk=iphoneos*]" = "$(GEN_DIR)/applebin_ios-ios_arm64-dbg-ST-28ac48b4d0bf/bin/examples/multiplatform/iOSApp/iOSApp-intermediates/Info.xcode.plist";
1583+
"INFOPLIST_FILE[sdk=iphoneos*]" = "";
15841584
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
15851585
LD_RUNPATH_SEARCH_PATHS = (
15861586
"$(inherited)",
@@ -1742,7 +1742,7 @@
17421742
"__TIME__=\"redacted\"",
17431743
);
17441744
INFOPLIST_FILE = "$(GEN_DIR)/applebin_watchos-watchos_x86_64-dbg-ST-2fd25852cc8a/bin/examples/multiplatform/watchOSAppExtension/watchOSAppExtension-intermediates/Info.xcode.plist";
1745-
"INFOPLIST_FILE[sdk=watchos*]" = "$(GEN_DIR)/applebin_watchos-watchos_arm64_32-dbg-ST-01fecab27ffc/bin/examples/multiplatform/watchOSAppExtension/watchOSAppExtension-intermediates/Info.xcode.plist";
1745+
"INFOPLIST_FILE[sdk=watchos*]" = "";
17461746
LD_RUNPATH_SEARCH_PATHS = (
17471747
"$(inherited)",
17481748
"@executable_path/Frameworks",
@@ -1925,7 +1925,7 @@
19251925
"__TIME__=\"redacted\"",
19261926
);
19271927
INFOPLIST_FILE = "$(GEN_DIR)/applebin_tvos-tvos_x86_64-dbg-ST-ae85ff5caa67/bin/examples/multiplatform/tvOSApp/tvOSApp-intermediates/Info.xcode.plist";
1928-
"INFOPLIST_FILE[sdk=appletvos*]" = "$(GEN_DIR)/applebin_tvos-tvos_arm64-dbg-ST-d6d3bf2233f2/bin/examples/multiplatform/tvOSApp/tvOSApp-intermediates/Info.xcode.plist";
1928+
"INFOPLIST_FILE[sdk=appletvos*]" = "";
19291929
LD_RUNPATH_SEARCH_PATHS = (
19301930
"$(inherited)",
19311931
"@executable_path/Frameworks",
@@ -2078,6 +2078,7 @@
20782078
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(BAZEL_PACKAGE_BIN_DIR)";
20792079
COPY_PHASE_STRIP = NO;
20802080
DEPLOYMENT_LOCATION = "$(INDEXING_DEPLOYMENT_LOCATION__$(INDEX_ENABLE_BUILD_ARENA)),";
2081+
DONT_GENERATE_INFOPLIST_FILE = YES;
20812082
DSTROOT = "$(PROJECT_TEMP_DIR)";
20822083
GEN_DIR = "$(LINKS_DIR)/gen_dir";
20832084
INDEXING_BUILT_PRODUCTS_DIR__ = "$(BUILD_DIR)";
@@ -2130,7 +2131,7 @@
21302131
"__TIME__=\"redacted\"",
21312132
);
21322133
INFOPLIST_FILE = "$(GEN_DIR)/applebin_watchos-watchos_x86_64-dbg-ST-2fd25852cc8a/bin/examples/multiplatform/watchOSApp/watchOSApp-intermediates/Info.xcode.plist";
2133-
"INFOPLIST_FILE[sdk=watchos*]" = "$(GEN_DIR)/applebin_watchos-watchos_arm64_32-dbg-ST-01fecab27ffc/bin/examples/multiplatform/watchOSApp/watchOSApp-intermediates/Info.xcode.plist";
2134+
"INFOPLIST_FILE[sdk=watchos*]" = "";
21342135
OTHER_CFLAGS = (
21352136
"-fstack-protector",
21362137
"-Wall",

test/fixtures/tvos_app/bwb.xcodeproj/project.pbxproj

+1
Original file line numberDiff line numberDiff line change
@@ -715,6 +715,7 @@
715715
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(BAZEL_PACKAGE_BIN_DIR)";
716716
COPY_PHASE_STRIP = NO;
717717
DEPLOYMENT_LOCATION = "$(INDEXING_DEPLOYMENT_LOCATION__$(INDEX_ENABLE_BUILD_ARENA)),";
718+
DONT_GENERATE_INFOPLIST_FILE = YES;
718719
DSTROOT = "$(PROJECT_TEMP_DIR)";
719720
GEN_DIR = "$(LINKS_DIR)/gen_dir";
720721
INDEXING_BUILT_PRODUCTS_DIR__ = "$(BUILD_DIR)";

tools/generator/src/Generator+CreateProject.swift

+1
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ $(BUILD_DIR)/bazel_build_output_groups
6767
"BAZEL_INTEGRATION_DIR": "$(INTERNAL_DIR)/bazel",
6868
"CC": "$(BAZEL_INTEGRATION_DIR)/cc.sh",
6969
"CODE_SIGNING_ALLOWED": false,
70+
"DONT_GENERATE_INFOPLIST_FILE": true,
7071
"LD": "$(BAZEL_INTEGRATION_DIR)/ld.sh",
7172
"LIBTOOL": "$(BAZEL_INTEGRATION_DIR)/libtool.sh",
7273
"SWIFT_EXEC": "$(BAZEL_INTEGRATION_DIR)/swiftc.py",

tools/generator/src/Generator+SetTargetConfigurations.swift

+22-10
Original file line numberDiff line numberDiff line change
@@ -260,18 +260,30 @@ $(CONFIGURATION_BUILD_DIR)
260260
}
261261

262262
if let infoPlist = target.infoPlist {
263-
var infoPlistPath = try filePathResolver.resolve(
264-
infoPlist,
265-
useGenDir: true
266-
)
263+
if buildMode.usesBazelModeBuildScripts &&
264+
target.platform.os != .macOS &&
265+
target.platform.environment != "Simulator" {
266+
// Until we can find a way to disable Xcode's
267+
// "Process Info.plist" step, which breaks the code signature of
268+
// bundles, we can't set an INFOPLIST_FILE
269+
buildSettings["INFOPLIST_FILE"] = ""
270+
} else {
271+
var infoPlistPath = try filePathResolver.resolve(
272+
infoPlist,
273+
useGenDir: true
274+
)
267275

268-
// If the plist is generated, use the patched version that
269-
// removes a specific key that causes a warning when building
270-
// with Xcode
271-
if infoPlist.type == .generated {
272-
infoPlistPath.replaceExtension("xcode.plist")
276+
// If the plist is generated, use the patched version that
277+
// removes a specific key that causes a warning when building
278+
// with Xcode
279+
if infoPlist.type == .generated {
280+
infoPlistPath.replaceExtension("xcode.plist")
281+
}
282+
buildSettings.set(
283+
"INFOPLIST_FILE",
284+
to: infoPlistPath.string.quoted
285+
)
273286
}
274-
buildSettings.set("INFOPLIST_FILE", to: infoPlistPath.string.quoted)
275287
} else if buildMode.allowsGeneratedInfoPlists {
276288
buildSettings["GENERATE_INFOPLIST_FILE"] = true
277289
}

tools/generator/test/CreateProjectTests.swift

+1
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ $(BUILD_DIR)/$(BAZEL_PACKAGE_BIN_DIR)
139139
"DEPLOYMENT_LOCATION": """
140140
$(INDEXING_DEPLOYMENT_LOCATION__$(INDEX_ENABLE_BUILD_ARENA)),
141141
""",
142+
"DONT_GENERATE_INFOPLIST_FILE": true,
142143
"DSTROOT": "$(PROJECT_TEMP_DIR)",
143144
"GEN_DIR": "$(LINKS_DIR)/gen_dir",
144145
"LD": "$(BAZEL_INTEGRATION_DIR)/ld.sh",

0 commit comments

Comments
 (0)