SkillAgentSearch skills...

Docker

Scripts to build and use docker images including GHDL

Install / Use

/learn @ghdl/Docker

README

<p align="center"> <a title="Join the chat at https://gitter.im/ghdl1/Lobby" href="https://gitter.im/ghdl1/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge"><img src="https://img.shields.io/badge/chat-on%20gitter-4db797.svg?longCache=true&style=flat-square&logo=gitter&logoColor=e8ecef"></a><!-- --> <a title="'base' workflow Status" href="https://github.com/ghdl/docker/actions/workflows/base.yml"><img alt="'base' workflow Status" src="https://img.shields.io/github/actions/workflow/status/ghdl/docker/base.yml?branch=master&longCache=true&style=flat-square&label=base&logo=GitHub%20Actions&logoColor=fff"></a><!-- --> <a title="'test' workflow Status" href="https://github.com/ghdl/docker/actions/workflows/test.yml"><img alt="'test' workflow Status" src="https://img.shields.io/github/actions/workflow/status/ghdl/docker/test.yml?branch=master&longCache=true&style=flat-square&label=test&logo=GitHub%20Actions&logoColor=fff"></a><!-- --> <a title="'bookworm' workflow Status" href="https://github.com/ghdl/docker/actions/workflows/bookworm.yml"><img alt="'bookworm' workflow Status" src="https://img.shields.io/github/actions/workflow/status/ghdl/docker/bookworm.yml?branch=master&longCache=true&style=flat-square&label=bookworm&logo=GitHub%20Actions&logoColor=fff"></a><!-- --> </p> <p align="center"> <img src="./logo.png"/> </p> <p align="center"> <a title="'vunit' workflow Status" href="https://github.com/ghdl/docker/actions/workflows/vunit.yml"><img alt="'vunit' workflow Status" src="https://img.shields.io/github/actions/workflow/status/ghdl/docker/vunit.yml?branch=master&longCache=true&style=flat-square&label=vunit&logo=GitHub%20Actions&logoColor=fff"></a><!-- --> <a title="'ext' workflow Status" href="https://github.com/ghdl/docker/actions/workflows/ext.yml"><img alt="'ext' workflow Status" src="https://img.shields.io/github/actions/workflow/status/ghdl/docker/ext.yml?branch=master&longCache=true&style=flat-square&label=ext&logo=GitHub%20Actions&logoColor=fff"></a><!-- --> <a title="'cosim' workflow Status" href="https://github.com/ghdl/docker/actions/workflows/cosim.yml"><img alt="'cosim' workflow Status" src="https://img.shields.io/github/actions/workflow/status/ghdl/docker/cosim.yml?branch=master&longCache=true&style=flat-square&label=cosim&logo=GitHub%20Actions&logoColor=fff"></a><!-- --> <a title="'mirror' workflow Status" href="https://github.com/ghdl/docker/actions/workflows/mirror.yml"><img alt="'mirror' workflow Status" src="https://img.shields.io/github/actions/workflow/status/ghdl/docker/mirror.yml?branch=master&longCache=true&style=flat-square&label=mirror&logo=GitHub%20Actions&logoColor=fff"></a><!-- --> </p>

This repository contains scripts and YAML workflows for GitHub Actions (GHA) to build and to deploy the container images that are used and/or published by the GHDL GitHub organization. All of them are pushed to hub.docker.com/u/ghdl.


ATTENTION: Some images related to synthesis and PnR were moved to hdl/containers and hub.docker.com/u/hdlc. See DEPRECATED.


Images for development (i.e., building and/or testing ghdl):

  • ghdl/build Docker pulls images include development/build depedendencies for ghdl.
  • ghdl/run Docker pulls images include runtime dependencies for ghdl.
  • ghdl/pkg Docker pulls images include the content of ghdl tarballs built in ghdl/build images.
  • ghdl/debug Docker pulls image is based on ghdl/build:buster-mcode and ghdl/pkg:buster-mcode; includes Python pip, GNAT GPS, Graphviz and GDB.

Ready-to-use images:

  • ghdl/ghdl Docker pulls images, which are based on correponding ghdl/run images, include ghdl along with minimum runtime dependencies.
  • ghdl/vunit Docker pulls images, which are based on ghdl/ghdl:bookworm-* images, include ghdl along with VUnit.
    • *-master variants include latest VUnit (master branch), while others include the latest stable release (installed through pip).
  • ghdl/ext Docker pulls GHDL and complements (ghdl-language-server, GtkWave, VUnit, etc.).
  • ghdl/cosim Docker pulls GHDL and other tools for co-simulation such as SciPy, Xyce or GNU Octave.

See USE_CASES.md if you are looking for usage examples from a user perspective.

GHA workflows

· base

Build and push all the ghdl/build:* and ghdl/run:* docker images. :

  • A pair of images is created in one job for [ ls ].
  • One job is created for each of [ fedora (37 | 38), debian (buster | bullseye | bookworm), ubuntu (20 | 22)], and six images are created in each job; two (ghdl/build:*, ghdl/run:*) for each supported backend [ mcode, llvm*, gcc ].
    • ghdl/debug:base is created in the debian buster job.
    • ghdl/build:doc is created in the debian bookworm job.

· test

Build and push almost all the ghdl/ghdl:* and ghdl/pkg:* images. A pair of images is created in one job for each combination of:

  • [ fedora: [37, 38], debian: [bullseye], ubuntu: [20, 22] ] and [mcode, llvm*].
  • [ fedora: [37, 38], debian: [bullseye] ] and [gcc*].
  • For Debian only, [bullseye, bookworm] and [mcode] and [--gpl].
  • For Debian Buster, only [mcode].
    • ghdl/debug is created in this job.

The procedure in each job is as follows:

  • Repo ghdl/ghdl is cloned.
  • ghdl is built in the corresponding ghdl/build:* image.
  • A ghdl/ghdl:* image is created based on the corresponding ghdl/run:* image.
  • The testsuite is executed inside the ghdl/ghdl:* image created in the previous step.
  • If successful, a ghdl/pkg:* image is created from scratch, with the content of the tarball built in the first step.
  • ghdl/ghdl:* and ghdl/pkg:* images are pushed to hub.docker.com/u/ghdl.

NOTE: images with GCC backend include lcov for code coverage analysis.

· bookworm [scheduled daily]

Complement of ghdl.yml, to be run after each successful run of the main workflow in ghdl/ghdl. One job is scheduled for each combination of [ bookworm ] and [ mcode, llvm-14 , gcc-12.3.0 ].

· vunit [triggered after workflow 'bookworm']

Build and push all the ghdl/vunit:* images, which are based on the ones created in the 'bookworm' workflow.

  • Two versions are published for each backend: one with latest stable VUnit (from PyPI) and one with the latest master (from Git).
  • Images with GCC backend include lcov and gcovr for code coverage analysis.

· ext [triggered after workflow 'vunit']

Build and push all the ghdl/ext:* images:

  • ls: ghdl/ext:ls-debian and ghdl/ext:ls-ubuntu (a job for each of them). These include ghdl/ghdl, the ghdl/ghdl-language-server backend and the vscode-client (precompiled but not preinstalled).
  • gui:
    • ghdl/ext:gtkwave: includes GtkWave (gtk3) on top of ghdl/vunit:llvm-master.
    • ghdl/ext:broadway: adds a script to ghdl/ext:gtkwave in order to launch a Broadway server that allows to use GtkWave from a web browser.
    • ghdl/ext:ls-vunit: includes VUnit (master) on top of ghdl/ext:ls-debian.
    • ghdl/ext:latest: includes GtkWave on top of ghdl/ext:ls-vunit.

· cosim

See ghdl/ghdl-cosim: docker and ghdl.github.io/ghdl-cosim/vhpidirect/examples/vffi_user.

  • ghdl/cosim:mcode: based on ghdl/ghdl:bookworm-mcode, includes GCC.
  • ghdl/cosim:py: based on ghdl/ghdl:bookworm-llvm-7, includes Python.
    • ghdl/cosim:vunit-cocotb: based on ghdl/cosim:py, includes VUnit, cocotb and g++ (required by cocotb).
      • ghdl/cosim:matplotlib: based on ghdl/cosim:vunit-cocotb, includes pytest, matplotlib, numpy and Imagemagick.
      • ghdl/cosim:octave: based on *ghdl/c
View on GitHub
GitHub Stars43
CategoryDevelopment
Updated4mo ago
Forks11

Languages

Shell

Security Score

77/100

Audited on Oct 31, 2025

No findings