Browse Source

Make protobuf Skylark extension appends the workspace root

This change make protobuf skylark extension works when using
remote repository.

Note that this make the Skylark extension unusable prior
to Bazel 0.1.4 because the workspace_root is not available
on prior version.

Tested with Bazel 0.1.4rc2.

Fixes https://github.com/bazelbuild/bazel/issues/784.
Damien Martin-Guillerez 9 năm trước cách đây
mục cha
commit
76547e5190
1 tập tin đã thay đổi với 10 bổ sung6 xóa
  1. 10 6
      protobuf.bzl

+ 10 - 6
protobuf.bzl

@@ -1,13 +1,19 @@
 # -*- mode: python; -*- PYTHON-PREPROCESSING-REQUIRED
 # -*- mode: python; -*- PYTHON-PREPROCESSING-REQUIRED
 
 
+def _GetPath(ctx, path):
+  if ctx.label.workspace_root:
+    return ctx.label.workspace_root + '/' + path
+  else:
+    return path
+
 def _GenDir(ctx):
 def _GenDir(ctx):
   if not ctx.attr.includes:
   if not ctx.attr.includes:
-    return ""
+    return ctx.label.workspace_root
   if not ctx.attr.includes[0]:
   if not ctx.attr.includes[0]:
-    return ctx.label.package
+    return _GetPath(ctx, ctx.label.package)
   if not ctx.label.package:
   if not ctx.label.package:
-    return ctx.attr.includes[0]
-  return ctx.label.package + '/' + ctx.attr.includes[0]
+    return _GetPath(ctx, ctx.attr.includes[0])
+  return _GetPath(ctx, ctx.label.package + '/' + ctx.attr.includes[0])
 
 
 def _CcOuts(srcs):
 def _CcOuts(srcs):
   return [s[:-len(".proto")] +  ".pb.h" for s in srcs] + \
   return [s[:-len(".proto")] +  ".pb.h" for s in srcs] + \
@@ -36,8 +42,6 @@ def _RelativeOutputPath(path, include):
 
 
   return path[len(PACKAGE_NAME)+1:]
   return path[len(PACKAGE_NAME)+1:]
 
 
-
-
 def _proto_gen_impl(ctx):
 def _proto_gen_impl(ctx):
   """General implementation for generating protos"""
   """General implementation for generating protos"""
   srcs = ctx.files.srcs
   srcs = ctx.files.srcs