Subject: [bug#55831] [PATCH] gnu: Add python-platformio.

From: [email-masked]
Date: Tue, 7 Jun 2022 20:43:35 -0400

From: Peter Polidoro <[email-masked]>

* gnu/packages/embedded.scm (python-platformio): New variable.
---
 gnu/packages/embedded.scm | 59 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 59 insertions(+)

diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm
index 6a66fe4753..79605d8be5 100644
--- a/gnu/packages/embedded.scm
+++ b/gnu/packages/embedded.scm
@@ -12,6 +12,7 @@
 ;;; Copyright © 2021 Morgan Smith <[email-masked]>
 ;;; Copyright © 2022 Mathieu Othacehe <[email-masked]>
 ;;; Copyright © 2022 Maxim Cournoyer <[email-masked]>
+;;; Copyright © 2022 Peter Polidoro <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1556,6 +1557,64 @@ (define-public sdcc
                    license:public-domain
                    license:zlib))))
 
+(define-public python-platformio
+  (package
+    (name "python-platformio")
+    (version "6.0.2")
+    (source (origin
+              ;; PyPI does not include tox.ini
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/platformio/platformio-core")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32 "0scb9z3rpkpdvpx6lcj51vqx1vzkxi2fdfqxk2ir9r9qwgvhbxf9"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; Requirements refer to a specific version of dependencies,
+         ;; which are too old. So we patch to refer to any later version.
+         (add-after 'unpack 'patch-requirements
+           (lambda _
+             (substitute* "setup.py"
+               (("==") ">="))))
+         (replace 'check
+           (lambda*  (#:key tests? #:allow-other-keys)
+             (when tests?
+               (invoke "tox" "-e" "py39" "--sitepackages")))))))
+    (propagated-inputs (list python-aiofiles
+                             python-ajsonrpc
+                             python-bottle
+                             python-click
+                             python-colorama
+                             python-marshmallow
+                             python-pyelftools
+                             python-pyserial
+                             python-requests
+                             python-semantic-version
+                             python-service-identity
+                             python-starlette
+                             python-tabulate
+                             python-twisted
+                             python-uvicorn
+                             python-wsproto
+                             python-zeroconf))
+    (native-inputs (list python-black
+                         python-isort
+                         python-jsondiff
+                         python-tox
+                         python-pylint
+                         python-pytest
+                         python-pytest-xdist))
+    (home-page "https://platformio.org")
+    (synopsis "Platform for embedded development")
+    (description
+     "PlatformIO is a cross-platform, cross-architecture, multiple framework,
+tool for embedded systems development.")
+    (license license:asl2.0)))
+
 (define-public python-psptool
   (package
     (name "python-psptool")
-- 
2.36.1