1*c8d645caSAndroid Build Coastguard Worker#!/bin/bash 2*c8d645caSAndroid Build Coastguard Worker 3*c8d645caSAndroid Build Coastguard Worker# Run this script in the top nanopb directory to create a binary package 4*c8d645caSAndroid Build Coastguard Worker# for Linux users. 5*c8d645caSAndroid Build Coastguard Worker 6*c8d645caSAndroid Build Coastguard Worker# Requires: protobuf, python-protobuf, pyinstaller 7*c8d645caSAndroid Build Coastguard Worker 8*c8d645caSAndroid Build Coastguard Workerset -e 9*c8d645caSAndroid Build Coastguard Workerset -x 10*c8d645caSAndroid Build Coastguard Worker 11*c8d645caSAndroid Build Coastguard WorkerVERSION=`git describe --always`-linux-x86 12*c8d645caSAndroid Build Coastguard WorkerDEST=dist/$VERSION 13*c8d645caSAndroid Build Coastguard Worker 14*c8d645caSAndroid Build Coastguard Workerrm -rf $DEST 15*c8d645caSAndroid Build Coastguard Workermkdir -p $DEST 16*c8d645caSAndroid Build Coastguard Worker 17*c8d645caSAndroid Build Coastguard Worker# Export the files from newest commit 18*c8d645caSAndroid Build Coastguard Workergit archive HEAD | tar x -C $DEST 19*c8d645caSAndroid Build Coastguard Worker 20*c8d645caSAndroid Build Coastguard Worker# Rebuild the Python .proto files 21*c8d645caSAndroid Build Coastguard Workermake -BC $DEST/generator/proto 22*c8d645caSAndroid Build Coastguard Worker 23*c8d645caSAndroid Build Coastguard Worker# Package the Python libraries 24*c8d645caSAndroid Build Coastguard Worker( cd $DEST/generator; pyinstaller nanopb_generator.py ) 25*c8d645caSAndroid Build Coastguard Workermv $DEST/generator/dist/nanopb_generator $DEST/generator-bin 26*c8d645caSAndroid Build Coastguard Worker 27*c8d645caSAndroid Build Coastguard Worker# Remove temp files 28*c8d645caSAndroid Build Coastguard Workerrm -rf $DEST/generator/dist $DEST/generator/build $DEST/generator/nanopb_generator.spec 29*c8d645caSAndroid Build Coastguard Worker 30*c8d645caSAndroid Build Coastguard Worker# Make the nanopb generator available as a protoc plugin 31*c8d645caSAndroid Build Coastguard Workercp $DEST/generator-bin/nanopb_generator $DEST/generator-bin/protoc-gen-nanopb 32*c8d645caSAndroid Build Coastguard Worker 33*c8d645caSAndroid Build Coastguard Worker# Package the protoc compiler 34*c8d645caSAndroid Build Coastguard Workercp `which protoc` $DEST/generator-bin/protoc.bin 35*c8d645caSAndroid Build Coastguard WorkerLIBPROTOC=$(ldd `which protoc` | grep -o '/.*libprotoc[^ ]*') 36*c8d645caSAndroid Build Coastguard WorkerLIBPROTOBUF=$(ldd `which protoc` | grep -o '/.*libprotobuf[^ ]*') 37*c8d645caSAndroid Build Coastguard Workercp $LIBPROTOC $LIBPROTOBUF $DEST/generator-bin/ 38*c8d645caSAndroid Build Coastguard Workercat > $DEST/generator-bin/protoc << EOF 39*c8d645caSAndroid Build Coastguard Worker#!/bin/bash 40*c8d645caSAndroid Build Coastguard WorkerSCRIPTDIR=\$(dirname "\$0") 41*c8d645caSAndroid Build Coastguard Workerexport LD_LIBRARY_PATH=\$SCRIPTDIR 42*c8d645caSAndroid Build Coastguard Workerexport PATH=\$SCRIPTDIR:\$PATH 43*c8d645caSAndroid Build Coastguard Workerexec "\$SCRIPTDIR/protoc.bin" "\$@" 44*c8d645caSAndroid Build Coastguard WorkerEOF 45*c8d645caSAndroid Build Coastguard Workerchmod +x $DEST/generator-bin/protoc 46*c8d645caSAndroid Build Coastguard Worker 47*c8d645caSAndroid Build Coastguard Worker# Remove debugging symbols to reduce size of package 48*c8d645caSAndroid Build Coastguard Worker( cd $DEST/generator-bin; strip *.so *.so.* ) 49*c8d645caSAndroid Build Coastguard Worker 50*c8d645caSAndroid Build Coastguard Worker# Tar it all up 51*c8d645caSAndroid Build Coastguard Worker( cd dist; tar -czf $VERSION.tar.gz $VERSION ) 52*c8d645caSAndroid Build Coastguard Worker 53