Scripts to build and use docker images including GHDL
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:buster-mcode
and ghdl/pkg:buster-mcode
; includes Python pip, GNAT GPS, Graphviz and GDB.Ready-to-use images:
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).See USE_CASES.md if you are looking for usage examples from a user perspective.
Build and push all the ghdl/build:*
and ghdl/run:*
docker images. :
[ ls ]
.[ 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.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*]
.[bullseye, bookworm]
and [mcode]
and [--gpl]
.[mcode]
.
ghdl/debug
is created in this job.The procedure in each job is as follows:
ghdl/build:*
image.ghdl/ghdl:*
image is created based on the corresponding ghdl/run:*
image.ghdl/ghdl:*
image created in the previous step.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.
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 ]
.
Build and push all the ghdl/vunit:*
images, which are based on the ones created in the 'bookworm' workflow.
master
(from Git).lcov
and gcovr
for code coverage analysis.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
:
master
) on top of ghdl/ext:ls-debian.ghdl/ext:ls-vunit
.See ghdl/ghdl-cosim: docker and ghdl.github.io/ghdl-cosim/vhpidirect/examples/vffi_user.
g++
(required by cocotb).pytest
, matplotlib
, numpy
and Imagemagick.NOTE: *-slim
variants of matplotlib
, octave
and xyce
images are provided too. Those are based on ghdl/cosim:vunit-cocotb, instead of ghdl/cosim:py.
Multiple artifacts of GHDL are generated in these workflows. For example, each job in test.yml
generates a tarball that is then installed in a ghdl/ghdl:*
image, and the content is published in a ghdl/pkg:*
image. These resources might be useful for users/developers who:
python:3-slim-bookworm
instead of debian:bookworm-slim
.However, it is discouraged to use these pre-built artifacts to install GHDL on host systems.