This commit is contained in:
Mario Fetka
2026-04-08 10:31:26 +02:00
parent 9d269397be
commit 2509584dbc
68 changed files with 689 additions and 2230 deletions

View File

@@ -1,3 +1,6 @@
AUX pio-6.1.19-marshmallow-4.patch 798 BLAKE2B b9bf5e13408c62e355fad06bba510be208cc2cc773c9183e52e5ae37b1dc3db4d367321e8fb5d8cc87dcfd86639fe1a9e3af987c64216d26ecd934f3e7c45823 SHA512 2b636125b92f17f8386849c994dc92298c9ddcb263d9d24b472a60c8e112e7e349c4b4f427513f7fe8758b282e3ed4466426719899526566036e1c1ef88046c3
DIST platformio-6.1.18.gh.tar.gz 302134 BLAKE2B 53674e73bba37ad3559395954ce07b79a072221b7c31ec08af17cc276a2625905f84ca808b9b7f0e9f8cbc0c6b1e3297bc9a4e2ef9e6ac44a3d88bb8e7d90f46 SHA512 920db6f85951801f77a313d32a80cbe62b03509c057c74daa1167009f2b1d218e9cadaadbe9b3b8931dcbf03aa047c617757856e6d9a8db9db3379c1ae764872
DIST platformio-6.1.19.gh.tar.gz 303716 BLAKE2B 3add65d4dd38efd64e152a97396ead9bc672b93b9933e91634e18a60318d7aa04defb9b95efdecf4454e407ba97f2fe1b24093e48fcb3380b4152d5f6b4cb7fa SHA512 0190401a92b2ce423ff451469ed0c31e27203e92417d08203878cc6a021dfcd014adea62d0f27c661b6a8eee7a0503a673c7b1e8e39d956173349d0ef323e731
EBUILD platformio-6.1.18.ebuild 3296 BLAKE2B 3c87726718fac5a0b3727d9c47977e2666bc243c00def8f72917701740b5fb72aeff75a5eb199ef5f062d2fd437cc3fae6b09e6f1fa13817dbfe5325fcf6d76f SHA512 a7b20744aeba3a40a24a83216a673c23a903fdee3313c29807d0cede535cf001dabc8fe128ebcf376685a2926fe580f7125566b6351aea493bffd19d169d973b
MISC metadata.xml 340 BLAKE2B 992fa2488c72523eb663bd6bb85608c3ad39e57781bbf08801ac3d34551fdcebd5b80d50bb4353ceefd5bb2228a56101f8ad2cd155d39cd4ff071d8f664a9f60 SHA512 1a596e7fbfb70e5814dc811ff96f3597f744d3e049ed8cd047238557fbeb1c370f22656990d6e30f42cf9193b899686e85c0edd3d1115af93eb4b7866066dc8c
EBUILD platformio-6.1.19.ebuild 5027 BLAKE2B 9130a6740376181bb8f60039d107bfd73dd1dad7709b13cdff7492c4f4d7a766e44d5113b23fd1362b37cdc3cb53fcd79f26343ba0fde55fab60c7bdf3c46c30 SHA512 b1d0b172ddd9292f955eda328f0c47cb41afbdee9d74ad35fe63dda58bf01858581ddf9ca9090b0fe8830b89efd65a69a5aac78dfdee98c45f07a349b0880e83
MISC metadata.xml 259 BLAKE2B ecfdf1349b515ed39fbd96827d3402bdb856788eba1ada4748ec1c25d9829a97aff08dcffed21ebc4c5fc1f706919fbb16fc5d4a20dacf489f4c661687377dba SHA512 27a7d4dcc7684f870f2286cf889b92e620693f80bc756287f26b16e9ea8db09dfa7390bba852c671facd5f2b740f371367855feeb052123eef7ad64926174ba3

View File

@@ -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:

View File

@@ -1,10 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>alexxy@gentoo.org</email>
<name>Alexey Shvetsov</name>
</maintainer>
<!-- maintainer-needed -->
<upstream>
<remote-id type="github">platformio/platformio-core</remote-id>
</upstream>

View File

@@ -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
}