X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=generator%2Fnanopb_generator.py;h=6ccb96f9bd243b5a5b82a0c22ee5ba9c64f9187c;hb=435ccbfdf7e48cfd809c41049d9edf4d6c267566;hp=0002409bf6c02af281e62fc56fe45cf31af8c69f;hpb=356535da9bd79252e5365a6e5648b7fcd28b367c;p=apps%2Fagl-service-can-low-level.git diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py index 0002409b..6ccb96f9 100755 --- a/generator/nanopb_generator.py +++ b/generator/nanopb_generator.py @@ -3,34 +3,40 @@ '''Generate header file for nanopb from a ProtoBuf FileDescriptorSet.''' nanopb_version = "nanopb-0.2.5-dev" +import sys + +try: + # Add some dummy imports to keep packaging tools happy. + import google, distutils.util # bbfreeze seems to need these + import pkg_resources # pyinstaller / protobuf 2.5 seem to need these +except: + # Don't care, we will error out later if it is actually important. + pass + try: - import google.protobuf.descriptor_pb2 as descriptor import google.protobuf.text_format as text_format except: - print - print "*************************************************************" - print "*** Could not import the Google protobuf Python libraries ***" - print "*** Try installing package 'python-protobuf' or similar. ***" - print "*************************************************************" - print + sys.stderr.write(''' + ************************************************************* + *** Could not import the Google protobuf Python libraries *** + *** Try installing package 'python-protobuf' or similar. *** + ************************************************************* + ''' + '\n') raise try: import proto.nanopb_pb2 as nanopb_pb2 + import proto.descriptor_pb2 as descriptor except: - print - print "***************************************************************" - print "*** Could not import the precompiled nanopb_pb2.py. ***" - print "*** Run 'make' in the 'generator' folder to update the file.***" - print "***************************************************************" - print + sys.stderr.write(''' + ******************************************************************** + *** Failed to import the protocol definitions for generator. *** + *** You have to run 'make' in the nanopb/generator/proto folder. *** + ******************************************************************** + ''' + '\n') raise - - - - # --------------------------------------------------------------------------- # Generation of single fields # --------------------------------------------------------------------------- @@ -1025,6 +1031,13 @@ def main_cli(): def main_plugin(): '''Main function when invoked as a protoc plugin.''' + import sys + if sys.platform == "win32": + import os, msvcrt + # Set stdin and stdout to binary mode + msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY) + msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) + import proto.plugin_pb2 as plugin_pb2 data = sys.stdin.read() request = plugin_pb2.CodeGeneratorRequest.FromString(data) @@ -1057,7 +1070,7 @@ def main_plugin(): if __name__ == '__main__': # Check if we are running as a plugin under protoc - if 'protoc-gen-' in sys.argv[0]: + if 'protoc-gen-' in sys.argv[0] or '--protoc-plugin' in sys.argv: main_plugin() else: main_cli()