diff options
author | 2016-05-02 20:48:47 +0000 | |
---|---|---|
committer | 2016-05-03 08:38:12 +0000 | |
commit | a7fea8a1467a89adde75e67bc99bf0e040f71fe9 (patch) | |
tree | 46dc3f2c71c5ceafd2c781ec6028142620d130fb /src/main/java | |
parent | 81a1605ac079e0570ba5747346360dafbb3907ea (diff) |
Set workspace name for http_file, http_jar, and maven_jar
Fixes #1166.
While I was here, I also:
* Renamed the implementations of Decompressor to show that they are
Decompressors, not SkyFunctions (they used to be, it's confusing to have them
still have the -Function suffix).
* Added a unit test and moved the testing target to the rule/repository
subdirectory, since it was a good chance to break off a tiny chunk of the
monolithic BUILD file in lib/.
--
MOS_MIGRATED_REVID=121306165
Diffstat (limited to 'src/main/java')
11 files changed, 22 insertions, 29 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/DecompressorValue.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/DecompressorValue.java index 0d5ee8fc09..9343bbd459 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/repository/DecompressorValue.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/DecompressorValue.java @@ -41,15 +41,8 @@ public class DecompressorValue implements SkyValue { @Override public boolean equals(Object other) { - if (this == other) { - return true; - } - - if (!(other instanceof DecompressorValue)) { - return false; - } - - return directory.equals(((DecompressorValue) other).directory); + return this == other || other instanceof DecompressorValue + && directory.equals(((DecompressorValue) other).directory); } @Override diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/FileFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/FileDecompressor.java index 0392e2de79..9031d4ba54 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/repository/FileFunction.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/FileDecompressor.java @@ -20,10 +20,10 @@ import com.google.devtools.build.lib.bazel.repository.DecompressorValue.Decompre /** * Creates a repository for a random file. */ -public class FileFunction extends JarFunction { - public static final Decompressor INSTANCE = new FileFunction(); +public class FileDecompressor extends JarDecompressor { + public static final Decompressor INSTANCE = new FileDecompressor(); - private FileFunction() { + private FileDecompressor() { } @Override diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/HttpFileFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/HttpFileFunction.java index bd5b733da1..25216ed2c2 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/repository/HttpFileFunction.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/HttpFileFunction.java @@ -32,7 +32,7 @@ public class HttpFileFunction extends HttpArchiveFunction { boolean executable = (mapper.has("executable", Type.BOOLEAN) && mapper.get("executable", Type.BOOLEAN)); return DecompressorDescriptor.builder() - .setDecompressor(FileFunction.INSTANCE) + .setDecompressor(FileDecompressor.INSTANCE) .setTargetKind(rule.getTargetKind()) .setTargetName(rule.getName()) .setArchivePath(downloadPath) diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/HttpJarFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/HttpJarFunction.java index 42331586cc..a09ee1c8d0 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/repository/HttpJarFunction.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/HttpJarFunction.java @@ -27,7 +27,7 @@ public class HttpJarFunction extends HttpArchiveFunction { protected DecompressorDescriptor getDescriptor(Rule rule, Path downloadPath, Path outputDirectory) throws RepositoryFunctionException { return DecompressorDescriptor.builder() - .setDecompressor(JarFunction.INSTANCE) + .setDecompressor(JarDecompressor.INSTANCE) .setTargetKind(rule.getTargetKind()) .setTargetName(rule.getName()) .setArchivePath(downloadPath) diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/JarFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/JarDecompressor.java index 048c507168..cfd7aefed8 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/repository/JarFunction.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/JarDecompressor.java @@ -16,6 +16,7 @@ package com.google.devtools.build.lib.bazel.repository; import com.google.common.base.Joiner; import com.google.devtools.build.lib.bazel.repository.DecompressorValue.Decompressor; +import com.google.devtools.build.lib.rules.repository.RepositoryFunction; import com.google.devtools.build.lib.rules.repository.RepositoryFunction.RepositoryFunctionException; import com.google.devtools.build.lib.vfs.FileSystemUtils; import com.google.devtools.build.lib.vfs.Path; @@ -29,10 +30,10 @@ import javax.annotation.Nullable; /** * Creates a repository for a jar file. */ -public class JarFunction implements Decompressor { - public static final Decompressor INSTANCE = new JarFunction(); +public class JarDecompressor implements Decompressor { + public static final Decompressor INSTANCE = new JarDecompressor(); - protected JarFunction() { + protected JarDecompressor() { } /** @@ -50,10 +51,8 @@ public class JarFunction implements Decompressor { try { FileSystemUtils.createDirectoryAndParents(descriptor.repositoryPath()); // external/some-name/WORKSPACE. - Path workspaceFile = descriptor.repositoryPath().getRelative("WORKSPACE"); - FileSystemUtils.writeContent(workspaceFile, Charset.forName("UTF-8"), String.format( - "# DO NOT EDIT: automatically generated WORKSPACE file for %s rule %s\n", - descriptor.targetKind(), descriptor.targetName())); + RepositoryFunction.createWorkspaceFile( + descriptor.repositoryPath(), descriptor.targetKind(), descriptor.targetName()); // external/some-name/jar. Path jarDirectory = descriptor.repositoryPath().getRelative(getPackageName()); FileSystemUtils.createDirectoryAndParents(jarDirectory); diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/MavenJarFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/MavenJarFunction.java index f3dbb06a0b..c8a826f0cc 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/repository/MavenJarFunction.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/MavenJarFunction.java @@ -139,7 +139,7 @@ public class MavenJarFunction extends HttpArchiveFunction { // Add a WORKSPACE file & BUILD file to the Maven jar. Path result = DecompressorValue.decompress(DecompressorDescriptor.builder() - .setDecompressor(JarFunction.INSTANCE) + .setDecompressor(JarDecompressor.INSTANCE) .setTargetKind(MavenJarRule.NAME) .setTargetName(downloader.getName()) .setArchivePath(repositoryJar) diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/NewGitRepositoryFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/NewGitRepositoryFunction.java index 96f2b2bd78..2bf1f18e5d 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/repository/NewGitRepositoryFunction.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/NewGitRepositoryFunction.java @@ -39,7 +39,7 @@ public class NewGitRepositoryFunction extends GitRepositoryFunction { createDirectory(outputDirectory, rule); GitCloner.clone(rule, outputDirectory, env.getListener()); - createWorkspaceFile(outputDirectory, rule); + createWorkspaceFile(outputDirectory, rule.getTargetKind(), rule.getName()); buildFileHandler.finishBuildFile(outputDirectory); return RepositoryDirectoryValue.create(outputDirectory); diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/NewHttpArchiveFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/NewHttpArchiveFunction.java index 815e41d9a2..71e34f6380 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/repository/NewHttpArchiveFunction.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/NewHttpArchiveFunction.java @@ -75,7 +75,7 @@ public class NewHttpArchiveFunction extends HttpArchiveFunction { .build()); // Finally, write WORKSPACE and BUILD files. - createWorkspaceFile(decompressed, rule); + createWorkspaceFile(decompressed, rule.getTargetKind(), rule.getName()); buildFileHandler.finishBuildFile(outputDirectory); return RepositoryDirectoryValue.create(outputDirectory); diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryFunction.java index 397b01393a..08015a220e 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryFunction.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryFunction.java @@ -140,7 +140,7 @@ public class SkylarkRepositoryFunction extends RepositoryFunction { } if (!outputDirectory.getRelative("WORKSPACE").exists()) { - createWorkspaceFile(outputDirectory, rule); + createWorkspaceFile(outputDirectory, rule.getTargetKind(), rule.getName()); } return RepositoryDirectoryValue.create(outputDirectory); diff --git a/src/main/java/com/google/devtools/build/lib/rules/repository/NewLocalRepositoryFunction.java b/src/main/java/com/google/devtools/build/lib/rules/repository/NewLocalRepositoryFunction.java index 66942f390d..eb77b57211 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/repository/NewLocalRepositoryFunction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/repository/NewLocalRepositoryFunction.java @@ -91,7 +91,7 @@ public class NewLocalRepositoryFunction extends RepositoryFunction { throw new RepositoryFunctionException(e, SkyFunctionException.Transience.TRANSIENT); } } - createWorkspaceFile(outputDirectory, rule); + createWorkspaceFile(outputDirectory, rule.getTargetKind(), rule.getName()); return RepositoryDirectoryValue.createWithSourceDirectory(outputDirectory, directoryValue); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryFunction.java b/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryFunction.java index d9c0b0b697..d3f5982fb1 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryFunction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryFunction.java @@ -175,17 +175,18 @@ public abstract class RepositoryFunction { } // Add x/WORKSPACE. - createWorkspaceFile(repositoryDirectory, rule); + createWorkspaceFile(repositoryDirectory, rule.getTargetKind(), rule.getName()); return repositoryDirectory; } - protected void createWorkspaceFile(Path repositoryDirectory, Rule rule) + public static void createWorkspaceFile( + Path repositoryDirectory, String ruleKind, String ruleName) throws RepositoryFunctionException { try { Path workspaceFile = repositoryDirectory.getRelative("WORKSPACE"); FileSystemUtils.writeContent(workspaceFile, Charset.forName("UTF-8"), String.format("# DO NOT EDIT: automatically generated WORKSPACE file for %s\n" - + "workspace(name = \"%s\")", rule, rule.getName())); + + "workspace(name = \"%s\")\n", ruleKind, ruleName)); } catch (IOException e) { throw new RepositoryFunctionException(e, Transience.TRANSIENT); } |