aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/ideinfo
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-02-12 18:56:02 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-02-15 09:19:10 +0000
commit500175fcfb37953f50cf0869df164902755807f2 (patch)
treea59b2bda11681e8674d551e235dea1b4655fe578 /src/main/java/com/google/devtools/build/lib/ideinfo
parentb0ee77a714511daf1a168a0bf90b096409872555 (diff)
Don't include absolute paths in blaze IDE artifacts
RELNOTES: Don't include absolute paths in blaze IDE artifacts -- MOS_MIGRATED_REVID=114550121
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/ideinfo')
-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();