summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2022-08-30 23:34:57 -0400
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2022-08-31 10:33:42 -0400
commit5eb1686537762baf8193f8702d5c78dc6114c0cc (patch)
tree4575e90091c6ecdccda363dde3d5824b86563e9a /gnu
parentcc3cc72d859cc514bd62027898b497116dd28459 (diff)
downloadguix-5eb1686537762baf8193f8702d5c78dc6114c0cc.tar.gz
gnu: Add python-nanopb.
* gnu/packages/protobuf.scm (python-nanopb): New variable.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/protobuf.scm31
1 files changed, 31 insertions, 0 deletions
diff --git a/gnu/packages/protobuf.scm b/gnu/packages/protobuf.scm
index dcb742a463..baa7f55d9c 100644
--- a/gnu/packages/protobuf.scm
+++ b/gnu/packages/protobuf.scm
@@ -36,6 +36,7 @@
   #:use-module (guix build-system ruby)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix utils)
+  #:use-module (gnu packages build-tools)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages check)
   #:use-module (gnu packages gcc)
@@ -270,6 +271,36 @@ in ansi C.  It is especially suitable for use in microcontrollers, but fits
 any memory-restricted system.")
     (license license:zlib)))
 
+(define-public python-nanopb
+  (package
+    (inherit nanopb)
+    (name "python-nanopb")
+    (build-system python-build-system)
+    (arguments
+     (list
+      #:tests? #f                       ;no Python-specific tests
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'build
+            (lambda _
+              (copy-file "extra/poetry/pyproject.toml" "pyproject.toml")
+              (delete-file "build.py")
+              ;; Mimick extra/poetry/poetry_build.sh.
+              (mkdir "nanopb")
+              (copy-recursively "generator" "nanopb/generator")
+              (invoke "touch" "nanopb/__init__.py"
+                      "nanopb/generator/__init__.py")
+              (invoke "make" "-C" "nanopb/generator/proto")
+              (invoke "python" "-m" "build" "--wheel" "--no-isolation" ".")))
+          (replace 'install
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let ((whl (car (find-files "dist" "\\.whl$"))))
+                (invoke "pip" "--no-cache-dir" "--no-input"
+                        "install" "--no-deps" "--prefix" #$output whl)))))))
+    (native-inputs (list poetry protobuf python-pypa-build))
+    (propagated-inputs (list python-protobuf))
+    (synopsis "Small code-size Protocol Buffers implementation in Python")))
+
 (define-public python-protobuf
   (package
     (name "python-protobuf")