KiBot/docs/Code_Dependencies.md

2.9 KiB

Code Dependencies

This document is about how the outputs and preflights declare their dependencies. Is intended for developers trying to understand how to create plug-ins.

The dependencies are declared as YAML inside the docstring of the module. So they look like some kind of comment.

The YAML code must contain a key named Dependencies with a list of dependencies.

The dep_dowloader.py module contains the core dependencies.

There are two type of dependencies:

  1. Actual dependencies, they contain a role
  2. Template dependencies, they are referenced by other dependencies using from

An example of template:

  - name: KiCad Automation tools
    github: INTI-CMNB/KiAuto
    command: pcbnew_do
    pypi: kiauto
    downloader: pytool
    id: KiAuto

And an example of dependency that uses a template:

  - from: KiAuto
    role: mandatory
    version: 1.6.7

The name is the name shown to the user, the id is the internal name.

Here are the most common attributes:

  • role: What this dependency is used for. The mandatory role means this dependency must be met in order to run the plug-in.
  • command: Name of the executable.
  • version: The minimum version needed.
  • github: The name of the GitHub project hosting it. Useful for tools that can be downloaded using the python downloader.
  • url: When page for the tool. The one to visit.
  • url_down: The URL to download the tool. Useful for the downloaders.
  • debian: The name of the Debian package for this dependency.
  • extra_deb: Extra Debian packages needed for this tool. They are usually suggested dependencies that are needed for our use.
  • python_module: true when this tool provides a Python module (and no executable). Something we import.
  • module_name: The name of the Python module. By default we assume this is the same as the name.
  • plugin_dirs: Used for tools that can be installed as a KiCad plug-in. Is a list of directories where the plug-in can be found, they are relative to the KiCad plug-in places.
  • help_option: Used when the tool doesn't implement --version.
  • no_cmd_line_version_old: true when old versions of the tool doesn't implement --version.
  • pypi: Name of the tool in PyPi.org
  • downloader: The name of a Python function declared in dep_downloader.py that can be used to download the tool.
  • comments: A string or a list of strings containing extra information to show to the user when the tool isn't installed.

Currently we have the following downloaders:

  • pytool: Can download a Python module from GitHub. After downloading the sources of the last release we run pip install -U .
  • python: Used to install stuff from PyPi. We just run pip install -U PYPI_NAME
  • git: Installs Git
  • convert: Installs ImageMagick
  • gs: Installs Ghostscript
  • rsvg: Installs the binary tools from the RSVG library
  • rar: Installs RAR

Most downloaders are very limited and poorly tested. They are just a last resort.