aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar Daniel Wagner-Hall <danielwh@google.com>2015-03-17 19:19:25 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2015-03-18 13:45:04 +0000
commit6683d645ff3a1f3aedc4b7d559b9fbe4d7bcafc4 (patch)
tree2a8623d1b5967e4e32d68cff4bad0430ef2293e9 /src/main/java/com/google/devtools
parent412ef48f76d74b475fae9b35fd77452039f74af7 (diff)
Split actoolzip and ibtoolzip into separate binaries
Have actoolzip abs-ify the partial info plist path because otherwise it picks seemingly random directories to which to output the info plist files. -- MOS_MIGRATED_REVID=88851706
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcActionsBuilder.java42
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ResourceSupport.java32
3 files changed, 55 insertions, 33 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcActionsBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcActionsBuilder.java
index aa9ce3d9b3..ecd2d84837 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcActionsBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcActionsBuilder.java
@@ -105,7 +105,7 @@ final class ObjcActionsBuilder {
// TODO(bazel-team): Reference a rule target rather than a jar file when Darwin runfiles work
// better.
- private static SpawnAction.Builder spawnJavaOnDarwinActionBuilder(Artifact deployJarArtifact) {
+ static SpawnAction.Builder spawnJavaOnDarwinActionBuilder(Artifact deployJarArtifact) {
return spawnOnDarwinActionBuilder()
.setExecutable(JAVA)
.addExecutableArguments("-jar", deployJarArtifact.getExecPathString())
@@ -300,24 +300,6 @@ final class ObjcActionsBuilder {
return result.build();
}
- private Action[] ibtoolzipAction(ObjcRuleClasses.Tools baseTools, String mnemonic, Artifact input,
- Artifact zipOutput, String archiveRoot) {
- return spawnJavaOnDarwinActionBuilder(baseTools.actooloribtoolzipDeployJar())
- .setMnemonic(mnemonic)
- .setCommandLine(new CustomCommandLine.Builder()
- // The next three arguments are positional, i.e. they don't have flags before them.
- .addPath(zipOutput.getExecPath())
- .add(archiveRoot)
- .addPath(IBTOOL)
-
- .add("--minimum-deployment-target").add(objcConfiguration.getMinimumOs())
- .addPath(input.getExecPath())
- .build())
- .addOutput(zipOutput)
- .addInput(input)
- .build(context);
- }
-
/**
* Creates actions to convert all files specified by the xibs attribute into nib format.
*/
@@ -327,7 +309,20 @@ final class ObjcActionsBuilder {
Artifact zipOutput = intermediateArtifacts.compiledXibFileZip(original);
String archiveRoot = BundleableFile.flatBundlePath(
FileSystemUtils.replaceExtension(original.getExecPath(), ".nib"));
- result.add(ibtoolzipAction(baseTools, "XibCompile", original, zipOutput, archiveRoot));
+ result.add(spawnJavaOnDarwinActionBuilder(baseTools.ibtoolzipDeployJar())
+ .setMnemonic("XibCompile")
+ .setCommandLine(new CustomCommandLine.Builder()
+ // The next three arguments are positional, i.e. they don't have flags before them.
+ .addPath(zipOutput.getExecPath())
+ .add(archiveRoot)
+ .addPath(IBTOOL)
+
+ .add("--minimum-deployment-target").add(objcConfiguration.getMinimumOs())
+ .addPath(original.getExecPath())
+ .build())
+ .addOutput(zipOutput)
+ .addInput(original)
+ .build(context));
}
return result.build();
}
@@ -363,7 +358,7 @@ final class ObjcActionsBuilder {
// Note that below we set the archive root to the empty string. This means that the generated
// zip file will be rooted at the bundle root, and we have to prepend the bundle root to each
// entry when merging it with the final .ipa file.
- register(spawnJavaOnDarwinActionBuilder(tools.actooloribtoolzipDeployJar())
+ register(spawnJavaOnDarwinActionBuilder(tools.actoolzipDeployJar())
.setMnemonic("AssetCatalogCompile")
.addTransitiveInputs(provider.get(ASSET_CATALOG))
.addOutput(zipOutput)
@@ -408,11 +403,6 @@ final class ObjcActionsBuilder {
};
}
- void registerIbtoolzipAction(ObjcRuleClasses.Tools tools, Artifact input, Artifact outputZip) {
- String archiveRoot = BundleableFile.flatBundlePath(input.getExecPath()) + "c";
- register(ibtoolzipAction(tools, "StoryboardCompile", input, outputZip, archiveRoot));
- }
-
@VisibleForTesting
static Iterable<String> commonMomczipArguments(ObjcConfiguration configuration) {
return ImmutableList.of(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
index 3aa70e51eb..4bcaf3a077 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
@@ -403,8 +403,10 @@ public class ObjcRuleClasses {
return builder
.add(attr("$plmerge", LABEL).cfg(HOST).exec()
.value(env.getLabel("//tools/objc:plmerge")))
- .add(attr("$actooloribtoolzip_deploy", LABEL).cfg(HOST)
- .value(env.getLabel("//tools/objc:actooloribtoolzip_deploy.jar")))
+ .add(attr("$actoolzip_deploy", LABEL).cfg(HOST)
+ .value(env.getLabel("//tools/objc:actoolzip_deploy.jar")))
+ .add(attr("$ibtoolzip_deploy", LABEL).cfg(HOST)
+ .value(env.getLabel("//tools/objc:ibtoolzip_deploy.jar")))
.build();
}
}
@@ -850,8 +852,12 @@ public class ObjcRuleClasses {
this.ruleContext = Preconditions.checkNotNull(ruleContext);
}
- Artifact actooloribtoolzipDeployJar() {
- return ruleContext.getPrerequisiteArtifact("$actooloribtoolzip_deploy", Mode.HOST);
+ Artifact actoolzipDeployJar() {
+ return ruleContext.getPrerequisiteArtifact("$actoolzip_deploy", Mode.HOST);
+ }
+
+ Artifact ibtoolzipDeployJar() {
+ return ruleContext.getPrerequisiteArtifact("$ibtoolzip_deploy", Mode.HOST);
}
Artifact momczipDeployJar() {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ResourceSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ResourceSupport.java
index d1a717c165..4a279d2a72 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ResourceSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ResourceSupport.java
@@ -18,6 +18,7 @@ import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.RuleContext;
+import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
/**
* Support for resource processing on Objc rules.
@@ -57,11 +58,36 @@ final class ResourceSupport {
CompiledResourceFile.fromStringsFiles(intermediateArtifacts, attributes.strings())),
new XibFiles(attributes.xibs()),
datamodels);
+
+ registerInterfaceBuilderActions(storyboards, tools);
+ return this;
+ }
+
+ private void registerInterfaceBuilderActions(
+ Storyboards storyboards, ObjcRuleClasses.Tools tools) {
for (Artifact storyboardInput : storyboards.getInputs()) {
- actionsBuilder.registerIbtoolzipAction(
- tools, storyboardInput, intermediateArtifacts.compiledStoryboardZip(storyboardInput));
+ String archiveRoot = BundleableFile.flatBundlePath(storyboardInput.getExecPath()) + "c";
+ Artifact zipOutput = intermediateArtifacts.compiledStoryboardZip(storyboardInput);
+
+ String minimumOs =
+ ruleContext.getConfiguration().getFragment(ObjcConfiguration.class).getMinimumOs();
+ ruleContext.registerAction(
+ ObjcActionsBuilder.spawnJavaOnDarwinActionBuilder(tools.ibtoolzipDeployJar())
+ .setMnemonic("StoryboardCompile")
+ .setCommandLine(new CustomCommandLine.Builder()
+ // The next three arguments are positional,
+ // i.e. they don't have flags before them.
+ .addPath(zipOutput.getExecPath())
+ .add(archiveRoot)
+ .addPath(ObjcActionsBuilder.IBTOOL)
+
+ .add("--minimum-deployment-target").add(minimumOs)
+ .addPath(storyboardInput.getExecPath())
+ .build())
+ .addOutput(zipOutput)
+ .addInput(storyboardInput)
+ .build(ruleContext));
}
- return this;
}
/**