diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java | 74 |
1 files changed, 33 insertions, 41 deletions
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 eb96e5fd15..f3b8d351bc 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,6 +436,7 @@ public final class ReleaseBundlingSupport { Artifact processedIpa = releaseBundling.getIpaArtifact(); Artifact unprocessedIpa = intermediateArtifacts.unprocessedIpa(); + boolean processingNeeded = false; NestedSetBuilder<Artifact> inputs = NestedSetBuilder.<Artifact>stableOrder().add(unprocessedIpa); @@ -453,58 +454,45 @@ public final class ReleaseBundlingSupport { FilesToRunProvider processor = attributes.ipaPostProcessor(); if (processor != null) { + processingNeeded = true; actionCommandLine += processor.getExecutable().getShellEscapedExecPathString() + " ${t} && "; } + AppleConfiguration appleConfiguration = ruleContext.getFragment(AppleConfiguration.class); if (platform.isDevice()) { - actionCommandLine += deviceSigningCommandLine(); - + processingNeeded = true; registerEntitlementsActions(); - inputs.add(releaseBundling.getProvisioningProfile()) - .add(intermediateArtifacts.entitlements()); - } else { - actionCommandLine += simulatorSigningCommandLine(); + actionCommandLine += signingCommandLine(); + inputs.add(releaseBundling.getProvisioningProfile()).add( + intermediateArtifacts.entitlements()); } actionCommandLine += "cd ${t} && /usr/bin/zip -q -r \"${signed_ipa}\" ."; - 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)); - } - - private String deviceSigningCommandLine() { - StringBuilder codesignCommandLineBuilder = new StringBuilder(); - for (String dir : getDirsToSign()) { - codesignCommandLineBuilder.append(deviceCodesignCommand("${t}/" + dir)).append(" && "); - } - return codesignCommandLineBuilder.toString(); - } + 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); + + if (processor != null) { + processAction.addTool(processor); + } - private String simulatorSigningCommandLine() { - StringBuilder codesignCommandLineBuilder = new StringBuilder(); - for (String dir : getDirsToSign()) { - codesignCommandLineBuilder - .append("/usr/bin/codesign --force --sign \"-\" ${t}/") - .append(dir) - .append(" && "); + ruleContext.registerAction(processAction.build(ruleContext)); + } else { + ruleContext.registerAction( + new SymlinkAction( + ruleContext.getActionOwner(), unprocessedIpa, processedIpa, "Processing IPA")); } - return codesignCommandLineBuilder.toString(); } - private ImmutableList<String> getDirsToSign() { + private String signingCommandLine() { // The order here is important. The innermost code must singed first. ImmutableList.Builder<String> dirsToSign = new ImmutableList.Builder<>(); String bundleDir = ShellUtils.shellEscape(bundling.getBundleDir()); @@ -517,7 +505,11 @@ public final class ReleaseBundlingSupport { } dirsToSign.add(bundleDir); - return dirsToSign.build(); + StringBuilder codesignCommandLineBuilder = new StringBuilder(); + for (String dir : dirsToSign.build()) { + codesignCommandLineBuilder.append(codesignCommand("${t}/" + dir)).append(" && "); + } + return codesignCommandLineBuilder.toString(); } /** @@ -1126,7 +1118,7 @@ public final class ReleaseBundlingSupport { return "security cms -D -i " + ShellUtils.shellEscape(provisioningProfile.getExecPathString()); } - private String deviceCodesignCommand(String appDir) { + private String codesignCommand(String appDir) { String signingCertName = ObjcRuleClasses.objcConfiguration(ruleContext).getSigningCertName(); Artifact entitlements = intermediateArtifacts.entitlements(); |