aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Lukacs Berki <lberki@google.com>2015-08-18 09:21:34 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-08-18 10:42:03 +0000
commitbf7785601076a71408813cd0bc6ec22166329eea (patch)
treec84f1fddf605e005e7892a29ee69baa17e2f3ec1 /src
parent48a75cb27af2873f85ca057c6998020e7e62b353 (diff)
Change the paths of a few temporary directories javac uses so that they don't clash with some Android artifacts.
Ideally, we'd simply put these in a temp directory, but we currently have no mechanism for cleaning up temp directories after each action and we don't have sandboxing yet, so we can't rely on that, either. -- MOS_MIGRATED_REVID=100907458
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/BaseJavaCompilationHelper.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java20
3 files changed, 18 insertions, 18 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/BaseJavaCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/BaseJavaCompilationHelper.java
index 6c6020ccb1..dcc5ee9fcd 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/BaseJavaCompilationHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/BaseJavaCompilationHelper.java
@@ -217,15 +217,21 @@ public class BaseJavaCompilationHelper {
return workDir(outputJar, "_temp");
}
+ protected PathFragment classDir(Artifact outputJar) {
+ return workDir(outputJar, "_classes");
+ }
+
/**
* For an output jar and a suffix, produces a derived directory under
* {@code bin} directory with a given suffix.
+ *
+ * <p>Note that this won't work if a rule produces two jars with the same basename.
*/
private PathFragment workDir(Artifact outputJar, String suffix) {
- PathFragment path = outputJar.getRootRelativePath();
- String basename = FileSystemUtils.removeExtension(path.getBaseName()) + suffix;
- path = path.replaceName(basename);
- return getConfiguration().getBinDirectory().getExecPath().getRelative(path);
+ String basename = FileSystemUtils.removeExtension(outputJar.getExecPath().getBaseName());
+ return getConfiguration().getBinDirectory().getExecPath()
+ .getRelative(ruleContext.getUniqueDirectory("_javac"))
+ .getRelative(basename + suffix);
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
index f321d357a6..d426d2bea6 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
@@ -131,6 +131,7 @@ public class JavaCompilationHelper extends BaseJavaCompilationHelper {
builder.setCompressJar(true);
builder.setSourceGenDirectory(sourceGenDir(outputJar));
builder.setTempDirectory(tempDir(outputJar));
+ builder.setClassDirectory(classDir(outputJar));
builder.addProcessorPaths(attributes.getProcessorPath());
builder.addProcessorNames(attributes.getProcessorNames());
builder.setStrictJavaDeps(attributes.getStrictJavaDeps());
@@ -316,6 +317,7 @@ public class JavaCompilationHelper extends BaseJavaCompilationHelper {
builder.addTranslations(getTranslations());
builder.setCompressJar(true);
builder.setTempDirectory(tempDir(resourceJar));
+ builder.setClassDirectory(classDir(resourceJar));
builder.setJavaBuilderJar(getJavaBuilderJar());
builder.setJavacOpts(getDefaultJavacOptsFromRule(getRuleContext()));
builder.setJavacJvmOpts(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
index 9e87fb67e6..0285031c7c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
@@ -58,7 +58,6 @@ import com.google.devtools.build.lib.syntax.Label;
import com.google.devtools.build.lib.util.Fingerprint;
import com.google.devtools.build.lib.util.ShellEscaper;
import com.google.devtools.build.lib.util.StringCanonicalizer;
-import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.ArrayList;
@@ -754,6 +753,7 @@ public class JavaCompileAction extends AbstractAction {
private ImmutableList<Artifact> instrumentationJars = ImmutableList.of();
private PathFragment sourceGenDirectory;
private PathFragment tempDirectory;
+ private PathFragment classDirectory;
private final List<Artifact> processorPath = new ArrayList<>();
private final List<String> processorNames = new ArrayList<>();
private String ruleKind;
@@ -843,8 +843,6 @@ public class JavaCompileAction extends AbstractAction {
gensrcOutputJar,
manifestProtoOutput,
outputDepsProto), Predicates.notNull()));
- PathFragment classDirectory =
- configuration.getBinFragment().getRelative(workDir(outputJar, "_files"));
CustomCommandLine.Builder paramFileContentsBuilder = javaCompileCommandLine(
semantics,
@@ -913,17 +911,6 @@ public class JavaCompileAction extends AbstractAction {
compileTimeDependencyArtifacts);
}
- /**
- * For an output jar and a suffix, produces a derived directory under
- * {@code bin} directory with a given suffix.
- */
- private PathFragment workDir(Artifact outputJar, String suffix) {
- PathFragment path = outputJar.getRootRelativePath();
- String basename = FileSystemUtils.removeExtension(path.getBaseName()) + suffix;
- path = path.replaceName(basename);
- return path;
- }
-
public Builder setParameterFile(Artifact paramFile) {
this.paramFile = paramFile;
return this;
@@ -1059,6 +1046,11 @@ public class JavaCompileAction extends AbstractAction {
return this;
}
+ public Builder setClassDirectory(PathFragment classDirectory) {
+ this.classDirectory = classDirectory;
+ return this;
+ }
+
public Builder addProcessorPaths(Collection<Artifact> processorPaths) {
this.processorPath.addAll(processorPaths);
return this;