mirror of
https://github.com/google/pebble.git
synced 2025-03-24 12:39:07 +00:00
50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
'''This file automatically rebuilds the proto definitions for Python.'''
|
|
from __future__ import absolute_import
|
|
|
|
import os.path
|
|
import sys
|
|
|
|
import pkg_resources
|
|
|
|
from ._utils import has_grpcio_protoc, invoke_protoc, print_versions
|
|
|
|
dirname = os.path.dirname(__file__)
|
|
protosrc = os.path.join(dirname, "nanopb.proto")
|
|
protodst = os.path.join(dirname, "nanopb_pb2.py")
|
|
rebuild = False
|
|
|
|
if os.path.isfile(protosrc):
|
|
src_date = os.path.getmtime(protosrc)
|
|
if not os.path.isfile(protodst) or os.path.getmtime(protodst) < src_date:
|
|
rebuild = True
|
|
|
|
if not rebuild:
|
|
try:
|
|
from . import nanopb_pb2
|
|
except AttributeError as e:
|
|
rebuild = True
|
|
sys.stderr.write("Failed to import nanopb_pb2.py: " + str(e) + "\n"
|
|
"Will automatically attempt to rebuild this.\n"
|
|
"Verify that python-protobuf and protoc versions match.\n")
|
|
print_versions()
|
|
|
|
if rebuild:
|
|
cmd = [
|
|
"protoc",
|
|
"--python_out={}".format(dirname),
|
|
protosrc,
|
|
"-I={}".format(dirname),
|
|
]
|
|
|
|
if has_grpcio_protoc():
|
|
# grpcio-tools has an extra CLI argument
|
|
# from grpc.tools.protoc __main__ invocation.
|
|
_builtin_proto_include = pkg_resources.resource_filename('grpc_tools', '_proto')
|
|
|
|
cmd.append("-I={}".format(_builtin_proto_include))
|
|
try:
|
|
invoke_protoc(argv=cmd)
|
|
except:
|
|
sys.stderr.write("Failed to build nanopb_pb2.py: " + ' '.join(cmd) + "\n")
|
|
raise
|
|
|