Skip to main content

Lua protocol buffer code generator

Project description

lua-protobuf provides a Lua interface to Google's Protocol Buffers.

Producing Code

lua-protobuf provides a plugin for the protoc protocol buffer compiler (it ships with protocol buffers). This plugin tells protoc to produce a set of C++ output files, which define the Lua interface to protocol buffers using the Lua C API.

First, obtain a copy of lua-protobuf:

$ git clone git@github.com:indygreg/lua-protobuf.git
$ cd lua-protobuf

Next, install lua-protobuf:

$ python setup.py install

Yes, lua-protobuf is written in Python (for now at least).

Finally, launch protoc and tell it to produce Lua output:

$ protoc -I/path/to/your/proto/files --lua_out=/output/path file1.proto file2.proto

You simply need to add --lua_out to the arguments to protoc to get it to produce the Lua output files.

Under the hood, protoc is looking for the program protoc-gen-lua somewhere in your $PATH. You can modify $PATH in lieux of installing the package, if you desire.

Missing plugin_pb2 Python Module

The protocol buffers Python installer does not install a file required by protoc-gen-lua at this time. The missing file is the Python interface to the compiler plugin plugin.proto. The protoc-gen-lua Python script may fail when importing the google.protobuf.compiler.plugin_pb2 module.

A thread on the protocol buffers mailing list discusses the issue.

At this time, the issue can be worked around by manually installing the missing file.

Assuming you have a working protoc compiler on your system and have the existing Python protocol buffers package installed, from the protocol buffers source code directory, run the following:

$ protoc -Isrc --python_out=/path/to/output/directory src/google/protobuf/compiler/plugin.proto

The command should produce no output if successful. Additionally, the file /path/to/output/directory/google/protobuf/compiler/plugin_pb2.py should have been created.

Next, find the location of the installed protocol buffer Python package. If you have locate, try finding it via locate descriptor_pb2.py. A common location is something like /usr/lib/python2.6/site-packages/protobuf-2.3.0-py2.6.egg/google/protobuf/. Navigate to this directory and:

$ mkdir compiler
$ touch compiler/__init__.py
$ cp /path/to/plugin_pb2.py compiler/plugin_pb2.py

In common English:

  1. Create a new directory, from the install root, google/protobuf/compiler
  2. Create an empty file, __init__.py in this directory. This tells Python that the directory contains Python modules.
  3. Copy the plugin_pb2.py file produced by protoc to this new directory.

Depending on the installed location of protocol buffers, these actions may require superuser or administrator privileges.

Compiling Produced Files

You should be able to compile the produced .h and .cc files like you would for protocol buffer output files. If you have an existing Makefile, project, etc, just add the produced .h and .cc files to it.

For linking, you'll need to include whatever library contains Lua. On *NIX toolchains, this typically corresponds to the linker flag -llua or -llua5.1.

The produced C++ code contains extern "C" { } blocks around all code that utilizes Lua API function calls to avoid C++ name mangling.

Windows

Windows requires an identifier for symbols to be exported from shared libraries. If compiling the lua-protobuf output to a shared library, you'll need to use a preprocessor define:

#define LUA_PROTOBUF_EXPORT __declspec(dllexport)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lua-protobuf-1.0.1.tar.gz (14.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lua_protobuf-1.0.1-py3-none-any.whl (18.3 kB view details)

Uploaded Python 3

File details

Details for the file lua-protobuf-1.0.1.tar.gz.

File metadata

  • Download URL: lua-protobuf-1.0.1.tar.gz
  • Upload date:
  • Size: 14.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for lua-protobuf-1.0.1.tar.gz
Algorithm Hash digest
SHA256 b4cf42348f631db46088748aaf6ebf2f4c664cdb7f17bf97b8ddd75af044e046
MD5 339af793964f8e9a2095d4542bbb023b
BLAKE2b-256 51c59400bf4aa01b7ee35bf54e1e837070a3119e68cea97c8bc12c16d1d5028b

See more details on using hashes here.

File details

Details for the file lua_protobuf-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: lua_protobuf-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 18.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for lua_protobuf-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a07f0bba3ff280740d84cfd59d96514fd0ef04c591a7f0658d998f05cdd96b69
MD5 76c30ed8c172fbb4659251fdc47842e3
BLAKE2b-256 33c040772ce74baa5b484ccc9c7ed4ca6ad0bba90b6f95350be9887e08d8973f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page