From c9eb84311ab6281ac48ed6cbbe18544eecc9ec74 Mon Sep 17 00:00:00 2001 From: Peter Schmitt Date: Thu, 23 Apr 2015 13:21:02 +0000 Subject: Description redacted. -- MOS_MIGRATED_REVID=91881146 --- .../lib/rules/objc/BinaryLinkingTargetFactory.java | 5 +- .../lib/rules/objc/BundleMergeControlBytes.java | 2 +- .../build/lib/rules/objc/BundleSupport.java | 34 +++++-- .../devtools/build/lib/rules/objc/Bundling.java | 26 +---- .../lib/rules/objc/IntermediateArtifacts.java | 7 +- .../build/lib/rules/objc/IosApplication.java | 11 -- .../build/lib/rules/objc/IosApplicationRule.java | 2 +- .../build/lib/rules/objc/IosExtension.java | 79 +------------- .../build/lib/rules/objc/IosExtensionRule.java | 2 +- .../devtools/build/lib/rules/objc/IosTest.java | 3 +- .../build/lib/rules/objc/ObjcBundleLibrary.java | 4 +- .../lib/rules/objc/ObjcCommandLineOptions.java | 25 +---- .../build/lib/rules/objc/ObjcConfiguration.java | 19 +--- .../build/lib/rules/objc/ObjcProtoLibrary.java | 2 +- .../lib/rules/objc/ReleaseBundlingSupport.java | 113 +++++++-------------- .../rules/objc/ReleaseBundlingTargetFactory.java | 14 +-- .../devtools/build/lib/rules/objc/Xcdatamodel.java | 13 +++ .../build/lib/rules/objc/XcodeProvider.java | 32 ++---- .../build/lib/rules/objc/XcodeSupport.java | 26 +---- .../devtools/build/lib/rules/objc/XibFiles.java | 42 ++++++++ 20 files changed, 149 insertions(+), 312 deletions(-) create mode 100644 src/main/java/com/google/devtools/build/lib/rules/objc/XibFiles.java (limited to 'src') diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java b/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java index 7475baf6f2..0566525aac 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java @@ -90,12 +90,10 @@ abstract class BinaryLinkingTargetFactory implements RuleConfiguredTargetFactory Optional maybeRunfilesSupport = Optional.absent(); switch (hasReleaseBundlingSupport) { case YES: - ObjcConfiguration objcConfiguration = ObjcRuleClasses.objcConfiguration(ruleContext); // TODO(bazel-team): Remove once all bundle users are migrated to ios_application. ReleaseBundlingSupport releaseBundlingSupport = new ReleaseBundlingSupport( ruleContext, objcProvider, optionsProvider, - LinkedBinary.LOCAL_AND_DEPENDENCIES, ReleaseBundlingSupport.APP_BUNDLE_DIR_FORMAT, - objcConfiguration.getMinimumOs()); + LinkedBinary.LOCAL_AND_DEPENDENCIES, ReleaseBundlingSupport.APP_BUNDLE_DIR_FORMAT); releaseBundlingSupport .registerActions() .addXcodeSettings(xcodeProviderBuilder) @@ -103,6 +101,7 @@ abstract class BinaryLinkingTargetFactory implements RuleConfiguredTargetFactory .validateResources() .validateAttributes(); + ObjcConfiguration objcConfiguration = ObjcRuleClasses.objcConfiguration(ruleContext); xcTestAppProvider = Optional.of(releaseBundlingSupport.xcTestAppProvider()); if (objcConfiguration.getBundlingPlatform() == Platform.SIMULATOR) { Artifact runnerScript = intermediateArtifacts.runnerScript(); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/BundleMergeControlBytes.java b/src/main/java/com/google/devtools/build/lib/rules/objc/BundleMergeControlBytes.java index a90e23b8e6..d0be20c12e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/BundleMergeControlBytes.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/BundleMergeControlBytes.java @@ -67,7 +67,7 @@ final class BundleMergeControlBytes extends ByteSource { .addAllSourcePlistFile(Artifact.toExecPaths( bundling.getInfoplistMerging().getPlistWithEverything().asSet())) // TODO(bazel-team): Add rule attribute for specifying targeted device family - .setMinimumOsVersion(bundling.getMinimumOsVersion()) + .setMinimumOsVersion(objcConfiguration.getMinimumOs()) .setSdkVersion(objcConfiguration.getIosSdkVersion()) .setPlatform(objcConfiguration.getBundlingPlatform().name()) .setBundleRoot(bundling.getBundleDir()); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/BundleSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/BundleSupport.java index 4b586c1e6a..8d51f5752d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/BundleSupport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/BundleSupport.java @@ -20,6 +20,7 @@ import static com.google.devtools.build.lib.rules.objc.ObjcProvider.XCASSETS_DIR import com.google.common.base.Optional; import com.google.common.base.Verify; +import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.FilesToRunProvider; import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; @@ -191,6 +192,8 @@ final class BundleSupport { private void registerInterfaceBuilderActions(ObjcProvider objcProvider) { IntermediateArtifacts intermediateArtifacts = ObjcRuleClasses.intermediateArtifacts(ruleContext); + ObjcConfiguration objcConfiguration = ObjcRuleClasses.objcConfiguration(ruleContext); + String minimumOs = objcConfiguration.getMinimumOs(); for (Artifact storyboardInput : objcProvider.get(ObjcProvider.STORYBOARD)) { String archiveRoot = BundleableFile.flatBundlePath(storyboardInput.getExecPath()) + "c"; Artifact zipOutput = intermediateArtifacts.compiledStoryboardZip(storyboardInput); @@ -205,7 +208,7 @@ final class BundleSupport { .add(archiveRoot) .addPath(ObjcActionsBuilder.IBTOOL) - .add("--minimum-deployment-target").add(bundling.getMinimumOsVersion()) + .add("--minimum-deployment-target").add(minimumOs) .addPath(storyboardInput.getExecPath()) .build()) .addOutput(zipOutput) @@ -231,21 +234,25 @@ final class BundleSupport { .addPath(outputZip.getExecPath()) .add(datamodel.archiveRootForMomczip()) .add(IosSdkCommands.MOMC_PATH) - - .add("-XD_MOMC_SDKROOT=" + IosSdkCommands.sdkDir(objcConfiguration)) - .add("-XD_MOMC_IOS_TARGET_VERSION=" + bundling.getMinimumOsVersion()) - .add("-MOMC_PLATFORMS") - .add(objcConfiguration.getBundlingPlatform().getLowerCaseNameInPlist()) - .add("-XD_MOMC_TARGET_VERSION=10.6") + .add(commonMomczipArguments(objcConfiguration)) .add(datamodel.getContainer().getSafePathString()) .build()) .build(ruleContext)); } } + static Iterable commonMomczipArguments(ObjcConfiguration configuration) { + return ImmutableList.of( + "-XD_MOMC_SDKROOT=" + IosSdkCommands.sdkDir(configuration), + "-XD_MOMC_IOS_TARGET_VERSION=" + configuration.getMinimumOs(), + "-MOMC_PLATFORMS", configuration.getBundlingPlatform().getLowerCaseNameInPlist(), + "-XD_MOMC_TARGET_VERSION=10.6"); + } + private void registerConvertXibsActions(ObjcProvider objcProvider) { IntermediateArtifacts intermediateArtifacts = ObjcRuleClasses.intermediateArtifacts(ruleContext); + ObjcConfiguration objcConfiguration = ObjcRuleClasses.objcConfiguration(ruleContext); for (Artifact original : objcProvider.get(ObjcProvider.XIB)) { Artifact zipOutput = intermediateArtifacts.compiledXibFileZip(original); String archiveRoot = BundleableFile.flatBundlePath( @@ -260,7 +267,7 @@ final class BundleSupport { .add(archiveRoot) .addPath(ObjcActionsBuilder.IBTOOL) - .add("--minimum-deployment-target").add(bundling.getMinimumOsVersion()) + .add("--minimum-deployment-target").add(objcConfiguration.getMinimumOs()) .addPath(original.getExecPath()) .build()) .addOutput(zipOutput) @@ -287,6 +294,15 @@ final class BundleSupport { } } + /** + * Validates any rule attributes and dependencies related to this bundle. + * + * @return this bundle support + */ + BundleSupport validateAttributes() { + return this; + } + private void registerMergeInfoplistAction() { // TODO(bazel-team): Move action implementation from InfoplistMerging to this class. ruleContext.registerAction(bundling.getInfoplistMerging().getMergeAction()); @@ -332,7 +348,7 @@ final class BundleSupport { .add("--platform").add(objcConfiguration.getBundlingPlatform().getLowerCaseNameInPlist()) .addExecPath("--output-partial-info-plist", partialInfoPlist) - .add("--minimum-deployment-target").add(bundling.getMinimumOsVersion()); + .add("--minimum-deployment-target").add(objcConfiguration.getMinimumOs()); for (TargetDeviceFamily targetDeviceFamily : targetDeviceFamilies) { commandLine.add("--target-device").add(targetDeviceFamily.name().toLowerCase(Locale.US)); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/Bundling.java b/src/main/java/com/google/devtools/build/lib/rules/objc/Bundling.java index 1ddc16a749..8b5edfdabb 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/Bundling.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/Bundling.java @@ -28,6 +28,7 @@ import static com.google.devtools.build.lib.rules.objc.ObjcProvider.XIB; import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableList.Builder; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import com.google.devtools.build.lib.actions.Artifact; @@ -56,7 +57,6 @@ final class Bundling { private String primaryBundleId; private String fallbackBundleId; private String architecture; - private String minimumOsVersion; public Builder setName(String name) { this.name = name; @@ -107,15 +107,6 @@ final class Bundling { return this; } - /** - * Sets the minimum OS version for this bundle which will be used when constructing the bundle's - * plist. - */ - public Builder setMinimumOsVersion(String minimumOsVersion) { - this.minimumOsVersion = minimumOsVersion; - return this; - } - private static NestedSet nestedBundleContentArtifacts(Iterable bundles) { NestedSetBuilder artifacts = NestedSetBuilder.stableOrder(); for (Bundling bundle : bundles) { @@ -184,7 +175,7 @@ final class Bundling { return new Bundling(name, bundleDirFormat, combinedArchitectureBinary, extraBundleFiles, objcProvider, infoplistMerging, actoolzipOutput, bundleContentArtifactsBuilder.build(), - mergeZips, primaryBundleId, fallbackBundleId, architecture, minimumOsVersion); + mergeZips, primaryBundleId, fallbackBundleId, architecture); } } @@ -200,7 +191,6 @@ final class Bundling { private final NestedSet mergeZips; private final String primaryBundleId; private final String fallbackBundleId; - private final String minimumOsVersion; private Bundling( String name, @@ -214,8 +204,7 @@ final class Bundling { NestedSet mergeZips, String primaryBundleId, String fallbackBundleId, - String architecture, - String minimumOsVersion) { + String architecture) { this.name = Preconditions.checkNotNull(name); this.bundleDirFormat = Preconditions.checkNotNull(bundleDirFormat); this.combinedArchitectureBinary = Preconditions.checkNotNull(combinedArchitectureBinary); @@ -228,7 +217,6 @@ final class Bundling { this.fallbackBundleId = fallbackBundleId; this.primaryBundleId = primaryBundleId; this.architecture = Preconditions.checkNotNull(architecture); - this.minimumOsVersion = Preconditions.checkNotNull(minimumOsVersion); } /** @@ -340,12 +328,4 @@ final class Bundling { public String getArchitecture() { return architecture; } - - /** - * Returns the minimum iOS version this bundle's plist and resources should be generated for - * (does not affect the minimum OS version its binary is compiled with). - */ - public String getMinimumOsVersion() { - return minimumOsVersion; - } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java index ee1a3edf88..d852bb49cd 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java @@ -43,7 +43,7 @@ final class IntermediateArtifacts { private final String archiveFileNameSuffix; /** - * Label to scope the output paths of generated artifacts, in addition to {@link #ownerLabel}. + * Label to scope the output paths of generated artifacts, in addition to {@link ownerLabel}. */ private final Optional