aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/objc
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-04-22 22:18:30 +0000
committerGravatar Yun Peng <pcloudy@google.com>2016-04-25 09:09:49 +0000
commit49acce8a027252585d61e2c82f7298acad9da77a (patch)
treec3cf4311f05cbb7123daa9b266c99d0be3d12373 /src/main/java/com/google/devtools/build/lib/rules/objc
parent8dba2b22f684a2fdbacce6d4c3c1fb593e897069 (diff)
Always output entitlements plist in the XML format
Adding --extra_entitlements flag to a build triggers a merge of entitlements files using plmerge tool. Configure build rules to output the resulting plist file in the XML format. Bundles signed with entitlements in the binary format fail to load on device. -- MOS_MIGRATED_REVID=120588271
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/PlMergeControlBytes.java37
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java2
2 files changed, 34 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/PlMergeControlBytes.java b/src/main/java/com/google/devtools/build/lib/rules/objc/PlMergeControlBytes.java
index 548f6b6d04..fc0450582c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/PlMergeControlBytes.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/PlMergeControlBytes.java
@@ -14,6 +14,7 @@
package com.google.devtools.build.lib.rules.objc;
+import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableMap;
import com.google.common.io.ByteSource;
import com.google.devtools.build.lib.actions.Artifact;
@@ -41,6 +42,7 @@ public final class PlMergeControlBytes extends ByteSource {
@Nullable private final Map<String, String> variableSubstitutions;
@Nullable private final String executableName;
private final Artifact mergedPlist;
+ private final OutputFormat outputFormat;
/**
* Creates a control based on the passed bundling's plists and values.
@@ -64,13 +66,17 @@ public final class PlMergeControlBytes extends ByteSource {
bundling.getFallbackBundleId(),
bundling.variableSubstitutions(),
bundling.getName(),
- mergedPlist);
+ mergedPlist,
+ OutputFormat.BINARY);
}
/**
* Creates a control that merges the given plists into the merged plist.
*/
- static PlMergeControlBytes fromPlists(NestedSet<Artifact> inputPlists, Artifact mergedPlist) {
+ static PlMergeControlBytes fromPlists(
+ NestedSet<Artifact> inputPlists,
+ Artifact mergedPlist,
+ OutputFormat outputFormat) {
return new PlMergeControlBytes(
inputPlists,
NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
@@ -78,7 +84,8 @@ public final class PlMergeControlBytes extends ByteSource {
null,
ImmutableMap.<String, String>of(),
null,
- mergedPlist);
+ mergedPlist,
+ outputFormat);
}
private PlMergeControlBytes(
@@ -88,7 +95,8 @@ public final class PlMergeControlBytes extends ByteSource {
@Nullable String fallbackBundleId,
@Nullable Map<String, String> variableSubstitutions,
@Nullable String executableName,
- Artifact mergedPlist) {
+ Artifact mergedPlist,
+ OutputFormat outputFormat) {
this.inputPlists = inputPlists;
this.immutableInputPlists = immutableInputPlists;
this.primaryBundleId = primaryBundleId;
@@ -96,6 +104,7 @@ public final class PlMergeControlBytes extends ByteSource {
this.variableSubstitutions = variableSubstitutions;
this.executableName = executableName;
this.mergedPlist = mergedPlist;
+ this.outputFormat = Preconditions.checkNotNull(outputFormat);
}
@Override
@@ -123,6 +132,26 @@ public final class PlMergeControlBytes extends ByteSource {
control.setExecutableName(executableName);
}
+ control.setOutputFormat(outputFormat.getProtoOutputFormat());
+
return control.build();
}
+
+ /**
+ * Plist output formats.
+ */
+ public enum OutputFormat {
+ BINARY(Control.OutputFormat.BINARY),
+ XML(Control.OutputFormat.XML);
+
+ private final Control.OutputFormat protoOutputFormat;
+
+ private OutputFormat(Control.OutputFormat protoOutputFormat) {
+ this.protoOutputFormat = protoOutputFormat;
+ }
+
+ Control.OutputFormat getProtoOutputFormat() {
+ return protoOutputFormat;
+ }
+ }
}
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 69ad78fc9e..8068f3a522 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
@@ -549,7 +549,7 @@ public final class ReleaseBundlingSupport {
PlMergeControlBytes controlBytes =
PlMergeControlBytes.fromPlists(
NestedSetBuilder.create(Order.STABLE_ORDER, substitutedEntitlements, extraEntitlements),
- intermediateArtifacts.entitlements());
+ intermediateArtifacts.entitlements(), PlMergeControlBytes.OutputFormat.XML);
Artifact plMergeControlArtifact = ObjcRuleClasses.artifactByAppendingToBaseName(ruleContext,
artifactName(".merge-entitlements-control"));