diff options
author | Googler <noreply@google.com> | 2016-02-12 18:56:02 +0000 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2016-02-15 09:19:10 +0000 |
commit | 500175fcfb37953f50cf0869df164902755807f2 (patch) | |
tree | a59b2bda11681e8674d551e235dea1b4655fe578 /src/main/java/com/google/devtools/build/lib/ideinfo | |
parent | b0ee77a714511daf1a168a0bf90b096409872555 (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.java | 46 |
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(); |