proto_library: Pass exec path to protoc. Fixes #2265

When passing the paths of the proto files to protoc we need to use the exec
path in order to also have correct paths for generated files.

Change-Id: Id85b959829a0b159d30814314af631a90a4bd296
PiperOrigin-RevId: 154272610
diff --git a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilder.java
index 7ed003b..d0d4db0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilder.java
@@ -586,7 +586,7 @@
     }
 
     for (Artifact src : protosToCompile) {
-      cmdLine.addPath(src.getRootRelativePath());
+      cmdLine.addPath(src.getExecPath());
     }
 
     if (!allowServices) {
diff --git a/src/test/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilderTest.java b/src/test/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilderTest.java
index 72dc9c3..0f6d3f5 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilderTest.java
@@ -106,6 +106,30 @@
   }
 
   @Test
+  public void commandline_derivedArtifact() {
+    // Verify that the command line contains the correct path to a generated protocol buffers.
+    SupportData supportData =
+        SupportData.create(
+            Predicates.<TransitiveInfoCollection>alwaysFalse(),
+            ImmutableList.of(derivedArtifact("//:dont-care", "source_file.proto")),
+            NestedSetBuilder.<Artifact>emptySet(STABLE_ORDER) /* protosInDirectDeps */,
+            NestedSetBuilder.<Artifact>emptySet(STABLE_ORDER) /* transitiveImports */,
+            true /* hasProtoSources */);
+
+    CustomCommandLine cmdLine =
+        createCommandLineFromToolchains(
+            ImmutableList.<ToolchainInvocation>of() /* toolchainInvocations */,
+            supportData.getDirectProtoSources(),
+            supportData.getTransitiveImports(),
+            null /* protosInDirectDeps */,
+            "//foo:bar",
+            true /* allowServices */,
+            ImmutableList.<String>of() /* protocOpts */);
+
+    assertThat(cmdLine.arguments()).containsExactly("out/source_file.proto");
+  }
+
+  @Test
   public void commandLine_strictDeps() throws Exception {
     ProtoLangToolchainProvider toolchain =
         ProtoLangToolchainProvider.create(