aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Salzedo <thHunkn0WNd@gmail.com>2019-12-11 19:30:49 -0800
committerPetteri Aimonen <jpa@git.mail.kapsi.fi>2019-12-13 22:12:52 +0200
commit92de18fd4eebba7056b1376241b7fb62bd9e7246 (patch)
tree1f05aaa9aded2dea5a6e38b43feb81cb1c68022d
parentba4e832488fbb7165b908a17225c367c13cb72f3 (diff)
downloadnanopb-c-92de18fd4eebba7056b1376241b7fb62bd9e7246.tar.gz
Backported Python pip packaging rules.
-rwxr-xr-xextra/poetry/poetry_build.sh9
-rw-r--r--extra/poetry/pyproject.toml26
-rwxr-xr-xgenerator/nanopb_generator.py9
-rwxr-xr-xtools/set_version.sh2
4 files changed, 44 insertions, 2 deletions
diff --git a/extra/poetry/poetry_build.sh b/extra/poetry/poetry_build.sh
new file mode 100755
index 0000000..d428d39
--- /dev/null
+++ b/extra/poetry/poetry_build.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+rm -rf nanopb
+mkdir nanopb
+cp -pr ../../generator nanopb/
+touch nanopb/__init__.py nanopb/generator/__init__.py
+cp -pr ../../README.md .
+sed -i -e 's/\(version =.*\)-dev.*/\1-dev'$(git rev-list HEAD --count)'"/' pyproject.toml
+poetry build
diff --git a/extra/poetry/pyproject.toml b/extra/poetry/pyproject.toml
new file mode 100644
index 0000000..119970b
--- /dev/null
+++ b/extra/poetry/pyproject.toml
@@ -0,0 +1,26 @@
+[tool.poetry]
+name = "nanopb"
+version = "0.3.9.4"
+description = "Nanopb is a small code-size Protocol Buffers implementation in ansi C. It is especially suitable for use in microcontrollers, but fits any memory restricted system."
+authors = ["Petteri Aimonen <jpa@npb.mail.kapsi.fi>"]
+license = "Zlib"
+repository = "https://github.com/nanopb/nanopb/"
+readme = "README.md"
+homepage = "https://jpa.kapsi.fi/nanopb/"
+documentation = "https://jpa.kapsi.fi/nanopb/docs/index.html"
+keywords = ["protobuf", "protoc"]
+classifiers = ["Topic :: Software Development :: Build Tools"]
+
+[tool.poetry.scripts]
+nanopb_generator = "nanopb.generator.nanopb_generator:main_cli"
+protoc-gen-nanopb = "nanopb.generator.nanopb_generator:main_plugin"
+
+[tool.poetry.dependencies]
+python = ">=2.7"
+protobuf = ">=3.6"
+
+[tool.poetry.dev-dependencies]
+
+[build-system]
+requires = ["poetry>=0.12"]
+build-backend = "poetry.masonry.api"
diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py
index 12af67e..526a74a 100755
--- a/generator/nanopb_generator.py
+++ b/generator/nanopb_generator.py
@@ -15,6 +15,8 @@ try:
# Add some dummy imports to keep packaging tools happy.
import google, distutils.util # bbfreeze seems to need these
import pkg_resources # pyinstaller / protobuf 2.5 seem to need these
+ import proto.nanopb_pb2 as nanopb_pb2 # pyinstaller seems to need this
+ import proto.plugin_pb2 as plugin_pb2
except:
# Don't care, we will error out later if it is actually important.
pass
@@ -32,8 +34,7 @@ except:
raise
try:
- import proto.nanopb_pb2 as nanopb_pb2
- import proto.plugin_pb2 as plugin_pb2
+ from .proto import nanopb_pb2, plugin_pb2
except TypeError:
sys.stderr.write('''
****************************************************************************
@@ -51,6 +52,10 @@ except TypeError:
****************************************************************************
''' + '\n')
raise
+except (ValueError, SystemError):
+ # Probably invoked directly instead of via installed scripts.
+ import proto.nanopb_pb2 as nanopb_pb2
+ import proto.plugin_pb2 as plugin_pb2
except:
sys.stderr.write('''
********************************************************************
diff --git a/tools/set_version.sh b/tools/set_version.sh
index 0adb597..6aa25eb 100755
--- a/tools/set_version.sh
+++ b/tools/set_version.sh
@@ -12,3 +12,5 @@ VERSION_ONLY=$(echo $1 | sed 's/nanopb-//')
if [[ $1 != *dev ]]
then sed -i -e 's/"version":\s*"[^"]*"/"version": "'$VERSION_ONLY'"/' library.json
fi
+
+sed -i -e 's/version =.*/version = "'$VERSION_ONLY'"/' extra/poetry/pyproject.toml