Add build script for windows package

This commit is contained in:
Petteri Aimonen
2013-11-17 17:37:29 +02:00
parent 8c2dda67a1
commit ec517e2108
3 changed files with 46 additions and 19 deletions

View File

@@ -4,7 +4,7 @@
nanopb_version = "nanopb-0.2.5-dev"
try:
import google.protobuf.descriptor_pb2 as descriptor
import google, distutils.util # bbfreeze seems to need these
import google.protobuf.text_format as text_format
except:
print
@@ -15,18 +15,8 @@ except:
print
raise
try:
import proto.nanopb_pb2 as nanopb_pb2
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
raise
import proto.nanopb_pb2 as nanopb_pb2
import proto.descriptor_pb2 as descriptor
@@ -1025,6 +1015,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)

View File

@@ -1,7 +1,4 @@
all: nanopb_pb2.py plugin_pb2.py
all: nanopb_pb2.py plugin_pb2.py descriptor_pb2.py
nanopb_pb2.py: nanopb.proto
protoc --python_out=. nanopb.proto
plugin_pb2.py: plugin.proto
protoc --python_out=. plugin.proto
%_pb2.py: %.proto
protoc --python_out=. $<

View File

@@ -0,0 +1,33 @@
#!/bin/bash
# Run this script in the top nanopb directory to create a binary package
# for Windows users. This script is designed to run under MingW/MSYS bash
set -e
set -x
VERSION=`git describe --always`
DEST=dist/$VERSION
rm -rf $DEST
mkdir -p $DEST
# Export the files from newest commit
git archive HEAD | tar x -C $DEST
# Rebuild the Python .proto files
make -BC $DEST/generator/proto
# Make the nanopb generator available as a protoc plugin
cp $DEST/generator/nanopb_generator.py $DEST/generator/protoc-gen-nanopb.py
# Package the Python libraries
( cd $DEST/generator; bbfreeze nanopb_generator.py protoc-gen-nanopb.py )
mv $DEST/generator/dist $DEST/generator-bin
# Remove temp file
rm $DEST/generator/protoc-gen-nanopb.py
# Package the protoc compiler
cp `which protoc`.exe $DEST/generator-bin/