xref: /aosp_15_r20/external/nanopb-c/tools/make_linux_package.sh (revision c8d645cafcee3f91213d30caa0fe303887010b9b)
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