From 3f80c72b6744abe9d4139c90e475a6123b1a38e2 Mon Sep 17 00:00:00 2001 From: Googler Date: Tue, 16 Feb 2016 15:25:28 +0000 Subject: 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 --- .../build/lib/ideinfo/AndroidStudioInfoAspect.java | 46 +++++++++++++++++++--- 1 file changed, 41 insertions(+), 5 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java') 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 toSerializedArtifactLocations(Iterable artifacts) { + return Iterables.transform( + Iterables.filter(artifacts, Artifact.MIDDLEMAN_FILTER), + PACKAGE_PARSER_SERIALIZER); + } + + private static final Function PACKAGE_PARSER_SERIALIZER = + new Function() { + @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(); -- cgit v1.2.3