diff options
author | 2016-05-19 21:26:17 +0000 | |
---|---|---|
committer | 2016-05-20 14:41:12 +0000 | |
commit | 1b3fae5306b763d776dca917a65141140ce44472 (patch) | |
tree | 07009d386ecfa5f544119eb7679e9a73be8bc9e4 /src/main/java/com/google/devtools/build/lib | |
parent | 450799466cef2737a313877395fa96df90e24707 (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.java | 50 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/objc/WatchApplicationSupport.java | 15 |
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( |