commit:     f3eff6e418a08e153b9ac5dd6708fceed98dfd9e
Author:     Bill Prendergast <dek.devel <AT> baisenvar <DOT> info>
AuthorDate: Thu Feb 19 10:11:32 2026 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Feb 23 01:26:43 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f3eff6e4

dev-embedded/platformio: add 6.1.19, drop 6.1.11

- drop unsupported 6.1.11
- remove package.mask for dev-embedded/platformio

- Added patch for >=dev-python/marshmallow-4
- Added support for shell-completions
- Reworked ignored tests to be more complete, all tests that do not
  require network access are now enabled.

Closes: https://bugs.gentoo.org/969805
Closes: https://bugs.gentoo.org/944883
Closes: https://bugs.gentoo.org/952290
Closes: https://bugs.gentoo.org/955765
Closes: https://bugs.gentoo.org/968383
Signed-off-by: Bill Prendergast <dek.devel <AT> baisenvar.info>
Part-of: https://codeberg.org/gentoo/gentoo/pulls/93
Merges: https://codeberg.org/gentoo/gentoo/pulls/93
Signed-off-by: Sam James <sam <AT> gentoo.org>

 dev-embedded/platformio/Manifest                   |   2 +-
 .../files/pio-6.1.19-marshmallow-4.patch           |  23 +++
 dev-embedded/platformio/platformio-6.1.11.ebuild   | 117 ----------------
 dev-embedded/platformio/platformio-6.1.19.ebuild   | 154 +++++++++++++++++++++
 profiles/package.mask                              |   7 -
 5 files changed, 178 insertions(+), 125 deletions(-)

diff --git a/dev-embedded/platformio/Manifest b/dev-embedded/platformio/Manifest
index 9434f03835b0..ee93dda18f59 100644
--- a/dev-embedded/platformio/Manifest
+++ b/dev-embedded/platformio/Manifest
@@ -1 +1 @@
-DIST platformio-6.1.11.gh.tar.gz 296333 BLAKE2B 
17672b499eca9c828cd7c6ea6a4c8acea7287f42bb78d4fc5fbd11bb93175bb87d9c2d100270869bc99bc0db550b49c163555ddd8edb17b6b33ccc5f3623f768
 SHA512 
450e3d1dc3b9c8124b6254fbf0a05b207b834aa0661f083ee2915bde5064498b6d5af666ad851b737fa5627ed436db983e038f83ed0437a1e248749a0dcc99ba
+DIST platformio-6.1.19.gh.tar.gz 303716 BLAKE2B 
3add65d4dd38efd64e152a97396ead9bc672b93b9933e91634e18a60318d7aa04defb9b95efdecf4454e407ba97f2fe1b24093e48fcb3380b4152d5f6b4cb7fa
 SHA512 
0190401a92b2ce423ff451469ed0c31e27203e92417d08203878cc6a021dfcd014adea62d0f27c661b6a8eee7a0503a673c7b1e8e39d956173349d0ef323e731

diff --git a/dev-embedded/platformio/files/pio-6.1.19-marshmallow-4.patch 
b/dev-embedded/platformio/files/pio-6.1.19-marshmallow-4.patch
new file mode 100644
index 000000000000..8b25a0e3321b
--- /dev/null
+++ b/dev-embedded/platformio/files/pio-6.1.19-marshmallow-4.patch
@@ -0,0 +1,23 @@
+in marshmallow-4+ @validates accepts multiple field names, and
+ decorated@validates methods receive data_key as a keyword argument.
+
+--- a/platformio/package/manifest/schema.py
++++ b/platformio/package/manifest/schema.py
+@@ -232,7 +232,7 @@ class ManifestSchema(BaseSchema):
+     )
+ 
+     @validates("version")
+-    def validate_version(self, value):
++    def validate_version(self, value, **kwargs):
+         try:
+             value = str(value)
+             assert "." in value
+@@ -249,7 +249,7 @@ class ManifestSchema(BaseSchema):
+             ) from exc
+ 
+     @validates("license")
+-    def validate_license(self, value):
++    def validate_license(self, value, **kwargs):
+         try:
+             spdx = self.load_spdx_licenses()
+         except requests.exceptions.RequestException as exc:

diff --git a/dev-embedded/platformio/platformio-6.1.11.ebuild 
b/dev-embedded/platformio/platformio-6.1.11.ebuild
deleted file mode 100644
index 2eea7057f350..000000000000
--- a/dev-embedded/platformio/platformio-6.1.11.ebuild
+++ /dev/null
@@ -1,117 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_SINGLE_IMPL=1
-DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{11..12} )
-
-inherit distutils-r1 udev
-
-DESCRIPTION="An open source ecosystem for IoT development"
-HOMEPAGE="https://platformio.org/";
-SRC_URI="https://github.com/platformio/platformio-core/archive/refs/tags/v${PV}.tar.gz
 -> ${P}.gh.tar.gz"
-S="${WORKDIR}"/${PN}-core-${PV}
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="~amd64 ~x86"
-
-RDEPEND="
-       $(python_gen_cond_dep '
-               >=dev-python/aiofiles-22.1[${PYTHON_USEDEP}]
-               dev-python/ajsonrpc[${PYTHON_USEDEP}]
-               <dev-python/bottle-0.13[${PYTHON_USEDEP}]
-               =dev-python/click-8*[${PYTHON_USEDEP}]
-               dev-python/colorama[${PYTHON_USEDEP}]
-               >=dev-python/pyserial-3[${PYTHON_USEDEP}]
-               <dev-python/pyserial-4[${PYTHON_USEDEP}]
-               >=dev-python/zeroconf-0.37[${PYTHON_USEDEP}]
-               =dev-python/requests-2*[${PYTHON_USEDEP}]
-               >=dev-python/semantic-version-2.10[${PYTHON_USEDEP}]
-               <dev-python/semantic-version-3[${PYTHON_USEDEP}]
-               =dev-python/tabulate-0.9*[${PYTHON_USEDEP}]
-               dev-python/twisted[${PYTHON_USEDEP}]
-               >=dev-python/pyelftools-0.30[${PYTHON_USEDEP}]
-               <dev-python/pyelftools-1[${PYTHON_USEDEP}]
-               =dev-python/marshmallow-3*[${PYTHON_USEDEP}]
-               >=dev-python/starlette-0.21[${PYTHON_USEDEP}]
-               >=dev-python/uvicorn-0.19[${PYTHON_USEDEP}]
-               dev-python/wsproto[${PYTHON_USEDEP}]
-       ')
-       virtual/udev"
-DEPEND="virtual/udev"
-BDEPEND="test? ( $(python_gen_cond_dep 
'dev-python/jsondiff[${PYTHON_USEDEP}]') )"
-
-# This list could be refined a bit to have individual tests which need network
-# (within EPYTEST_DESELECT) but so many need it that it doesn't seem worth it 
right now.
-EPYTEST_IGNORE=(
-       # Requires network access
-       tests/test_builder.py
-       tests/package/test_manager.py
-       tests/package/test_manifest.py
-       tests/commands/test_platform.py
-       tests/commands/test_test.py
-       tests/commands/test_ci.py
-       tests/commands/test_init.py
-       tests/commands/test_lib.py
-       tests/commands/test_lib_complex.py
-       tests/commands/test_boards.py
-       tests/commands/test_check.py
-       tests/commands/test_run.py
-       tests/commands/pkg/test_exec.py
-       tests/commands/pkg/test_list.py
-       tests/commands/pkg/test_outdated.py
-       tests/commands/pkg/test_search.py
-       tests/commands/pkg/test_show.py
-       tests/commands/pkg/test_install.py
-       tests/commands/pkg/test_uninstall.py
-       tests/commands/pkg/test_update.py
-       tests/misc/ino2cpp/test_ino2cpp.py
-       tests/test_maintenance.py
-       tests/test_misc.py
-)
-
-EPYTEST_DESELECT=(
-       # Requires network access
-       tests/misc/test_maintenance.py::test_check_pio_upgrade
-       tests/misc/test_misc.py::test_ping_internet_ips
-       tests/misc/test_misc.py::test_api_cache
-)
-
-distutils_enable_tests pytest
-
-python_prepare_all() {
-       # Allow newer versions of:
-       # - zeroconf, bug #831181.
-       # - wsproto
-       # - semantic_version, bug #853247
-       # - starlette & uvicorn, bug #888427
-       sed \
-               -e '/zeroconf/s/<[0-9.*]*//' \
-               -e '/wsproto/s/==.*/"/' \
-               -e '/semantic_version/s/==[0-9.*]*//' \
-               -e '/starlette/s/==.*/"/' \
-               -e '/uvicorn/s/==.*/"/' \
-               -i setup.py || die
-
-       distutils-r1_python_prepare_all
-}
-
-python_test() {
-       epytest -k "not skip_ci"
-}
-
-src_install() {
-       distutils-r1_src_install
-       udev_dorules platformio/assets/system/99-platformio-udev.rules
-}
-
-pkg_postinst() {
-       udev_reload
-}
-
-pkg_postrm() {
-       udev_reload
-}

diff --git a/dev-embedded/platformio/platformio-6.1.19.ebuild 
b/dev-embedded/platformio/platformio-6.1.19.ebuild
new file mode 100644
index 000000000000..42109ba765a3
--- /dev/null
+++ b/dev-embedded/platformio/platformio-6.1.19.ebuild
@@ -0,0 +1,154 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{11..14} )
+
+inherit distutils-r1 shell-completion udev
+
+DESCRIPTION="An open source ecosystem for IoT development"
+HOMEPAGE="https://platformio.org/";
+SRC_URI="https://github.com/platformio/platformio-core/archive/refs/tags/v${PV}.tar.gz
 -> ${P}.gh.tar.gz"
+S="${WORKDIR}"/${PN}-core-${PV}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+#TODO dev-python/requests[socks5] if proxy needed
+
+RDEPEND="
+       $(python_gen_cond_dep '
+               =dev-python/ajsonrpc-1.2*[${PYTHON_USEDEP}]
+               =dev-python/bottle-0.13*[${PYTHON_USEDEP}]
+               >=dev-python/click-8.2[${PYTHON_USEDEP}]
+               <dev-python/click-8.4[${PYTHON_USEDEP}]
+               dev-python/colorama[${PYTHON_USEDEP}]
+               =dev-python/pyserial-3.5*[${PYTHON_USEDEP}]
+               >=dev-python/zeroconf-0.37[${PYTHON_USEDEP}]
+               =dev-python/requests-2*[${PYTHON_USEDEP}]
+               =dev-python/semantic-version-2.10*[${PYTHON_USEDEP}]
+               =dev-python/tabulate-0*[${PYTHON_USEDEP}]
+               dev-python/twisted[${PYTHON_USEDEP}]
+               dev-python/constantly[${PYTHON_USEDEP}]
+               >=dev-python/pyelftools-0.30[${PYTHON_USEDEP}]
+               <dev-python/pyelftools-1[${PYTHON_USEDEP}]
+               =dev-python/marshmallow-4*[${PYTHON_USEDEP}]
+               >=dev-python/starlette-0.21[${PYTHON_USEDEP}]
+               <dev-python/starlette-0.60[${PYTHON_USEDEP}]
+               >=dev-python/uvicorn-0.19[${PYTHON_USEDEP}]
+               <dev-python/uvicorn-0.50[${PYTHON_USEDEP}]
+               =dev-python/wsproto-1*[${PYTHON_USEDEP}]
+       ')
+       virtual/udev"
+DEPEND="virtual/udev"
+BDEPEND="test? ( $(python_gen_cond_dep 
'dev-python/jsondiff[${PYTHON_USEDEP}]') )"
+
+# This list has been refined to have the individual tests which need network 
access
+# to be disabled (or those that need a test email account).
+#  this list will need careful monitoring during version bumps
+EPYTEST_IGNORE=(
+       # Requires network access
+       tests/commands/pkg/test_install.py
+       tests/commands/pkg/test_list.py
+       tests/commands/pkg/test_outdated.py
+       tests/commands/pkg/test_search.py
+       tests/commands/pkg/test_show.py
+       tests/commands/pkg/test_uninstall.py
+       tests/commands/pkg/test_update.py
+       tests/commands/test_account_org_team.py
+       tests/commands/test_boards.py
+       tests/commands/test_check.py
+       tests/commands/test_lib.py
+       tests/commands/test_lib_complex.py
+       tests/commands/test_platform.py
+       tests/commands/test_run.py
+       tests/commands/test_test.py
+       tests/misc/ino2cpp/test_ino2cpp.py
+       tests/misc/test_maintenance.py
+       tests/project/test_metadata.py
+       tests/test_examples.py
+)
+
+EPYTEST_DESELECT=(
+       # Requires network access
+       tests/commands/pkg/test_exec.py::test_pkg_specified
+       tests/commands/pkg/test_exec.py::test_unrecognized_options
+       tests/commands/test_ci.py::test_ci_boards
+       tests/commands/test_ci.py::test_ci_build_dir
+       tests/commands/test_ci.py::test_ci_keep_build_dir
+       tests/commands/test_ci.py::test_ci_keep_build_dir_nested_src_dirs
+       tests/commands/test_ci.py::test_ci_keep_build_dir_single_src_dir
+       tests/commands/test_ci.py::test_ci_lib_and_board
+       tests/commands/test_ci.py::test_ci_project_conf
+       tests/commands/test_init.py::test_init_custom_framework
+       tests/commands/test_init.py::test_init_duplicated_boards
+       tests/commands/test_init.py::test_init_enable_auto_uploading
+       tests/commands/test_init.py::test_init_ide_eclipse
+       tests/commands/test_init.py::test_init_ide_vscode
+       tests/commands/test_init.py::test_init_incorrect_board
+       tests/commands/test_init.py::test_init_special_board
+       tests/misc/test_misc.py::test_api_cache
+       tests/misc/test_misc.py::test_ping_internet_ips
+       tests/package/test_manager.py::test_download
+       tests/package/test_manager.py::test_install_force
+       tests/package/test_manager.py::test_install_from_registry
+       tests/package/test_manager.py::test_install_lib_depndencies
+       tests/package/test_manager.py::test_registry
+       tests/package/test_manager.py::test_uninstall
+       tests/package/test_manager.py::test_update_with_metadata
+       tests/package/test_manager.py::test_update_without_metadata
+       tests/package/test_manifest.py::test_library_json_schema
+       tests/package/test_manifest.py::test_platform_json_schema
+       tests/project/test_config.py::test_win_core_root_dir
+)
+
+distutils_enable_tests pytest
+
+PATCHES=(
+       "${FILESDIR}"/pio-6.1.19-marshmallow-4.patch
+)
+
+python_prepare_all() {
+       # Allow marshmallow-4*
+       # Allow starlette-0.5*
+       # Allow uvicorn-0.4*
+       sed \
+               -e '/marshmallow/s/3\.[0-9.*]*/4.*/' \
+               -e '/starlette/s/<0\.5[0-9]*/<0.60/' \
+               -e '/uvicorn/s/<0\.4[0-9]*/<0.50/' \
+               -i platformio/dependencies.py || die
+
+       distutils-r1_python_prepare_all
+}
+
+python_test() {
+       epytest -k "not skip_ci"
+}
+
+python_compile_all() {
+       #completions
+       local _PIO_COMPLETE s_type
+       for s_type in bash fish zsh; do
+               _PIO_COMPLETE=${s_type}_source 
"${BUILD_DIR}"/install/usr/bin/pio > "${T}"/pio.${s_type} || die
+       done
+}
+
+src_install() {
+       distutils-r1_src_install
+       udev_dorules platformio/assets/system/99-platformio-udev.rules
+
+       newbashcomp "${T}"/pio.bash pio
+       newfishcomp "${T}"/pio.fish pio.fish
+       newzshcomp "${T}"/pio.zsh _pio
+}
+
+pkg_postinst() {
+       udev_reload
+}
+
+pkg_postrm() {
+       udev_reload
+}

diff --git a/profiles/package.mask b/profiles/package.mask
index f7e685baf426..883f39bd1b0b 100644
--- a/profiles/package.mask
+++ b/profiles/package.mask
@@ -306,13 +306,6 @@ net-analyzer/arp-sk
 # Bug #969685
 =gui-apps/slurp-1.6.0
 
-# Michał Górny <[email protected]> (2026-01-24)
-# Needs porting to Python 3.13.  Requires old versions of multiple
-# dependencies, and reportedly is already broken with its current
-# dependencies.  The efforts to revive it do not progress.
-# Removal on 2026-02-23.  Bug #944883, #952290, #955765, #968383.
-dev-embedded/platformio
-
 # Maciej Barć <[email protected]> (2026-01-24)
 # Some app-emacs packages that are obsolete since Emacs 29 or much
 # older. They all are available in the main GNU Emacs distribution.

Reply via email to