aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar Dmitry Shevchenko <dmishe@google.com>2016-05-19 21:26:17 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2016-05-20 14:41:12 +0000
commit1b3fae5306b763d776dca917a65141140ce44472 (patch)
tree07009d386ecfa5f544119eb7679e9a73be8bc9e4 /src/main/java/com/google/devtools/build/lib
parent450799466cef2737a313877395fa96df90e24707 (diff)
Propagate Apple Watch extensions dSYMs to parent ios_application.
-- MOS_MIGRATED_REVID=122769355
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleWatch1Extension.java50
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/WatchApplicationSupport.java15
2 files changed, 39 insertions, 26 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleWatch1Extension.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleWatch1Extension.java
index 4e9af0c0cd..5be91fa558 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleWatch1Extension.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleWatch1Extension.java
@@ -56,14 +56,19 @@ public class AppleWatch1Extension implements RuleConfiguredTargetFactory {
public ConfiguredTarget create(RuleContext ruleContext) throws InterruptedException {
ObjcProvider.Builder applicationObjcProviderBuilder = new ObjcProvider.Builder();
ObjcProvider.Builder extensionObjcProviderBuilder = new ObjcProvider.Builder();
+ ObjcProvider.Builder exposedObjcProviderBuilder = new ObjcProvider.Builder();
XcodeProvider.Builder applicationXcodeProviderBuilder = new XcodeProvider.Builder();
XcodeProvider.Builder extensionXcodeProviderBuilder = new XcodeProvider.Builder();
NestedSetBuilder<Artifact> applicationFilesToBuild = NestedSetBuilder.stableOrder();
NestedSetBuilder<Artifact> extensionfilesToBuild = NestedSetBuilder.stableOrder();
// 1. Build watch application bundle.
- createWatchApplicationBundle(ruleContext, applicationXcodeProviderBuilder,
- applicationObjcProviderBuilder, applicationFilesToBuild);
+ createWatchApplicationBundle(
+ ruleContext,
+ applicationXcodeProviderBuilder,
+ applicationObjcProviderBuilder,
+ applicationFilesToBuild,
+ exposedObjcProviderBuilder);
// 2. Build watch extension bundle.
createWatchExtensionBundle(ruleContext, extensionXcodeProviderBuilder,
@@ -80,7 +85,7 @@ public class AppleWatch1Extension implements RuleConfiguredTargetFactory {
InstrumentedFilesCollector.forward(ruleContext, "binary"));
// 4. Exposed {@ObjcProvider} for bundling into final IPA.
- exposeObjcProvider(ruleContext, targetBuilder);
+ exposeObjcProvider(ruleContext, targetBuilder, exposedObjcProviderBuilder);
return targetBuilder.build();
}
@@ -91,10 +96,11 @@ public class AppleWatch1Extension implements RuleConfiguredTargetFactory {
* 2. WatchKitSupport.
* 3. A flag to indicate that watch os 1 extension is included.
*/
- private void exposeObjcProvider(RuleContext ruleContext,
- RuleConfiguredTargetBuilder targetBuilder) throws InterruptedException {
- ObjcProvider.Builder exposedObjcProviderBuilder = new ObjcProvider.Builder();
-
+ private void exposeObjcProvider(
+ RuleContext ruleContext,
+ RuleConfiguredTargetBuilder targetBuilder,
+ ObjcProvider.Builder exposedObjcProviderBuilder)
+ throws InterruptedException {
exposedObjcProviderBuilder.add(MERGE_ZIP,
ruleContext.getImplicitOutputArtifact(ReleaseBundlingSupport.IPA));
WatchUtils.registerActionsToAddWatchSupport(ruleContext, exposedObjcProviderBuilder,
@@ -133,26 +139,30 @@ public class AppleWatch1Extension implements RuleConfiguredTargetFactory {
/**
* Creates a watch application bundle.
- *
* @param ruleContext rule context in which to create the bundle
* @param xcodeProviderBuilder {@link XcodeProvider.Builder} for the application
* @param objcProviderBuilder {@link ObjcProvider.Builder} for the application
* @param filesToBuild the list to contain the files to be built for this bundle
+ * @param exposedObjcProviderBuilder {@link ObjcProvider.Builder} exposed to the parent target
*/
- private void createWatchApplicationBundle(RuleContext ruleContext,
+ private void createWatchApplicationBundle(
+ RuleContext ruleContext,
XcodeProvider.Builder xcodeProviderBuilder,
ObjcProvider.Builder objcProviderBuilder,
- NestedSetBuilder<Artifact> filesToBuild) throws InterruptedException {
- new WatchApplicationSupport(ruleContext,
- WatchOSVersion.OS1,
- applicationDependencyAttributes,
- new IntermediateArtifacts(ruleContext, "",
- watchApplicationBundleName(ruleContext)),
- watchApplicationBundleName(ruleContext),
- watchApplicationIpaArtifact(ruleContext),
- watchApplicationBundleName(ruleContext),
- ConfigurationDistinguisher.WATCH_OS1_EXTENSION)
- .createBundle(xcodeProviderBuilder, objcProviderBuilder, filesToBuild);
+ NestedSetBuilder<Artifact> filesToBuild,
+ ObjcProvider.Builder exposedObjcProviderBuilder)
+ throws InterruptedException {
+ new WatchApplicationSupport(
+ ruleContext,
+ WatchOSVersion.OS1,
+ applicationDependencyAttributes,
+ new IntermediateArtifacts(ruleContext, "", watchApplicationBundleName(ruleContext)),
+ watchApplicationBundleName(ruleContext),
+ watchApplicationIpaArtifact(ruleContext),
+ watchApplicationBundleName(ruleContext),
+ ConfigurationDistinguisher.WATCH_OS1_EXTENSION)
+ .createBundle(
+ xcodeProviderBuilder, objcProviderBuilder, filesToBuild, exposedObjcProviderBuilder);
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/WatchApplicationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/WatchApplicationSupport.java
index 695a2ae2c0..a55c1a0537 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/WatchApplicationSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/WatchApplicationSupport.java
@@ -47,7 +47,6 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.rules.apple.AppleConfiguration;
import com.google.devtools.build.lib.rules.apple.AppleConfiguration.ConfigurationDistinguisher;
import com.google.devtools.build.lib.rules.apple.Platform;
-import com.google.devtools.build.lib.rules.objc.ObjcProvider.Builder;
import com.google.devtools.build.lib.rules.objc.ReleaseBundlingSupport.LinkedBinary;
import com.google.devtools.build.lib.rules.objc.WatchUtils.WatchOSVersion;
import com.google.devtools.build.lib.syntax.Type;
@@ -86,9 +85,12 @@ final class WatchApplicationSupport {
this.configurationDistinguisher = configurationDistinguisher;
}
- void createBundle(XcodeProvider.Builder xcodeProviderBuilder,
- ObjcProvider.Builder objcProviderBuilder, NestedSetBuilder<Artifact> filesToBuild)
- throws InterruptedException {
+ void createBundle(
+ XcodeProvider.Builder xcodeProviderBuilder,
+ ObjcProvider.Builder objcProviderBuilder,
+ NestedSetBuilder<Artifact> filesToBuild,
+ ObjcProvider.Builder exposedObjcProviderBuilder)
+ throws InterruptedException {
// Add common watch settings.
WatchUtils.addXcodeSettings(ruleContext, xcodeProviderBuilder);
@@ -129,7 +131,8 @@ final class WatchApplicationSupport {
.addXcodeSettings(xcodeProviderBuilder)
.addFilesToBuild(filesToBuild, DsymOutputType.APP)
.validateResources()
- .validateAttributes();
+ .validateAttributes()
+ .addExportedDebugArtifacts(exposedObjcProviderBuilder, DsymOutputType.APP);
XcodeSupport xcodeSupport = new XcodeSupport(ruleContext, intermediateArtifacts,
labelForWatchApplication())
@@ -212,7 +215,7 @@ final class WatchApplicationSupport {
.build(ruleContext));
}
- private ObjcProvider objcProvider(Builder objcProviderBuilder) {
+ private ObjcProvider objcProvider(ObjcProvider.Builder objcProviderBuilder) {
// Add all resource files applicable to watch application from dependency providers.
for (Attribute attribute : dependencyAttributes) {
Iterable<ObjcProvider> dependencyObjcProviders = ruleContext.getPrerequisites(