WatchOS1 watch apps no longer bundle at the top level as well as the extension level.

--
MOS_MIGRATED_REVID=139839573
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 aae8f94..f91b8ce 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 @@
       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 a5b5992..e6b4ebf 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 @@
 
   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 d988343..5973d0e 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.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 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 @@
 
   WatchExtensionSupport(
       RuleContext ruleContext,
-      WatchOSVersion watchOSVersion,
       ImmutableSet<Attribute> dependencyAttributes,
       IntermediateArtifacts intermediateArtifacts,
       String bundleName,
@@ -83,33 +80,26 @@
       @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();
+
+    WatchUtils.addXcodeSettings(ruleContext, xcodeProviderBuilder);
 
     registerWatchExtensionAutomaticPlistAction();
 
-    ObjcProvider objcProvider = objcProvider(objcProviderBuilder);
-
     ImmutableSet<TargetDeviceFamily> families = attributes.families();
 
     if (families.isEmpty()) {
@@ -138,7 +128,7 @@
     ReleaseBundlingSupport releaseBundlingSupport =
         new ReleaseBundlingSupport(
             ruleContext,
-            objcProvider,
+            releaseBundlingObjcProvider,
             LinkedBinary.DEPENDENCIES_ONLY,
             ReleaseBundlingSupport.EXTENSION_BUNDLE_DIR_FORMAT,
             bundleName,
@@ -148,41 +138,36 @@
             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);
+        .addExportedDebugArtifacts(exposedObjcProviderBuilder, 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);
+    XcodeSupport xcodeSupport =
+        new XcodeSupport(ruleContext)
+            .addFilesToBuild(filesToBuild)
+            .addXcodeSettings(
+                xcodeProviderBuilder,
+                releaseBundlingObjcProvider,
+                WatchOSVersion.OS1.getExtensionXcodeProductType(),
+                ruleContext
+                    .getFragment(AppleConfiguration.class)
+                    .getDependencySingleArchitecture(),
+                configurationDistinguisher)
+            .addDummySource(xcodeProviderBuilder);
 
-      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());
+    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 @@
         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())