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:py, instead of ghdl/cosim:vunit-cocotb.
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.