dev-python/kicad-python: add 0.6.0

Signed-off-by: Huang Rui <vowstar@gmail.com>
This commit is contained in:
Huang Rui
2026-04-01 11:56:43 +08:00
parent 94f1d1068c
commit 412b6963c0
2 changed files with 114 additions and 0 deletions

View File

@@ -11,3 +11,4 @@ DIST kicad-9.0.6-common-types-project_settings.proto 3141 BLAKE2B 5a6b6450554124
DIST kicad-9.0.6-schematic-schematic_commands.proto 866 BLAKE2B 946b35676e26d091ed35e34331c8c3ffc55007cae5729ea7483b56caccb25de1eefb438dd16a50f731328d908d26faf516353c22acd275ca0945942645183bcf SHA512 031243204c96720f62ad25cb62731d65b9607b6237ee94ee3e28f3831f11a8845351413e5047f7fd695768efbd017094f906289cacd2302e43babd0e2151759d
DIST kicad-9.0.6-schematic-schematic_types.proto 1941 BLAKE2B 23ad01b5bd15e7030b76693dd5c80729af6c80ddf782110f3c3a02fa4274dac6f0f26a7bffa5f4456262a8c93fe25e95169395f0cbfe384e07dd50095090f7c0 SHA512 8a762f7c8a1cf8eb0b5691661bcf82c448ef34c3142f8cfe3c77a1bd9666c9704747056c6ea4e08734b7cf7370ff3bd72e1d59414e3cde3a48b79ec371a74cf9
DIST kicad_python-0.5.0.tar.gz 198708 BLAKE2B 6a4e756289de711e633f3adc07e1aaaa6820dad9c5ec6d605bf96bdc0ea74ea622394e15078268c0d1c47b73f304f99b04cb77d86a673e441b7680b3893691d2 SHA512 7d4f0d005525e6a646df0e25fb59cf93a55f9ea072821062c0384a386c382b24f9ccad204f06bc52d4f90158eefb923692497470e0a43ee2947f1b2057a73779
DIST kicad_python-0.6.0.tar.gz 238738 BLAKE2B 55004fc236765140ee17352bc240fe9ea4559f1b061d7bf64583d648527225a3a6e655254488bf0e256db963e5e3cf9cd19385d0a1df0c412cda2a7ed38cb384 SHA512 1dcbd18bfa31608e38bdb47ba457799bfe841f8b4f48c8fab09cf25976a7e19f178bc527479dde18ac5d5b2971bb2f1b29d630b5234c66e6c1d0eb5f5e6c644c

View File

@@ -0,0 +1,113 @@
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=poetry
PYTHON_COMPAT=( python3_{12..14} )
inherit distutils-r1 pypi
DESCRIPTION="KiCad API Python Bindings for interacting with running KiCad sessions"
HOMEPAGE="https://gitlab.com/kicad/code/kicad-python https://pypi.org/project/kicad-python"
# Proto files version should match kicad release
KICAD_TAG="9.0.6"
KICAD_PROTO_BASE="https://gitlab.com/kicad/code/kicad/-/raw/${KICAD_TAG}/api/proto"
# List of proto files needed
PROTO_FILES=(
"board/board.proto"
"board/board_commands.proto"
"board/board_types.proto"
"common/commands/base_commands.proto"
"common/commands/editor_commands.proto"
"common/commands/project_commands.proto"
"common/envelope.proto"
"common/types/base_types.proto"
"common/types/enums.proto"
"common/types/project_settings.proto"
"schematic/schematic_commands.proto"
"schematic/schematic_types.proto"
)
SRC_URI="$(pypi_sdist_url)"
for _p in "${PROTO_FILES[@]}"; do
SRC_URI+=" ${KICAD_PROTO_BASE}/${_p} -> kicad-${KICAD_TAG}-${_p//\//-}"
done
unset _p
LICENSE="MIT"
SLOT=0
KEYWORDS="~amd64"
# Tests not included in PyPI sdist
RESTRICT="test"
# Regenerate protobuf files at build time to match system protobuf version
# Use := slot operator to trigger rebuild when protobuf is upgraded
RDEPEND="
>=dev-python/protobuf-5.29:=[${PYTHON_USEDEP}]
>=dev-python/pynng-0.9.0[${PYTHON_USEDEP}]
<dev-python/pynng-0.10.0[${PYTHON_USEDEP}]
$(python_gen_cond_dep '
>=dev-python/typing-extensions-4.13.2[${PYTHON_USEDEP}]
' python3_{10..12})
"
BDEPEND="
${RDEPEND}
dev-libs/protobuf[protoc(+)]
"
src_prepare() {
# Remove build script config from pyproject.toml
sed -i '/\[tool.poetry.build\]/,/^$/d' pyproject.toml || die
rm -f setup.py build.py || die
# Setup proto source directory
local proto_src="${WORKDIR}/proto"
mkdir -p "${proto_src}"/{board,common/commands,common/types,schematic} || die
# Copy downloaded proto files to proper structure
local _p _f
for _p in "${PROTO_FILES[@]}"; do
_f="kicad-${KICAD_TAG}-${_p//\//-}"
cp "${DISTDIR}/${_f}" "${proto_src}/${_p}" || die
done
einfo "Regenerating protobuf files with system protoc..."
# Remove only pre-generated _pb2.py and _pb2.pyi files, keep __init__.py
find "${S}"/kipy/proto -name '*_pb2.py' -delete || die
find "${S}"/kipy/proto -name '*_pb2.pyi' -delete || die
rm -rf "${S}"/build/lib/kipy/proto || die
# Compile all proto files (output to temp dir first)
local proto_out="${WORKDIR}/proto_out"
mkdir -p "${proto_out}" || die
protoc \
--proto_path="${proto_src}" \
--python_out="${proto_out}" \
--pyi_out="${proto_out}" \
"${proto_src}"/board/*.proto \
"${proto_src}"/common/*.proto \
"${proto_src}"/common/commands/*.proto \
"${proto_src}"/common/types/*.proto \
"${proto_src}"/schematic/*.proto \
|| die "protoc failed"
# Copy only _pb2.py and _pb2.pyi files to kipy/proto, preserving original __init__.py
find "${proto_out}" \( -name '*_pb2.py' -o -name '*_pb2.pyi' \) | while read -r f; do
local rel="${f#${proto_out}/}"
cp "${f}" "${S}/kipy/proto/${rel}" || die
done
# Fix imports: protoc generates absolute imports (e.g., "from common.types import ...")
# but kipy expects them relative to kipy.proto (e.g., "from kipy.proto.common.types import ...")
find "${S}/kipy/proto" \( -name '*_pb2.py' -o -name '*_pb2.pyi' \) -exec \
sed -i -E \
-e 's/^(from|import) (common|board|schematic)([ .])/\1 kipy.proto.\2\3/g' \
{} + || die "failed to fix protobuf imports"
distutils-r1_src_prepare
}