diff options
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()) |