17ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen#!/bin/bash
27ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen
37ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen# Run this script in the top nanopb directory to create a binary package
47ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen# for Linux users.
57ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen
67ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohenset -e
77ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohenset -x
87ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen
97ef855e462b9a18b7d330e4b40f350164a6ad9daEtan CohenVERSION=`git describe --always`-linux-x86
107ef855e462b9a18b7d330e4b40f350164a6ad9daEtan CohenDEST=dist/$VERSION
117ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen
127ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohenrm -rf $DEST
137ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohenmkdir -p $DEST
147ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen
157ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen# Export the files from newest commit
167ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohengit archive HEAD | tar x -C $DEST
177ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen
187ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen# Rebuild the Python .proto files
197ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohenmake -BC $DEST/generator/proto
207ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen
217ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen# Make the nanopb generator available as a protoc plugin
227ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohencp $DEST/generator/nanopb_generator.py $DEST/generator/protoc-gen-nanopb.py
237ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen
247ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen# Package the Python libraries
257ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen( cd $DEST/generator; bbfreeze nanopb_generator.py protoc-gen-nanopb.py )
267ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohenmv $DEST/generator/dist $DEST/generator-bin
277ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen
287ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen# Remove temp file
297ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohenrm $DEST/generator/protoc-gen-nanopb.py
307ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen
317ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen# Package the protoc compiler
327ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohencp `which protoc` $DEST/generator-bin/protoc.bin
337ef855e462b9a18b7d330e4b40f350164a6ad9daEtan CohenLIBPROTOC=$(ldd `which protoc` | grep -o '/.*libprotoc[^ ]*')
347ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohencp $LIBPROTOC $DEST/generator-bin/
357ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohencat > $DEST/generator-bin/protoc << EOF
367ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen#!/bin/bash
377ef855e462b9a18b7d330e4b40f350164a6ad9daEtan CohenSCRIPTDIR=\$(dirname "\$0")
387ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohenexport LD_LIBRARY_PATH=\$SCRIPTDIR
397ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohenexport PATH=\$SCRIPTDIR:\$PATH
407ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohenexec "\$SCRIPTDIR/protoc.bin" "\$@"
417ef855e462b9a18b7d330e4b40f350164a6ad9daEtan CohenEOF
427ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohenchmod +x $DEST/generator-bin/protoc
437ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen
447ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen# Tar it all up
457ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen( cd dist; tar -czf $VERSION.tar.gz $VERSION )
467ef855e462b9a18b7d330e4b40f350164a6ad9daEtan Cohen
47