2017-10-05 2 views
1

rules_protobuf을 사용하여 helloworld.proto 파일에 대한 Python 언어 바인딩을 작성합니다. 내 helloworld.proto 수입품은 wrappers.proto입니다. wrappers.proto 파일이 디렉토리Bazel에서 WORKSPACE 루트 가져 오기 BUILD

/usr/local/home/username/myproject/include 

Bazel 규칙 py_proto_compile에 위치한

load("@org_pubref_rules_protobuf//python:rules.bzl", "py_proto_compile") 

# Wrapper around proto_compile. 
# https://github.com/pubref/rules_protobuf/blob/master/protobuf/internal/proto_compile.bzl 

py_proto_compile(
    name = "py", 
    with_grpc = True, 
    protos = ["helloworld.proto"], 
    imports = ["/usr/local/home/username/myproject/include"] 
) 

syntax = "proto3"; 

package main; 

import "google/protobuf/wrappers.proto"; 

내 빌드 파일 rules_protobufdocumented in the README.md에 의해 정의된다. imports는 다음과 같이 정의된다 :

  • 이름 :imports
  • 유형 : string_list`
  • 설명 : 선택적 경로가 protoc 도구 -I 인수로 전달합니다.

    imports = ["/usr/local/home/username/myproject/include"]

    Bazel 어떤이 표시되지 않습니다

    내 BUILD 규칙[]

은, 그러나 내가 함께 wrappers.proto의 위치를 ​​하드 코딩 한 작품 : 기본
  • 내 작업 공간 루트를 참조하는 predefined Make variables. 이상적으로, 나는 같은 것을 할 싶습니다

    imports = ["$WORKSPACE_ROOT"/include"]

  • 답변

    1

    NEW UPDATE : 또한 그 일을 좀 더 정교한 방법이

    . 체크 아웃 this. 그것이 말하는 어디 라인에서보세요 :

    # Grab a reference to the root of the users project project_dir = ctx.path(ctx.attr.file_in_project).dirname

    OLD 답변 :

    당신은 현재 작업 디렉토리 ( 디렉토리가 WORKSPACE를 포함하는 경로를 얻을 수 __workspace_dir__을 사용할 수 있습니다 파일).

    출처 : https://github.com/tensorflow/serving/blob/4d0a571ff9c15b937f58d3d5e97a5310b5decf2b/tensorflow_serving/workspace.bzl

    관련 문제