diff --git a/README.md b/README.md
index 72b2e21d..f011f9c3 100644
--- a/README.md
+++ b/README.md
@@ -98,6 +98,8 @@ You can also run KiBot using docker images in a CI/CD environment like GitHub or
Notes:
- When installing from the Debian repo you don't need to worry about dependencies, just pay attention to *recommended* and *suggested* packages.
- When installing using `pip` the dependencies marked as **PyPi dependency** will be automatically installed.
+- The dependencies marked with **Auto-download** can be downloaded on-demand by KiBot.
+ Note this is experimental and is mostly oriented to 64 bits Linux systems.
- The `kibot-check` tool can help you to know which dependencies are missing.
- Note that on some systems (i.e. Debian) ImageMagick disables PDF manipulation in its `policy.xml` file.
Comment or remove lines like this: `` (On Debian: `/etc/ImageMagick-6/policy.xml`)
@@ -118,7 +120,7 @@ Notes:
- Mandatory for `kicost`
- Optional to find components costs and specs for `bom`
-[**PcbDraw**](https://github.com/INTI-CMNB/pcbdraw) v0.9.0 (tool)
+[**PcbDraw**](https://github.com/INTI-CMNB/pcbdraw) v0.9.0 (tool) (Auto-download)
- Mandatory for `pcbdraw`
- Optional to create realistic solder masks for `pcb_print`
@@ -137,7 +139,7 @@ Notes:
[**Colorama**](https://pypi.org/project/Colorama/) (python module) (PyPi dependency) [Debian](https://packages.debian.org/bullseye/python3-colorama)
- Optional to get color messages in a portable way for general use
-[**RSVG tools**](https://gitlab.gnome.org/GNOME/librsvg) v2.40 (tool) [Debian](https://packages.debian.org/bullseye/librsvg2-bin)
+[**RSVG tools**](https://gitlab.gnome.org/GNOME/librsvg) v2.40 (tool) [Debian](https://packages.debian.org/bullseye/librsvg2-bin) (Auto-download)
- Optional to:
- Create outputs preview for `navigate_results`
- Create PNG icons for `navigate_results`
@@ -145,19 +147,19 @@ Notes:
- Create EPS format for `pcb_print` (v2.40)
- Create PNG and JPG images for `pcbdraw`
-[**Git**](https://git-scm.com/) (tool) [Debian](https://packages.debian.org/bullseye/git)
+[**Git**](https://git-scm.com/) (tool) [Debian](https://packages.debian.org/bullseye/git) (Auto-download)
- Optional to:
- Find commit hash and/or date for `pcb_replace`
- Find commit hash and/or date for `sch_replace`
- Find commit hash and/or date for `set_text_variables`
-[**ImageMagick**](https://imagemagick.org/) (tool) [Debian](https://packages.debian.org/bullseye/imagemagick)
+[**ImageMagick**](https://imagemagick.org/) (tool) [Debian](https://packages.debian.org/bullseye/imagemagick) (Auto-download)
- Optional to:
- Create outputs preview for `navigate_results`
- Create monochrome prints for `pcb_print`
- Create JPG images for `pcbdraw`
-[**Ghostscript**](https://www.ghostscript.com/) (tool) [Debian](https://packages.debian.org/bullseye/ghostscript)
+[**Ghostscript**](https://www.ghostscript.com/) (tool) [Debian](https://packages.debian.org/bullseye/ghostscript) (Auto-download)
- Optional to:
- Create outputs preview for `navigate_results`
- Create PS files for `pcb_print`
@@ -165,7 +167,7 @@ Notes:
[**Pandoc**](https://pandoc.org/) (tool) [Debian](https://packages.debian.org/bullseye/pandoc)
- Optional to create PDF/ODF/DOCX files for `report`
-[**RAR**](https://www.rarlab.com/) (tool) [Debian](https://packages.debian.org/bullseye/rar)
+[**RAR**](https://www.rarlab.com/) (tool) [Debian](https://packages.debian.org/bullseye/rar) (Auto-download)
- Optional to compress in RAR format for `compress`
[**XLSXWriter**](https://pypi.org/project/XLSXWriter/) (python module) (PyPi dependency) [Debian](https://packages.debian.org/bullseye/python3-xlsxwriter)
diff --git a/docs/README.in b/docs/README.in
index e5088d5d..71c994eb 100644
--- a/docs/README.in
+++ b/docs/README.in
@@ -98,6 +98,8 @@ You can also run KiBot using docker images in a CI/CD environment like GitHub or
Notes:
- When installing from the Debian repo you don't need to worry about dependencies, just pay attention to *recommended* and *suggested* packages.
- When installing using `pip` the dependencies marked as **PyPi dependency** will be automatically installed.
+- The dependencies marked with **Auto-download** can be downloaded on-demand by KiBot.
+ Note this is experimental and is mostly oriented to 64 bits Linux systems.
- The `kibot-check` tool can help you to know which dependencies are missing.
- Note that on some systems (i.e. Debian) ImageMagick disables PDF manipulation in its `policy.xml` file.
Comment or remove lines like this: `` (On Debian: `/etc/ImageMagick-6/policy.xml`)
diff --git a/kibot/config_reader.py b/kibot/config_reader.py
index 908a1b07..bcc11e49 100644
--- a/kibot/config_reader.py
+++ b/kibot/config_reader.py
@@ -737,6 +737,7 @@ def print_dependencies(markdown=True, jsn=False):
key=lambda x: x[1].importance, reverse=True):
dtype = 'python module' if dep.is_python else 'tool'
is_pypi_dep = ' (PyPi dependency)' if dep.pypi_name.lower() in __pypi_deps__ else ''
+ has_dowloader = ' (Auto-download)' if dep.downloader is not None else ''
deb = ''
if markdown:
if dep.is_python:
@@ -759,7 +760,7 @@ def print_dependencies(markdown=True, jsn=False):
ver = ''
if version:
ver = 'v'+'.'.join(map(str, version))+' '
- print("{} {}({}){}{}".format(name, ver, dtype, is_pypi_dep, deb))
+ print("{} {}({}){}{}{}".format(name, ver, dtype, is_pypi_dep, deb, has_dowloader))
if needed:
if len(needed) == 1:
if needed[0] == 'general use':
diff --git a/kibot/out_pcb_print.py b/kibot/out_pcb_print.py
index 318cacaf..cf89cacb 100644
--- a/kibot/out_pcb_print.py
+++ b/kibot/out_pcb_print.py
@@ -28,7 +28,7 @@ from .misc import (CMD_PCBNEW_PRINT_LAYERS, URL_PCBNEW_PRINT_LAYERS, PDF_PCB_PRI
from .kiplot import check_script, exec_with_retry, add_extra_options
from .registrable import RegDependency
from .create_pdf import create_pdf_from_pages
-from .dep_downloader import check_tool, rsvg_downloader, gs_downloader, convert_downloader
+from .dep_downloader import check_tool, rsvg_downloader, gs_downloader, convert_downloader, pytool_downloader
from .macros import macros, document, output_class # noqa: F401
from .drill_marks import DRILL_MARKS_MAP, add_drill_marks
from .layer import Layer, get_priority
@@ -47,7 +47,7 @@ rsvg_dep = rsvg_dependency('pcb_print', rsvg_downloader, roles=ToolDependencyRol
rsvg_dep2 = rsvg_dependency('pcb_print', rsvg_downloader, roles=ToolDependencyRole(desc='Create EPS format', version=(2, 40)))
gs_dep = gs_dependency('pcb_print', gs_downloader, roles=ToolDependencyRole(desc='Create PS files'))
convert_dep = convert_dependency('pcb_print', convert_downloader, roles=ToolDependencyRole(desc='Create monochrome prints'))
-pcbdraw_dep = pcbdraw_dependency('pcb_print', None, roles=ToolDependencyRole(desc='Create realistic solder masks',
+pcbdraw_dep = pcbdraw_dependency('pcb_print', pytool_downloader, roles=ToolDependencyRole(desc='Create realistic solder masks',
version=PCBDRAW_MIN_VERSION))
RegDependency.register(rsvg_dep)
RegDependency.register(rsvg_dep2)
diff --git a/src/kibot-check b/src/kibot-check
index 55d29d85..795a5536 100755
--- a/src/kibot-check
+++ b/src/kibot-check
@@ -464,7 +464,7 @@ deps = '{\
"PcbDraw": {\
"command": "pcbdraw",\
"deb_package": "pcbdraw",\
- "downloader": null,\
+ "downloader": {},\
"extra_deb": null,\
"help_option": "--version",\
"importance": 10001,\