KiCad 5 : скриптинг
Jul. 19th, 2018 04:32 pmTL;DR Побился башкой и отступил пока.
В кикаде скриптами, по идее, можно сделать всё. Для этого в ём встроен интерпретатор python и некий функционал™ позволяющий загружать их из заранее предусмотренных мест. После чего меню и тулбар должны быть дополнены новыми разноцветными фантиками. Но не тут-то было!
Для начала, KiCad в дебиане собран с отключенной скриптовой консолью (об этом чуть ниже). Что приводит к полной невозможности как-то разобраться в происходящем, потому что скриптовый интерфейс недокументирован чуть более чем полностью. Точнее, он прекрасно документирован — в питоновом коде pcbnew.py.... Так-то даже поставляемые footprint wizard'ы работают, но сделать что-то сверх этого — пожалте биться башкой об стенку.
Например. кнопка "Refresh Plugins". Она не делает никаких видимых действий. Нет, я в strace вижу что оно сканирует папки с плагинами, но что там дальше... короче, всё понимает, но ничего сказать не может.
Так-то простой плагин, найденный на просторах интернетов, после нажатия Кнопки обнаруживается, добавляет иконку на панель и даже отзывается в консоль на неё. Что-то более затейливое... ну... результаты могут быть разные. Вплоть до падения.
Итак, нам нужна консоль. Выпилена она по одной простой причине — KiCad работает исключительно на wxgtk2. Нет, его можно собрать с wxgtk3, но после этого у него немного разносит интерфейс и eeschema начинает тормозить и глючить. Это вполне официально, причем, баг вероятно никто искать уже не будет, а просто заменят canvas на accelerated реализацию как в pcbnew и большая часть проблем уйдет. Но до этого светлого момента kicad должен жить на gtk2. Короче говоря, чтобы консоль работала, ей нужен python-wxgtk, в котором лежат питоновые биндинги. Причем именно второй версии, чтобы быть совместимым по abi с основным тулкитом.
Теперь финт ушами: в какой-то момент в testing'е python-wxgtk переключили на использование wxgtk3. Молча. Сломав этим все приложения, использующие wxgtk2 (коих немало, в дистрибутиве пока только один пакет на wxgtk3). При этом сам wxgtk доступен в виде обеих версий: gtk2 и gtk3.
Надо теперь попробовать собрать wxpython со второй версией, сделав этим из системы слаку, ну или посмотреть будет ли работаь kicad с чуть более старым wxpython (там после stable вроде какие-то фиксы были).
Сраные питонасты. Везде, просто везде, где встречается питон, жди проблем с деплойментом, с преемственностью версий, с постоянным устареванием всего и вся, с какой-то долбаной, ничему не подконтрольной магией... Постоянно вот этот подход везде — "нам насрать, живите на bleeding edge"...
UPD: kicad замечательно собрался с wxpython из stable. Консоль работает, совсем злых багов не видно. Просто надо было при бэкпорте оторвать требование совсем свежей версии.
В кикаде скриптами, по идее, можно сделать всё. Для этого в ём встроен интерпретатор python и некий функционал™ позволяющий загружать их из заранее предусмотренных мест. После чего меню и тулбар должны быть дополнены новыми разноцветными фантиками. Но не тут-то было!
Для начала, KiCad в дебиане собран с отключенной скриптовой консолью (об этом чуть ниже). Что приводит к полной невозможности как-то разобраться в происходящем, потому что скриптовый интерфейс недокументирован чуть более чем полностью. Точнее, он прекрасно документирован — в питоновом коде pcbnew.py.... Так-то даже поставляемые footprint wizard'ы работают, но сделать что-то сверх этого — пожалте биться башкой об стенку.
Например. кнопка "Refresh Plugins". Она не делает никаких видимых действий. Нет, я в strace вижу что оно сканирует папки с плагинами, но что там дальше... короче, всё понимает, но ничего сказать не может.
Так-то простой плагин, найденный на просторах интернетов, после нажатия Кнопки обнаруживается, добавляет иконку на панель и даже отзывается в консоль на неё. Что-то более затейливое... ну... результаты могут быть разные. Вплоть до падения.
Итак, нам нужна консоль. Выпилена она по одной простой причине — KiCad работает исключительно на wxgtk2. Нет, его можно собрать с wxgtk3, но после этого у него немного разносит интерфейс и eeschema начинает тормозить и глючить. Это вполне официально, причем, баг вероятно никто искать уже не будет, а просто заменят canvas на accelerated реализацию как в pcbnew и большая часть проблем уйдет. Но до этого светлого момента kicad должен жить на gtk2. Короче говоря, чтобы консоль работала, ей нужен python-wxgtk, в котором лежат питоновые биндинги. Причем именно второй версии, чтобы быть совместимым по abi с основным тулкитом.
Теперь финт ушами: в какой-то момент в testing'е python-wxgtk переключили на использование wxgtk3. Молча. Сломав этим все приложения, использующие wxgtk2 (коих немало, в дистрибутиве пока только один пакет на wxgtk3). При этом сам wxgtk доступен в виде обеих версий: gtk2 и gtk3.
Надо теперь попробовать собрать wxpython со второй версией, сделав этим из системы слаку, ну или посмотреть будет ли работаь kicad с чуть более старым wxpython (там после stable вроде какие-то фиксы были).
Сраные питонасты. Везде, просто везде, где встречается питон, жди проблем с деплойментом, с преемственностью версий, с постоянным устареванием всего и вся, с какой-то долбаной, ничему не подконтрольной магией... Постоянно вот этот подход везде — "нам насрать, живите на bleeding edge"...
UPD: kicad замечательно собрался с wxpython из stable. Консоль работает, совсем злых багов не видно. Просто надо было при бэкпорте оторвать требование совсем свежей версии.