Rollback of commit eb06c40d10652af258bee1a0277916007eccc69a.
*** Reason for rollback ***
This change was misidentified as the culprit of a user-error bug.
*** Original change description ***
Automated [] rollback of commit 2eaa31fade12242b7075c2bbac945aeeedf985e8.
*** Reason for rollback ***
breaks a couple of iPhone targets in nightly, see []
*** Original change description ***
Sign app and frameworks in simulator builds.
This has become necessary starting with Xcode 8 although we apply the signature
in all cases. Signing is done without entitlements and with signing identity
"-".
--
MOS_MIGRATED_REVID=140353891
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java
index f3b8d35..eb96e5f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java
@@ -436,7 +436,6 @@
Artifact processedIpa = releaseBundling.getIpaArtifact();
Artifact unprocessedIpa = intermediateArtifacts.unprocessedIpa();
- boolean processingNeeded = false;
NestedSetBuilder<Artifact> inputs =
NestedSetBuilder.<Artifact>stableOrder().add(unprocessedIpa);
@@ -454,45 +453,58 @@
FilesToRunProvider processor = attributes.ipaPostProcessor();
if (processor != null) {
- processingNeeded = true;
actionCommandLine += processor.getExecutable().getShellEscapedExecPathString() + " ${t} && ";
}
- AppleConfiguration appleConfiguration = ruleContext.getFragment(AppleConfiguration.class);
if (platform.isDevice()) {
- processingNeeded = true;
+ actionCommandLine += deviceSigningCommandLine();
+
registerEntitlementsActions();
- actionCommandLine += signingCommandLine();
- inputs.add(releaseBundling.getProvisioningProfile()).add(
- intermediateArtifacts.entitlements());
+ inputs.add(releaseBundling.getProvisioningProfile())
+ .add(intermediateArtifacts.entitlements());
+ } else {
+ actionCommandLine += simulatorSigningCommandLine();
}
actionCommandLine += "cd ${t} && /usr/bin/zip -q -r \"${signed_ipa}\" .";
- if (processingNeeded) {
- SpawnAction.Builder processAction =
- ObjcRuleClasses.spawnBashOnDarwinActionBuilder(actionCommandLine)
- .setEnvironment(
- ObjcRuleClasses.appleToolchainEnvironment(appleConfiguration, platform))
- .setMnemonic("ObjcProcessIpa")
- .setProgressMessage("Processing iOS IPA: " + ruleContext.getLabel())
- .disableSandboxing()
- .addTransitiveInputs(inputs.build())
- .addOutput(processedIpa);
+ AppleConfiguration appleConfiguration = ruleContext.getFragment(AppleConfiguration.class);
+ SpawnAction.Builder processAction =
+ ObjcRuleClasses.spawnBashOnDarwinActionBuilder(actionCommandLine)
+ .setEnvironment(ObjcRuleClasses.appleToolchainEnvironment(appleConfiguration, platform))
+ .setMnemonic("ObjcProcessIpa")
+ .setProgressMessage("Processing iOS IPA: " + ruleContext.getLabel())
+ .disableSandboxing()
+ .addTransitiveInputs(inputs.build())
+ .addOutput(processedIpa);
- if (processor != null) {
- processAction.addTool(processor);
- }
-
- ruleContext.registerAction(processAction.build(ruleContext));
- } else {
- ruleContext.registerAction(
- new SymlinkAction(
- ruleContext.getActionOwner(), unprocessedIpa, processedIpa, "Processing IPA"));
+ if (processor != null) {
+ processAction.addTool(processor);
}
+
+ ruleContext.registerAction(processAction.build(ruleContext));
}
- private String signingCommandLine() {
+ private String deviceSigningCommandLine() {
+ StringBuilder codesignCommandLineBuilder = new StringBuilder();
+ for (String dir : getDirsToSign()) {
+ codesignCommandLineBuilder.append(deviceCodesignCommand("${t}/" + dir)).append(" && ");
+ }
+ return codesignCommandLineBuilder.toString();
+ }
+
+ private String simulatorSigningCommandLine() {
+ StringBuilder codesignCommandLineBuilder = new StringBuilder();
+ for (String dir : getDirsToSign()) {
+ codesignCommandLineBuilder
+ .append("/usr/bin/codesign --force --sign \"-\" ${t}/")
+ .append(dir)
+ .append(" && ");
+ }
+ return codesignCommandLineBuilder.toString();
+ }
+
+ private ImmutableList<String> getDirsToSign() {
// The order here is important. The innermost code must singed first.
ImmutableList.Builder<String> dirsToSign = new ImmutableList.Builder<>();
String bundleDir = ShellUtils.shellEscape(bundling.getBundleDir());
@@ -505,11 +517,7 @@
}
dirsToSign.add(bundleDir);
- StringBuilder codesignCommandLineBuilder = new StringBuilder();
- for (String dir : dirsToSign.build()) {
- codesignCommandLineBuilder.append(codesignCommand("${t}/" + dir)).append(" && ");
- }
- return codesignCommandLineBuilder.toString();
+ return dirsToSign.build();
}
/**
@@ -1118,7 +1126,7 @@
return "security cms -D -i " + ShellUtils.shellEscape(provisioningProfile.getExecPathString());
}
- private String codesignCommand(String appDir) {
+ private String deviceCodesignCommand(String appDir) {
String signingCertName = ObjcRuleClasses.objcConfiguration(ruleContext).getSigningCertName();
Artifact entitlements = intermediateArtifacts.entitlements();