diff options
author | 2015-08-18 09:21:34 +0000 | |
---|---|---|
committer | 2015-08-18 10:42:03 +0000 | |
commit | bf7785601076a71408813cd0bc6ec22166329eea (patch) | |
tree | c84f1fddf605e005e7892a29ee69baa17e2f3ec1 /src | |
parent | 48a75cb27af2873f85ca057c6998020e7e62b353 (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')
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; |