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,\