aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-02-16 15:25:28 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-02-16 15:59:29 +0000
commit3f80c72b6744abe9d4139c90e475a6123b1a38e2 (patch)
tree02c8a8366d4f50518c4e7ec85dded196f64543d1 /src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
parent257337638463d01bcf627c60de42861d775fefec (diff)
Roll forward of commit 500175fcfb37953f50cf0869df164902755807f2: Don't include absolute paths in blaze IDE
artifacts NEW: Fixed bazel java_test rules Rollback of commit a4ba24e286b7e9a7a09e333d8eb64a8cf7e81895. *** Reason for rollback *** Rollforward, fixing bazel java_test rules *** Original change description *** Automated [] rollback of commit 500175fcfb37953f50cf0869df164902755807f2. *** Reason for rollback *** Breaks Bazel Build http://ci.bazel.io/job/Bazel/JAVA_VERSION=1.7,PLATFORM_NAME=linux-x86_64/356/console *** Original change description *** Don't include absolute paths in blaze IDE artifacts RELNOTES: Don't include absolute paths in blaze IDE artifacts -- MOS_MIGRATED_REVID=114751236
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java46
1 files changed, 41 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
index f6d4856374..472bef60f9 100644
--- a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
@@ -20,8 +20,10 @@ import static com.google.devtools.build.lib.packages.Attribute.attr;
import static com.google.devtools.build.lib.packages.BuildType.LABEL;
import com.google.common.base.Function;
+import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.io.ByteSource;
import com.google.devtools.build.lib.Constants;
@@ -56,6 +58,7 @@ import com.google.devtools.build.lib.ideinfo.androidstudio.AndroidStudioIdeInfo.
import com.google.devtools.build.lib.packages.AspectDefinition;
import com.google.devtools.build.lib.packages.AspectParameters;
import com.google.devtools.build.lib.packages.BuildType;
+import com.google.devtools.build.lib.packages.Package;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.rules.android.AndroidCommon;
import com.google.devtools.build.lib.rules.android.AndroidIdeInfoProvider;
@@ -303,6 +306,9 @@ public class AndroidStudioInfoAspect implements ConfiguredNativeAspectFactory {
.getPath()
.toString());
+ outputBuilder.setBuildFileArtifactLocation(
+ makeArtifactLocation(ruleContext.getRule().getPackage()));
+
outputBuilder.setKind(ruleKind);
if (ruleKind == Kind.JAVA_LIBRARY
@@ -373,8 +379,7 @@ public class AndroidStudioInfoAspect implements ConfiguredNativeAspectFactory {
.setExecutable(ruleContext.getExecutablePrerequisite("$packageParser", Mode.HOST))
.setCommandLine(CustomCommandLine.builder()
.addExecPath("--output_manifest", packageManifest)
- .addJoinStrings("--sources_absolute_paths", ":", Artifact.toAbsolutePaths(sourceFiles))
- .addJoinExecPaths("--sources_execution_paths", ":", sourceFiles)
+ .addJoinStrings("--sources", ":", toSerializedArtifactLocations(sourceFiles))
.build())
.useParameterFile(ParameterFileType.SHELL_QUOTED)
.setProgressMessage("Parsing java package strings for " + ruleContext.getRule())
@@ -382,6 +387,25 @@ public class AndroidStudioInfoAspect implements ConfiguredNativeAspectFactory {
.build(ruleContext);
}
+ private static Iterable<String> toSerializedArtifactLocations(Iterable<Artifact> artifacts) {
+ return Iterables.transform(
+ Iterables.filter(artifacts, Artifact.MIDDLEMAN_FILTER),
+ PACKAGE_PARSER_SERIALIZER);
+ }
+
+ private static final Function<Artifact, String> PACKAGE_PARSER_SERIALIZER =
+ new Function<Artifact, String>() {
+ @Override
+ public String apply(Artifact artifact) {
+ ArtifactLocation location = makeArtifactLocation(artifact);
+ return Joiner.on(",").join(
+ location.getRootExecutionPathFragment(),
+ location.getRelativePath(),
+ location.getRootPath()
+ );
+ }
+ };
+
private static Artifact derivedArtifact(ConfiguredTarget base, RuleContext ruleContext,
String suffix) {
BuildConfiguration configuration = ruleContext.getConfiguration();
@@ -471,16 +495,28 @@ public class AndroidStudioInfoAspect implements ConfiguredNativeAspectFactory {
}
private static ArtifactLocation makeArtifactLocation(Artifact artifact) {
+ return makeArtifactLocation(artifact.getRoot(), artifact.getRootRelativePath());
+ }
+
+ private static ArtifactLocation makeArtifactLocation(Package pkg) {
+ Root root = Root.asSourceRoot(pkg.getSourceRoot());
+ PathFragment relativePath = pkg.getBuildFile().getPath().relativeTo(root.getPath());
+ return makeArtifactLocation(root, relativePath);
+ }
+
+ private static ArtifactLocation makeArtifactLocation(Root root, PathFragment relativePath) {
return ArtifactLocation.newBuilder()
- .setRootPath(artifact.getRoot().getPath().toString())
- .setRelativePath(artifact.getRootRelativePathString())
- .setIsSource(artifact.isSourceArtifact())
+ .setRootPath(root.getPath().toString())
+ .setRootExecutionPathFragment(root.getExecPath().toString())
+ .setRelativePath(relativePath.toString())
+ .setIsSource(root.isSourceRoot())
.build();
}
private static ArtifactLocation makeArtifactLocation(SourceDirectory resourceDir) {
return ArtifactLocation.newBuilder()
.setRootPath(resourceDir.getRootPath().toString())
+ .setRootExecutionPathFragment(resourceDir.getRootExecutionPathFragment().toString())
.setRelativePath(resourceDir.getRelativePath().toString())
.setIsSource(resourceDir.isSource())
.build();