aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java
diff options
context:
space:
mode:
authorGravatar Chris Parsons <cparsons@google.com>2016-11-21 23:28:51 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2016-11-22 14:14:58 +0000
commitbaeff7fe2b192afb13c7a8b7bb40ee406c946ba7 (patch)
treeacbfc7dce99526406bac69e494c439af43866a2d /src/main/java
parentbe1390eaf91b4278d00657141536aef01dbea42c (diff)
WatchOS1 watch apps no longer bundle at the top level as well as the extension level.
-- MOS_MIGRATED_REVID=139839573
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleWatch1Extension.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/WatchApplicationSupport.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/WatchExtensionSupport.java88
3 files changed, 39 insertions, 54 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 aae8f949f8..f91b8ced5f 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
@@ -123,7 +123,6 @@ public class AppleWatch1Extension implements RuleConfiguredTargetFactory {
ObjcProvider.Builder objcProviderBuilder,
NestedSetBuilder<Artifact> filesToBuild) throws InterruptedException {
new WatchExtensionSupport(ruleContext,
- WatchOSVersion.OS1,
extensionDependencyAttributes,
ObjcRuleClasses.intermediateArtifacts(ruleContext),
watchExtensionBundleName(ruleContext),
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 a5b5992b9e..e6b4ebf15e 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
@@ -297,7 +297,9 @@ final class WatchApplicationSupport {
private ObjcProvider objcProvider(Iterable<Artifact> innerBundleZips) {
ObjcProvider.Builder objcProviderBuilder = new ObjcProvider.Builder();
- objcProviderBuilder.addAll(MERGE_ZIP, innerBundleZips);
+ if (watchOSVersion != WatchOSVersion.OS1) {
+ objcProviderBuilder.addAll(MERGE_ZIP, innerBundleZips);
+ }
// Add all resource files applicable to watch application from dependency providers.
for (Attribute attribute : dependencyAttributes) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/WatchExtensionSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/WatchExtensionSupport.java
index d988343f44..5973d0eb06 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/WatchExtensionSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/WatchExtensionSupport.java
@@ -45,7 +45,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.PlatformType;
-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.TargetDeviceFamily.InvalidFamilyNameException;
import com.google.devtools.build.lib.rules.objc.TargetDeviceFamily.RepeatedFamilyNameException;
@@ -55,14 +54,13 @@ import java.util.List;
import javax.annotation.Nullable;
/**
- * Contains support methods to build watch extension bundle - does normal bundle processing -
+ * Contains support methods to build WatchOS1 extension bundles - does normal bundle processing -
* compiling and linking the binary, resources, plists and creates a final
* (signed if necessary) bundle.
*/
public class WatchExtensionSupport {
private final RuleContext ruleContext;
- private final WatchOSVersion watchOSVersion;
private final ImmutableSet<Attribute> dependencyAttributes;
private final IntermediateArtifacts intermediateArtifacts;
private final String bundleName;
@@ -74,7 +72,6 @@ public class WatchExtensionSupport {
WatchExtensionSupport(
RuleContext ruleContext,
- WatchOSVersion watchOSVersion,
ImmutableSet<Attribute> dependencyAttributes,
IntermediateArtifacts intermediateArtifacts,
String bundleName,
@@ -83,32 +80,25 @@ public class WatchExtensionSupport {
@Nullable XcodeProvider watchApplicationXcodeProvider,
ConfigurationDistinguisher configurationDistinguisher) {
this.ruleContext = ruleContext;
- this.watchOSVersion = watchOSVersion;
this.dependencyAttributes = dependencyAttributes;
this.intermediateArtifacts = intermediateArtifacts;
this.bundleName = bundleName;
this.ipaArtifact = ipaArtifact;
this.attributes = new Attributes(ruleContext);
- if (WatchUtils.isBuildingForWatchOS1Version(watchOSVersion)) {
- checkNotNull(watchApplicationXcodeProvider);
- checkNotNull(watchApplicationBundle);
- }
- this.watchApplicationXcodeProvider = watchApplicationXcodeProvider;
- this.watchApplicationBundle = watchApplicationBundle;
+ this.watchApplicationXcodeProvider = checkNotNull(watchApplicationXcodeProvider);
+ this.watchApplicationBundle = checkNotNull(watchApplicationBundle);
this.configurationDistinguisher = configurationDistinguisher;
}
void createBundle(NestedSetBuilder<Artifact> filesToBuild,
- ObjcProvider.Builder objcProviderBuilder, XcodeProvider.Builder xcodeProviderBuilder)
+ ObjcProvider.Builder exposedObjcProviderBuilder, XcodeProvider.Builder xcodeProviderBuilder)
throws InterruptedException {
- if (WatchUtils.isBuildingForWatchOS1Version(watchOSVersion)) {
- WatchUtils.addXcodeSettings(ruleContext, xcodeProviderBuilder);
- }
+ ObjcProvider releaseBundlingObjcProvider = releaseBundlingObjcProvider();
- registerWatchExtensionAutomaticPlistAction();
+ WatchUtils.addXcodeSettings(ruleContext, xcodeProviderBuilder);
- ObjcProvider objcProvider = objcProvider(objcProviderBuilder);
+ registerWatchExtensionAutomaticPlistAction();
ImmutableSet<TargetDeviceFamily> families = attributes.families();
@@ -138,7 +128,7 @@ public class WatchExtensionSupport {
ReleaseBundlingSupport releaseBundlingSupport =
new ReleaseBundlingSupport(
ruleContext,
- objcProvider,
+ releaseBundlingObjcProvider,
LinkedBinary.DEPENDENCIES_ONLY,
ReleaseBundlingSupport.EXTENSION_BUNDLE_DIR_FORMAT,
bundleName,
@@ -148,41 +138,36 @@ public class WatchExtensionSupport {
appleConfiguration.getMultiArchPlatform(PlatformType.IOS));
releaseBundlingSupport.registerActions(DsymOutputType.APP);
-
- if (WatchUtils.isBuildingForWatchOS1Version(watchOSVersion)) {
- releaseBundlingSupport.addXcodeSettings(xcodeProviderBuilder);
- }
+ releaseBundlingSupport.addXcodeSettings(xcodeProviderBuilder);
releaseBundlingSupport
.addFilesToBuild(filesToBuild, Optional.of(DsymOutputType.APP))
.validateResources()
.validateAttributes()
- .addExportedDebugArtifacts(objcProviderBuilder, DsymOutputType.APP);
-
- if (WatchUtils.isBuildingForWatchOS1Version(watchOSVersion)) {
- XcodeSupport xcodeSupport =
- new XcodeSupport(ruleContext)
- .addFilesToBuild(filesToBuild)
- .addXcodeSettings(
- xcodeProviderBuilder,
- objcProvider,
- watchOSVersion.getExtensionXcodeProductType(),
- ruleContext
- .getFragment(AppleConfiguration.class)
- .getDependencySingleArchitecture(),
- configurationDistinguisher)
- .addDummySource(xcodeProviderBuilder);
-
- for (Attribute attribute : dependencyAttributes) {
- xcodeSupport.addDependencies(xcodeProviderBuilder, attribute);
- }
+ .addExportedDebugArtifacts(exposedObjcProviderBuilder, DsymOutputType.APP);
+
+ XcodeSupport xcodeSupport =
+ new XcodeSupport(ruleContext)
+ .addFilesToBuild(filesToBuild)
+ .addXcodeSettings(
+ xcodeProviderBuilder,
+ releaseBundlingObjcProvider,
+ WatchOSVersion.OS1.getExtensionXcodeProductType(),
+ ruleContext
+ .getFragment(AppleConfiguration.class)
+ .getDependencySingleArchitecture(),
+ configurationDistinguisher)
+ .addDummySource(xcodeProviderBuilder);
- // Generate xcodeproj for watch OS 1 extension as the main target with watch application
- // target as the dependency.
- xcodeProviderBuilder.addPropagatedDependencies(
- ImmutableList.of(watchApplicationXcodeProvider));
- xcodeSupport.registerActions(xcodeProviderBuilder.build());
+ for (Attribute attribute : dependencyAttributes) {
+ xcodeSupport.addDependencies(xcodeProviderBuilder, attribute);
}
+
+ // Generate xcodeproj for watch OS 1 extension as the main target with watch application
+ // target as the dependency.
+ xcodeProviderBuilder.addPropagatedDependencies(
+ ImmutableList.of(watchApplicationXcodeProvider));
+ xcodeSupport.registerActions(xcodeProviderBuilder.build());
}
/**
@@ -208,19 +193,18 @@ public class WatchExtensionSupport {
ruleContext.getUniqueDirectory("plists"), "-automatic-watchExtensionInfo.plist");
}
- private ObjcProvider objcProvider(Builder objcProviderBuilder) {
+ private ObjcProvider releaseBundlingObjcProvider() {
+ ObjcProvider.Builder objcProviderBuilder = new ObjcProvider.Builder();
// Add dependency providers.
for (Attribute attribute : dependencyAttributes) {
objcProviderBuilder.addTransitiveAndPropagate(
ruleContext.getPrerequisites(
attribute.getName(), attribute.getAccessMode(), ObjcProvider.class));
- }
-
- if (WatchUtils.isBuildingForWatchOS1Version(watchOSVersion)) {
- // Expose the generated watch application bundle to the extension bundle.
- objcProviderBuilder.add(MERGE_ZIP, watchApplicationBundle);
}
+ // Expose the generated watch application bundle to the extension bundle.
+ objcProviderBuilder.add(MERGE_ZIP, watchApplicationBundle);
+
// Add resource files.
objcProviderBuilder.addAll(GENERAL_RESOURCE_FILE, attributes.resources())
.addAll(GENERAL_RESOURCE_FILE, attributes.strings())