From 6f2ef6811e2d703dcb1b485e421d35ccbd3554fc Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Sat, 16 Dec 2023 01:42:12 +0100 Subject: [PATCH] platformio: 6.1.6 -> 6.1.11 https://github.com/platformio/platformio-core/releases/tag/v6.1.7 https://github.com/platformio/platformio-core/releases/tag/v6.1.8 https://github.com/platformio/platformio-core/releases/tag/v6.1.9 https://github.com/platformio/platformio-core/releases/tag/v6.1.10 https://github.com/platformio/platformio-core/releases/tag/v6.1.11 Fixes support for ESP-IDF among other plugins, by replacing the path to the python interpreter with one that has all dependencies wrapped. Closes: #227230 Co-Authored-By: Joerie de Gram --- pkgs/development/embedded/platformio/core.nix | 53 ++++++++++++------- ...fix-searchpath.patch => interpreter.patch} | 13 ++++- .../platformio/missing-udev-rules-nixos.patch | 8 +-- .../use-local-spdx-license-list.patch | 18 +++---- 4 files changed, 56 insertions(+), 36 deletions(-) rename pkgs/development/embedded/platformio/{fix-searchpath.patch => interpreter.patch} (59%) diff --git a/pkgs/development/embedded/platformio/core.nix b/pkgs/development/embedded/platformio/core.nix index e02e76e3ccce..82ccfa41c2f0 100644 --- a/pkgs/development/embedded/platformio/core.nix +++ b/pkgs/development/embedded/platformio/core.nix @@ -1,42 +1,53 @@ -{ stdenv, lib, python3 +{ lib +, python3Packages , fetchFromGitHub -, fetchPypi +, fetchpatch , git , spdx-license-list-data +, substituteAll }: -with python3.pkgs; buildPythonApplication rec { - pname = "platformio"; - version = "6.1.6"; +with python3Packages; buildPythonApplication rec { + pname = "platformio"; + version = "6.1.11"; + pyproject = true; # pypi tarballs don't contain tests - https://github.com/platformio/platformio-core/issues/1964 src = fetchFromGitHub { owner = "platformio"; repo = "platformio-core"; rev = "v${version}"; - sha256 = "sha256-BEeMfdmAWqFbQUu8YKKrookQVgmhfZBqXnzeb2gfhms="; + hash = "sha256-NR4UyAt8q5sUGtz1Sy6E8Of7y9WrH9xpcAWzLBeDQmo="; }; outputs = [ "out" "udev" ]; patches = [ - ./fix-searchpath.patch - ./use-local-spdx-license-list.patch + (substituteAll { + src = ./interpreter.patch; + interpreter = (python3Packages.python.withPackages (_: propagatedBuildInputs)).interpreter; + }) + (substituteAll { + src = ./use-local-spdx-license-list.patch; + spdx_license_list_data = spdx-license-list-data.json; + }) ./missing-udev-rules-nixos.patch + (fetchpatch { + # restore PYTHONPATH when calling scons + # https://github.com/platformio/platformio-core/commit/097de2be98af533578671baa903a3ae825d90b94 + url = "https://github.com/platformio/platformio-core/commit/097de2be98af533578671baa903a3ae825d90b94.patch"; + hash = "sha256-yq+/QHCkhAkFND11MbKFiiWT3oF1cHhgWj5JkYjwuY0="; + revert = true; + }) ]; - postPatch = '' - substitute platformio/package/manifest/schema.py platformio/package/manifest/schema.py \ - --subst-var-by SPDX_LICENSE_LIST_DATA '${spdx-license-list-data.json}' + nativeBuildInputs = [ + pythonRelaxDepsHook + setuptools + ]; - substituteInPlace setup.py \ - --replace 'aiofiles==%s" % ("0.8.0" if PY36 else "22.1.*")' 'aiofiles"' \ - --replace 'starlette==%s" % ("0.19.1" if PY36 else "0.23.*")' 'starlette"' \ - --replace 'uvicorn==%s" % ("0.16.0" if PY36 else "0.20.*")' 'uvicorn"' \ - --replace 'tabulate==%s" % ("0.8.10" if PY36 else "0.9.*")' 'tabulate>=0.8.10,<=0.9"' \ - --replace 'wsproto==%s" % ("1.0.0" if PY36 else "1.2.*")' 'wsproto"' - ''; + pythonRelaxDeps = true; propagatedBuildInputs = [ aiofiles @@ -52,12 +63,14 @@ with python3.pkgs; buildPythonApplication rec { pyserial requests semantic-version + setuptools spdx-license-list-data.json starlette tabulate uvicorn wsproto zeroconf + ]; preCheck = '' @@ -163,11 +176,13 @@ with python3.pkgs; buildPythonApplication rec { ]); passthru = { - python = python3; + python = python3Packages.python; }; meta = with lib; { + changelog = "https://github.com/platformio/platformio-core/releases/tag/v${version}"; description = "An open source ecosystem for IoT development"; + downloadPage = "https://github.com/platformio/platformio-core"; homepage = "https://platformio.org"; license = licenses.asl20; maintainers = with maintainers; [ mog makefu ]; diff --git a/pkgs/development/embedded/platformio/fix-searchpath.patch b/pkgs/development/embedded/platformio/interpreter.patch similarity index 59% rename from pkgs/development/embedded/platformio/fix-searchpath.patch rename to pkgs/development/embedded/platformio/interpreter.patch index fe7f9f127a7a..f7e212d57111 100644 --- a/pkgs/development/embedded/platformio/fix-searchpath.patch +++ b/pkgs/development/embedded/platformio/interpreter.patch @@ -1,9 +1,18 @@ diff --git a/platformio/proc.py b/platformio/proc.py -index 80e50201..15cee5a5 100644 +index 707245a1..cae17a29 100644 --- a/platformio/proc.py +++ b/platformio/proc.py +@@ -165,7 +165,7 @@ def is_container(): + + + def get_pythonexe_path(): +- return os.environ.get("PYTHONEXEPATH", os.path.normpath(sys.executable)) ++ return "@interpreter@" + + + def copy_pythonpath_to_osenv(): @@ -181,7 +181,7 @@ def copy_pythonpath_to_osenv(): - conditions.append(isdir(join(p, "click")) or isdir(join(p, "platformio"))) + ) if all(conditions): _PYTHONPATH.append(p) - os.environ["PYTHONPATH"] = os.pathsep.join(_PYTHONPATH) diff --git a/pkgs/development/embedded/platformio/missing-udev-rules-nixos.patch b/pkgs/development/embedded/platformio/missing-udev-rules-nixos.patch index 4be06ceac8b1..878470920577 100644 --- a/pkgs/development/embedded/platformio/missing-udev-rules-nixos.patch +++ b/pkgs/development/embedded/platformio/missing-udev-rules-nixos.patch @@ -1,10 +1,12 @@ diff --git a/platformio/exception.py b/platformio/exception.py -index ef1d3bab..445174fc 100644 +index 80ffb496..ea064f97 100644 --- a/platformio/exception.py +++ b/platformio/exception.py -@@ -57,6 +57,7 @@ class MissedUdevRules(InvalidUdevRules): +@@ -49,6 +49,7 @@ class MissedUdevRules(InvalidUdevRules): MESSAGE = ( "Warning! Please install `99-platformio-udev.rules`. \nMore details: " "https://docs.platformio.org/en/latest/core/installation/udev-rules.html" -+ "On NixOS add the platformio-core.udev package to services.udev.packages" ++ "On NixOS set `services.udev.packages = with pkgs; [ platformio-core.udev ];`." ) + + diff --git a/pkgs/development/embedded/platformio/use-local-spdx-license-list.patch b/pkgs/development/embedded/platformio/use-local-spdx-license-list.patch index 6db8585a55f3..ba9b55b788a1 100644 --- a/pkgs/development/embedded/platformio/use-local-spdx-license-list.patch +++ b/pkgs/development/embedded/platformio/use-local-spdx-license-list.patch @@ -1,23 +1,17 @@ diff --git a/platformio/package/manifest/schema.py b/platformio/package/manifest/schema.py -index 1e5f935a..26d1ac6a 100644 +index 95e08108..6c2cfaed 100644 --- a/platformio/package/manifest/schema.py +++ b/platformio/package/manifest/schema.py -@@ -276,9 +276,12 @@ class ManifestSchema(BaseSchema): +@@ -276,9 +276,6 @@ class ManifestSchema(BaseSchema): @staticmethod @memoized(expire="1h") def load_spdx_licenses(): -- version = "3.19" +- version = "3.21" - spdx_data_url = ( - "https://raw.githubusercontent.com/spdx/license-list-data/" -- "v%s/json/licenses.json" % version +- f"v{version}/json/licenses.json" - ) - return json.loads(fetch_remote_content(spdx_data_url)) -+ # version = "3.19" -+ # spdx_data_url = ( -+ # "https://raw.githubusercontent.com/spdx/license-list-data/" -+ # "v%s/json/licenses.json" % version -+ # ) -+ # return json.loads(fetch_remote_content(spdx_data_url)) -+ with open("@SPDX_LICENSE_LIST_DATA@/json/licenses.json") as f: -+ spdx = json.load(f) ++ with open("@spdx_license_list_data@/json/licenses.json") as fd: ++ spdx = json.load(fd) + return spdx